如何關閉一個開放的DNS解析器
不幸的是,開放解析器很容易成為一個攻擊目標。比如,攻擊者可以對開放DNS伺服器發起一個拒絕服務攻擊(DoS)或者更糟的分散式拒絕服務攻擊(DDoS)。這些也可與IP欺騙結合,將應答包指向受害者被欺騙的IP地址。在另外的場合下稱作DNS放大攻擊,開放的DNS伺服器很容易就會成為攻擊的對象。
根據openresolverproject.org,除非有必要,運行一個開放解析器是不明智的。大多數公司要讓它們的DNS伺服器僅對他們的客戶開放。本篇教程會只要集中於如何配置一個DNS伺服器來使它停止開放解析且僅對有效的客戶響應。
調整防火牆
由於DNS運行在UDP的53埠上,系統管理可能試圖僅允許來自53埠的客戶端IP地址,並阻止剩餘的網際網路埠。雖然這可以工作,但是也會有一些問題。既然根伺服器與DNS伺服器的通信也用53埠,我們不得不在防火牆內也確保UDP 53埠被允許。
一個防火牆示例如下所示。對於生產伺服器,確保你的規則匹配你的要求並遵守與公司安全制度。
# vim firewall-script
## existing rules are flushed to start with a new set of rules ##
iptables -F
iptables -A INPUT -s A.A.A.A/X -p udp --dport 53 -j ACCEPT
iptables -A INPUT -s B.B.B.B/Y -p udp --dport 53 -j ACCEPT
iptables -A INPUT -s C.C.C.C/Z -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j DROP
## making the rules persistent ##
service iptables save
讓腳本可執行並運行它。
# chmod +x firewall-script
# ./firewall-script
阻止遞歸查詢
DNS查詢主要可以分為遞歸查詢和迭代查詢。對於遞歸查詢,伺服器會響應客戶端應答或者錯誤信息。如果應答不在伺服器的緩存中,伺服器會與根伺服器通信並獲得授權域名伺服器。伺服器會不停查詢知道獲得結果,或者請求超時。對於迭代查詢,另一個方面講,伺服器會將客戶端指向另外一個可能可以處理的伺服器上,那麼就會減少伺服器自身的處理。
我們可以控制運行遞歸查詢的IP地址。我們修改位於/etc/named.conf的配置文件並增加/修改下面的參數。
# vim /etc/named.conf
## we define ACLs to specify the source address/es ##
acl customer-a{ A.A.A.A/X; };
acl customer-b { B.B.B.B/Y; C.C.C.C/Z; };
## we call the ACLs under options directive ##
options {
directory "/var/named";
allow-recursion { customer-a; customer-b; };
};
調整用於開放解析器的防火牆
如果你必須運行一個開放解析器,建議你適當調節一下你的伺服器,這樣就不會被利用了。smurfmonitor 倉庫提供了強大的一組可以用於開放解析器的iptables規則,比如阻止來自DNS放大攻擊的域名解析請求。這個倉庫會定期地更新,強烈建議DNS伺服器管理員使用它。
總的來說,對於開放DNS解析器的攻擊是很常見的,特別是對於沒有適當安全防護的DNS伺服器而言。這個教程延時了如何禁止一個開放DNS伺服器。我們同樣看到了如何使用iptables在一個開放DNS伺服器上加上一層安全防護。
希望這對你有用。
via: http://xmodulo.com/2014/04/close-open-dns-resolver.html
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive