|
" T6 h/ ]! h6 o; q& z
系统安全性对于用户来说至关重要,Linux用户也不例外。笔者就自己使用Linux的经历,总结了一些增强Linux安全防护的小窍门,在此介绍给大家。 7 d& U) i; Z2 Z$ ]* s* U1 I
1.为LILO增加开机口令 g7 G. l: {& ?" v- J, K) v- g n
在/etc/lilo.conf文件中增加选项,从而使LILO启动时要求输入口令,以加强系统的安全性。具体设置如下: - ?' m9 S& Y6 l2 c2 ~
boot=/dev/hda / D( T6 v" b {+ r
map=/boot/map
0 O; ]. X3 Q8 X. p& W' kinstall=/boot/boot.b
' [- ]1 k& \7 D: v/ Y9 |1 N/ Ztime-out=60 #等待1分钟
9 T/ i7 F; C, o% g1 I* u' Lprompt , R8 u& E9 v( n. u: V
default=linux
, k5 l* Q; D6 k) e/ F$ G. Epassword=
9 ?' ?- T4 ~6 ~# y1 E#口令设置
0 M) l0 e1 n- \6 @% _image=/boot/vmlinuz-2.2.14-12
' |( j; M& A* w' D! p9 Plabel=linux
: `" c8 Y( d7 ?! l+ vinitrd=/boot/initrd-2.2.14-12.img 9 U# i+ A# e3 a
root=/dev/hda6 , E: i8 p* r6 M- N/ J7 P: L; c- K
read-only
' \ H* { L' L2 k此时需注意,由于在LILO中口令是以明码方式存放的,所以还需要将 # T6 u7 U, Q# j) {7 z
lilo.conf的文件属性设置为只有root可以读写。 1 \; I& R- O8 v) q* V# B
# chmod 600 /etc/lilo.conf / {: {' h; {0 {( n! o3 W
当然,还需要进行如下设置,使 % Y% z* S* y# Q- M, L0 @, J8 v2 w
lilo.conf的修改生效。
& ~+ p5 D$ E( i' {) c# /sbin/lilo -v * g0 _; x; k# E+ u9 S$ A6 G& X. e9 j
2.设置口令最小长度和
/ G) ?# |& q; z T, H& @最短使用时间
# O5 W# d& G( z2 s; F口令是系统中认证用户的主要手段,系统安装时默认的口令最小长度通常为5,但为保证口令不易被猜测攻击,可增加口令的最小长度,至少等于8。为此,需修改文件/etc/login.defs中参数PASS_MIN_LEN。同时应限制口令使用时间,保证定期更换口令,建议修改参数PASS_MIN_DAYS。
# {: R( o1 T4 u; _! q5 N% T3.用户超时注销
5 t9 x. ~# M. ^ x$ J* X如果用户离开时忘记注销账户,则可能给系统安全带来隐患。可修改/etc/profile文件,保证账户在一段时间没有操作后,自动从系统注销。 / r8 P) v0 n& [
编辑文件/etc/profile,在“HISTFILESIZE=”行的下一行增加如下一行: " {$ X! M" C; L4 R) H$ a
TMOUT=600 8 h8 }& @ D3 L# E: _3 W
则所有用户将在10分钟无操作后自动注销。
6 X: \1 f* }+ B/ l# ]( I3 {* w) a4.禁止访问重要文件 2 | ~; p' o0 [+ z% M
对于系统中的某些关键性文件如inetd.conf、services和lilo.conf等可修改其属性,防止意外修改和被普通用户查看。 $ Y) C; h1 ^1 Y% N0 x0 m$ |/ n
首先改变文件属性为600: " ~) w8 T3 o* F3 t6 n
# chmod 600 /etc/inetd.conf
# [6 G9 _2 \7 [2 U B$ _, ]保证文件的属主为root,然后还可以将其设置为不能改变: 2 T. m6 T# j" V/ D- `. X% p
# chattr +i /etc/inetd.conf $ A5 r8 q/ {3 d9 M
这样,对该文件的任何改变都将被禁止。
9 a; ~8 a) @5 }- E1 t/ j9 R只有root重新设置复位标志后才能进行修改: 1 k# `# I1 B/ B* f; r7 p
# chattr -i /etc/inetd.conf
: F. A% o, D" P0 w# i3 y) X0 i5.允许和禁止远程访问
: f5 _0 c, ^( g3 S) e0 h在Linux中可通过/etc/hosts.allow 和/etc/hosts.deny 这2个文件允许和禁止远程主机对本地服务的访问。通常的做法是:
% U) y* v' u6 W(1)编辑hosts.deny文件,加入下列行:
0 q( [# k# B+ D, d; D# Deny access to everyone. 3 r; i. u) f. Y* p' `( M
ALL: ALL@ALL
( D+ L9 E+ J$ a! G+ ^* }则所有服务对所有外部主机禁止,除非由hosts.allow文件指明允许。 5 Z+ a; D2 c; O$ u5 {
(2)编辑hosts.allow 文件,可加入下列行: : a8 |& U n( U; Y
#Just an example: $ z/ J3 s L# x e4 r3 h8 ?7 K) r
ftp: 202.84.17.11 xinhuanet.com
5 t. ~$ q- v3 }: l则将允许IP地址为202.84.17.11和主机名为xinhuanet.com的机器作为Client访问FTP服务。 5 H& o. O' a6 m. `' @
(3)设置完成后,可用tcpdchk检查设置是否正确。 0 h4 j, Q1 G8 c6 h5 u
6.限制Shell命令记录大小
! Z: R& b j$ @3 K0 n7 S默认情况下,bash shell会在文件$HOME/.bash_history中存放多达500条命令记录(根据具体的系统不同,默认记录条数不同)。系统中每个用户的主目录下都有一个这样的文件。在此笔者强烈建议限制该文件的大小。
8 Y( Y& j; A# a) C5 x3 ~您可以编辑/etc/profile文件,修改其中的选项如下: HISTFILESIZE=30或HISTSIZE=30
3 s! L9 o/ u' M2 c: }- B8 F7 E& ?6 d7.注销时删除命令记录 ; p4 M# M h) C C/ \9 J7 `$ [
编辑/etc/skel/.bash_logout文件,增加如下行: - e- _; { j& ~9 U; V
rm -f $HOME/.bash_history
6 D! |5 o g( L这样,系统中的所有用户在注销时都会删除其命令记录。
! o' r- b# e" R6 w如果只需要针对某个特定用户,如root用户进行设置,则可只在该用户的主目录下修改/$HOME/.bash_history文件,增加相同的一行即可。 3 I2 B% _1 D; J2 r7 c9 ]$ f; v- `
8.禁止不必要的SUID程序 ) f# w# k- m* c0 _; t
SUID可以使普通用户以root权限执行某个程序,因此应严格控制系统中的此类程序。 " y2 I+ |$ T; l' a* ]
找出root所属的带s位的程序: ( {& c, g e+ a* o+ ~
# find / -type f \( -perm -04000 -o -perm -02000 \) -print |less
1 b+ x$ i1 |' _9 p! W# z禁止其中不必要的程序: : `! n! i/ K6 c3 i
# chmod a-s program_name
- L- E# y) s# G5 J$ K9 a7 [* F1 V9.检查开机时显示的信息
4 F, I% `: z. t# M$ a3 B7 Z: oLinux系统启动时,屏幕上会滚过一大串开机信息。如果开机时发现有问题,需要在系统启动后进行检查,可输入下列命令:
* V [6 v4 z, D; I. }' ?#dmesg >bootmessage
8 u; T! L+ l# Z/ x, s/ l该命令将把开机时显示的信息重定向输出到一个文件bootmessage中。
) s4 N( w, l8 ^10.磁盘空间的维护
% F' Z6 b. ]6 P5 E; ~( B9 T( H经常检查磁盘空间对维护Linux的文件系统非常必要。而Linux中对磁盘空间维护使用最多的命令就是df和du了。
7 H/ T, ? D3 d7 `6 Qdf命令主要检查文件系统的使用情况,通常的用法是:
6 R7 s, c9 W }5 X#df -k
x9 g, W7 Z5 o/ XFilesystem 1k-blocks Used Available Use% Mounted on 7 P+ H5 s9 p9 E* N+ E1 a" J* X4 O
/dev/hda3 1967156 1797786 67688 96% / . M2 h$ J$ l, m
du命令检查文件、目录和子目录占用磁盘空间的情况,通常带-s选项使用,只显示需检查目录占用磁盘空间的总计,而不会显示下面的子目录占用磁盘的情况。 ( A+ i* @9 b9 v' g0 O
% du -s /usr/X11R6/* * d& E, Y. s! j w# u! t
34490 /usr/X11R6/bin ' |) S9 ?+ y- W* i8 B
1 /usr/X11R6/doc : s; r" L% d5 e
3354 /usr/X11R6/include |
|