有必要全面提升BINDDNS服務(wù)器的安全性能
(文章來源:站長之家)
? ? ? ?互聯(lián)網(wǎng)上DNS服務(wù)器的事實標(biāo)準(zhǔn)就是ISC的BIND,BillManning對in-addr域的調(diào)查發(fā)現(xiàn),有95%的域名服務(wù)器(2的2000次方個服務(wù)器中)使用的是各種版本的“bind”。這其中包括了所有的DNS根服務(wù)器,而這些根服務(wù)器對整個服務(wù)器的正常運轉(zhuǎn)起著至關(guān)重要的作用。
DNS服務(wù)面臨的安全隱患主要包括:DNS欺騙(DNSSpoffing)、拒絕服務(wù)(Denialofservice,DoS)攻擊、分布式拒絕服務(wù)攻擊和緩沖區(qū)漏洞溢出攻擊(BufferOverflow)。
DNS欺騙即域名信息欺騙是最常見的DNS安全問題。當(dāng)一個DNS服務(wù)器掉入陷阱,使用了來自一個惡意DNS服務(wù)器的錯誤信息,那么該DNS服務(wù)器就被欺騙了。DNS欺騙會使那些易受攻擊的DNS服務(wù)器產(chǎn)生許多安全問題,例如:將用戶引導(dǎo)到錯誤的互聯(lián)網(wǎng)站點,或者發(fā)送一個電子郵件到一個未經(jīng)授權(quán)的郵件服務(wù)器。網(wǎng)絡(luò)攻擊者通常通過兩種方法進(jìn)行DNS欺騙。
黑客會熟練的使用DNS請求,將數(shù)據(jù)放入一個沒有設(shè)防的DNS服務(wù)器的緩存當(dāng)中。這些緩存信息會在客戶進(jìn)行DNS訪問時返回給客戶,從而將客戶引導(dǎo)到入侵者所設(shè)置的運行木馬的Web服務(wù)器或郵件服務(wù)器上,然后黑客從這些服務(wù)器上獲取用戶信息。
入侵者通過監(jiān)聽客戶端和DNS服務(wù)器的對話,通過猜測服務(wù)器響應(yīng)給客戶端的DNS查詢ID。每個DNS報文包括一個相關(guān)聯(lián)的16位ID號,DNS服務(wù)器根據(jù)這個ID號獲取請求源位置。黑客在DNS服務(wù)器之前將虛假的響應(yīng)交給用戶,從而欺騙客戶端去訪問惡意的網(wǎng)站。攻擊者能夠?qū)NS名稱查詢重定向到惡意DNS服務(wù)器。這樣攻擊者可以獲得DNS服務(wù)器的寫權(quán)限。
黑客主要利用一些DNS軟件的漏洞,如在BIND9版本(版本9.2.0以前的9系列)如果有人向運行BIND的設(shè)備發(fā)送特定的DNS數(shù)據(jù)包請求,BIND就會自動關(guān)閉。攻擊者只能使BIND關(guān)閉,而無法在服務(wù)器上執(zhí)行任意命令。如果得不到DNS服務(wù),那么就會產(chǎn)生一場災(zāi)難:由于網(wǎng)址不能解析為IP地址,用戶將無方訪問互聯(lián)網(wǎng)。這樣,DNS產(chǎn)生的問題就好像是互聯(lián)網(wǎng)本身所產(chǎn)生的問題,這將導(dǎo)致大量的混亂。
DDOS攻擊通過使用攻擊者控制的幾十臺或幾百臺計算機攻擊一臺主機,使得服務(wù)拒絕攻擊更難以防范:使服務(wù)拒絕攻擊更難以通過阻塞單一攻擊源主機的數(shù)據(jù)流,來防范服務(wù)拒絕攻擊。SynFlood是針對DNS服務(wù)器最常見的分布式拒絕服務(wù)攻擊。SYNFlood攻擊利用的是IPv4中TCP協(xié)議的三次握手(Three-WayHandshake)過程進(jìn)行的攻擊。大家知道協(xié)議規(guī)定,如果一端想向另一端發(fā)起TCP連接,它需要首先發(fā)送TCPSYN包到對方,對方收到后發(fā)送一個TCPSYN+ACK包回來,發(fā)起方再發(fā)送TCPACK包回去,這樣三次握手就結(jié)束了。我們把TCP連接的發(fā)起方叫作"TCP客戶機(TCPClient)",TCP連接的接收方叫作"TCP服務(wù)器(TCPServer)"。
值得注意的是在TCP服務(wù)器收到TCPSYNrequest包時,在發(fā)送TCPSYN+ACK包回TCP客戶機前,TCP服務(wù)器要先分配好一個數(shù)據(jù)區(qū)專門服務(wù)于這個即將形成的TCP連接。一般把收到SYN包而還未收到ACK包時的連接狀態(tài)成為半開連接(Half-openConnection)。在最常見的SYNFlood攻擊中,攻擊者在短時間內(nèi)發(fā)送大量的TCPSYN包給受害者,這時攻擊者是TCP客戶機,受害者是TCP服務(wù)器。根據(jù)上面的描述,受害者會為每個TCPSYN包分配一個特定的數(shù)據(jù)區(qū),只要這些SYN包具有不同的源地址(這一點對于攻擊者來說是很容易偽造的)。這將給TCP服務(wù)器系統(tǒng)造成很大的系統(tǒng)負(fù)擔(dān),最終導(dǎo)致系統(tǒng)不能正常工作。
黑客利用DNS服務(wù)器軟件存在漏洞,比如對特定的輸入沒有進(jìn)行嚴(yán)格檢查,那幺有可能被攻擊者利用,攻擊者構(gòu)造特殊的畸形數(shù)據(jù)包來對DNS服務(wù)器進(jìn)行緩沖區(qū)溢出攻擊。如果這一攻擊成功,就會造成DNS服務(wù)停止,或者攻擊者能夠在DNS服務(wù)器上執(zhí)行其設(shè)定的任意代碼。例如,前一陣子針對Linux平臺的BIND的攻擊(e.g.Lionworm)程序,就是利用某些版本的BIND漏洞,取得root權(quán)限,一旦入侵完成之后,入侵者就可以完全控制整個相關(guān)的網(wǎng)絡(luò)系統(tǒng),影響非常嚴(yán)重。