web-dev-qa-db-ja.com

PHPMyAdminの攻撃を阻止するには?

存在しないsetup.phpアクセスログのファイル(下記参照)。書き換えルールを使用する一部のクライアントでは、これらの各リクエストによりPHPスクリプトが実行され、サーバーでかなりのスローダウンが発生し、不要なトラフィックが生成されます。

この種のリクエストをすばやく拒否することはできますか?すべてを拒否する一般的な拒否ルールを指定することを考えていましたsetup.php関連クエリですが、適切なアプローチではない可能性があります。助言がありますか?

217.115.202.30 - - [17/Nov/2010:09:13:35 +0100] "GET /PHPMYADMIN/scripts/setup.php HTTP/1.1" 404 2452 "-" "ZmEu"
217.115.202.30 - - [17/Nov/2010:09:13:35 +0100] "GET /PMA/scripts/setup.php HTTP/1.1" 404 2444 "-" "ZmEu"
217.115.202.30 - - [17/Nov/2010:09:13:39 +0100] "GET /PMA2005/scripts/setup.php HTTP/1.1" 404 2449 "-" "ZmEu"
217.115.202.30 - - [17/Nov/2010:09:13:47 +0100] "GET /SSLMySQLAdmin/scripts/setup.php HTTP/1.1" 404 2452 "-" "ZmEu"
217.115.202.30 - - [17/Nov/2010:09:13:42 +0100] "GET /SQL/scripts/setup.php HTTP/1.1" 404 2446 "-" "ZmEu"
217.115.202.30 - - [17/Nov/2010:09:13:49 +0100] "GET /admin/phpmyadmin/scripts/setup.php HTTP/1.1" 404 2448 "-" "ZmEu"
217.115.202.30 - - [17/Nov/2010:09:13:58 +0100] "GET /admin/scripts/setup.php HTTP/1.1" 404 2442 "-" "ZmEu"
217.115.202.30 - - [17/Nov/2010:09:14:00 +0100] "GET /bbs/data/scripts/setup.php HTTP/1.1" 404 2448 "-" "ZmEu"
217.115.202.30 - - [17/Nov/2010:09:14:01 +0100] "GET /cpadmin/scripts/setup.php HTTP/1.1" 404 2447 "-" "ZmEu"
217.115.202.30 - - [17/Nov/2010:09:14:03 +0100] "GET /cpadmindb/scripts/setup.php HTTP/1.1" 404 2447 "-" "ZmEu"
217.115.202.30 - - [17/Nov/2010:09:13:53 +0100] "GET /admin/pma/scripts/setup.php HTTP/1.1" 404 2447 "-" "ZmEu"
217.115.202.30 - - [17/Nov/2010:09:14:05 +0100] "GET /cpanelmysql/scripts/setup.php HTTP/1.1" 404 2450 "-" "ZmEu"
217.115.202.30 - - [17/Nov/2010:09:14:11 +0100] "GET /cpanelphpmyadmin/scripts/setup.php HTTP/1.1" 404 2452 "-" "ZmEu"
217.115.202.30 - - [17/Nov/2010:09:14:13 +0100] "GET /cpanelsql/scripts/setup.php HTTP/1.1" 404 2448 "-" "ZmEu"
217.115.202.30 - - [17/Nov/2010:09:14:23 +0100] "GET /cpphpmyadmin/scripts/setup.php HTTP/1.1" 404 2449 "-" "ZmEu"
217.115.202.30 - - [17/Nov/2010:09:14:25 +0100] "GET /db/scripts/setup.php HTTP/1.1" 404 2441 "-" "ZmEu"
217.115.202.30 - - [17/Nov/2010:09:14:26 +0100] "GET /dbadmin/scripts/setup.php HTTP/1.1" 404 2445 "-" "ZmEu"
217.115.202.30 - - [17/Nov/2010:09:14:28 +0100] "GET /myadmin/scripts/setup.php HTTP/1.1" 404 2445 "-" "ZmEu"
217.115.202.30 - - [17/Nov/2010:09:14:29 +0100] "GET /mysql-admin/scripts/setup.php HTTP/1.1" 404 2449 "-" "ZmEu"
217.115.202.30 - - [17/Nov/2010:09:14:32 +0100] "GET /mysql/scripts/setup.php HTTP/1.1" 404 2448 "-" "ZmEu"
217.115.202.30 - - [17/Nov/2010:09:14:33 +0100] "GET /mysqladmin/scripts/setup.php HTTP/1.1" 404 2447 "-" "ZmEu"
217.115.202.30 - - [17/Nov/2010:09:14:35 +0100] "GET /mysqladminconfig/scripts/setup.php HTTP/1.1" 404 2453 "-" "ZmEu"
217.115.202.30 - - [17/Nov/2010:09:14:36 +0100] "GET /mysqlmanager/scripts/setup.php HTTP/1.1" 404 2449 "-" "ZmEu"
6

ほぼ4年後もまだ関連があります。

おそらくmod_rewriteは真正なトラフィックを処理しているため、これらのスクリプトは負荷にそれ以上追加することはありません。しかし、はい、それらは一時的に遅れを引き起こすかもしれません。一般に、これらを完全に防ぐことはできません。

これを緩和するためのmodとプラグインは、ローカルファイアウォール(iptables)でIPをブロックする前に、周波数とレートに焦点を合わせる傾向があります。より適切なアプローチには、(通常の使用では偽の)ディレクトリ名のフラグメントなどの署名を含める必要があります。次に、これがどれほど反応的である必要があるかを検討する必要があります。 「denyhosts」パッケージ(SSHパスワードログインの同様の問題から保護する製品)の一部を改造してログの背後を読み取り、「署名」を識別して/etc/hosts.denyにIPアドレスを追加することができます。

原則として、これらの人々は同じホストから戻ってくることはないので、もっと早く何かが欲しいかもしれません。オープンソースのすばらしいところは、それを微調整できることです。 mod_evasiveはOKのようですが、サーバーがスクリプト(curl、wgetなど)によって正当に照会された場合はどうでしょうか。したがって、CAPTCHAはなく、ホワイトリストまたはPOSTまたはGETパラメーターによるリセットが必要です。

あなたが実際にphpmyadminを持っている場合、攻撃のリスクを心配している人たち(OPはそうではなく、OPはリソース消費に悩まされていました)

ディレクトリごとのディレクティブを使用します。

ORDER DENY, ALLOW
DENY FROM ALL
ALLOW FROM *safe places*

真剣に、非常に少数の人々がアクセスする必要があります。彼らがDBAでない限り、リスクを正当化するものは何ですか?インシデントの間、Apacheはオンデマンドで再構成して、単一のアドレスからドアを開くことができます。離れている場合は、同じネットワーク上のVNC/RDPデスクトップにVPNで接続するか、プロキシを使用します。

彼らのスクリプトは、404(そして少なくとも1つは403)であなたを襲います。ダミーフォルダーと構成コードを残して、それらを見つけてもらえるようにしてください。ディレクトリ名を除外するには、grep -vを使用します。

2
mckenzm

デフォルトのvhostからコンテンツを提供しないことから始めます。IPアドレスだけに基づいて盲目的に攻撃するボットは、「重い」アクションをトリガーするリクエストを行う可能性が低くなります。

次に、 fail2ban を使用してログの内容を確認し、ブラインドスキャンの元となったIPをブロックします。

2
pQd

PHPMyAdminが最新であることを確認します。それを非表示にし、/padmin32のように、スキャンされないディレクトリに置きます。

0
Rook

私は現在 @ mod_evasive @ を使用していますが、これは素晴らしいソリューションであることが判明しています。

0