|
$ P! c4 J# D0 E+ u5 b6 R" R+ l5 d系统安全性对于用户来说至关重要,Linux用户也不例外。笔者就自己使用Linux的经历,总结了一些增强Linux安全防护的小窍门,在此介绍给大家。
& L; z" k4 T1 K7 S |5 ^ m' N1.为LILO增加开机口令 ; t3 v* R) H6 |) d+ B
在/etc/lilo.conf文件中增加选项,从而使LILO启动时要求输入口令,以加强系统的安全性。具体设置如下: * a# S% t9 C, p& {
boot=/dev/hda
^$ n% B( N) ~1 w0 Qmap=/boot/map % Y. J4 U- R2 P0 F! a
install=/boot/boot.b
' m# Z! v3 ^4 [7 b, k6 g" q* `9 H- i* ntime-out=60 #等待1分钟 , S5 }, A6 e) @0 V! ~( q% q
prompt 3 u" y: L9 V( a3 X2 M, ]& O; A
default=linux
# ^8 _) }( s% x* opassword= ! x6 D3 `0 |. y* J$ w3 I# \
#口令设置
- I( [" B9 {1 y8 {image=/boot/vmlinuz-2.2.14-12 ?8 m* i: \4 S2 p' W
label=linux 7 J! W3 b. ]- S8 J( o
initrd=/boot/initrd-2.2.14-12.img
1 M, p- Q7 T9 y- i& B; Jroot=/dev/hda6
- z3 h: K, ]6 t. ^; J) |read-only 8 z* _4 _; i% ~6 B) h3 s6 A
此时需注意,由于在LILO中口令是以明码方式存放的,所以还需要将 * T. O9 a! [; x5 C) [! }# A2 c& z
lilo.conf的文件属性设置为只有root可以读写。 7 t, O4 N8 v9 b% \! ~0 \
# chmod 600 /etc/lilo.conf / j% m- K+ l* O& S" R
当然,还需要进行如下设置,使 ; `# S3 g( B! I) l, I6 R
lilo.conf的修改生效。
' q) C3 n( h$ f( B( D0 ]# /sbin/lilo -v
1 Q( W% Y! s5 V& K2.设置口令最小长度和 4 X# O4 j4 L6 H, e& z
最短使用时间
! A) S& `9 ]1 C口令是系统中认证用户的主要手段,系统安装时默认的口令最小长度通常为5,但为保证口令不易被猜测攻击,可增加口令的最小长度,至少等于8。为此,需修改文件/etc/login.defs中参数PASS_MIN_LEN。同时应限制口令使用时间,保证定期更换口令,建议修改参数PASS_MIN_DAYS。 9 w, C, T |' p* u0 z
3.用户超时注销
* A) j" w4 @: p% }5 E9 I$ c4 O: Y如果用户离开时忘记注销账户,则可能给系统安全带来隐患。可修改/etc/profile文件,保证账户在一段时间没有操作后,自动从系统注销。
3 b. d/ J. {* }4 y3 s编辑文件/etc/profile,在“HISTFILESIZE=”行的下一行增加如下一行:
$ E' y! Q3 f* iTMOUT=600
. p2 _% Y5 [0 L' |3 M. @' l4 F& j则所有用户将在10分钟无操作后自动注销。
+ f! a" e+ U8 ~1 W; C4 \5 H4.禁止访问重要文件
% ]/ {( z. }/ A5 |+ K对于系统中的某些关键性文件如inetd.conf、services和lilo.conf等可修改其属性,防止意外修改和被普通用户查看。
. A+ ]' Z, ?4 I- `首先改变文件属性为600:
6 ~! k' i3 O* d5 m& j4 H. B+ b# chmod 600 /etc/inetd.conf
' c2 l: ~" V: o& u9 Y保证文件的属主为root,然后还可以将其设置为不能改变:
4 _. i8 x w7 g% n) m5 `# chattr +i /etc/inetd.conf 9 n$ M* U( x7 K* S: n
这样,对该文件的任何改变都将被禁止。
# Z! S& j) W" ^% b: x只有root重新设置复位标志后才能进行修改:
$ q1 S: B5 p' e; d# chattr -i /etc/inetd.conf , L O9 S, o1 \% r
5.允许和禁止远程访问 & s! l% E4 u6 I7 G! M
在Linux中可通过/etc/hosts.allow 和/etc/hosts.deny 这2个文件允许和禁止远程主机对本地服务的访问。通常的做法是:
. y: @& j& {) a# R8 I: X(1)编辑hosts.deny文件,加入下列行: 9 f+ ^$ ^1 B% m, L+ w$ `
# Deny access to everyone.
% k0 w) u# I6 ?! CALL: ALL@ALL ; P. d! ?0 H, L9 a
则所有服务对所有外部主机禁止,除非由hosts.allow文件指明允许。 ) a. ~2 O0 \% @! b4 M
(2)编辑hosts.allow 文件,可加入下列行: Y. [4 k$ a! K- _1 {
#Just an example:
2 K1 `% X: \5 ^5 j0 Oftp: 202.84.17.11 xinhuanet.com 5 E: ]3 Q6 M5 G7 B! S4 T7 `
则将允许IP地址为202.84.17.11和主机名为xinhuanet.com的机器作为Client访问FTP服务。
# C8 v9 }6 M/ B" H, M3 \(3)设置完成后,可用tcpdchk检查设置是否正确。
7 ?( i! C- Z# Y3 r) i [* d6.限制Shell命令记录大小
8 \4 h W2 M/ _) n( z$ K1 k3 G* w) Z3 N默认情况下,bash shell会在文件$HOME/.bash_history中存放多达500条命令记录(根据具体的系统不同,默认记录条数不同)。系统中每个用户的主目录下都有一个这样的文件。在此笔者强烈建议限制该文件的大小。 ! v% f: J& j i" e
您可以编辑/etc/profile文件,修改其中的选项如下: HISTFILESIZE=30或HISTSIZE=30
/ V5 F1 V1 I9 Q6 t+ O4 J7.注销时删除命令记录 1 c; X8 f+ X" f1 R$ O% S
编辑/etc/skel/.bash_logout文件,增加如下行: - V9 ~9 X8 V) t+ Y) s8 v
rm -f $HOME/.bash_history
$ W* l0 @0 |) e5 u8 R! O! P这样,系统中的所有用户在注销时都会删除其命令记录。
$ s6 i/ W% L& V. A+ N- f如果只需要针对某个特定用户,如root用户进行设置,则可只在该用户的主目录下修改/$HOME/.bash_history文件,增加相同的一行即可。
9 O* c6 g/ v8 d/ g0 @: p* b( H7 _8.禁止不必要的SUID程序 9 E$ r( C# w Y5 h
SUID可以使普通用户以root权限执行某个程序,因此应严格控制系统中的此类程序。
v- P7 P) Y' d" K$ U5 M找出root所属的带s位的程序: : \6 ?- O7 }- t" q" K
# find / -type f \( -perm -04000 -o -perm -02000 \) -print |less
& `/ m! s/ Z5 `- o3 O3 H5 `禁止其中不必要的程序: 6 O- ?0 `4 W( C& s; s; g0 ?0 x7 ~
# chmod a-s program_name 7 x( ?/ k2 v& h
9.检查开机时显示的信息
* |2 w! a$ s+ Q4 O) b5 s$ ]Linux系统启动时,屏幕上会滚过一大串开机信息。如果开机时发现有问题,需要在系统启动后进行检查,可输入下列命令: / S6 v j+ R* R0 h6 K- K; `
#dmesg >bootmessage 7 M' o( ~, ?% H
该命令将把开机时显示的信息重定向输出到一个文件bootmessage中。 . \9 u" N3 U: c& k$ A; a+ R
10.磁盘空间的维护
1 F; Y3 \& [3 t; C5 Q经常检查磁盘空间对维护Linux的文件系统非常必要。而Linux中对磁盘空间维护使用最多的命令就是df和du了。
M8 g$ p+ y% c* B5 S8 ^ a; {6 @df命令主要检查文件系统的使用情况,通常的用法是:
0 o$ z T! h- k/ C; Y! ]#df -k & y/ B( E6 r0 Y- D4 Y
Filesystem 1k-blocks Used Available Use% Mounted on : {2 \, ~3 A# i& a) C# U
/dev/hda3 1967156 1797786 67688 96% /
& ~0 o( X6 U4 [, j5 z+ Hdu命令检查文件、目录和子目录占用磁盘空间的情况,通常带-s选项使用,只显示需检查目录占用磁盘空间的总计,而不会显示下面的子目录占用磁盘的情况。
5 ]7 g, C7 q$ t: K0 d9 `% w; @% du -s /usr/X11R6/*
8 X* L4 N& |! b1 h1 J4 B34490 /usr/X11R6/bin . K" b, t+ b P. H9 y5 ~7 V
1 /usr/X11R6/doc ) u0 i0 _7 k0 T/ g$ k. {2 U$ T5 O
3354 /usr/X11R6/include |
|