DNSレート制限と1秒あたりの応答およびウィンドウの値をバインドする


8

私のDNSサーバーのnamed.confで

    rate-limit {
            responses-per-second 5;
            window 5;
    };

これは実際にはどういう意味ですか?DNSクライアントの問題を引き起こす可能性がありますか?これは構成がきつすぎるですか?


2
私が推薦する「それは実際に何を意味する」については、マニュアルの関連するセクションをも参照、今後の9.10バージョンで同じセクション
ホーカンLindqvist

回答:


7

1つのDNSクライアントが1秒間に取得できる同一の応答の数を制限します。このwindow 5オプションは、5 * 5応答のバーストを許可します。

「同一の応答」と「単一のDNSクライアント」は、ここでは少し明白でない用語です。詳細については、こちらをご覧ください。http//web.archive.org/web/20140209100744/http//ss.vix.su/~ vjs / rl-arm.html

一般的にレート制限するのは良いことです-いつかDOS攻撃の場合に役立つでしょう。ほとんどの場合、デフォルトで問題ありません。


最初の段落の「バースト」に関する部分は間違っています。window各「単一のDNSクライアント」に送信された「同一の応答」が追跡される期間を制御するためにのみ使用されます。BIND 9管理者リファレンスマニュアルの状態:[クライアントのRRL]アカウントは毎秒制限よりもより積極的になることができないかよりもマイナスwindow回毎秒制限。 Vernon Schryverによるこのメッセージは、アルゴリズムの動作をより詳細に説明しています。
Kempniu

11

BIND 9.9の管理者リファレンスマニュアルをお読みください。

基本的にresponses-per-secondは、1秒間に1つの宛先に送信できる同一の応答の数です。定義はトリッキーです。

単一の宛先は、ネットワークアドレスのブロックであり、サイズは該当するipv4-prefix-lengthか、またはipv6-prefix-length適宜構成されます。あれば、ipv4-prefix-length24で、両方192.0.2.1192.0.2.2DNSサーバーを照会している、彼らはこのクォータを共有するだけで彼ら二人の間に非常に多くのクエリを送信することができます。

同一の応答とは、特定の存在する名前または存在しない名前に対する特定のRRtypeに対するクエリへの応答です。次のクエリはすべて異なります。

IN A example.net.
IN A www.example.net.
IN AAAA example.net.
IN A nonexistent.domain.example.net.

ただし、以下のクエリはすべて同じです(nonexistent.domain.example.net.その名前などが想定どおりであると仮定)。

IN A nonexistent.domain.example.net.
IN A nonexistent.domain2.example.net.
IN SOA other.nonexistent.domain.example.net.

window物事をもう少し複雑にします。これは、クォータをバンクできる秒数です。乗算してwindowresponses-per-second任意の割り当て量がプラスになる最大値、またはより基本的にはバースト容量を与えます。

キャッチオールの例を挙げましょう:

あなたはの非再帰的な権威ネームサーバーですexample.net.。過去10秒間にDNSトラフィックがまったく見られず、質問の構成がグローバルに適用されているとします。次のイベントが順次発生します。

  1. ホスト198.51.100.1はに対して100個のクエリを送信しますIN NS example.net.。25が許可され、残りの75は無視されます。
  2. ホスト198.51.100.1はに対して100個のクエリを送信しますIN A nonexistent.example.net.。25が許可され、残りの75は無視されます。
  3. ホスト198.51.100.1 IN MX nonexistent-domain.example.net. は、存在しないドメインの制限に達したため無視されます。
  4. ホスト198.51.100.1はに対して1つのクエリを送信しますIN A example.net.。許可されています。
  5. ホスト192.0.2.1〜192.0.2.50はそれぞれ、に対する単一のクエリを送信しますIN NS example.net.。それらの25は返信を受け取り、残りの25は無視されます。198.51.100.0/24の割り当てはこれらのホストには適用されませんが、192.0.2.0 / 24の割り当てを共有します。
  6. 1秒パス
  7. ホスト192.0.2.26から192.0.2.50はクエリを繰り返しますIN NS example.net.。割り当ては1秒あたり5つのクエリによってのみ補充されるため、そのうちの5つは応答を受け取り、残りの20つは無視されます。

4
iptables -A INPUT -p udp --dport 53 -m recent --set --name dnslimit
iptables -A INPUT -p udp --dport 53 -m recent --update --seconds 60 --hitcount 11 --name dnslimit -j DROP 

IPtablesも同様に機能します。攻撃が見つかった場合、サービスからトラフィックを完全に遮断します。


驚くばかり!iptablesについてさえ考えていませんでした。しかし、それは英語でどういう意味ですか。私は推測することができます...いくつかのIPが11以上のdnsクエリを送信すると、60秒間それらをブロックしますよね?
レッドクリケット

いいえ、変換は次のとおりです。60秒の時間内に11パケット以下を受け入れ、他のすべてのパケットをドロップします。
drcelus 2013年

1
問題が発生しました。素敵なソリューションを適用しようとすると、「iptables:Applying firewall rules:iptables-restore v1.4.7:-c packet counter not numeric Error occurred at line:17」というエラーが発生しました。17行目が最初あなたの1つ。特定のモジュールをロードする必要がありますか?

最初の行は次のようになります:iptables -A INPUT -p udp -m udp --dport 53 -m latest --set --name dnslimit --rsource

2
「同じように機能する」とは言えません。このレート制限は、スパムされている同じクエリまたは異なるクエリである場合、まったくわからなくても、後者は正当なトラフィックである可能性がはるかに高くなります。
–HåkanLindqvist 14

0

私はレート制限するのは良い考えではないと思います。自分自身に質問してください。あなたはWebサーバーの応答もレート制限していますか?DNS応答がWebサーバー応答ほど重要ではないと思うのはなぜですか?
レート制限を行ったとしても、その5リクエスト/秒は非常に低く聞こえます。


2
場合によっては、Webサーバーの応答をレート制限することは、悪い考えかもしれません。ただし、DNSはほとんどがUDPであり、(httpとは異なり)簡単に偽装されるため、ネームサーバーが増幅攻撃や反射攻撃に使用されないようにレート制限が必要です。
arjarj 2013年

彼がオープンリゾルバーでない場合、私はそれが反射/増幅攻撃の適切なターゲットだとは思わないが、あなたは正しい。5リクエスト/秒私はまだ低すぎると思います。
Sandor Marton

1
彼はそれが再帰的であるか権威サーバーであるかを明記していません。信頼できるサーバーにとって、レート制限は依然として重要です。また、1秒あたり5つのリクエストだけでなく、1秒あたり5つの同じ回答であり、異なる回答を生成した場合でも修正されます。通常、バインドでは毎秒5リクエストの設定で問題ありません(正当なサーバーがその間に他の質問もするため)。
arjarj

さて、私はドキュメントをチェックしました、そして私が見るように、レート制限はクライアントごとの設定であり、サーバーごとではありません。5req / sの場合、バインドは合計に制限されるという印象を受けました。クライアントごとに5リクエスト/秒で問題ありません。
Sandor Marton 2013年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.