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


8

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

私は、彼らが特定の共通のユーザーエージェント文字列を使用してソフトウェアを経由してサイトにアクセスする傾向があることに気付きました(すなわちhttp://www.itsecteam.com/en/projects/project1_page2.htmのuser_agent文字列で「Havijは、SQLインジェクションのソフトウェアを進めました」のMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Havij)。ソルトに値するクラッキングソフトウェアはユーザーエージェント文字列を変更できる可能性があることは承知していますが、スクリプト作成者がいつかその機能を処理する必要があるので問題ありません。

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

回答:


18

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

ええ、それは悪いユーザーエージェント文字列をブロックしますが、私はそれをさらに一歩進め、ユーザーエージェント文字列の使用があなたがその時点から禁止されるように、悪いユーザーエージェント文字列に関連付けられたIPを自動禁止しようと考えていますそのIP上で。私はfail2banを使用しますが、現時点ではそれをhttpリクエストにうまく適用する方法を見つけていません。
Kzqai

編集された投稿で私の提案を試してください
Dmytro Leonenko

6

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

  • apache2でmod_rewriteエンジンを有効にする
  • trap.phpを作成します。訪問すると、好きなことができます。たとえば、ウェブへのアクセスを拒否するブラックリストにすべての訪問者のIPを追加するようにしました。
  • この
    bas_useragent [tab] black useragent_bad
    [tab} blackのように、1行に1つずつ、望ましくないユーザーエージェントのファイルを作成します。
  • 次に、不正なユーザーエージェントのマップに一致する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テーブルに追加します。これが役に立てば幸いです!繰り返しますが、詳細が必要な場合は、ここに返信してください。

ほとんど忘れてしまったようですが、ここでmod_rewriteについて読むことができます:httpd.apache.org/docs/current/mod/mod_rewrite.html
blerbl
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.