phpMyAdminをターゲットとするハッキングの試みをブロックするにはどうすればよいですか?


35

私のウェブサイトは、アクセスしようとするさまざまなIPから毎日何千ものヒットを取得しています。

/php-myadmin/
/myadmin/
/mysql/

...および他の何千ものバリエーション。これらのディレクトリは存在せず、サーバーにphpmyadminもありません。

これらの試みはいずれも成功したとは思いませんが、サーバーのリソースを犠牲にして帯域幅を浪費しているに違いないので、可能であれば停止したいと思います。これらのIPの一部をブロックしましたが、新しいIPで戻ってきますが、これをより永続的に防ぐ方法はありますか?


8
1日あたり何千ものヒットは何もありません。実際にパフォーマンスの問題が発生していますか?1日に数千の404が本当にありません
MDマーラ14年

いいえ、パフォーマンスの問題は発生していません。しかし、それは私をいらいらさせ、私にできることがあるかどうか疑問に思いました。
amba88 14年

6
IPベースのブロックには注意してください-多くのIPが正当なユーザーに循環することになります。また、一部の正当なユーザーはボットネットの一部として感染する可能性があります。IPベースのブロックを行う場合は、有効期限がかなり短いことを確認してください。
ボブ14年

mod_securityこのスレッドでは言及されていないので、チェックしてください。以下のコメントに注意してください。これにより、当然、サーバーにより多くの作業が実際に行われます。したがって、実装mod_evasiveするのも良いでしょう。 、しかしそれは下にリストされています。fail2ban
mbrownnyc

回答:


42

心配しないでください。404を提供することは、Webサーバーが行うためのごくわずかな作業です。486を使用すると、1秒間に10個の404を提供できます。404あたりの帯域幅はごくわずかです。小さなGETリクエストと小さな404レスポンス。

真剣に。心配しないでください。これは、インターネット上でサーバーを実行することの一部に過ぎません。


14
Hell-Banning:ふらふらした出力で通常のページ(200 OK)を提供します。子供が使用するツールは、見つかったページを報告し、手動で調査する必要があります(偽のログインページは間違いなく悪魔のデバイスになります):)
arul 14年

4
@arul-一部の攻撃者は、これをチャレンジとみなし、サーバーに特別な注意を払っています。ここで、より小さなまたは異なる404を提供することはすべて有用ですか たとえば、ホストが通常、サポートリンク付きの404を提供する場合、代わりにこれらのターゲットURLにコンテンツのないプレーンな404を提供する必要がありますか、またはできますか?
フライハイト

1
目的は、結果を分析するために敵が追加のリソース(時間)を費やすようにすることです。404が表示された場合、攻撃が機能する可能性はないことがわかります。可変長のOK結果は、[さらなる調査なしで]予想される結果と区別できません。忍耐が彼らの美徳ではないので、彼らはので、それらの地獄をdemotivate、彼らが停止されます、これらのスキャンを実行します:)
arul

1
ボーナスポイントについては、実際のphpmyadminページとまったく同じように見えますが、完全に機能しない静的なページを返します。
captncraig 14年

1
追加のボーナスポイントについては、0.5〜1秒の遅延を作成します。これにより、正当なユーザーによるロード時間は大幅に増加しませんが、悪者が行っているスキャンの速度は低下します。(サーバーに、必要以上に接続を開いたままにし、正当な要求を処理する能力があることを確認する必要があります。)
Moshe Katz 14年

38

残念ながら、これがインターネットの仕組みです。無視してください。何千ものボット/トロイの木馬がインターネットをスキャンします。送信元IPは常にランダムです。治療法はありません。

そのトラフィックを排除するための唯一の100%ソリューションを以下に示します。 ここに画像の説明を入力してください

代替手段は次のとおりです。
-https / httpを使用してポート80/443から別の場所に移動する。ボットは通常、他のすべての65kポートでhttpサーバーを探しません。
-VPNを使用してサーバーに接続します(公開Webサイトをホストしている場合、これは不可能だと思います)。


図のLOL +1 :-)静的なサイトでこの厄介な問題があります(私たち全員がそうであるように)。これが最も有用な答えです。
デイブエ

30

あなたが望むのはFail2banです(これがLinuxマシンであると仮定すると、あなたは言いませんでした...)

Fail2banとは何ですか?

Fail2banはシステムログを解析し、ブロックする特定の正規表現を探します。一致(または構成方法に応じて同じIPからの複数の一致)が見つかると、通常はIPTablesを介してブロックします。通常、これはSSHまたはWebサーバーに対する失敗した認証試行をブロックするために使用されます。

一定の時間(数分、数日、それらがどれだけ持続するかに依存します)それらを禁止するように設定し、その後再試行しない限り禁止が期限切れになります。

これは、ボットをスキャンするphpmyadminをブロックするのにどのように役立ちますか?

これは、存在しないphpmyadminフォルダーにアクセスしようとするなど、攻撃の一般的な兆候と一致させるために簡単に使用できます。そのような試みに一致する正しい正規表現を見つけ出し、正当なユーザーをブロックしないようにする必要があります。

このブログ投稿で与えられた設定は逐語的に機能するか、セットアップに多少の調整が必要な場合があります。

なぜブロックする必要があるのですか?404エラーはそれほど費用がかかりません

iptablesでそれらをブロックすることにはいくらかの用途があります-可能性は、phpmyadminの脆弱性をチェックしている場合、機能する何かを見つけるまで、他のサービスの脆弱性を試すことです。それらを禁止すると、ほとんどのボット/スクリプトはしばらくしてあきらめ、より良いターゲットに移動します。

スキャンの費用はそれほどかかりませんが(実際に脆弱性が見つかった場合を除き)、ログがあふれ、Webサーバーでの攻撃や問題の発見が困難になります。

以下のコメントにあるように、Fail2banにはいくつかのシステムリソースが必要です。しかし、それほどではありません。少なくとも、Fail2banに起因するパフォーマンスの問題は一度もなかったと言えます。しかし、パスワードをブルートフォースしようとする非常に攻撃的なスクリプトや、サーバーで1秒間に何千ものSQLインジェクション試行やその他のエクスプロイトを投げることにより、パフォーマンスの問題が発生しました。それらをファイアウォールレベルでブロックすると、サーバー/アプリケーションレベルでブロックするよりもはるかに少ないリソースで済みます。また、カスタムスクリプトを実行してIPアドレスを禁止するように拡張することもできます。そのため、IPtablesで禁止する代わりに、ハードウェアファイアウォールで禁止したり、同じ人があなたを攻撃しようとしている場合に誰かにメールを送って文句を言うことができますISPに送信するか、ファイアウォールでデータセンターをブロックします。

他のヒントはありますか?

誤って自分がロックアウトされないように、管理するいくつかのIPアドレスをホワイトリストに登録することを強くお勧めします。


6
それは資源の無駄になります:)私はあなたが単に時々 404にサービスを提供する上でよりfail2banの上でより多くのCPUサイクルを使用すると思います:)
パルトロミエZarzecki

4
@BartłomiejZarzeckiより良いセキュリティには常により多くのリソースが必要です
user11153 14年

3
@ heinrich5991 最初の試行後にブロックします。一部のスキャンでは違いはありませんが、サーバーで複数回試行するスキャンでは大きな違いがあります。
グラント

2
Fail2ban(または同様の)は、/ phpmyadminだけではないことを願っています。彼があらゆる種類のリモートアクセスを持っていると仮定すると、F2Bタイプのブロック(3つのパスワードと...が...なくなった!)が404だけではありません。
WernerCD 14年

3
このようなことをする場合、禁止を比較的迅速に(最大で数時間)有効期限が切れるように設定してください。そうしないと、攻撃が動的に割り当てられたIPから来た場合に正当なユーザーがロックアウトされる危険があります。
イェンスノイバウアー14年

7

私がしているのは、適切なディレクトリに小さなスクリプトを入れて、誰かが/ phpmyadmin /にアクセスしたときに実行されるようにすることです。このスクリプトは、iptables(Linuxの場合)を呼び出すだけで、スクリプトにアクセスするIPアドレスを30分間ブロックします(その後、cronジョブはIPアドレスが追加されるiptablesチェーンをフラッシュします)。

fail2banを超える利点は、syslog / access-logの解析にリソースを使用しないことです。欠点は、もちろん、この非常に特定のアドレスにアクセスする場合を除いて、他に何もチェックしないことです。

なぜこれを行うのですか?確かに、404を提供することはサーバーにとって簡単ですが、私は彼らがそれを簡単にいじって欲しくありません。サーバーが応答するのを待って、ツールの時間を無駄に使いたいと思います。さらに、それらをブロックしない場合、最終的に先に進む前に、多くの異なるURLを試します-時には1000を超えることもあります。ツールによっては、数時間で「すてき」でスペースが空く場合もあれば、数分以内にすべてのサーバーを気にせずにサーバーを叩いてしまう場合もあります。

有効なページを提供しないのはなぜですか?彼らのツールはあなたのスキャンを停止し、それを実行しているスキッドに警告するかもしれません-誰が手動でチェックアウトする必要があります。これの裏返しは、彼らのスキャンがあなたの結果に現れなかった場合、彼らが持っているよりもあなたのサーバーをはるかによく見せるということです。たぶん、彼らはもう少し、おそらく数回のポートスキャンをあちこち探して、あなたはそれらを怒って、彼らは何かをすることができるかどうかを確認するためにDoSを起動するでしょう。単にそれらをブロックすること-観点からすると、phpmyadminスクリプトにアクセスした瞬間にサーバーがタイムアウトする-は、不要な注意を避けながら、ツールの時間を浪費するのに効果的です。

サーバー上にphpMyAdminがある場合、効果的な解決策は、それを別のディレクトリに配置し、Webサーバーのパスワード制御(Apacheの場合は.htpasswd)を使用して、何かに到達する前にアクセスをブロックすることです。


良い代替オプションのように聞こえますが、それはWebサーバーがroot権限でスクリプトを実行できることを要求しませんか?
グラント14年

1
phpMyAdminなどのツールのエイリアスを調整します。構成ファイルを単純に変更して、adminMyPhpまたはchrisPhpAdmin ...に変更するか、スクリプトでキッド化されないものに変更します。
WernerCD 14年

返信が遅くなってすみません-しません(必ずしも)。sudo(sudoersファイルを使用)を使用して、Webサーバーが1つのよく知られたスクリプト(およびそのスクリプトのみ)をルート権限で実行できるようにすることができます。このスクリプトは(パラメーターとして)IPを受け入れ、正規表現([0-9] + \。[0-9] + \。[0-9] + \。[0-9] +)に対してIPをチェックします。 )奇妙なものを注入していないことを確認します。
Aaa 14年

1

FWIWでは、/ phpmyadmin /へのアクセスをホワイトリストに登録されたIPアドレスのみに制限しています。

また、mod_evasive(apache2)を使用して、DOS /動作不良のスクリプト攻撃を阻止します。


1

mysql adminツールをマシンのループバックアドレス127.0.0.1にバインドします

次に、ポート転送を使用してsshを使用し、管理バックエンドにアクセスします。

セキュリティのレイヤーを追加します。これは非常に透過的です。


-4

私たちが見つけた最良の方法は、phpmyadminがあるフォルダーをパスワードで保護することです。また、phpmyadminに関連するものをフォルダー名として使用しないでください:pma、phpmyなど...


2
質問から:None of these directories exist, I don't even have phpmyadmin on my server.-彼は既存のインストールを強化する方法を尋ねていません...彼は存在しないものに対して何をすべきかを尋ねています。PMA存在しない場合、名前を変更することはできません。
WernerCD 14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.