|
# g% o* B; h9 N* |: q系统安全性对于用户来说至关重要,Linux用户也不例外。笔者就自己使用Linux的经历,总结了一些增强Linux安全防护的小窍门,在此介绍给大家。 0 y6 V- p; Z) z4 y Y$ d
1.为LILO增加开机口令
, w- u+ ]0 }+ X& y在/etc/lilo.conf文件中增加选项,从而使LILO启动时要求输入口令,以加强系统的安全性。具体设置如下: & |3 i8 R' Q! c8 F5 {0 `6 [
boot=/dev/hda
) ]: A$ ~: u* ]. G& |6 x8 Lmap=/boot/map # x% V/ [/ X8 g( _; ]/ r$ K
install=/boot/boot.b
R0 {5 [2 \# N/ y& e4 ?6 _2 ?time-out=60 #等待1分钟
% F! l7 d, w1 A L( Gprompt 6 b9 _) a/ q: a, C U
default=linux 3 w4 Z3 Z6 G7 H7 l! s8 E" P; ?
password=
4 k0 B# O, X* b$ N; w1 [/ W#口令设置
) u1 E, d3 }4 X0 ~* Y" ]image=/boot/vmlinuz-2.2.14-12
& d1 q9 t$ J4 H: U9 b6 Q0 Tlabel=linux
5 \/ O8 F1 g% o: f) ainitrd=/boot/initrd-2.2.14-12.img # X7 p# [& L% Y! o! Q2 N- {. h5 I4 n
root=/dev/hda6 ! y4 T" ?0 ], P$ l$ k* R
read-only
8 f& [7 T4 f$ j7 ]' g此时需注意,由于在LILO中口令是以明码方式存放的,所以还需要将
9 Z, t' @6 ~, x% r1 Ililo.conf的文件属性设置为只有root可以读写。 3 H8 C- ]$ s) Q- ?# j
# chmod 600 /etc/lilo.conf - ^8 V' w% `$ w7 t
当然,还需要进行如下设置,使
- s3 Y2 d9 @9 F; ?2 v* Vlilo.conf的修改生效。
/ q& z1 k# r0 `6 Z% g/ V; p9 Y* b# /sbin/lilo -v
3 I4 X3 v% L# q6 e% y2.设置口令最小长度和 3 J( a4 ]6 A2 v: R; [! V9 `7 Z
最短使用时间 # [4 m1 v1 x3 [9 c7 n
口令是系统中认证用户的主要手段,系统安装时默认的口令最小长度通常为5,但为保证口令不易被猜测攻击,可增加口令的最小长度,至少等于8。为此,需修改文件/etc/login.defs中参数PASS_MIN_LEN。同时应限制口令使用时间,保证定期更换口令,建议修改参数PASS_MIN_DAYS。 , D5 H; k Y& W3 a
3.用户超时注销 / s( y O$ `2 g
如果用户离开时忘记注销账户,则可能给系统安全带来隐患。可修改/etc/profile文件,保证账户在一段时间没有操作后,自动从系统注销。 4 B* O! I9 e" [( A% n3 k
编辑文件/etc/profile,在“HISTFILESIZE=”行的下一行增加如下一行: % b d# _+ p8 C* _' ^
TMOUT=600
+ |$ r% x. \% @3 Z$ ?则所有用户将在10分钟无操作后自动注销。 0 A: k' T* E1 s1 _; p
4.禁止访问重要文件 $ } n% M( O. Y
对于系统中的某些关键性文件如inetd.conf、services和lilo.conf等可修改其属性,防止意外修改和被普通用户查看。 6 N6 Q4 |! @1 }; e, z1 D
首先改变文件属性为600:
9 p) z" A9 r! G7 c/ x5 v# D+ Z% @$ V# chmod 600 /etc/inetd.conf " Q! |% n1 w# ]& H
保证文件的属主为root,然后还可以将其设置为不能改变:
" x, ^, i% n/ h" ^# chattr +i /etc/inetd.conf
; [$ @& C. e0 ?: C: A1 b3 E这样,对该文件的任何改变都将被禁止。 1 O" V8 V/ c% g
只有root重新设置复位标志后才能进行修改:
9 D( {/ R# d# J$ T8 o# chattr -i /etc/inetd.conf
% R( y0 F0 G: J. W$ [& ?5.允许和禁止远程访问
5 g0 w0 n! J7 Y, p! K9 o0 `在Linux中可通过/etc/hosts.allow 和/etc/hosts.deny 这2个文件允许和禁止远程主机对本地服务的访问。通常的做法是: 7 r, V2 p/ z' w% @5 `4 p- w
(1)编辑hosts.deny文件,加入下列行: ( I2 q- c$ m2 b7 ~' B* j
# Deny access to everyone.
, A& V8 g& q8 y$ q* c% b# E$ [ALL: ALL@ALL
/ I/ I! u) C P! Y* L% }则所有服务对所有外部主机禁止,除非由hosts.allow文件指明允许。
7 ~ |8 z% V/ p0 U" O(2)编辑hosts.allow 文件,可加入下列行:
/ Q# q. w' ^8 x3 P6 K#Just an example:
* u! _& }. l7 V# [ftp: 202.84.17.11 xinhuanet.com
# G1 w7 W- Q0 `3 x2 X" B" y则将允许IP地址为202.84.17.11和主机名为xinhuanet.com的机器作为Client访问FTP服务。 8 y5 \' b# _1 \& M& x$ S$ m
(3)设置完成后,可用tcpdchk检查设置是否正确。
+ C+ q1 H# @/ d) P6.限制Shell命令记录大小
! `# R; ^3 R# S& U默认情况下,bash shell会在文件$HOME/.bash_history中存放多达500条命令记录(根据具体的系统不同,默认记录条数不同)。系统中每个用户的主目录下都有一个这样的文件。在此笔者强烈建议限制该文件的大小。
4 U9 A1 K. O& }5 F: {6 S3 n您可以编辑/etc/profile文件,修改其中的选项如下: HISTFILESIZE=30或HISTSIZE=30
6 D* S5 g7 {9 r$ c. P3 ^5 F7 U7.注销时删除命令记录
& u. T5 ~- G+ X% y W4 @, c" E+ B& x- M编辑/etc/skel/.bash_logout文件,增加如下行: 9 |: R/ C: d8 T9 c
rm -f $HOME/.bash_history
& L+ d1 I. K) o- f+ ~这样,系统中的所有用户在注销时都会删除其命令记录。
' x9 U& t1 R8 O! `! G* c如果只需要针对某个特定用户,如root用户进行设置,则可只在该用户的主目录下修改/$HOME/.bash_history文件,增加相同的一行即可。
) U/ o: }4 u! }: `9 n1 L8.禁止不必要的SUID程序
/ x. Z! a& k2 m) ` fSUID可以使普通用户以root权限执行某个程序,因此应严格控制系统中的此类程序。 / C9 {4 \* }; c
找出root所属的带s位的程序:
0 Y- _% G* S5 ~7 j9 u& f; U4 F# find / -type f \( -perm -04000 -o -perm -02000 \) -print |less * j/ \& |; m; W) A4 D' i* B5 s
禁止其中不必要的程序:
5 K; Y" J# T! K7 {) W# chmod a-s program_name
# I- V B( p1 p4 j* S9.检查开机时显示的信息 ( d; q. |' i' l; B
Linux系统启动时,屏幕上会滚过一大串开机信息。如果开机时发现有问题,需要在系统启动后进行检查,可输入下列命令:
8 C2 y8 \' f3 p+ J; C5 `+ W# p#dmesg >bootmessage
) H J& e. C1 V7 ]" ?该命令将把开机时显示的信息重定向输出到一个文件bootmessage中。 * F- h; {4 I) F) J1 {4 B
10.磁盘空间的维护
5 E- z0 j8 v% A Y3 L: c/ \5 {4 E经常检查磁盘空间对维护Linux的文件系统非常必要。而Linux中对磁盘空间维护使用最多的命令就是df和du了。
; ?8 L6 i% M& g: O1 i6 h9 ]df命令主要检查文件系统的使用情况,通常的用法是:
/ I+ r5 Y7 {; E+ v' g% o#df -k
4 \5 x; r$ j, ?Filesystem 1k-blocks Used Available Use% Mounted on 7 a7 k' H* E- ?7 X$ m. W* N( c$ N
/dev/hda3 1967156 1797786 67688 96% /
, `( i) l+ I6 T7 c3 fdu命令检查文件、目录和子目录占用磁盘空间的情况,通常带-s选项使用,只显示需检查目录占用磁盘空间的总计,而不会显示下面的子目录占用磁盘的情况。 7 |4 Z# @+ Q6 @" G$ I0 R6 Q5 R
% du -s /usr/X11R6/* % @# d$ @: b, ?& m
34490 /usr/X11R6/bin I. [+ S0 n+ C# [& c4 O* ]& G
1 /usr/X11R6/doc % s' J2 S7 r! x5 \5 Y
3354 /usr/X11R6/include |
|