|
8 D: G& V: r% K
系统安全性对于用户来说至关重要,Linux用户也不例外。笔者就自己使用Linux的经历,总结了一些增强Linux安全防护的小窍门,在此介绍给大家。
0 t( I F ^3 s: D" K1.为LILO增加开机口令
) s8 x, P) @! q5 X; p在/etc/lilo.conf文件中增加选项,从而使LILO启动时要求输入口令,以加强系统的安全性。具体设置如下:
! O5 R& {6 y6 u$ Y0 Qboot=/dev/hda , O. W" M5 N8 }& ]3 n
map=/boot/map
. V% y& B$ p7 s) _5 ]4 K# B' F0 yinstall=/boot/boot.b / U8 `- z9 b5 ~0 U8 E
time-out=60 #等待1分钟
) B( c3 a8 k! i8 xprompt
! j% W& @. k/ u/ S2 _. ~default=linux
3 y2 y8 {6 J7 l$ L% A8 Epassword= . q0 Z& K5 Z7 y/ q) ^
#口令设置 # p7 | D4 C) O
image=/boot/vmlinuz-2.2.14-12
% N6 x' e& M% G% a9 c- e5 [9 plabel=linux 5 X. U ~. K$ B$ D. y
initrd=/boot/initrd-2.2.14-12.img : ?% _) `5 O8 `0 J9 y# h+ M/ h& f
root=/dev/hda6
/ L- ^. k0 k; N" q* }8 Zread-only . G$ H9 k% l7 K* o; ?3 q
此时需注意,由于在LILO中口令是以明码方式存放的,所以还需要将
' V9 n7 Q! i: \9 S) ylilo.conf的文件属性设置为只有root可以读写。 + T9 z$ E8 U: X5 C) z
# chmod 600 /etc/lilo.conf : s3 U# ~2 b5 ?" S8 |) r; ?
当然,还需要进行如下设置,使 3 ~. q% _& Z/ n: p: {2 m6 {, p+ a
lilo.conf的修改生效。
( Y* f" J, Y! I& H5 V# /sbin/lilo -v
8 M8 X* e' G" b# P7 r# {2.设置口令最小长度和
- b$ I" U5 q" @) c! A) N7 v最短使用时间
3 q" I% t1 P- f: b口令是系统中认证用户的主要手段,系统安装时默认的口令最小长度通常为5,但为保证口令不易被猜测攻击,可增加口令的最小长度,至少等于8。为此,需修改文件/etc/login.defs中参数PASS_MIN_LEN。同时应限制口令使用时间,保证定期更换口令,建议修改参数PASS_MIN_DAYS。 9 ^+ L0 x1 ~! Y& Q* c4 u+ P
3.用户超时注销 5 V) w6 K9 y. l4 A! c+ m. N
如果用户离开时忘记注销账户,则可能给系统安全带来隐患。可修改/etc/profile文件,保证账户在一段时间没有操作后,自动从系统注销。
3 }! [9 N' ^ {# r( R编辑文件/etc/profile,在“HISTFILESIZE=”行的下一行增加如下一行:
( z/ J e, q9 l4 G7 F2 R6 e' XTMOUT=600
( V8 F f! Y0 `8 E4 {# g6 t: u7 w则所有用户将在10分钟无操作后自动注销。 0 e9 ~1 _0 \" `5 U' }. l1 c) G
4.禁止访问重要文件
4 S1 D2 n; _' E对于系统中的某些关键性文件如inetd.conf、services和lilo.conf等可修改其属性,防止意外修改和被普通用户查看。 * g$ K! S5 e" k' H4 n
首先改变文件属性为600:
, b" ]" a- j! {& G( @$ V0 R6 [1 P# chmod 600 /etc/inetd.conf
" o6 | w6 u. e+ z保证文件的属主为root,然后还可以将其设置为不能改变: - X! o0 E- u0 J0 @: O7 e
# chattr +i /etc/inetd.conf
/ w3 G# \: B% E这样,对该文件的任何改变都将被禁止。
; ~6 n1 d# Y' @! z# P只有root重新设置复位标志后才能进行修改:
# _& O2 D4 |5 U, ^. F, a9 w2 d# chattr -i /etc/inetd.conf
0 i. d: h- }$ M) U5 ?6 x: m p; m5.允许和禁止远程访问 ! D( o7 w) j& J0 Z$ k6 E# v2 k
在Linux中可通过/etc/hosts.allow 和/etc/hosts.deny 这2个文件允许和禁止远程主机对本地服务的访问。通常的做法是:
4 G) |: d4 o$ \) i* x* s p* i. {% B7 h(1)编辑hosts.deny文件,加入下列行: ( ~3 e0 V7 |4 }, i5 \
# Deny access to everyone. 1 D5 @! h) Y, [2 `
ALL: ALL@ALL
2 a u( D# `0 w+ R( x) `- L则所有服务对所有外部主机禁止,除非由hosts.allow文件指明允许。 * Q2 ]# Q7 N5 u, y0 s1 ~5 @
(2)编辑hosts.allow 文件,可加入下列行:
* H3 T1 s$ q. I# q: U% x& ~/ t3 V3 m#Just an example: ' j* y# m! j) j& {& B$ ]/ F
ftp: 202.84.17.11 xinhuanet.com
6 N, z- z6 q9 Y1 C2 B则将允许IP地址为202.84.17.11和主机名为xinhuanet.com的机器作为Client访问FTP服务。 9 Z& w# I# N& E0 {# p
(3)设置完成后,可用tcpdchk检查设置是否正确。
6 S7 w8 X2 s5 t9 L# l6.限制Shell命令记录大小
0 k6 g5 M8 A% D* g8 K' r默认情况下,bash shell会在文件$HOME/.bash_history中存放多达500条命令记录(根据具体的系统不同,默认记录条数不同)。系统中每个用户的主目录下都有一个这样的文件。在此笔者强烈建议限制该文件的大小。 * `0 \2 O6 ~# N- E1 s. x
您可以编辑/etc/profile文件,修改其中的选项如下: HISTFILESIZE=30或HISTSIZE=30
9 f3 d2 L+ H* m; K1 R. i7.注销时删除命令记录 O. \- I2 w; Z# {
编辑/etc/skel/.bash_logout文件,增加如下行:
! s" g+ t3 H8 w _8 Erm -f $HOME/.bash_history 9 l- j% _ W* B5 p7 g
这样,系统中的所有用户在注销时都会删除其命令记录。 `, |1 ^! |0 s9 ]
如果只需要针对某个特定用户,如root用户进行设置,则可只在该用户的主目录下修改/$HOME/.bash_history文件,增加相同的一行即可。 : g* h: h; u5 a) V2 C o
8.禁止不必要的SUID程序 9 M; E) h* ?4 C; N! q+ G$ @
SUID可以使普通用户以root权限执行某个程序,因此应严格控制系统中的此类程序。
) {* }8 ]6 `% t* r6 N找出root所属的带s位的程序: 9 P: s+ v/ u9 t/ Q
# find / -type f \( -perm -04000 -o -perm -02000 \) -print |less ' J5 m* [2 {# O9 m
禁止其中不必要的程序:
$ k# r- N; K% X) }; v. ^1 _# chmod a-s program_name
# b% b6 p, c# M/ b9.检查开机时显示的信息 $ k8 [3 ?5 e4 ^7 `* w$ K/ y3 ~
Linux系统启动时,屏幕上会滚过一大串开机信息。如果开机时发现有问题,需要在系统启动后进行检查,可输入下列命令: 8 b+ P: F R" g" Z
#dmesg >bootmessage # h4 V0 e& Q/ m+ Y H8 b
该命令将把开机时显示的信息重定向输出到一个文件bootmessage中。
7 y% J6 X9 V4 M9 a" K0 }7 D" E10.磁盘空间的维护
H( Y* z3 v/ g8 q( c6 [经常检查磁盘空间对维护Linux的文件系统非常必要。而Linux中对磁盘空间维护使用最多的命令就是df和du了。 # A. L8 T! l* t3 D1 O
df命令主要检查文件系统的使用情况,通常的用法是:
# i1 G' m) j; ?# |2 f3 Q% r# r! F#df -k
% h3 W1 d5 G( f; B& m H( _* R \Filesystem 1k-blocks Used Available Use% Mounted on / n8 h; Q/ n- V4 Z6 B/ g' T
/dev/hda3 1967156 1797786 67688 96% / * d$ Z. @0 C7 ]( Z* k
du命令检查文件、目录和子目录占用磁盘空间的情况,通常带-s选项使用,只显示需检查目录占用磁盘空间的总计,而不会显示下面的子目录占用磁盘的情况。
2 \8 m$ _6 m5 B5 R( s& a% du -s /usr/X11R6/*
5 s# n% t1 }! G6 |34490 /usr/X11R6/bin
5 S3 k: D5 r7 v) S4 b/ o1 /usr/X11R6/doc
, r5 {! ^$ j; l& {& d) c0 S& h3354 /usr/X11R6/include |
|