IPアドレスでクライアントがWebサーバー上の特定のURLにアクセスするのをブロックするにはどうすればよいですか?


9

などの既知の脆弱なページにアクセスするIPアドレスを永久にブロックするにはどうすればよい/phpMyadmin/ですか?私はDebianサーバーを実行していて、ボットやハッカーがサーバーをスキャンして脆弱性を見つけようとしているのをよく見ます。

73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpMyadmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpMyAdmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyAdmin/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin2/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin3/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"
73.199.136.112 - - [16/Oct/2017:05:18:05 -0700] "HEAD /phpmyadmin4/ HTTP/1.0" 404 182 "-" "Mozilla/5.0 Jorgee"

私はすでにこのstackoverflowの質問に従っています:phpMyAdminを保護する方法

ボットが帯域幅を占有するのを阻止しようとしています。


4
これはログファイルをクリーンアップしますが、セキュリティにはまったく役立ちません。常にphpmyadminを最新の状態に保つか、localhostからのみアクセスします(他のすべてのトラフィックをブロックします)。リモートサーバーにアクセスするには、ssh経由でポートをトンネルします。
ステファンM

そのサイトにアクセスしようとする悪意のあるIPアドレスをブロックするため、セキュリティに役立つと思います。
Whitecat、2017年

@Whitecat 404HTTPコードは意味しPage not foundます。これらのIPが問題のあるIPであることをどのように感じますか?どの出力に基づいて、これらのIPをブロックすることにしましたか?
Valentin Bajrami 2017年

彼らがphpMyAdminに行くという事実に基づいてIPをブロックしたいと思います。私は自分のサイトをセキュリティで保護し、そのページにアクセスするユーザーが悪意のある人物であることを知っています。
Whitecat、2017年

1
作成してみませんか.htpasswd
nicoX 2017年

回答:


18

これはあなたが探しているよりも重いかもしれませんが、fail2ban(https://www.fail2ban.org)の使用を検討するかもしれません。これは、ログファイルを監視し、カスタマイズ可能な一連のパターンに一致するログを生成するアドレスを自動的に禁止できるツールです。


5
tbhこれは正確fail2banに対処するために設計された問題です。それは少し重いですが、それでも望ましい基準はかなり動的です。考慮されるすべてのことfail2banは、標準的なツールを使用してこのクラスの問題を解決しようとするのと同じくらい軽いことです。
Bratchley 2017年

1
まあ私はあなたがsuid-rootバイナリcgiを書いて、それを/ phpmyadminとしてホストし、その呼び出し元のファイアウォールルールを追加できると思います。
ジョシュア

7

しないでください。せいぜい、ログが乱雑にならないようにするだけで達成できます。最悪の場合、PCがボットネットノードとして感染した誰かに属していたIPアドレスを偶然(DHCP経由で)取得した正当な訪問者ブロックすることになります。

ここでの本当の問題はログの乱雑さであり、脆弱性を使用していないため、サイトが認識していない、または認識していない脆弱性に対する脆弱性スキャンがわかっているリクエストをドロップするようにロギングを構成するだけで解決できます彼らがスキャンしているフレームワーク。ログが完全に失われることを心配している場合(おそらく、別の攻撃の責任者、または攻撃がいつ開始されたかなどを示す証拠が提供される可能性があります)、特定のIPからのジャンクURLの複数のログエントリを短時間で抑制しますよりよく機能するはずです。


6
fail2ban禁止は一時的なものです-設定可能なXYおよびZを使用して、不正なログイン試行のY秒間のXヒット、Z分の禁止。
Shadur

2
これが発生する可能性は0.1%ですが、phpmyadminのこのインスタンスの正当なユーザーは、OPにメッセージを送ってブロックを解除できるはずです。また、fail2banは、サーバーのパッチが適用されていない、またはゼロデイの脆弱性にヒットする前に、スキャン攻撃を阻止できます。
Segfault 2017年

1
@Segfault:サーバー上に存在しない/phymyadmin/ため、おそらく正当なユーザーは/phymyadmin/存在しません(404を参照)。問題の正当なユーザーとは、ファイアウォールでブロックされているサイトのユーザーのことです。
R .. GitHub ICEのヘルプを停止する

1
「ベスト」には、実際に成功した可能性があるものを含め、ブロックされている追加のテストが実際に含まれます。ログの内容をいじってみると、フィルターでなんらかのエラーが発生したことに気付いたときに情報を失う良い方法のように思えます。あなたは、ログ混乱を心配している場合、あなたはあなたが興味のあるもののためにすべてを取捨選択するELKのような分析プラットフォームを必要としています。
Bratchley

2
関連するもう1つの問題は、CGNの使用の増加です。ISPは1つのIPアドレスを共有する何百もの顧客を抱えている可能性があり、一時的なものであっても、IPブロッキングはせいぜい危険です。正当なユーザーとアクティブなスキャンを同じアドレスから同時に行うことができます。
Bob

3

httpd設定ディレクトリの1つでphpMyAdmin.confを見つけ、deny 73.199.136.112設定ファイルのallow / denyセクションを追加し、2.4セクションにrequire IP を追加します。以下に、完全な構成ファイルの例を入れましたが、エントリが逆になっています。許可されたIPセグメント以外のすべてをブロックして、ツールにアクセスします。

[thebtm@server conf.d]# cat /etc/httpd/conf.d/phpMyAdmin.conf
# phpMyAdmin - Web based MySQL browser written in php
# 
# Allows only localhost by default
#
# But allowing phpMyAdmin to anyone other than localhost should be considered
# dangerous unless properly secured by SSL

Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin

<Directory /usr/share/phpMyAdmin/>
   AddDefaultCharset UTF-8

   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 10.10.26
       Require ip 192.168.56
       Require ip 127.0.0.1       
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 10.10.25
     Allow from 192.168.56
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

<Directory /usr/share/phpMyAdmin/setup/>
   <IfModule mod_authz_core.c>
     # Apache 2.4
     <RequireAny>
       Require ip 127.0.0.1
       Require ip ::1
     </RequireAny>
   </IfModule>
   <IfModule !mod_authz_core.c>
     # Apache 2.2
     Order Deny,Allow
     Deny from All
     Allow from 127.0.0.1
     Allow from ::1
   </IfModule>
</Directory>

# These directories do not require access over HTTP - taken from the original
# phpMyAdmin upstream tarball
#
<Directory /usr/share/phpMyAdmin/libraries/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/lib/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

<Directory /usr/share/phpMyAdmin/setup/frames/>
    Order Deny,Allow
    Deny from All
    Allow from None
</Directory>

# This configuration prevents mod_security at phpMyAdmin directories from
# filtering SQL etc.  This may break your mod_security implementation.
#
#<IfModule mod_security.c>
#    <Directory /usr/share/phpMyAdmin/>
#        SecRuleInheritance Off
#    </Directory>
#</IfModule>

これは素晴らしいです。しかし問題は、多くの異なるIPからのボットが常に存在することです。1日に20から30のユニークな悪意のあるIPを取得するため、すべての異なるIPについていくことはできません。
Whitecat、2017年

2
そのため、アクセスしたいセグメントを許可し、残りを自動的にブロックするという逆を示しました。
thebtm

Alias /phpmyadmin /usr/share/phpMyAdmind /phpmyadminセキュリティ上の理由から、別のものに変更する必要があります。 Alias /secret /usr/share/phpMyAdmind
nicoX

インストール時にツールに付属するデフォルトの構成ファイルを変更して、ランダムなIPアドレスをいくつか作成しました。
thebtm 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.