|
一. 防火墙是什么?
# |& y7 B2 q" Y! x8 l- w9 ?, _
3 ?7 l, x4 X* R* T# c6 W 所谓“防火墙”,是指一种将内部网和公众访问网(如Internet)分开的方
' _: k( I% O; C# R8 E- \+ u3 S法,它实际上是一种隔离技术。防火墙是在两个网络通讯时执行的一种访问控制8 i! u2 K; w M% U8 d8 J2 b
尺度,它能允许你“同意”的人和数据进入你的网络,同时将你“不同意”的人
+ B# z( a( `* ~" U. L# G和数据拒之门外,最大限度地阻止网络中的黑客来访问你的网络,防止他们更
, u1 `( P4 O( k; X3 l! L. _2 e改、拷贝、毁坏你的重要信息。
8 ~/ k* P& i6 |3 K0 u( [+ ]
4 l5 ?8 r; T" }8 i! E6 S- M& G 二.防火墙的安全技术分析
# F6 [- h7 M- z
( \& V/ w p) K0 b- K 防火墙对网络的安全起到了一定的保护作用,但并非万无一失。通过对防火+ F. y: ?7 f0 t
墙的基本原理和实现方式进行分析和研究,我对防火墙的安全性有如下几点认6 ~! Z) p T( U; Y$ h: ^& l
识。 9 J* R; E5 Q7 t, }/ `! {
0 m9 P3 z# }+ C) S 1.正确选用、合理配置防火墙非常不容易 ! }: Z( c2 s# ?& ~: r; q& ^
; w# T; b' v3 C5 p5 f( S/ g2 o
防火墙作为网络安全的一种防护手段,有多种实现方式。建立合理的防护系4 @8 A# q. I+ f
统,配置有效的防火墙应遵循这样四个基本步骤:
" w/ x5 o4 ^' Y9 b! B2 {. q4 C) C1 x
a. 风险分析; % O& i2 X& p/ N1 T
7 x# X6 P/ k0 X" v l0 I* ~ b. 需求分析; ( {+ o# w% |4 D, N0 t0 ?
, t; q+ a8 s6 Y! v+ I0 R+ v
c. 确立安全政策;
7 p: G. |# j1 V/ {) P; t$ e2 w1 a: y3 w5 a
d. 选择准确的防护手段,并使之与安全政策保持一致。 ( w9 ]; ^4 K, Q1 v4 p
- ^2 v, P6 p/ T w
然而,多数防火墙的设立没有或很少进行充分的风险分析和需求分析,而只# _4 P4 Z9 |! |8 G. k
是根据不很完备的安全政策选择了一种似乎能“满足”需要的防火墙,这样的防
% ]0 Z X; [0 Y% L+ J( z火墙能否“防火”还是个问题。 7 h0 N: s/ B* U6 q. o/ _0 z
3 ~% t% ^, y; T% u
2.需要正确评估防火墙的失效状态 : a8 O b- T- w T$ Q% M/ z
5 j( B# j' E2 z7 X 评价防火墙性能如何及能否起到安全防护作用,不仅要看它工作是否正常,8 [6 N: Z6 f$ W5 p3 [4 F+ A
能否阻挡或捕捉到恶意攻击和非法访问的蛛丝马纪,而且要看到一旦防火墙被攻6 x' m0 n3 X3 C( a! S
破,它的状态如何? 按级别来分,它应有这样四种状态:a.未受伤害能够继续正% ~/ t0 H1 ~) g% O9 v6 B0 ]9 \7 _
常工作;b.关闭并重新启动,同时恢复到正常工作状态;c.关闭并禁止所有的数: g7 T, i/ a1 [- ~2 Z
据通行;d.关闭并允许所有的数据通行。 $ \) ~5 t/ N; T6 m: |
4 q+ |& D% N7 p1 M4 r* W; @
前两种状态比较理想,而第四种最不安全。但是许多防火墙由于没有条件进$ h3 o3 }- X; C/ n3 A8 D
行失效状态测试和验证,无法确定其失效状态等级,因此网络必然存在安全隐7 l* w+ |: s3 {. b9 p* y0 `
患。3.防火墙必须进行动态维护
2 j/ x o0 x( b3 U. A- {. f
" t0 }, V4 W Y( W# j: j 防火墙安装和投入使用后,并非万事大吉。要想充分发挥它的安全防护作6 G( _# S* I6 R# B5 @) A
用,必须对它进行跟踪和维护,要与商家保持密切的联系,时刻注视商家的动' {! ?8 @1 Q( W& Q* p5 a
态。因为商家一旦发现其产品存在安全漏洞,就会尽快发布补救(Patch) 产品,
! F6 V% w* Z/ L9 b此时应尽快确认真伪(防止特洛伊木马等病毒),并对防火墙软件进行更新。
0 d* s2 ]" e. }! M( H2 y. p6 A! Q7 ]2 e4 y
4.目前很难对防火墙进行测试验证 0 t1 d8 h9 b' u! J! y
: w5 L x4 {5 d1 V6 Z
防火墙能否起到防护作用,最根本、最有效的证明方法是对其进行测试,甚. C1 }7 O& N, k
至站在“黑客”的角度采用各种手段对防火墙进行攻击。然而具体执行时难度较
; O% e i9 A3 @' w8 [" }2 C- `大: 8 e! y3 W2 b' \( m, \
: z; e, G! b' e. x5 e/ n a.防火墙性能测试目前还是一种很新的技术,尚无正式出版刊物,可用的
; R, Z; y6 S) E3 \% l工具和软件更是寥寥无几。据了解目前只有美国ISS公司提供有防火墙性能测试8 ~5 Q, M% A* `$ Z* p
的工具软件。 : {$ W% `1 S- T0 ?
# V8 k. g' N4 Z2 D: w b.防火墙测试技术尚不先进,与防火墙设计并非完全吻合,使得测试工作( H' o0 C' I. A; \
难以达到既定的效果。
" ? D7 L4 J! X) x _7 H( B! {' \, L4 J% U
c.选择“谁”进行公正的测试也是一个问题。 ) A7 r- ~4 w/ |
# ]" N3 ~, p- [
可见,防火墙的性能测试决不是一件简单的事情,但这种测试又相当必要, h, y' A" Z7 C& v m
进而提出这样一个问题:不进行测试,何以证明防火墙安全?
0 u i7 y+ j R3 F( @7 }3 n+ @9 T- ]6 G7 i( ?7 p# r" t0 B9 A
5.非法攻击防火墙的基本“招数”
" }" l. d' h* z7 ~- k
6 ~2 p6 w4 m' u P7 c a.通常情况下,有效的攻击都是从相关的子网进行的。因为这些网址得到
; @& y/ v8 T9 z" O. W1 y7 S- e了防火墙的信赖,虽说成功与否尚取决于机遇等其他因素,但对攻击者而言很值( S' p, _; j) G4 c5 @% y7 I8 z4 Q
得一试。下面我们以数据包过滤防火墙为例,简要描述可能的攻击过程。
9 E. P* g v1 G6 j( ?# x O1 P2 l3 Z8 b1 M$ D8 `; `. f
这种类型的防火墙以IP地址作为鉴别数据包是否允许其通过的条件,而这恰! W' C+ c: w: `9 J
恰是实施攻击的突破口。许多防火墙软件无法识别数据包到底来自哪个网络接& i; e+ i8 ~6 U; b# q
口,因此攻击者无需表明进攻数据包的真正来源,只需伪装IP地址,取得目标的
& j; r5 c) O: G2 U信任,使其认为来自网络内部即可。IP地址欺骗攻击正是基于这类防火墙对IP地( ?' A6 Z8 W7 w) E/ O# @
址缺乏识别和验证的机制。
$ P( k9 k8 w. U. H3 C a! u% W
: R' x/ [* S3 b9 l$ j$ I! y 通常主机A与主机B的TCP连接(中间有或无防火墙) 是通过主机A向主机B提出: B4 K( O* n* l
请求建立起来的, 而其间A和B的确认仅仅根据由主机A产生并经主机B验证的初0 ^; i7 C5 P# x
始序列号ISN。
; n2 @& ^6 P2 _! v- R" c; Y
& q) c. o6 t1 d' v+ D" J 具体分三个步骤: 1 B3 Q- |" s0 K) `8 X( n
' r) M" D2 e, m, D3 L
1.主机A产生它的ISN,传送给主机B,请求建立连接; 8 w2 M+ a% ^; N, b4 M
, U0 r& t8 l. s
2.B接收到来自A的带有SYN标志的ISN后,将自己本身的ISN连同应答信息
, E4 g0 I( x: I: VACK一同返回给A;
, G- ~+ _ D% i4 T6 O7 r! }8 I- ~( C$ D1 p
3. A再将B传送来的ISN及应答信息ACK返回给B。
: T, z( ^2 c V) J2 l# c7 Q5 y* `' v N
至此,正常情况,主机A与B的TCP连接就建立起来了。
& V/ V* z9 C- |0 i% u6 m+ x; @' ~% I% a/ c/ ?8 y' J, N1 N
IP地址欺骗攻击的第一步是切断可信赖主机。 # y. @7 v8 J( [) G
6 @! Z6 X; C/ G4 W. w3 S# f
这样可以使用TCP淹没攻击(TCPSynFloodAttack) ,使得信赖主机处于"自顾
# a; i; ]) Z( L) P" @9 e1 C不暇"忙碌状态,相当于被切断,这时目标主机会认为信赖主机出现了故障, 只
- P" y' M$ I |) f! K8 M" k能发出无法建立连接的RST包而无暇顾及其他。 7 [& m. t! d4 U6 O, W
* F4 K/ [& L6 U8 C" B
攻击者最关心的是猜测目标主机的ISN。为此,可以利用SMTP的端口(25),' q. S9 k2 a7 B( m
通常它是开放的,邮件能够通过这个端口,与目标主机打开(Open) 一个TCP连
8 B5 \5 v; J: k7 r接,因而得到它的ISN。在此有效期间,重复这一过程若干次,以便能够猜测和7 h7 ~9 e: P, Z4 T( ^# E! N
确定ISN的产生和变化规律,这样就可以使用被切断的可信赖主机的IP地址向目
( ]6 W9 [7 {1 k标主机发出连接请求。请求发出后,目标主机会认为它是TCP连接的请求者,从
: M" k" M1 E0 n8 O: E而给信赖主机发送响应(包括SYN) ,而信赖主机目前仍忙于处理Flood淹没攻击) I; q# |" o, }) U
产生的"合法"请求,因此目标主机不能得到来自于信赖主机的响应。
) n) p" g6 z/ q! S6 n
) ^3 w7 m- t( b5 [' D% J 现在攻击者发出回答响应,并连同预测的目标主机的ISN一同发给目标主
% W$ ?! G* K' a! G+ E1 T- e( g机。 ( |, P d# k2 A) D
! ]6 l/ a8 o& h- d2 b1 w2 @
随着不断地纠正预测的ISN, 攻击者最终会与目标主机建立一个会晤。通过% Z3 ]% v, E9 a8 Y
这种方式,攻击者以合法用户的身份登录到目标主机而不需进一步的确认。如果
5 c' Y% X: {4 U反复试验使得目标主机能够接收对网络的ROOT登录,那么就可以完全控制整个网
2 M5 p R8 M' @% n3 W络。
! `' n' j& ]4 W( }' u: b# B0 Z+ e0 R+ k
归纳起来,防火墙安全防护面临威胁的几个主要原因有:SOCK的错误配置;: {" t4 @7 H' v# U( ^% B
不适当的安全政策; 强力攻击;允许匿名的FTP协议;允许TFTP协议;允许4 \5 X; L& u! F6 V8 |% R$ ~0 Z
Rlogin命令;允许X-Windows或OpenWindows;端口映射;可加载的NFS协议;允
! o9 z/ j( [2 r r6 i许Win95/NT文件共享;Open端口。 . x4 I" c1 i* I3 A! I* \/ y* B; [ z
! X. V% N5 L; f
b.破坏防火墙的另一种方式是攻击与干扰相结合。也就是在攻击期间使防
$ E; B h |' `火墙始终处于繁忙的状态。防火墙过分的繁忙有时会导致它忘记履行安全防护的
. D& h2 p& c& y职能,处于失效状态。 4 ?, L- \6 b, p- M) q$ O7 c
) ?3 M7 T* Q) L% m4 R( ? C.需要特别注意的是,防火墙也可能被内部攻击。因为安装了防火墙后,
# n1 K) l8 F" O" s随意访问被严格禁止了, 这样内部人员无法在闲暇的时间通过Telnet浏览邮件
5 |5 G' A! P/ `: `& N' ^! d或使用FTP向外发 送信息,个别人会对防火墙不满进而可能攻击它、破坏它,期
1 ~. ?1 ]+ b3 O' r: H6 W: d望回到从前的状态。这里,攻击的目标常常是防火墙或防火墙运行的操作系统,
+ N7 c! h9 r4 f' E- W+ Q% l因此不仅涉及网络安全,还涉及主机安全问题。
2 A# y, R+ P1 m W1 m$ s+ r7 c' {+ A( H% n6 t6 F) @1 Z
以上分析表明,防火墙的安全防护性能依赖的因素很多。防火墙并非万能,, o; X' P6 i K0 O# ~1 j( [* A3 O- c
它最多只能防护经过其本身的非法访问和攻击,而对不经防火墙的访问和攻击则
- R7 t4 s2 Q5 e3 z- u6 t# t无能为力。从技术来讲,绕过防火墙进入网络并非不可能。 : l/ S% D V2 U) E& @" }& e
% V E+ c" y% y$ |" @0 s 目前大多数防火墙都是基于路由器的数据包分组过滤类型,防护能力差,存, \* Y) X5 o4 L- B* P! o
在各种网络外部或网络内部攻击防火墙的技术手段。 & d! u- M4 f+ N# h3 a
" o- Z' D- r% ^' w% c0 J 三.防火墙的基本类型
7 V& V: ]5 O _: U5 x/ E
( e9 ^, J) H% ~: |/ x' S7 G 实现防火墙的技术包括四大类:网络级防火墙(也叫包过滤型防火墙)、应
2 {" s( n( F' a' i# Q9 \用级网关、电路级网关和规则检查防火墙。
7 y: f. A2 `) b6 b% a2 v& Z( k* l* A$ j
1.网络级防火墙
5 ^( i$ v& f5 q" \6 a
' q# g, H8 m/ ?0 {7 Y7 I+ _" H' F4 R& a 一般是基于源地址和目的地址、应用或协议以及每个IP包的端口来作出通过
; q% g% H; d4 }与否的判断。一个路由器便是一个“传统”的网络级防火墙,大多数的路由器都
5 b2 Y5 A0 q9 D6 ?# t能通过检查这些信息来决定是否将所收到的包转发,但它不能判断出一个IP包来' C5 C7 p; ?5 |2 c/ V; H9 m) Q
自何方,去向何处。 6 F! T: g- ?6 J9 `1 g% m& C5 Q3 Y6 t
2 L& I& \& F* B" p 先进的网络级防火墙可以判断这一点,它可以提供内部信息以说明所通过的
' x8 Z* i# w u' r连接状态和一些数据流的内容,把判断的信息同规则表进行比较,在规则表中定
# ~* y R" P J# O, N: D% U义了各种规则来表明是否同意或拒绝包的通过。包过滤防火墙检查每一条规则直' i: t; s: \7 b
至发现包中的信息与某规则相符。如果没有一条规则能符合,防火墙就会使用默' s- A/ ~9 ?: G+ t4 Q
认规则,一般情况下,默认规则就是要求防火墙丢弃该包。其次,通过定义基于( o( ^* i$ a. s0 W
TCP或UDP数据包的端口号,防火墙能够判断是否允许建立特定的连接,如
$ Y) A6 p4 ?7 a+ u! o- O) RTelnet、FTP连接。 8 @7 i7 L. w8 n5 z: j
+ }! }% s- Y T0 v) |0 [: J
下面是某一网络级防火墙的访问控制规则: & L5 N# l/ X/ ]0 Z
! b( I! t$ u- M7 M
(1)允许网络123.1.0使用FTP(21口)访问主机150.0.0.1; & w; }3 Z# q% a
+ j: P. y K& @; B$ i3 T
(2) 允许IP地址为202.103.1.18和202.103.1.14的用户Telnet(23口)到主6 A; i0 r1 s: T$ B! t% h5 E* g
机150.0.
, A& f9 O' v) C4 M. Z
@2 F. ?' t. D; w 0.2上;
: g9 U4 a J Q4 t9 F9 Q; x# s/ h N
(3)允许任何地址的E-mail(25口)进入主机150.0.0.3;
; u' `! B A/ ~) A' G. t5 z; ?3 a0 u) @. A l k
(4)允许任何WWW数据(80口)通过;
' r+ ?8 q8 }9 i" P0 D: X$ r! [9 s( j, i& t. Z/ q8 x
(5)不允许其他数据包进入。 0 r# u: ]$ J' R3 \7 p9 }* ~3 P
6 r% j& ?% |: R+ Z' C* F- @* h
网络级防火墙简洁、速度快、费用低,并且对用户透明,但是对网络的保护. f1 t% C' C4 b! h+ @# ~% @
很有限,因为它只检查地址和端口,对网络更高协议层的信息无理解能力。
* E( c6 N2 _! Q; i" V7 B1 L5 X# F. g* `9 G k6 A; J7 e5 z) o
2.应用级网关 $ ^9 E' ^ f0 m7 H
( ?* [; `8 O- d) R3 u3 I
应用级网关能够检查进出的数据包,通过网关复制传递数据,防止在受信任
" @: @5 G* \0 h+ ]服务器和客户机与不受信任的主机间直接建立联系。应用级网关能够理解应用层' ]6 X- M1 W0 Z$ V( U2 c8 ]
上的协议,能够做复杂一些的访问控制,并做精细的注册和稽核。但每一种协议/ g- d2 j" z$ ?( D1 |' |8 P
需要相应的代理软件,使用时工作量大,效率不如网络级防火墙。
- Y# X. s) w' a
1 g: X9 t3 j+ H; C 常用的应用级防火墙已有了相应的代理服务器, 例如: HTTP、 NNTP、
* P! U$ [4 x6 T, d! x, ^: @FTP、Telnet、rlogin、X-windows等,但是,对于新开发的应用,尚没有相应的
2 |6 |2 ?7 c/ v4 R1 W: s代理服务,它们将通过网络级防火墙和一般的代理服务。 - U/ S. k6 G) x* G5 K. f
8 n1 _- f. j9 K( ~& w7 v
应用级网关有较好的访问控制,是目前最安全的防火墙技术,但实现困难,
: i* E+ ?, O: d. @, S) M: B而且有的应用级网关缺乏"透明度"。在实际使用中,用户在受信任的网络上通过
* m# u, R) i, Y2 h5 S防火墙访问Internet时, 经常会发现存在延迟并且必须进行多次登录: Q0 g6 o3 C& S. U$ s
(Login) 才能访问Internet或Intranet。 2 N# a, i @, v1 [8 U
$ U2 b/ S# t) D1 {0 [
3.电路级网关 , B7 V# ~4 Q. g; a# _8 q
+ g: |2 j" m, Y9 ? 电路级网关用来监控受信任的客户或服务器与不受信任的主机间的TCP握手
! e3 Y" s, Y1 x' y! J4 m信息,这样来决定该会话(Session) 是否合法,电路级网关是在OSI模型中会话层/ b z3 c# U% l1 S( T
上来过滤数据包,这样比包过滤防火墙要高二层。 5 v& U8 P4 S% B$ S, n
) F( `2 t* l* y) \( U3 j
实际上电路级网关并非作为一个独立的产品存在,它与其他的应用级网关结
! q4 i; w6 H0 i: G合在一 起, 如TrustInformationSystems公司的GauntletInternetFirewall;8 d4 U! Z1 Q9 ~2 K# c
DEC公司的AltaVistaFirewall等产品。 另外,电路级网关还提供一个重要的安5 O; B2 ]8 G, Y5 z3 o, @! @
全功能:代理服务器(ProxyServer) ,代理服务器是个防火墙,在其上运行一
; o7 c' k. Y) O' g0 P4 Q0 R8 i个叫做"地址转移"的进程,来将所有你公司内部的IP地址映射到一个"安全"的IP7 }' {( Z" }3 Y, e0 H
地址,这个地址是由防火墙使用的。但是,作为电路级网关也存在着一些缺陷," m0 v$ j9 [+ `9 Z+ J6 j4 F( u' k
因为该网关是在会话层工作的,它就无法检查应用层级的数据包。 9 w% r/ ^! L& F9 H6 B* D' r
7 H9 r+ g0 @/ S/ @/ P6 L
4.规则检查防火墙 1 y, r: F$ P% ]0 a0 A. l
& j9 ~6 t! ~9 x% }6 X 该防火墙结合了包过滤防火墙、电路级网关和应用级网关的特点。它同包过' U* T! ?, Q: v' }
滤防火墙一样, 规则检查防火墙能够在OSI网络层上通过IP地址和端口号,过滤& k' W) M5 j5 Z8 ~9 ~6 z U* l
进出的数据包。它也象电路级网关一样,能够检查SYN和ACK标记和序列数字是否
7 O$ \, D( \, U+ B- z1 ~逻辑有序。当然它也象应用级网关一样, 可以在OSI应用层上检查数据包的内( r- e/ U% N/ p+ t
容,查看这些内容是否能符合公司网络的安全规则。
5 _2 U& j. ~" ?% b" @" k( `6 Q6 Y9 d- H. r' i5 k
规则检查防火墙虽然集成前三者的特点,但是不同于一个应用级网关的是,; e9 v. j; o8 L4 @& Z
它并不打破客户机/服务机模式来分析应用层的数据, 它允许受信任的客户机和
4 e" ^0 ~ |% }3 C不受信任的主机建立直接连接。规则检查防火墙不依靠与应用层有关的代理,而
, d) l! r& I4 F* o h* ?6 @是依靠某种算法来识别进出的应用层数据,这些算法通过已知合法数据包的模式
; A- \9 P4 M4 L# p0 m8 R' M) z来比较进出数据包,这样从理论上就能比应用级代理在过滤数据包上更有效。 : i6 U; J, G, y% }$ p7 o
; x$ }/ O' |1 i 目前在市场上流行的防火墙大多属于规则检查防火墙,因为该防火墙对于用
* O9 a' s3 L+ t8 }% h4 |户透明,在OSI最高层上加密数据,不需要你去修改客户端的程序,也不需对每
1 H; w! U8 ?* X个需要在防火墙上运行的服务额外增加一个代理。如现在最流行的防火墙之一
/ T8 [8 N$ h; i- L* I+ C r# H3 _OnTechnology软件公司生产的OnGuard和CheckPoint软件公司生产的FireWall-1
" _" g- y6 o2 ^( G防火墙都是一种规则 检查防火墙。 4 y5 g* `6 B+ P' Q8 h# F
$ |$ ~. r+ R; D! j# w& Q 从趋势上看,未来的防火墙将位于网络级防火墙和应用级防火墙之间,也就
( U2 x4 v- ^5 @* }) w$ ~) r是说,网络级防火墙将变得更加能够识别通过的信息,而应用级防火墙在目前的
$ k- c& e+ _' C5 \4 _& h$ h功能上则向“ 透明”、“低级”方面发展。最终防火墙将成为一个快速注册稽' i H9 ^3 R; |6 U1 a* K6 G
查系统,可保护数据以加密方式通过,使所有组织可以放心地在节点间传送数
2 o! `) Z9 O9 o; x* P据。 |
|