2 b! t8 V3 B9 E6 {破解困境 ; I: C6 r8 `4 T+ x. n1 C0 g8 |) m 5 Q3 N* R& D5 t6 {% G 6 ~; s1 d2 a7 b% X: X, h, o DNS安全问题的根源在于Berkeley Internet Domain (BIND)。BIND充斥着过去5年广泛报道的各种安全问题。VeriSign公司首席安全官Ken Silva说,如果您使用基于BIND的DNS服务器,那么请按照DNS管理的最佳惯例去做。5 Z4 T2 {$ u g; ?
2 ]5 O; }$ h0 J/ u# F; d. _3 i
' i/ b2 I" j* y! U: V SANS首席研究官Johannes认为:“目前的DNS存在一些根本的问题,最主要的一点措施就是坚持不懈地修补DNS服务器,使它保持最新状态。”, E* t. ~3 U( k4 L* H
1 {8 t2 g+ m/ K1 v/ \ 5 A2 C# k3 J' x5 J& h. l W# h S+ |: [ + O1 k0 L& O q- c/ f Nominum公司首席科学家、DNS协议原作者Paul Mockapetris说,升级到BIND 9.2.5或实现DNSSec,将消除缓存投毒的风险。不过,如果没有来自BlueCat Networks、Cisco、F5 Networks、Lucent和Nortel等厂商的DNS管理设备中提供的接口,完成这类迁移非常困难和耗费时间。一些公司,如Hushmail,选择了用开放源代码TinyDNS代替BIND。替代DNS的软件选择包括来自Microsoft、PowerDNS、JH Software以及其他厂商的产品。 3 ?* ^3 d% s# K$ ?- k $ s* U- B/ i. s! m+ M/ g1 C* T2 H7 @0 ?; y$ P7 x
不管您使用哪种DNS,请遵循以下最佳惯例:: q( x7 e9 F5 A
, _* t/ X, V* P. I9 |
* ]6 \; z- `1 K4 V" M
1.在不同的网络上运行分离的域名服务器来取得冗余性。 & T% T& l0 F: X5 V, W" T5 G9 V4 ? $ |, C: ^; u7 Q0 g6 `4 v 8 ]. ^; ]& W2 a* l! r: H 2.将外部和内部域名服务器分开(物理上分开或运行BIND Views)并使用转发器(forwarders)。外部域名服务器应当接受来自几乎任何地址的查询,但是转发器则不接受。它们应当被配置为只接受来自内部地址的查询。关闭外部域名服务器上的递归功能(从根服务器开始向下定位DNS记录的过程)。这可以限制哪些DNS服务器与Internet联系。 , K1 J: v! g5 @# ^- {3 P8 y+ s( ], A* P& m
, K5 l6 `# E( o, D; p# U# Z G 3. 可能时,限制动态DNS更新。 + H( k4 ^0 A4 W7 {* J0 V' ^0 g0 U" R& A+ L
4 p/ K& Q3 j. O; w8 N& f. c
4. 将区域传送仅限制在授权的设备上。9 s% f# }6 b9 w2 W4 n' q
8 K2 }, [1 v7 g! O
& P4 M Z8 ~8 U4 q7 ~9 q { 5. 利用事务签名对区域传送和区域更新进行数字签名。 / ]. s- \) w. L! G7 f* t' [; @8 h+ e U5 r( X$ ~& Y
9 Y+ m% `& ~0 j, X5 C* ]3 ~
6. 隐藏运行在服务器上的BIND版本。3 {$ V6 T9 D; M, c% @( I
. l( r/ U0 L3 \+ p
1 `8 \% q0 H$ i# B 7. 删除运行在DNS服务器上的不必要服务,如FTP、telnet和HTTP。: M) U+ r1 k& H2 c
: v$ O, R, l0 i ' i, e/ d9 @$ Y8 W0 N, H1 F9 j9 V 8. 在网络外围和DNS服务器上使用防火墙服务。将访问限制在那些DNS功能需要的端口/服务上。 % i: J0 r' b& [. e0 I; Y- D5 p1 @ j2 _+ o3 D
+ r5 S5 Q1 y9 \" @让注册商承担责任 0 W1 y- ]2 M4 i) e( X$ U# T% Q- Y, g. K; a! m! ?0 S
域名劫持的问题从组织上着手解决也是重要的一环。不久前,有黑客诈骗客户服务代表修改了Hushmail的主域名服务器的IP地址。对于此时,Hushmail公司的CTO Brian Smith一直忿忿不已,黑客那么容易就欺骗了其域名注册商的客户服务代表,这的确令人恼火。6 }8 S8 _' O2 g: e$ R
' {: u5 Z- \6 U* D. Z- W' Q9 d' g# G3 N& ]+ R$ Z
Smith说:“这件事对于我们来说真正糟透了。我希望看到注册商制定和公布更好的安全政策。但是,我找不出一家注册商这样做,自这件事发生后,我一直在寻找这样的注册商。” 8 u2 L. z4 w% d% J7 C7 e3 a 1 k0 V1 S# o3 U( ]$ r9 K, L3 l; Y2 Q7 D/ B% K* N& n2 X! E
Nominum公司首席科学家、DNS协议原作者Paul Mockapetris说,升级到BIND 9.2.5或实现DNSSec,将消除缓存投毒的风险。不过,如果没有来自BlueCat Networks、Cisco、F5 Networks、Lucent和Nortel等厂商的DNS管理设备中提供的接口,完成这类迁移非常困难和耗费时间。一些公司,如Hushmail,选择了用开放源代码TinyDNS代替BIND。替代DNS的软件选择包括来自Microsoft、PowerDNS、JH Software以及其他厂商的产品。& n7 N; [# L- G
1 q8 D& m' u$ X+ ^6 e% N+ q3 l; X0 l% _2 s: K
不管您使用哪种DNS,请遵循以下最佳惯例: 3 t1 G5 q3 ]8 K& b. h A$ K/ F+ x3 @" L+ z' w1 b
& i; F7 d3 F& E" k M
1.在不同的网络上运行分离的域名服务器来取得冗余性。/ w9 D7 k6 I! @+ L7 x% J0 S
! z0 I# K# a+ t; O4 c9 e" I+ n 0 m( Z# C2 I3 ~/ Y0 A8 w 2.将外部和内部域名服务器分开(物理上分开或运行BIND Views)并使用转发器(forwarders)。外部域名服务器应当接受来自几乎任何地址的查询,但是转发器则不接受。它们应当被配置为只接受来自内部地址的查询。关闭外部域名服务器上的递归功能(从根服务器开始向下定位DNS记录的过程)。这可以限制哪些DNS服务器与Internet联系。- u2 W. S0 o& z/ e! t3 C
' ^- Z( I8 }$ w, D1 |" ^+ H% v& ^4 U/ W& U
+ t, f$ b5 X" V" k$ c/ }0 k: y' z! f
3. 可能时,限制动态DNS更新。 7 {% c2 N7 f% `$ ?5 y5 W. a H+ x0 T1 J
+ S# h3 J: \ h: I/ ~2 d
4. 将区域传送仅限制在授权的设备上。5 s( ?. g/ R' j% X) {/ h
7 ~6 Y# s& Y* p 3 [: C0 U9 E+ t, M' r: a5 k' B" M 5. 利用事务签名对区域传送和区域更新进行数字签名。 * C1 K3 L& u+ }% e& K* y. j0 G1 M! z0 }# n+ Z
$ j- X% N5 s" } 6. 隐藏运行在服务器上的BIND版本。 0 g" x0 r5 F' E, J1 R: ^3 g3 r8 f3 V' J7 w' R8 o7 z