Linux网管123---第12章.保持伺服器
安全的策略
6 o- K" N3 D5 n: \" m% H2006-06-01
* l i1 y$ z6 `+ O2 g5 w* M3 ]. O& {) M, h
( F# b8 }$ h. L4 F+ |7 e
和其他贩卖者的作业
系统相比,Linux必定可以被认为是安全的--或是更安全。公认的,
' H# o1 ~0 b4 B
随着Linux变得越来越普及,将会变成很有吸引力的目标而吸引怪客集中精
神致力於突破它。
: ~7 H g- Q$ Q+ m v
随着一次一次的尝试,某些漏洞会被发现,然而Linux开放的本质往往使得这些漏洞很快的就被
$ {/ H% x7 X4 k' h
修补了,而且安全注意通告被广泛地传播,包括暂时的处理方式或更新软体的
指南。
/ }+ \ R9 _' t" O0 B; ^6 H0 E我不会假装是有关安全内容的专家,但至少我明白这些内容,我相信致力於使某人的系统可能
- n1 z6 U, C" S+ R
的安全是战斗的更大一部份。虽然认知及致力於保持安全更新无法保系统的安全措施不会被突破,
' a* h8 |9 \3 ?" l5 ~2 E1 b, A( s$ Q但被突破的可能性大为减少。
& U; ]8 ?1 z2 U5 [- I3 w: H5 n3 u7 a
虽然有些关於安全的外部服务被骇客利用来破解系统(例如,IMAPdaemon的事件),我相信还有更多,
/ ^5 v$ P/ t7 G2 l* s9 a
有决心的骇客可以从内部突破系统。与和外界通讯的少数服务相比,从
shell可以有成千的指令和公用
) y! |7 @, k$ @, \/ r
程式,他们之中可能有一些漏洞可以被利用来突破安全防护(我必须承认最近我负责维护的伺服器已经
. p: }. `5 ^/ `( W: A4 g( j4 w) V在外部服务中做一些妥协)。
' }$ Z- z: n6 M: k& x
+ U( n3 Q9 c7 W T4 [2 Z9 J
因为这个原因,即使您认为使用者完全可以信赖不必疑虑让他们存取shell,我仍建议避免给使用者
6 ~# a6 W4 s& [8 F$ X+ [
shell帐号除非他们绝对需要。要这麽做是因为怕使用者中有人用了薄弱的密码。一个外来的骇客,利
4 P: p5 H- n8 J: ?8 O3 _& p用这个薄弱的密码找到突破系统的途径,然後利用他们的内部空档找到进一步的弱点。
& z& {+ @+ E7 q( F
% ^0 D7 a* U4 u. f& u
幸运地,您可以做一些大幅提高Linux系统安全的事。管有关系统安全的进一步讨论内容已经超出本
$ W3 f( E/ o+ V9 ~# m/ E3 [" `! J
文围,下面清单提供一些您可以加强安全的最重要事项:
& y1 T" s9 Q, k% z/ w0 `9 Z9 C
! e) [# i/ _6 q5 U$ G$ m3 l
升级系统工具,应用软体,及核心:目前为止最常见的系统被破解的原因是未保持伺服器处於最新状态。
% ~$ b; x: ?5 q- j* G进行规律的系统核心,工具及公用程式升级将会确保您的系统不会充满已知可以被利用的项目,查看第4章,
9 J2 J9 h$ v+ \, v0 m9 K1 T
下载及安装RedHat更新程式一节,以及第10章,保持系统处於最新状态的策略
: Z; p5 M' ~. w: ^: t9 f6 h0 _1 `+ TShadowpasswords:您确定应该使用Shadowpassword;切换到这个密码格式很简单,查看第6章,Linux
8 p6 C3 R; i& g: h( R
密码及Shadow档案格式有关细节
% [# z1 m. T6 w+ Q/ q
精明的密码
管理:确定密码,特别是您提供存取shell的使用者,是很强固而且常更换。同时如果您使用多
( t& W* J+ i. W' y2 b2 ^6 S伺服器,不要在他们之中使用相同的密码(如果这样做,万一怪客使用一个发现的密码侵入一部伺服器,他
, F1 \9 ]( h+ c- N
就可以进入所有的)。
, j/ e& O) E. x; T使用安全的shell(ssh):切换到使用``ssh''取代``telnet''。Telnet因为两个原因不安全:
; n8 g# d) E5 Q第一,session未加密,表示所有东西,包括使用者名称及密码,以一般文字模式传送。
6 S- g. [- f8 P
第二,一个开放的telnetport是骇客第一个连接的port之一。
0 p- \0 ^) v4 h# G+ n( ^' {* J% N; L$ a3 C
" r6 @: q8 f4 ?) J! R) _: R6 H
3 m+ n5 i. v! ^9 { m$ u0 R6 e0 e% z& L" U- x% ?
7 ~" w7 F4 t. USsh提供了加密及压缩的连接,并且提供实质上比telnet更安全的连结。您可以在Linux下当作ssh
* Z* [& M$ _" O2 \+ L, A( ^4 x伺服端(允许进入的安全连结)以及客户端(送出安全的连结)。您可以找到二进位RPM套件,位於
0 G1 ^' ?6 J' f/ f3 G; _4 V" U% f
ftp://ftp.replay.com/pub/replay/redhat/i386/。您会需要下面的档案(在您阅读的时候可能有较新的版本):
8 p) e, A' g8 O9 W1 D4 e% I) j) M4 K4 y% a
ssh-1.2.27-5i.i386.rpm基本套件
' z4 T- h6 u6 p1 h& s; c; C) |+ ^ssh-clients-1.2.27-5i.i386.rpm送出连结的客户端
) f' o2 @2 q2 G' C
ssh-extras-1.2.27-5i.i386.rpm一些便利的perlscript
* V- Z( s/ V- u1 J: @3 a9 K, Tssh-server-1.2.27-5i.i386.rpm接收连结的伺服端
& N7 T% H7 w# Y( R% V7 l& E* D( u
注意:上面所列的SSHRPM档是国际版本。如果您住在
美国或加拿大,您可以显择下载U.S.套件
0 e K% m6 V$ a3 Y) N(可能有较强的加密演
算法);这些套件在版本编号後有``us''取代``i''字尾。根据美国的法律,
0 r3 a/ h, B7 W4 @+ B输出强大的加密产品到美国或加拿大以外的地方是不合法的。希望有一天美国政府及司法会移去这个
) @; @3 [/ o# @( H: o
限制(RedHat因为这原因在他们发行版中不包括SSH)
. W9 D: U1 U5 d# u3 U* H
# B, ~! \. `+ q您的
Windows用户会因为无法再连接到您的系统而拿枪对着你,他们也会因为有一些免费给
Windows4 j3 O) @" r/ a$ D
用的用户端软体而感到高兴:
& ?* ?% a! l k2 w, o" n
4 r. F9 h' V' N. g+ e2 M. C“TeraTermPro”用户端软体
9 j. i( @% m3 `2 @& t6 f. {http://hp.vector.co.jp/authors/VA002416/teraterm.html
0 ~2 D, o% f: v: N- D* y+ \“TTSSH”用户端软体
( @! m+ C! q) s6 o) @8 x0 r7 K4 y, }http://www.zip.com.au/"roca/download.html
% V0 u: f8 K; Y“Cryptlib”用户端软体
. X G$ H, I8 I$ F1 {3 Q' A* ]http://www.doc.ic.ac.uk/"ci2/ssh
1 G) B: N# o+ P1 F
“Putty”用户端软体
' G/ l$ g; `* F. V7 c
http://www.chiark.greenend.org.uk/"sgtatham/putty.html
# m" J; T- z/ s8 S
注意:如果确定要切换到ssh,确定您在所有的伺服器上安装使用。五部伺服器中让一部不安全只是浪费
- J. L2 T: q6 G" Z4 U
时间,特别当您在所有的伺服器使用相同的密码时。
3 b: O U; I$ H& I5 W5 F, t( P: @
2 J% Q9 Y, T6 S! n. e限制存取外部主机:下一步您应该
编辑``/etc/hosts.allow''以及``/etc/hosts.deny''档限制存取外部
& A: q7 E( P+ Z. q! o2 i主机的服务。这里是如何限制telnet及ftp存取的例。首先,``/etc/hosts.allow''档:#hosts.allow
" [6 p- F f; I1 |* m) s4 F" w; J; m( V4 {$ A( d
in.telnetd:123.12.41.,126.27.18.,.mydomain.name,.another.name
4 W) F2 X( a! O% A0 oin.ftpd:123.12.41.,126.27.18.,.mydomain.name,.another.name
0 M" t; Z R& G( U& s: |' U. R) D o- ~* }" L9 W: a
8 J# _' g+ |- u6 y+ k- [8 i上面会允许位於IPclassC的123.12.41.*及126.27.18.*任何的主机,以及位於mydomain.name及
7 }5 V9 C5 `* ?8 y$ Ganother.name网域的主机进行telnet及ftp连结。
" [ `$ J, n9 }$ |2 K N
. n' |. _- K) D" P3 H) e下一步,``/etc/hosts.deny''档:
5 F6 t9 X( |- N2 j5 H( q9 H! W#hosts.deny
3 ]% a z- i3 N4 ?
in.telnetd:ALL
! b9 X1 H) F- y8 N7 m6 g G m
in.ftpd:ALL
9 _/ p1 u$ I& u* c$ J+ D
, n$ ~. E0 ~# b+ ^, i: [) c2 u
) L2 K9 J" e* E8 P7 F$ O
3 _/ E0 H1 v4 j; i+ w2 h关闭及解安装不需要的服务:编辑您的``/etc/inetd.conf''档,而且disable(亦即.加上``#''符号
/ F$ W2 }5 W$ s, O4 o$ ~9 ?
注释)任何不需要的服务(如果您依照上面的建议使用ssh,您应该关闭``telnet''服务)。当您做好後。
- K( l3 R! k" T" U- e以root身分键入``/etc/rc.d/init.d/inetrestart''重新启动inetddaemon进行变更。
* y! A: b2 r3 \安装安全侦测系统:考虑安装安全程式,像是``Tripwire''(查看http://www.tripwiresecurity.com/)
/ M9 |, u. G! G" z* M& L: B% h) o
可以侦测入侵,以及``AbacusSentry''(查看http://www.psionic.com/abacus/)可以帮助避免他们。
; u& }. X) {3 U; `9 [3 q要勤劳:注意您的系统,随时进行安全稽核(可以只是简单检查可疑的密码档进入,查看您的行程表,检查
+ |$ i; c" S8 K) \8 j
log档中可疑的项目)可以长久地致力於保持系统安全。此外,报告任何入侵的企图到适当的层级--这
; h, v5 }0 T1 R% v5 |$ g1 ^样做可能很麻烦,特别是当您的系统一个月中遇到好几次这种攻击,但这种报告确保骇客会因为惩罚的威
- K5 |8 [ M u! n9 Q
胁而受到吓阻,以及确保其他系统(他们可能已经让步了)保持安全。
/ t8 c. }" d* s, O3 X# _* [假设您使用``RPM''公用程式安装及升级您的系统工具及应用软体,您可以利用下面的指令查核他们是否完
3 [% S- R4 H1 {$ K整:rpm--verify-a%26gt;/tmp/rpm-audit.txt
) I9 f1 a. [: m; K( D ^
, g* J- E% |0 U) Q
' @( K* u2 H+ }" U0 F$ t上面的指令会检查系统RPM资料库的相关档案资料,并且指示哪些档案已经被修改了,显示'5'。这里是一
6 j# v9 a/ @: t# f6 F. V些审核资料的输出例:
( y+ a2 @6 o7 `6 ^. ?$ m' |S.5....T/bin/ls
- t6 J- J+ T6 _& QS.5....T/usr/bin/du
% Y( u! m5 g- K2 f' @( c......G./dev/tty5
" Z j' t5 j1 d; b: c
.....U../dev/vcs5
) S/ b) _/ x: Z* c( U$ i
.....U../dev/vcsa5
: ~3 U) v; K) k7 c. m/ {
S.5....Tc/etc/lynx.cfg
! P$ ^: x8 x, \. zS.5....Tc/etc/sendmail.cf
1 s. a( |3 j# {. X
0 a- k8 c M/ q( l1 E2 u. ^" L4 ~2 U1 l9 u
$ y. Y. `# X# @" }3 q' R. `在上面的输出例,您可以看到七个档案的列表,其中四个档案被修改过了。现在,明显地如果您已经完全
) G! a5 l& @1 c自订过您的系统,可能有一些档案,或很多档案被修改过了。从/etc/lynx.cfg及/etc/sendmail.cf档的
' s* s( m3 I; l( C' `9 K
简单核对,也许从是目视或从备份,可能会显示出您在系统上所做过的正当组态变更。
/ r7 \) Z8 m+ J0 r8 u2 T6 p7 [
: Z6 I& w: ]& T! M: N. m9 M
然而,上面例告知,有两个变更过的档案是二进位的可执行档。有可能这两个二进位档``ls''指令以
/ N0 ?$ J% I; u1 `$ N( ]+ q+ {& e及``du''指令,事实上是骇客所安装具有恶毒意图的特落伊档(将``diff''指令用在任何从备份或RPM
! C1 N7 Z; v/ }) N
回存的档案上可能会显示出档案大小或其他不同点;作为特落伊程式的进一步据.)
0 V3 e, S! n2 s4 O8 Q+ D7 a0 N0 [0 N; C
/ [# r l" U' W& `1 E(更多有关``RPM''的资料,查看第10章,使用RedHat套件管理程式(RPM)一节.)
6 u) D. C& ?/ L) j* ^ ]
' G! a1 _" k) o7 r, g7 L. ?! x( V- w' K更多有关安全议题的资讯,一本很棒的书名叫“SecuringRedHat5.x”,文件位於
) ?0 f5 |/ d- x3 |; Ghttp://redhat-security.ens.utulsa.edu/。一个有关Linux保密及相关软体的很好来源,
, P; g! o& x% x: @1 `
位在http://replay.com/redhat/.