|
9 l/ e1 F* I2 s6 _系统安全性对于用户来说至关重要,Linux用户也不例外。笔者就自己使用Linux的经历,总结了一些增强Linux安全防护的小窍门,在此介绍给大家。 ! e+ h8 D7 Q" Q4 x( i
1.为LILO增加开机口令 e( w) b c# m/ E, D
在/etc/lilo.conf文件中增加选项,从而使LILO启动时要求输入口令,以加强系统的安全性。具体设置如下:
: o; j( k& h+ n; Y) Q/ ~1 Hboot=/dev/hda
0 m2 v+ N! l' {4 @* Wmap=/boot/map * A& {) [. n$ x* p x
install=/boot/boot.b
* e: N4 U5 o. y; J5 } }/ o7 }time-out=60 #等待1分钟
( q8 m% t9 N C2 T9 Bprompt
2 s) R0 r8 X: fdefault=linux
6 K) K+ l6 O, _1 g8 k- rpassword=
/ ]1 k- Q% j6 M2 V$ q0 u3 D#口令设置
! k1 b- p# l8 Y: H! v0 Gimage=/boot/vmlinuz-2.2.14-12
) Z% Q: v7 |4 T% U: Glabel=linux
( I# A* s) F" a7 l, B9 t( winitrd=/boot/initrd-2.2.14-12.img ) `# |( f- v& z A2 I9 X
root=/dev/hda6 0 V5 W) Y) r1 R& S
read-only
$ ~4 Z) t; t3 E ?4 ~此时需注意,由于在LILO中口令是以明码方式存放的,所以还需要将 1 a6 k( ]2 J6 a
lilo.conf的文件属性设置为只有root可以读写。
' R0 `4 R/ m/ o9 }- D# chmod 600 /etc/lilo.conf
6 O* V' i' c- G3 b5 m+ T/ S1 o" U当然,还需要进行如下设置,使
8 b) r$ Y! b+ Z' _' Llilo.conf的修改生效。 " b/ ]* F% p& S1 G' l
# /sbin/lilo -v
& R$ l/ H f+ |4 r( N2.设置口令最小长度和
u9 m$ r) ~9 g7 L3 o最短使用时间
5 M/ t8 J- A, V' Z* J& S# M! n口令是系统中认证用户的主要手段,系统安装时默认的口令最小长度通常为5,但为保证口令不易被猜测攻击,可增加口令的最小长度,至少等于8。为此,需修改文件/etc/login.defs中参数PASS_MIN_LEN。同时应限制口令使用时间,保证定期更换口令,建议修改参数PASS_MIN_DAYS。
. \/ M. }- J' f$ C" d; g3.用户超时注销 - [. x- k- |6 j1 R( B
如果用户离开时忘记注销账户,则可能给系统安全带来隐患。可修改/etc/profile文件,保证账户在一段时间没有操作后,自动从系统注销。
% m1 D9 F5 [' }; g编辑文件/etc/profile,在“HISTFILESIZE=”行的下一行增加如下一行: ( S& a6 m7 C5 Z( {/ g
TMOUT=600 ( c9 M- w; N6 @, E7 ]$ M
则所有用户将在10分钟无操作后自动注销。
/ R5 J' @/ k/ S( L# v4.禁止访问重要文件 1 ?$ c% K" B. A; A! I4 J
对于系统中的某些关键性文件如inetd.conf、services和lilo.conf等可修改其属性,防止意外修改和被普通用户查看。 ( f) Y, c7 P7 Z4 l* V) F5 ~
首先改变文件属性为600: ' G! W8 a2 J) r+ [1 Y6 t
# chmod 600 /etc/inetd.conf / G# U% R0 g3 h. e2 X- w
保证文件的属主为root,然后还可以将其设置为不能改变:
% e3 E0 q, A: e, ^6 x V5 Z- F, _# chattr +i /etc/inetd.conf : D4 m( |& A! D* n+ [
这样,对该文件的任何改变都将被禁止。 5 s% u) G# G- h, e+ e
只有root重新设置复位标志后才能进行修改:
: q! [0 F' C1 v9 r, z) u1 l4 R# chattr -i /etc/inetd.conf
8 J! v O! f/ A5.允许和禁止远程访问
+ @3 X- M: W6 Z- u+ Q在Linux中可通过/etc/hosts.allow 和/etc/hosts.deny 这2个文件允许和禁止远程主机对本地服务的访问。通常的做法是:
9 k$ K( l, q# ], h(1)编辑hosts.deny文件,加入下列行:
; ^8 n5 S* H- e" G: V3 r5 X2 C2 c# Deny access to everyone.
$ U4 o/ B7 H8 g+ \1 y4 Y" X' KALL: ALL@ALL . @7 O9 ]6 A) w
则所有服务对所有外部主机禁止,除非由hosts.allow文件指明允许。 4 }5 I( o2 k& z C' I* I& o
(2)编辑hosts.allow 文件,可加入下列行:
& ]5 v2 l% I% Q- N, E. z" g% ?#Just an example: 2 D7 F1 i) Q$ ?
ftp: 202.84.17.11 xinhuanet.com * J3 q! x; Q4 W9 N$ o$ |8 h
则将允许IP地址为202.84.17.11和主机名为xinhuanet.com的机器作为Client访问FTP服务。 - b4 K' i& E% {* w* z+ h
(3)设置完成后,可用tcpdchk检查设置是否正确。
1 b) g2 l& g9 g# }9 d6.限制Shell命令记录大小
: }: h) R- I( T8 N$ A5 g. \9 \默认情况下,bash shell会在文件$HOME/.bash_history中存放多达500条命令记录(根据具体的系统不同,默认记录条数不同)。系统中每个用户的主目录下都有一个这样的文件。在此笔者强烈建议限制该文件的大小。 * @& ^- l' p; r% @1 ^$ I2 M
您可以编辑/etc/profile文件,修改其中的选项如下: HISTFILESIZE=30或HISTSIZE=30 7 d) i# l- A, {* N( N
7.注销时删除命令记录 8 q, ^) j" k& o8 o0 d) @
编辑/etc/skel/.bash_logout文件,增加如下行: 3 R4 k* V3 Q& v% u: S6 p- I6 `
rm -f $HOME/.bash_history
" W7 m$ e6 F8 L& G( L6 i, R这样,系统中的所有用户在注销时都会删除其命令记录。
! S6 e" o' C; f3 l# o S如果只需要针对某个特定用户,如root用户进行设置,则可只在该用户的主目录下修改/$HOME/.bash_history文件,增加相同的一行即可。
; j4 |3 R3 _0 I. _; }# U3 F8.禁止不必要的SUID程序 ! J' [% V5 F& h; Q* W' \2 ~
SUID可以使普通用户以root权限执行某个程序,因此应严格控制系统中的此类程序。
8 H- T) _6 o; o- `! c4 }/ f3 F找出root所属的带s位的程序:
/ D7 c' \! n$ V# f O# find / -type f \( -perm -04000 -o -perm -02000 \) -print |less $ ?9 g: c. ]; X' `0 J: I. D& V
禁止其中不必要的程序:
V4 ^$ g9 f* F/ i C. a' {# chmod a-s program_name ' N l$ G. t& n+ P7 O) N- ^
9.检查开机时显示的信息
& q4 Y8 q% G' ]. q0 oLinux系统启动时,屏幕上会滚过一大串开机信息。如果开机时发现有问题,需要在系统启动后进行检查,可输入下列命令:
! {( t, S5 z9 P9 d) n6 v6 J7 \#dmesg >bootmessage / X9 j9 {5 M; @$ x% }" j6 `
该命令将把开机时显示的信息重定向输出到一个文件bootmessage中。 4 [! G5 w' n4 V2 v$ T' P
10.磁盘空间的维护 8 _2 S0 X3 Z( |& e Q
经常检查磁盘空间对维护Linux的文件系统非常必要。而Linux中对磁盘空间维护使用最多的命令就是df和du了。
5 P- Z a2 F# v6 N0 c4 Edf命令主要检查文件系统的使用情况,通常的用法是:
) [, G T& F( x5 V. k ^7 P o+ P#df -k
1 K, I9 |1 \# C9 |% DFilesystem 1k-blocks Used Available Use% Mounted on
8 A \1 T6 ?3 b( E! K/dev/hda3 1967156 1797786 67688 96% / 7 p) g7 ^) w8 |" ~! ?
du命令检查文件、目录和子目录占用磁盘空间的情况,通常带-s选项使用,只显示需检查目录占用磁盘空间的总计,而不会显示下面的子目录占用磁盘的情况。
3 g( |: e& q* R7 ^, F7 K( x% du -s /usr/X11R6/* 1 n- c5 c: q" h& f) |2 |9 I& _
34490 /usr/X11R6/bin 9 c5 G" g- G! e
1 /usr/X11R6/doc 5 H' g& E9 H* w; n. k% Z( W
3354 /usr/X11R6/include |
|