|
# W; |2 p, a7 z9 O# D; m9 U系统安全性对于用户来说至关重要,Linux用户也不例外。笔者就自己使用Linux的经历,总结了一些增强Linux安全防护的小窍门,在此介绍给大家。 ' c! s9 ]2 V+ n9 U9 S- Y/ m* y
1.为LILO增加开机口令 % Q1 }5 j6 k+ F j6 p
在/etc/lilo.conf文件中增加选项,从而使LILO启动时要求输入口令,以加强系统的安全性。具体设置如下: 0 s2 S1 d2 h6 z! u) j t8 ?& `
boot=/dev/hda : a) W0 L# X3 i$ y1 T: l( y
map=/boot/map 2 b$ C! H; y/ h, ^# m
install=/boot/boot.b ) Q5 c; \ t6 u& s
time-out=60 #等待1分钟 / {1 x/ z+ A/ F, I; Y
prompt
4 t: Y( A5 m8 X+ E% N$ G1 i( ndefault=linux
* O! P% y; L; x9 W/ Xpassword= ( x, u2 v0 B3 k" B# I7 ^
#口令设置 $ q5 S J" H# `1 ]- k' e
image=/boot/vmlinuz-2.2.14-12
; V3 E# I8 Y; l1 u/ E. k4 P' G5 flabel=linux # g' k3 N0 l& x$ d0 d3 U% g0 h
initrd=/boot/initrd-2.2.14-12.img
! I* G9 t- ?& ^" mroot=/dev/hda6
' J/ G0 ~; K& [0 ?. {' ~0 x4 dread-only
# Q! ]" t9 x; |; {- y0 R此时需注意,由于在LILO中口令是以明码方式存放的,所以还需要将
2 B. Y* S% U& s% S1 A Ililo.conf的文件属性设置为只有root可以读写。
: u/ J, R& r& E' g# chmod 600 /etc/lilo.conf
$ M' F$ h# \) k6 U1 N当然,还需要进行如下设置,使
7 _8 E5 m0 Q- U: K7 q$ G7 X6 s$ xlilo.conf的修改生效。 9 R" \: a% z- [4 o D, q( n
# /sbin/lilo -v
/ U1 _* N/ U* b1 V& V7 h9 D2.设置口令最小长度和
! Y# m7 o% z+ F' `2 t+ H最短使用时间
+ S' Q! ^# [' l口令是系统中认证用户的主要手段,系统安装时默认的口令最小长度通常为5,但为保证口令不易被猜测攻击,可增加口令的最小长度,至少等于8。为此,需修改文件/etc/login.defs中参数PASS_MIN_LEN。同时应限制口令使用时间,保证定期更换口令,建议修改参数PASS_MIN_DAYS。
9 ]) [3 ^0 u" @3.用户超时注销 ' Q$ h% Z. J: Q0 I! Q; r, ^. Q- {+ D
如果用户离开时忘记注销账户,则可能给系统安全带来隐患。可修改/etc/profile文件,保证账户在一段时间没有操作后,自动从系统注销。
- K ~0 O- V' f7 T编辑文件/etc/profile,在“HISTFILESIZE=”行的下一行增加如下一行:
$ M- D) A* y( s" XTMOUT=600 9 x# S# h+ K" j6 a- W( t5 t
则所有用户将在10分钟无操作后自动注销。
2 f7 f+ [9 n* Q& i4.禁止访问重要文件
2 E* d5 G3 l$ L) r. d对于系统中的某些关键性文件如inetd.conf、services和lilo.conf等可修改其属性,防止意外修改和被普通用户查看。
1 J; Z( m* ]+ i' u+ C' A9 b首先改变文件属性为600:
$ h9 k8 v! _8 q# ]: W# chmod 600 /etc/inetd.conf ' h3 z. c. z' b9 d6 d, g
保证文件的属主为root,然后还可以将其设置为不能改变: 4 t0 Z: u* m: C8 \* t
# chattr +i /etc/inetd.conf
7 ?# w9 U( W+ W5 d3 ?# ?这样,对该文件的任何改变都将被禁止。 5 \. j. M- h) q/ Q) M" j
只有root重新设置复位标志后才能进行修改: 2 |6 Y5 `# @2 M3 ?( e2 _5 W& l' y- I
# chattr -i /etc/inetd.conf
; E6 o6 Z# e* a- B* B( A5.允许和禁止远程访问
0 P* I! J2 c; I+ I) ~在Linux中可通过/etc/hosts.allow 和/etc/hosts.deny 这2个文件允许和禁止远程主机对本地服务的访问。通常的做法是: & L3 o1 `, B2 b- j w( ?5 o
(1)编辑hosts.deny文件,加入下列行:
' | w& _0 D9 d& j# Deny access to everyone. # J% ^6 p5 H' \) p' l& k- g
ALL: ALL@ALL
6 l: p- E9 Y; E, u* O4 _0 H则所有服务对所有外部主机禁止,除非由hosts.allow文件指明允许。 & T) |; u' p4 b, E
(2)编辑hosts.allow 文件,可加入下列行: 6 g4 C% b; L' t/ |1 Q E# C
#Just an example:
0 D) e, h2 f/ X C |ftp: 202.84.17.11 xinhuanet.com . T- B, O9 h" {' N* Q. s' G
则将允许IP地址为202.84.17.11和主机名为xinhuanet.com的机器作为Client访问FTP服务。 % w1 p1 D9 F' |4 M& f8 [3 n, t8 J
(3)设置完成后,可用tcpdchk检查设置是否正确。
- z' [9 G" t- d6.限制Shell命令记录大小 / z/ b* T4 Z- Y/ [$ l! F/ A8 V
默认情况下,bash shell会在文件$HOME/.bash_history中存放多达500条命令记录(根据具体的系统不同,默认记录条数不同)。系统中每个用户的主目录下都有一个这样的文件。在此笔者强烈建议限制该文件的大小。 : @0 _5 I# p6 K( s6 N& M
您可以编辑/etc/profile文件,修改其中的选项如下: HISTFILESIZE=30或HISTSIZE=30
% `) R5 R' K- E; _5 q+ y7.注销时删除命令记录 ! q. j- o' H! t. K
编辑/etc/skel/.bash_logout文件,增加如下行: , ?9 H/ Q d. a K7 F7 i
rm -f $HOME/.bash_history + a" i5 ], ?/ [, M2 Y7 D1 q8 v
这样,系统中的所有用户在注销时都会删除其命令记录。 . O9 \4 L! M o! r, M
如果只需要针对某个特定用户,如root用户进行设置,则可只在该用户的主目录下修改/$HOME/.bash_history文件,增加相同的一行即可。
$ U* d2 N% C4 x7 D1 v3 I" H8.禁止不必要的SUID程序 " k, g1 ~7 U# @9 y& q" i
SUID可以使普通用户以root权限执行某个程序,因此应严格控制系统中的此类程序。 8 L* p* p3 ~& f7 r* {
找出root所属的带s位的程序:
( {! M/ E7 Q. g2 w6 G# find / -type f \( -perm -04000 -o -perm -02000 \) -print |less
% P# X! \! S, R7 O! v! P3 T) O9 Z2 g禁止其中不必要的程序:
9 | ~8 S+ l7 p. k% f2 `" K# chmod a-s program_name
8 R% z7 J, c! x9.检查开机时显示的信息
: I4 c5 h9 H, r) H) PLinux系统启动时,屏幕上会滚过一大串开机信息。如果开机时发现有问题,需要在系统启动后进行检查,可输入下列命令:
, u/ k) i b$ e- K& k/ `#dmesg >bootmessage
# J8 ?- ^9 ?5 y }- Q6 ]该命令将把开机时显示的信息重定向输出到一个文件bootmessage中。
/ e& b: l7 @ |# n$ V( N$ U$ g10.磁盘空间的维护
2 k1 }1 W1 u" { h; j% s经常检查磁盘空间对维护Linux的文件系统非常必要。而Linux中对磁盘空间维护使用最多的命令就是df和du了。
0 f' k2 } _1 bdf命令主要检查文件系统的使用情况,通常的用法是:
0 h: o1 W7 D) ^6 T3 q#df -k 3 G: H% H. [, V+ G c: ^* Q% z
Filesystem 1k-blocks Used Available Use% Mounted on 9 e, K2 c* W3 M$ U
/dev/hda3 1967156 1797786 67688 96% /
4 m. W' r- w* c" e7 ?1 e" a2 Sdu命令检查文件、目录和子目录占用磁盘空间的情况,通常带-s选项使用,只显示需检查目录占用磁盘空间的总计,而不会显示下面的子目录占用磁盘的情况。 ) ?% w" k6 P, p6 g4 Z; I
% du -s /usr/X11R6/*
1 I4 ]- Y& f$ C5 f3 j8 u34490 /usr/X11R6/bin & c* _/ h2 x" m9 a
1 /usr/X11R6/doc
3 A8 ]6 D; ]2 v- d, V3354 /usr/X11R6/include |
|