web-dev-qa-db-ja.com

ユーザーエージェント文字列によるApacheアクセスのブロック

プロキシを使用して、提供しているWebサイトを攻撃しているスクリプト作成者がいます。

私は、彼らが特定の一般的なユーザーエージェント文字列(つまり http://www.itsecteam.com/en/projects/project1_page2.htm "Havij advanced sql注入ソフトウェア」のuser_agent文字列はMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Havij)です。ソルトに値するクラッキングソフトウェアであれば、おそらくユーザーエージェント文字列を変更できることは承知していますが、スクリプト作成者がいつかその機能を処理しなければならないのは問題ありません。

では、ユーザーエージェント文字列を照合してアクセスを自動的にブロックし、恒久的にブラックリストに登録するためのソフトウェアはありますか?

8
Kzqai

browserMatchによるアクセスを拒否し、SetEnvIfから拒否できます。例:

SetEnvIfNoCase User-Agent "^Wget" bad_bot
SetEnvIfNoCase User-Agent "^EmailSiphon" bad_bot
SetEnvIfNoCase User-Agent "^EmailWolf" bad_bot
<Directory "/var/www">
        Order Allow,Deny
        Allow from all
        Deny from env=bad_bot
</Directory>

それらを恒久的にブロックするには、カスタムログファイルを作成し、fail2banを使用して、たとえばiptablesでそれらを禁止する必要があります。

たとえば、LogFormatを作成します。

LogFormat "%a %{User-agent}i" ipagent

Vhost/server-wideにロギングを追加します

CustomLog /var/log/Apache2/useragent.log ipagent

/etc/fail2ban/filter.d/baduseragent.conf

[Definition]
failregex = ^<Host> Mozilla/4\.0 \(compatible; MSIE 7\.0; Windows NT 5\.1; SV1; \.NET CLR 2\.0\.50727\) Havij$

/etc/fail2ban/jail.conf

[Apache-bad-user-agent]

enabled  = true
port     = 80,443
protocol = tcp
filter   = baduseragent
maxretry = 1
bantime  = 86400
logpath  = /var/log/Apache2/useragent.log
18
Dmytro Leonenko

私はあなたの質問を理解したと思います。これがあなたが探しているものであるならば、私はより詳細な説明を提供します。 (これは他のもののトラップとしても機能します)

  • Apache2でmod_rewriteエンジンを有効にする
  • Trap.phpを作成します。訪問すると、好きなことができます。たとえば、ウェブへのアクセスを拒否するブラックリストにすべての訪問者のIPを追加するようにしました。
  • このように1行に1つずつ、好きではないユーザーエージェントのファイルを作成します。
    bas_useragent [タブ]黒
    useragent_bad [タブ}黒
  • 次に、不良ユーザーエージェントのマップに一致するmod_rewriteを追加し、マップがある場合はトラップにreqritesします。ルールは次のようになります。

    _RewriteMap badlist txt:~/bad_useragent_list_
    _RewriteCond %{HTTP_USER_AGENT} .* [NC]_
    _RewriteCond ${badlist:%1|white} ^black$ [NC]_
    RewriteRule (.*) "/trap.php" [L]

  • これは基本的に、ユーザーエージェントをファイル内のキーと照合します。見つからない場合は「白」であると見なされ、リクエストは変更されません。見つかった場合、関連付けられた値が「黒」の場合、リクエストはtrap.phpファイルに移動するように書き換えられます。trap.phpファイルは、好きなように処理します。
  • いくつかの考えられるアイデア。 trap.phpがIPを書き込む共通ファイルを監視する別のスクリプトを用意します。この共通ファイルが変更されると、このウォッチャーは新しい情報を読み取り、IPアドレスを解析し、そのアドレスからのすべてのトラフィックをブロックするルールをIPテーブルに追加します。これが役に立てば幸いです!繰り返しますが、詳細が必要な場合は、ここに返信してください。
6
blerbl