デフォルトのサイト(000default)を含め、いくつかのサイトが有効になっているApache2サーバーがあります。デフォルトのサーバーは、帯域幅を消費してログファイルをいっぱいにするだけのスパムリクエストを大量にキャッチしています。
デフォルトサイトにヒットするすべてのリクエストをドロップする最小限の仮想ホスト構成は何でしょうか?
これは私がこれまでmod_securityを使用してきたものですが、すべての要求に対して403で応答する以外に何もしないようです。
<VirtualHost *:80>
ServerName default.only
SecRuleEngine On
SecAction "drop,phase:1"
</VirtualHost>
私は次の設定でこれを修正することができました:
<VirtualHost *:80>
ServerName default.only
SecRuleEngine On
SecRule REMOTE_ADDR "^\d" drop,phase:1
</VirtualHost>
mod_security
action deny
は403応答を生成しますが、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:ネットワークへのデータの書き込み」
Apacheは何らかの方法でリクエストを処理する必要があり、単にそれらを無視することはできません。 403 Forbidden
で応答するのはあなたが得る限り近いです。
これは、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>