fail2banによるDNS DDoSブロッキング

名前付きへのリクエストに対するサービス拒否についてのログチェックからのメッセージの山にうんざりしていませんか? 以下に、fail2banパッケージを使用して、DDoSからnamedに制限する方法を説明します。



問題のイベントは次のとおりです。

 システムイベント
 =-=-=-=-=-=-=
 Jan 21 06:02:13 www named [32410]:client 66.230.128.15#15333:query(cache)
 + '。/ NS / IN'拒否 


ただし、ほとんどの場合、送信元IPアドレスが改ざんされる可能性があることに注意してください。 ボットネットの各ノードは、1秒あたり1つ以上のパケットをDNSサーバーに送信できます。 サーバーは、リクエスト内のエラーメッセージで偽装アドレスに応答し、ソースでサービス拒否を引き起こします。



DNSサーバーを他の人のDDoS攻撃の武器として使用するのにうんざりしていませんか? fail2banパッケージ(Debian GNU / Linux)をインストールしてみてください。 元のプロジェクトWebサイトはwww.fail2ban.orgです。



まず、fail2banパッケージをインストールします。 デフォルトでは、sshサービスに対する攻撃のみが監視され、ブロックされます。 これはいい考えです。 fail2banパッケージでは他のサービスを制御できます。さらに、ハンドラーとフィルターを自分で作成することもできますが、これらの問題についてはこの記事の範囲外です。

  aptitude install fail2ban 


パッケージのインストール後、/ etc / fail2ban / jail.confファイルの内容を確認します。

ファイルの最後に、fail2banがDNSサービスのイベントを通常処理できるように、名前付きサーバー設定で行う必要がある説明を見つけます。



最初に、DNSサーバーログを保存するディレクトリを作成します。

  mkdir / var / log / named
 chown bind.bind / var / log / named
 chmod 750 / var / log / named 


その後、/ etc / bind / named.conf.localを編集します(別の場所にある場合があります。指定された名前はDebianのbind9パッケージに関連しています)。次の行を追加します。

 ロギング{
    チャネルsecurity_file {
        ファイル「/var/log/named/security.log」バージョン3サイズ30m。
        重大度の動的。
        印刷時間はい。
     };
    カテゴリセキュリティ{
         security_file
     };
 }; 


バインドを再起動します。

  /etc/init.d/bind9 restart 


/var/log/named/security.logログが作成され、設定されていることを確認します。

  21-Jan-2010 07:19:54.835クライアント66.230.160.1#28310:クエリ(キャッシュ) './NS/IN'は拒否されました 


では、fail2banの構成を変更します。 編集のために/etc/fail2ban/jail.confを開き、次の変更を行います。

  [named-refused-udp]

 enabled = false 


に置き換える

  [named-refused-udp]

有効= true 


同様に:

  [named-refused-tcp]

 enabled = false 




  [named-refused-tcp]

有効= true 


fail2banを再起動します。

  /etc/init.d/fail2ban restart 


fail2banが独自の/var/log/fail2ban.logログを作成することを確認します。ログには次のようなものが含まれます。

  2010-01-21 07:34:32,800 fail2ban.actions:警告[named-refused-udp]禁止76.9.16.171
 2010-01-21 07:34:32,902 fail2ban.actions:警告[named-refused-tcp]禁止76.9.16.171 


また、fail2banはiptablesに適切な変更を加えたと確信しています。

  $ sudo iptables-save |  grep fail2ban 


これで、適切かつタイムリーなfail2banがアクセスを制限する方法を確認できます。

  tail -f /var/log/named/security.log 


これで、DNSエラーメッセージは、数秒ではなく、数分離れたものになります。



次に、いくつかのファイルの改善について説明します。



logcheckにエラーメッセージの新しい場所を調べるように指示しましょう。 ファイルの最後に次の行を追加して、/ etc / logcheck / logcheck.logfilesファイルを編集します。

  /var/log/named/security.log 


fail2banから電子メールでメッセージを受信できるようになりました。



/etc/fail2ban/jail.confファイルのfail2banの[DEFAULT]セクションにあるオプションを調べることをお勧めします。 名前付き以外のサービスの制御を有効にすることもできます。 RFC1918のネットワークを無視するためのルールを変更することは理にかなっているかもしれません(ignoreipオプションを検討してください)。



また、長期間のbantime = 600の変更を検討することもできます。



正規表現コンパイルの魔法について十分な知識がある場合は、fail2banの独自のフィルターを自分で作成してみてください。



要するに、あえて、探検してください:)



ps:はい、それでも、これは「 fail2banパッケージを使用してDNS DDOSをブロックする 」の単なる無料翻訳であり、練習からいくつか追加されています。



All Articles