|
& b+ S5 h2 T" _系统安全性对于用户来说至关重要,Linux用户也不例外。笔者就自己使用Linux的经历,总结了一些增强Linux安全防护的小窍门,在此介绍给大家。
4 n5 k; E( \: x7 H/ }9 [1 T1.为LILO增加开机口令
3 Z: L+ h6 M% D* [4 D% \- Z在/etc/lilo.conf文件中增加选项,从而使LILO启动时要求输入口令,以加强系统的安全性。具体设置如下:
) r& J5 R/ o/ Y3 J* z; h/ Nboot=/dev/hda
% p2 W. Y* @; a* z2 a* Vmap=/boot/map 5 _9 v( e, `1 B, Y7 s
install=/boot/boot.b 6 z# `, U5 P( g9 t& O- j$ B& s
time-out=60 #等待1分钟 + L6 j. p' X# L: g5 m
prompt + Y) p& ?5 D6 q- Q
default=linux
% \2 t/ ?; f* \, q8 ^9 F) rpassword=
/ H, N) g! {" L+ a6 p- |) w#口令设置
+ R! R0 _1 S7 i; F7 {& aimage=/boot/vmlinuz-2.2.14-12 " p* c7 r: L' t7 v: L' p* ?# m5 o2 \& E0 O
label=linux
" V3 B9 h" o. @2 j/ B# u$ ]initrd=/boot/initrd-2.2.14-12.img : w+ f" ?* f- K/ j, W; e, L5 x
root=/dev/hda6 $ R. J8 s( G# W% v
read-only
+ A) B. d* q7 z1 t8 g此时需注意,由于在LILO中口令是以明码方式存放的,所以还需要将
7 Y" o9 G$ U( W- K7 [; B, Mlilo.conf的文件属性设置为只有root可以读写。
! j: |. Q- I' H0 I9 V2 O# chmod 600 /etc/lilo.conf
; ?( o* z$ x) |当然,还需要进行如下设置,使
7 r) s' r" C+ M2 ]& ?2 ~lilo.conf的修改生效。 1 B1 l9 @3 c9 [
# /sbin/lilo -v
% M( _' N+ r r* X1 E, ?- T2.设置口令最小长度和
) n* r: {% |0 ^% G" h/ h最短使用时间
1 Z" ]* J! ]5 ~口令是系统中认证用户的主要手段,系统安装时默认的口令最小长度通常为5,但为保证口令不易被猜测攻击,可增加口令的最小长度,至少等于8。为此,需修改文件/etc/login.defs中参数PASS_MIN_LEN。同时应限制口令使用时间,保证定期更换口令,建议修改参数PASS_MIN_DAYS。 ' `$ c6 P. _( e: K1 `
3.用户超时注销 : T$ \" o* x4 Q* I9 L1 |! a+ R
如果用户离开时忘记注销账户,则可能给系统安全带来隐患。可修改/etc/profile文件,保证账户在一段时间没有操作后,自动从系统注销。
+ f1 J5 ?& z2 f3 N+ {: T编辑文件/etc/profile,在“HISTFILESIZE=”行的下一行增加如下一行: $ `! f+ C0 O7 x! q$ h
TMOUT=600
7 G# U# S7 g' @1 B- ?5 H则所有用户将在10分钟无操作后自动注销。
8 B. U! G1 z% Z: G8 u4.禁止访问重要文件 . E y, |+ Y, o1 P; ?5 N) H' n
对于系统中的某些关键性文件如inetd.conf、services和lilo.conf等可修改其属性,防止意外修改和被普通用户查看。
. n$ ?# L1 H B$ [5 E" ~; T首先改变文件属性为600:
! A) |' n7 o, J9 L# chmod 600 /etc/inetd.conf
& J; B$ B; n: h2 G/ D: `4 }" _保证文件的属主为root,然后还可以将其设置为不能改变: 3 \) j; q8 d5 V2 {5 q" N9 E
# chattr +i /etc/inetd.conf
0 X* f* G3 A' a6 o1 S这样,对该文件的任何改变都将被禁止。 ) K2 b! q& W& T' J- k
只有root重新设置复位标志后才能进行修改: R, h p4 ]: | Y& r N& `. Q
# chattr -i /etc/inetd.conf : w6 Q1 _- I' w
5.允许和禁止远程访问 4 ~* ~. y& {/ N9 M. ]% j
在Linux中可通过/etc/hosts.allow 和/etc/hosts.deny 这2个文件允许和禁止远程主机对本地服务的访问。通常的做法是: & B0 Y# A; u/ k
(1)编辑hosts.deny文件,加入下列行:
. L$ k9 j+ ~& C$ P; A9 h m# Deny access to everyone. 4 i! k4 D' T; f' J6 o! D
ALL: ALL@ALL % x, Z& H* I c
则所有服务对所有外部主机禁止,除非由hosts.allow文件指明允许。 / V3 t7 L) p; h: i
(2)编辑hosts.allow 文件,可加入下列行: A9 y6 l J' e9 }3 i g
#Just an example: ( X$ } ]9 K& K4 G0 D+ U( h
ftp: 202.84.17.11 xinhuanet.com $ m* x1 X8 {# I W8 _+ X$ B( U
则将允许IP地址为202.84.17.11和主机名为xinhuanet.com的机器作为Client访问FTP服务。
k ?/ m' ]% x* j! K(3)设置完成后,可用tcpdchk检查设置是否正确。 ) w+ E& N+ h. L7 n) ]4 B9 Y
6.限制Shell命令记录大小
( Q' k8 w( i$ r, C默认情况下,bash shell会在文件$HOME/.bash_history中存放多达500条命令记录(根据具体的系统不同,默认记录条数不同)。系统中每个用户的主目录下都有一个这样的文件。在此笔者强烈建议限制该文件的大小。
( o* J# R& [ l+ B' M您可以编辑/etc/profile文件,修改其中的选项如下: HISTFILESIZE=30或HISTSIZE=30
9 |% y3 I& N; Z7.注销时删除命令记录
" B5 o! o3 O1 G1 i8 Q/ [编辑/etc/skel/.bash_logout文件,增加如下行:
3 n+ Z( ]% U( V, ~" m. a$ xrm -f $HOME/.bash_history 4 a- E4 t& Z9 I( l
这样,系统中的所有用户在注销时都会删除其命令记录。
1 t9 _$ f% o1 I如果只需要针对某个特定用户,如root用户进行设置,则可只在该用户的主目录下修改/$HOME/.bash_history文件,增加相同的一行即可。 ; l$ e( v6 c! ]* e. J+ w9 e
8.禁止不必要的SUID程序 , V/ L0 S1 R8 A; A8 v$ n
SUID可以使普通用户以root权限执行某个程序,因此应严格控制系统中的此类程序。
% R8 q3 q3 M) s+ L4 E7 v找出root所属的带s位的程序:
: I( ]3 I* n% t% ]$ Q+ ~( _- P# find / -type f \( -perm -04000 -o -perm -02000 \) -print |less $ `9 o. x( b5 h3 r* S9 ]3 S
禁止其中不必要的程序:
7 ~/ h3 v# g" D" A8 A4 ~5 L# chmod a-s program_name # m' M8 Q+ X1 `8 \8 H/ d2 L
9.检查开机时显示的信息
3 ^; v/ V- K0 B3 o2 ZLinux系统启动时,屏幕上会滚过一大串开机信息。如果开机时发现有问题,需要在系统启动后进行检查,可输入下列命令: ! ]9 t z5 e: x- B$ e* D+ X
#dmesg >bootmessage
% t$ j) X I8 T' E2 C该命令将把开机时显示的信息重定向输出到一个文件bootmessage中。
, C, h" V4 r7 ] \0 {10.磁盘空间的维护
. o: @( A+ c) L, H6 Q$ S; T经常检查磁盘空间对维护Linux的文件系统非常必要。而Linux中对磁盘空间维护使用最多的命令就是df和du了。 * `- s, [+ ^9 I# {! l8 b$ N9 O7 d
df命令主要检查文件系统的使用情况,通常的用法是: / T" z; q1 n1 I; f/ U9 `" j
#df -k : t* B& R/ X6 j) D1 d! A
Filesystem 1k-blocks Used Available Use% Mounted on
$ }4 j6 A! @5 r& i8 }8 s/dev/hda3 1967156 1797786 67688 96% /
: E D3 N% q. o0 qdu命令检查文件、目录和子目录占用磁盘空间的情况,通常带-s选项使用,只显示需检查目录占用磁盘空间的总计,而不会显示下面的子目录占用磁盘的情况。
& t# Y! E( h7 I4 `) {! J% du -s /usr/X11R6/*
! n$ R# {. [7 B34490 /usr/X11R6/bin # W$ a8 C5 {- K7 n, {' y2 ~4 N# l/ u
1 /usr/X11R6/doc
9 C s$ Q' g' v7 S: K: Z( a% C3354 /usr/X11R6/include |
|