web-dev-qa-db-ja.com

mod_securityを使用してすべてのリクエストをドロップする方法

デフォルトのサイト(000default)を含め、いくつかのサイトが有効になっているApache2サーバーがあります。デフォルトのサーバーは、帯域幅を消費してログファイルをいっぱいにするだけのスパムリクエストを大量にキャッチしています。

デフォルトサイトにヒットするすべてのリクエストをドロップする最小限の仮想ホスト構成は何でしょうか?

これは私がこれまでmod_securityを使用してきたものですが、すべての要求に対して403で応答する以外に何もしないようです。

<VirtualHost *:80>
    ServerName default.only
    SecRuleEngine On
    SecAction "drop,phase:1"
</VirtualHost>
3
izb

私は次の設定でこれを修正することができました:

<VirtualHost *:80>
    ServerName default.only

    SecRuleEngine On
    SecRule REMOTE_ADDR "^\d" drop,phase:1
</VirtualHost>
3
izb

mod_security action denyは403応答を生成しますが、dropはすぐに接続を閉じます。 マニュアルより

drop

説明:FINパケットを送信して、TCP接続を切断するために、「接続を閉じる」アクションをすぐに開始します。

アクショングループ:破壊的

例:次の例では、基本認証の試行を追跡するためのIP収集を開始します。クライアントが2分間に25回を超える試行のしきい値を超えると、後続の接続がドロップされます。

SecAction initcol:ip=%{REMOTE_ADDR},nolog
SecRule ARGS:login "!^$" \
    nolog,phase:1,setvar:ip.auth_attempt=+1,deprecatevar:ip.auth_attempt=20/120
SecRule IP:AUTH_ATTEMPT "@gt 25" \
    log,drop,phase:1,msg:'Possible Brute Force Attack"

このアクションは、ブルートフォース攻撃とサービス拒否攻撃の両方に対応する場合に非常に役立ちます。どちらの場合も、ネットワーク帯域幅とクライアントに返されるデータの両方を最小限に抑える必要があります。このアクションにより、エラーメッセージがログに表示されます。「(9)不正なファイル記述子:core_output_filter:ネットワークへのデータの書き込み」

5
Ladadadada

Apacheは何らかの方法でリクエストを処理する必要があり、単にそれらを無視することはできません。 403 Forbiddenで応答するのはあなたが得る限り近いです。

4
bahamat

これは、libapache2-mod-security2v2.8.0で機能します。

<VirtualHost *:80>
  ServerName 1.2.3.4

  CustomLog /dev/null combined

  # https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual
  SecRuleEngine On
  SecAction id:1,phase:1,nolog,drop
</VirtualHost>
2
Jörg Ludwig