|
# C! Y$ q% o; c1 U
系统安全性对于用户来说至关重要,Linux用户也不例外。笔者就自己使用Linux的经历,总结了一些增强Linux安全防护的小窍门,在此介绍给大家。
: G0 h8 m% s- e: q3 J1.为LILO增加开机口令 % b* V8 g9 p' V- s9 X
在/etc/lilo.conf文件中增加选项,从而使LILO启动时要求输入口令,以加强系统的安全性。具体设置如下:
' {& F9 Z+ T2 N' kboot=/dev/hda 7 e; S' `* E3 l: ^
map=/boot/map
) m- d" {% |% O ?0 a8 |install=/boot/boot.b , Q# z* }$ ?/ P4 ?) Q
time-out=60 #等待1分钟
6 }$ X/ J0 t9 U' L# s' G9 Mprompt ' W5 h5 \; s. s
default=linux 0 D! \$ r9 g8 C% S
password= / |" q. E" R$ B. C: }! x
#口令设置 3 f- x' D- O! W% F& H; _+ d8 J; ?
image=/boot/vmlinuz-2.2.14-12
7 D3 }' Q. D6 X& k0 Glabel=linux
0 y# v, r! y5 D2 C+ N, e) P0 Z" j$ N& xinitrd=/boot/initrd-2.2.14-12.img : k: V# i6 ?6 |4 e
root=/dev/hda6 # d' J& ^# v7 N+ @1 N! W2 E) j+ ?
read-only
3 j9 O+ ~1 w! o( [+ o3 u0 @; f此时需注意,由于在LILO中口令是以明码方式存放的,所以还需要将 $ x' O3 m, f0 \4 f( |! m
lilo.conf的文件属性设置为只有root可以读写。 - i M3 Q, t" P3 ?$ h
# chmod 600 /etc/lilo.conf ' |: c; u! D7 T
当然,还需要进行如下设置,使 + m- Y& G1 q, o5 j
lilo.conf的修改生效。 " N5 X" M# | ?9 i
# /sbin/lilo -v + ?1 p! _" }8 I4 U* O
2.设置口令最小长度和
8 V, {5 A; ?3 e+ C5 v最短使用时间
$ ?; V/ t3 L1 S: Q! X* s, j口令是系统中认证用户的主要手段,系统安装时默认的口令最小长度通常为5,但为保证口令不易被猜测攻击,可增加口令的最小长度,至少等于8。为此,需修改文件/etc/login.defs中参数PASS_MIN_LEN。同时应限制口令使用时间,保证定期更换口令,建议修改参数PASS_MIN_DAYS。
: f1 F: q! t( i. U, H+ g3.用户超时注销
" V6 U7 ^4 R8 n* P+ ?如果用户离开时忘记注销账户,则可能给系统安全带来隐患。可修改/etc/profile文件,保证账户在一段时间没有操作后,自动从系统注销。 # I8 F A) m5 _) J5 x ?+ U: b
编辑文件/etc/profile,在“HISTFILESIZE=”行的下一行增加如下一行: + g5 R+ B u# i) n7 [% v- u$ h# B
TMOUT=600 8 }8 P9 B: A3 l5 \. v5 m, |+ {
则所有用户将在10分钟无操作后自动注销。 - F7 i! |* ]' u
4.禁止访问重要文件 ' N7 S: N' T6 a' c5 n! O2 [
对于系统中的某些关键性文件如inetd.conf、services和lilo.conf等可修改其属性,防止意外修改和被普通用户查看。 8 P' Q4 |7 {% Q3 \2 |
首先改变文件属性为600:
) [$ h8 Q x+ R0 a/ o# chmod 600 /etc/inetd.conf V$ L; A7 X9 k/ x# h- f
保证文件的属主为root,然后还可以将其设置为不能改变: 3 @, m- W1 E" V
# chattr +i /etc/inetd.conf . V( k7 o; Q8 a: t
这样,对该文件的任何改变都将被禁止。 . ^! U* T# d7 D0 e+ Q8 b
只有root重新设置复位标志后才能进行修改: : R2 N/ d8 d0 K, q( E+ @3 Y
# chattr -i /etc/inetd.conf 5 k' Q; ^. V9 v5 d
5.允许和禁止远程访问
+ E6 {! O& `- `在Linux中可通过/etc/hosts.allow 和/etc/hosts.deny 这2个文件允许和禁止远程主机对本地服务的访问。通常的做法是:
8 Q4 ~* ^1 `- q6 V0 W# D* i9 z(1)编辑hosts.deny文件,加入下列行: 3 }+ T& F9 s4 ~% \1 r
# Deny access to everyone.
2 k- L- O7 b U0 BALL: ALL@ALL - |$ ]9 Z$ m/ W s
则所有服务对所有外部主机禁止,除非由hosts.allow文件指明允许。 8 X7 D% M/ [2 e% Y7 v
(2)编辑hosts.allow 文件,可加入下列行:
, }. L7 e% P* J0 q; L. D1 K% `+ u#Just an example: 1 B3 p- H: J7 q8 u W/ Q! z8 `
ftp: 202.84.17.11 xinhuanet.com & B4 n- e' B3 ]. ^$ G& z( ~
则将允许IP地址为202.84.17.11和主机名为xinhuanet.com的机器作为Client访问FTP服务。 & K n6 X3 Q w+ _- j) I, q) u
(3)设置完成后,可用tcpdchk检查设置是否正确。 ?) t9 c2 h! [; i& u& y$ m
6.限制Shell命令记录大小
0 Q) y' s0 q( w+ A! G1 {默认情况下,bash shell会在文件$HOME/.bash_history中存放多达500条命令记录(根据具体的系统不同,默认记录条数不同)。系统中每个用户的主目录下都有一个这样的文件。在此笔者强烈建议限制该文件的大小。 " W; o+ o8 g: u
您可以编辑/etc/profile文件,修改其中的选项如下: HISTFILESIZE=30或HISTSIZE=30 7 z0 h% ]9 ]: B
7.注销时删除命令记录
+ O. Q3 c: b$ `( X# f B7 c- u( c2 J编辑/etc/skel/.bash_logout文件,增加如下行: 0 M$ @5 K' J" D7 z" a
rm -f $HOME/.bash_history . ?* U) t: z9 U$ U( \* u( \' ?
这样,系统中的所有用户在注销时都会删除其命令记录。
' j% m. ]) E5 Q( o, k& u如果只需要针对某个特定用户,如root用户进行设置,则可只在该用户的主目录下修改/$HOME/.bash_history文件,增加相同的一行即可。 4 b* A% r- v8 w, w/ F8 v( q
8.禁止不必要的SUID程序 / y9 s) Q# x% W
SUID可以使普通用户以root权限执行某个程序,因此应严格控制系统中的此类程序。
3 m7 [3 O. \3 c* W$ L( Z2 z找出root所属的带s位的程序:
0 e) k) \: [$ x# find / -type f \( -perm -04000 -o -perm -02000 \) -print |less ) A3 A2 B/ E: d/ X% n' `
禁止其中不必要的程序:
$ l0 O, y$ ~" O4 E# chmod a-s program_name 1 q/ C z1 U' A) G. l) B& w
9.检查开机时显示的信息
4 y4 Z; f* w9 T8 L' J3 _ @Linux系统启动时,屏幕上会滚过一大串开机信息。如果开机时发现有问题,需要在系统启动后进行检查,可输入下列命令:
3 O8 |1 g4 @/ T# j#dmesg >bootmessage
9 B# m1 W* V; q' }该命令将把开机时显示的信息重定向输出到一个文件bootmessage中。
( w) [$ E3 s7 Y2 s9 V10.磁盘空间的维护
( L5 p3 E8 }5 y" j经常检查磁盘空间对维护Linux的文件系统非常必要。而Linux中对磁盘空间维护使用最多的命令就是df和du了。 % w( W0 U# d$ [; T- p) |
df命令主要检查文件系统的使用情况,通常的用法是:
7 R3 j: c5 f0 m# A- r+ T3 Y' Q#df -k
0 U6 s3 `7 K% ^/ _Filesystem 1k-blocks Used Available Use% Mounted on
4 c3 K0 p( S3 a/ a0 J u/ F8 }4 t/ I. r/dev/hda3 1967156 1797786 67688 96% / ! Y& I' S) x0 u9 j
du命令检查文件、目录和子目录占用磁盘空间的情况,通常带-s选项使用,只显示需检查目录占用磁盘空间的总计,而不会显示下面的子目录占用磁盘的情况。
8 J5 I- L7 K- U$ W5 [% du -s /usr/X11R6/*
0 y+ E7 j& s0 [+ S4 f. e; m34490 /usr/X11R6/bin . I* J5 p) k) K6 r
1 /usr/X11R6/doc ' K1 Q" A/ h) o3 R* ]' {
3354 /usr/X11R6/include |
|