ローカルISP環境でPowerDNSRecursorを使用しています。再帰はIP範囲からのみ許可されますが、奇妙な問題が発生しました。私たち自身の顧客のPCは、次のようなクエリでDNSサーバーを攻撃し続けます。
15:43:38.473842 IP [CLIENT_IP].51097 > [DNSSERVER_IP].domain: 42318+ A? qhmrazabkvghwtgv.www.dl26.com. (47)
15:43:38.474161 IP [CLIENT_IP].40825 > [DNSSERVER_IP].domain: 14848+ A? yzqxqtklodgzuv.www.dl26.com. (45)
15:43:38.474443 IP [CLIENT_IP].34094 > [DNSSERVER_IP].domain: 35692+ A? inahybijsvqt.www.sf97.net. (43)
15:43:38.474953 IP [CLIENT_IP].39432 > [DNSSERVER_IP].domain: 7105+ A? kpkfgrsxihst.www.tpa.net.cn. (45)
リモートドメインはほとんどの場合.cn1ですが、残りのドメイン名は変更され続けます。最も簡単な解決策は、iptablesにハッシュ制限ベースのルールを追加することですが、クライアントはNATの背後にあるため、DNSに到達するトラフィックはコンセントレーターIPでマークされます。spywaredomainsゾーンも使用しようとしましたが、リモートドメインは変化し続けます。本当にブロックすることはできません。SPAMドメインを使用したリクエストの数により、PowerDNSキャッシュが大きくなり、remote_timeoutカウントも大幅に増加しています。このようなトラフィックを防御し、DNSを魅力のように機能させる方法はありますか?
これは、最近一般的に見られる信頼できるDNSサーバーに対する分散型攻撃の1つです。 (より一般的なDNS増幅攻撃と混同しないでください)被害者は、TLDに最も近いドメインを担当するネームサーバーです--tpa.net.cn
、sf97.net
など。攻撃戦略は、キャッシュされないクエリを生成することです。
これは、単に個々のクライアントをブロックするだけの問題ではありません。これが表示されている場合は、通常、次のいずれかの要因の症状です。
私の経験では、これらのどれが当てはまるかを特定し、ネットワークへの悪用ベクトルを減らすための措置を講じる必要があります。
linux上の多くのPowerDNSインストールは、実際に利用可能なファイル記述子よりも(はるかに)多くのファイル記述子を消費するように構成されています...修正するには、次の4つのオプションがあります。
- Max-mthreadsを512に減らします(またはスレッドを1に、max-mthreadsを1024に減らします)(max-mthreadsはRecursor 3.2で導入されましたが、古いバージョンを実行している場合は、アップグレードしてください!)
- 開始する前に「ulimit-n32768」を実行します(おそらくこれを/etc/init.d/スクリプトに入れます)。この番号をスキップする理由はほとんどありません。
- /etc/security/limits.confでデフォルトを調査します
- https://github.com/Habbie/pdns/commit/e24b124a4c7b49f38ff8bcf6926cd69077d16ad8 でパッチを適用します
から http://blog.powerdns.com/2014/04/03/further-dos-guidance-packages-and-patches-available/ (言い換え):
Git headからrecursorをインストールするか(記事にリストされているさまざまなURLのスナップショット、または https://autotest.powerdns.com/ で自分で見つけてください)、またはそのうちにリリースされたバージョン3.5.4以降からリカーサーをインストールします。次に、
server-down-max-fails
を適切な数に設定します。激しい攻撃を受ける場合は、32または16をお勧めします。
あなたができることは、そのクライアントがネームサーバーに到達するのをブロックすることです。別の解決策は、クライアントシステムをクリーンアップすることです。個人的には、2番目のことを行うことをお勧めします。最初のことは、クライアントに警告し、問題の解決を支援するページがあるIPにクライアントをリダイレクトする場合にのみ適切です。