開放的DNS解析器并不過濾任何入站請求,可以接受來自任何源IP地址的查詢。因此,開放的解析器可能很容易成為攻擊者下手的目標(biāo)。比如說,攻擊者可以對開放的DNS服務(wù)器發(fā)動拒絕服務(wù)(DoS)攻擊;或者更嚴(yán)重的是,發(fā)動分布式拒絕服務(wù)(DDoS)攻擊。這些攻擊還可能結(jié)合IP欺詐手法,即所有應(yīng)答數(shù)據(jù)包都將被引導(dǎo)到受害者被欺詐的IP地址。在另一種名為DNS放大攻擊的攻擊場景下,開放的DNS服務(wù)器可能積極參與攻擊。

據(jù)openresolverproject.org網(wǎng)站聲稱,除非確有必要,否則不建議運(yùn)行開放的解析器。大多數(shù)公司只允許客戶訪問其DNS服務(wù)器。本教程將主要介紹如何配置一臺DNS服務(wù)器,以便它不再是開放的DNS解析器,只應(yīng)答有效的客戶。
調(diào)整防火墻
由于DNS在UDP端口53上運(yùn)行,系統(tǒng)管理員們可能試圖允許端口53僅用于客戶機(jī)IP地址訪問,阻止互聯(lián)網(wǎng)的其他機(jī)器訪問該端口。雖然這一招很管用,但還是會有一些問題。由于根服務(wù)器與DNS服務(wù)器之間的通信也使用端口53,我們不得不確保:在防火墻中還允許根服務(wù)器的IP地址可以使用UDP端口53。
下面提供了一個示例性的防火墻腳本。如果是生產(chǎn)環(huán)境下的服務(wù)器,就要確保規(guī)則符合你的需求,而且還要遵守貴公司的安全政策。
# vim firewall-script ## 現(xiàn)有的規(guī)則被清除,以便由一組新的規(guī)則開始 ## iptables -Fiptables -A INPUT -s A.A.A.A/X -p udp --dport 53 -j ACCEPTiptables -A INPUT -s B.B.B.B/Y -p udp --dport 53 -j ACCEPTiptables -A INPUT -s C.C.C.C/Z -p udp --dport 53 -j ACCEPTiptables -A INPUT -p udp --dport 53 -j DROP## 讓規(guī)則具有持久性 ## service iptables save讓腳本成為可執(zhí)行腳本,并運(yùn)行它。# chmod +x firewall-script# ./firewall-script
阻止遞歸查詢
DNS查詢可以主要分為兩類:遞歸查詢和迭代查詢。如果是遞歸查詢,服務(wù)器使用應(yīng)答或錯誤信息回應(yīng)客戶機(jī)。如果服務(wù)器緩存中沒有該應(yīng)答,服務(wù)器就與根服務(wù)器進(jìn)行聯(lián)系,以獲得授權(quán)域名服務(wù)器。服務(wù)器不斷查詢,直到它獲得應(yīng)答,或者直到查詢超時。另一方面,如果是迭代查詢,服務(wù)器只是將客戶機(jī)轉(zhuǎn)到能夠處理的另一臺服務(wù)器,因而導(dǎo)致在該服務(wù)器上面的處理工作量比較少。
我們可以控制允許遞歸查詢的IP地址。我們只要改動配置文件/etc/named.conf,并添加/修改下列參數(shù)。
# vim /etc/named.conf## 我們定義訪問控制列表(ACL),以指定一個或多個源地址##acl customer-a{ A.A.A.A/X; };acl customer-b { B.B.B.B/Y; C.C.C.C/Z; };## 我們根據(jù)選項(xiàng)指令調(diào)用ACL ##options { directory "/var/named"; allow-recursion { customer-a; customer-b; };};
針對開放的解析器調(diào)整防火墻
如果你非得運(yùn)行開放的解析器,那么我們建議你合理調(diào)整防火墻,以便服務(wù)器無法被不法分子鉆空子。Smurfmonitor規(guī)則庫(https://github.com/smurfmonitor/dns-iptables-rules)提供了一組功能強(qiáng)大的iptables規(guī)則,這些規(guī)則可以用在開放的解析器中,比如阻止對參與DNS放大攻擊的域提出查詢請求。該規(guī)則庫定期更新,我們強(qiáng)烈建議DNS服務(wù)器管理員們使用它。
總而言之,針對開放的DNS解析器的攻擊很常見,對沒有采用合理安全措施的DNS服務(wù)器而言更是如此。本教程演示了如何禁用開放的DNS服務(wù)器。我們還看到了iptables如何可以用來為開放的DNS服務(wù)器增添另一層安全機(jī)制。