|
' d6 C4 Q( H8 S& S" E9 g- O系统安全性对于用户来说至关重要,Linux用户也不例外。笔者就自己使用Linux的经历,总结了一些增强Linux安全防护的小窍门,在此介绍给大家。 4 I$ Z" j; t k: ^
1.为LILO增加开机口令
! R# n% y! h, L/ o% w% R$ p在/etc/lilo.conf文件中增加选项,从而使LILO启动时要求输入口令,以加强系统的安全性。具体设置如下: # q$ i8 y+ v* O" e6 Z( W
boot=/dev/hda : y% A* t3 z" }8 s
map=/boot/map
8 p: Q: u. P! h% xinstall=/boot/boot.b - A. F- k/ r' @# a3 o1 n
time-out=60 #等待1分钟 / @* z# d" }. S O) z. j& S
prompt * f6 f& _3 @8 w! U2 q' O6 m
default=linux
0 X5 h; x% u9 s+ O2 y5 apassword= * |. o: ~! r# y* H5 j* I
#口令设置
0 F8 I" V5 Z O! Gimage=/boot/vmlinuz-2.2.14-12 . K8 w* O2 l. F. f8 f
label=linux
8 c$ k2 Y- M9 v/ q& [7 Yinitrd=/boot/initrd-2.2.14-12.img
6 E0 e$ p& d) Groot=/dev/hda6
3 ~1 H4 K) Z' W& [) Dread-only
# `5 V0 {: R0 p1 q1 m! l2 n% S此时需注意,由于在LILO中口令是以明码方式存放的,所以还需要将 " d' G) B' O1 A, g2 X F$ ?
lilo.conf的文件属性设置为只有root可以读写。 1 f# z: F% B) z' J* f2 C8 V
# chmod 600 /etc/lilo.conf
6 [3 P' R+ \% O& Y* j$ {- a3 W- J# w当然,还需要进行如下设置,使 ' R2 \$ |4 ~7 [; [0 O
lilo.conf的修改生效。 0 L" s% R0 I2 d0 i# L, D
# /sbin/lilo -v - @. W" d/ Q& u+ o
2.设置口令最小长度和 9 ^; N3 j, e" _' ]' t& L$ V% A
最短使用时间
0 Z; ]5 M; @, K9 _. h& j口令是系统中认证用户的主要手段,系统安装时默认的口令最小长度通常为5,但为保证口令不易被猜测攻击,可增加口令的最小长度,至少等于8。为此,需修改文件/etc/login.defs中参数PASS_MIN_LEN。同时应限制口令使用时间,保证定期更换口令,建议修改参数PASS_MIN_DAYS。
" U/ i% a8 a8 U+ D# i' j3 d( b& G3.用户超时注销 * [' K' E2 C1 S/ G
如果用户离开时忘记注销账户,则可能给系统安全带来隐患。可修改/etc/profile文件,保证账户在一段时间没有操作后,自动从系统注销。 # \, d d U/ J7 h
编辑文件/etc/profile,在“HISTFILESIZE=”行的下一行增加如下一行: , }' ?" G0 j9 W( |
TMOUT=600
1 B0 ^" @! h6 E7 C) n" m/ {则所有用户将在10分钟无操作后自动注销。 * g/ R9 o6 o+ R! v. K! j& W( w
4.禁止访问重要文件
' q; } j0 f/ p `" E6 [! d对于系统中的某些关键性文件如inetd.conf、services和lilo.conf等可修改其属性,防止意外修改和被普通用户查看。
/ S% X( L) L0 V) p& D0 ?( j首先改变文件属性为600: % `7 Z# u- |2 n0 t* G; t1 k
# chmod 600 /etc/inetd.conf
. K$ \$ P! j4 S保证文件的属主为root,然后还可以将其设置为不能改变:
6 g _" ^ o% s3 U4 @ [# chattr +i /etc/inetd.conf
" g" y; }, G0 R8 v# f+ B6 S7 W' v8 M这样,对该文件的任何改变都将被禁止。
]0 G& |* ~6 N4 Z$ C7 Q1 Z/ }' c只有root重新设置复位标志后才能进行修改: $ v* [ v i' k# B, s5 d# |
# chattr -i /etc/inetd.conf ; S- a- ^4 u: C6 I& z, f
5.允许和禁止远程访问
* I, C: a% I$ m; ~在Linux中可通过/etc/hosts.allow 和/etc/hosts.deny 这2个文件允许和禁止远程主机对本地服务的访问。通常的做法是: n- a5 j7 I1 y# `
(1)编辑hosts.deny文件,加入下列行: 3 R$ \) E: E( H
# Deny access to everyone.
$ T) h! v7 Y3 g' n( u' ~0 F; Y) {ALL: ALL@ALL
& W1 A. o- k5 l0 J* ]' a. D则所有服务对所有外部主机禁止,除非由hosts.allow文件指明允许。
" k- T: K2 z# w2 V(2)编辑hosts.allow 文件,可加入下列行: / z* J- o; S, @% P$ y) ^' K
#Just an example:
, w/ e- B( E4 r) v, [( T9 W* gftp: 202.84.17.11 xinhuanet.com
0 f5 U. a" |2 K则将允许IP地址为202.84.17.11和主机名为xinhuanet.com的机器作为Client访问FTP服务。
/ a9 Y; M( ?9 r! W(3)设置完成后,可用tcpdchk检查设置是否正确。
, @2 y; L! i/ V t; F Z b6.限制Shell命令记录大小
7 @1 G$ z! P( d; P# B1 V默认情况下,bash shell会在文件$HOME/.bash_history中存放多达500条命令记录(根据具体的系统不同,默认记录条数不同)。系统中每个用户的主目录下都有一个这样的文件。在此笔者强烈建议限制该文件的大小。 " a- k% N& A7 g
您可以编辑/etc/profile文件,修改其中的选项如下: HISTFILESIZE=30或HISTSIZE=30
9 M$ l) g" }( l! ]" u) @7.注销时删除命令记录
6 ?# l( O/ p6 P' p3 k' H s编辑/etc/skel/.bash_logout文件,增加如下行:
& Y5 V {! L* ~/ ^! i/ B) \/ trm -f $HOME/.bash_history ( a4 S# r; Y6 ` K8 `
这样,系统中的所有用户在注销时都会删除其命令记录。 # e% H; X3 b3 j I( }
如果只需要针对某个特定用户,如root用户进行设置,则可只在该用户的主目录下修改/$HOME/.bash_history文件,增加相同的一行即可。 A, K9 q6 g9 u/ B( y( m" T
8.禁止不必要的SUID程序
5 C6 k9 ]0 z* ASUID可以使普通用户以root权限执行某个程序,因此应严格控制系统中的此类程序。 1 X$ `/ T( I/ z: q1 z, T
找出root所属的带s位的程序:
! a" O, H$ @- R5 k% i# find / -type f \( -perm -04000 -o -perm -02000 \) -print |less 9 A1 {4 z% n6 n4 ~5 y8 [
禁止其中不必要的程序: - S$ k7 d' G' D! ~& w1 B
# chmod a-s program_name 6 h$ x; R0 D; w! f/ g
9.检查开机时显示的信息 + E$ z7 V5 k3 f6 \9 j, {
Linux系统启动时,屏幕上会滚过一大串开机信息。如果开机时发现有问题,需要在系统启动后进行检查,可输入下列命令:
5 l: n9 [8 y: P4 l! C#dmesg >bootmessage ! @, K |. B4 O; m7 c
该命令将把开机时显示的信息重定向输出到一个文件bootmessage中。 # t) w s# r/ ^# n% A! }$ N3 H% {
10.磁盘空间的维护 ) ] D6 d5 J0 L" a4 J3 O2 ^) u4 W
经常检查磁盘空间对维护Linux的文件系统非常必要。而Linux中对磁盘空间维护使用最多的命令就是df和du了。
% J+ j& R* Z3 N* jdf命令主要检查文件系统的使用情况,通常的用法是: & X) K7 s$ N9 \: b& n
#df -k : _( y- i5 {/ U9 G0 {# B
Filesystem 1k-blocks Used Available Use% Mounted on ' ], {7 G! s6 U
/dev/hda3 1967156 1797786 67688 96% /
7 S1 v3 v9 Y* R9 Q- C) h9 ?+ Q7 ~du命令检查文件、目录和子目录占用磁盘空间的情况,通常带-s选项使用,只显示需检查目录占用磁盘空间的总计,而不会显示下面的子目录占用磁盘的情况。
- t* A# d( Y5 ~: w2 }3 d% du -s /usr/X11R6/* 3 L' a x4 }/ e! H/ z) J2 e+ n1 d
34490 /usr/X11R6/bin
0 j# U7 M% v3 {2 ?; S+ m1 /usr/X11R6/doc
, C2 W* Q. `* e! ^3354 /usr/X11R6/include |
|