質問

皆さん、IP ブラックリストが機能しないことは誰もが知っています。スパマーはプロキシ経由で侵入する可能性があり、さらに、正規のユーザーも影響を受ける可能性があります...とはいえ、IP の実際のリストがアプリケーションのフィードバックとユーザーの行動に基づいて動的に決定されることを考えると、ブラックリスト登録は執拗な攻撃者を阻止するための効率的なメカニズムであるように私には思えます。

例えば:- あなたのログイン画面をブルートしようとしている人 - 書かれていないボットの問題はあなたのサイトに非常に奇妙なhttpリクエストを発行します - スクリプト・キディはスキャナーを使用してアプリの脆弱性を探す

次のメカニズムが機能するかどうか疑問に思っています。機能する場合、それを実行するツールがあるかどうか知っていますか?

  • Web アプリケーションでは、開発者は「違反」を報告するためのフックを持っています。違反は軽微なもの(パスワードが無効)の場合もあり、ブラックリストに登録されるまでにはそのような違反が数十件必要になります。あるいは、それが重大な場合、24 時間以内にそのような違反が 2 回発生すると、退場になる場合もあります。
  • すべてのページが読み込まれる前に、何らかの形式の Web サーバー レベルのブロックが起動し、ユーザーが「不正な」IP から来たかどうかを判断します。
  • 「許し」メカニズムが組み込まれています。しばらくすると、違反は IP に対してカウントされなくなります。

ありがとう!

補足:このソリューションが PHP で機能すれば素晴らしいことですが、どの言語/プラットフォームでも一般的なアプローチについてのご意見をぜひお聞きしたいです。

役に立ちましたか?

解決

*nix マシンを使用していますか?この種のことは、次のようなものを使用して、OS レベルに任せたほうがよいでしょう。 iptables

編集:

コメントに対しては、そうです(ある意味)。ただし、iptables は独立して動作できるという考えです。スロットルするために特定のしきい値を設定できます (たとえば、TCP ポート 80 で、1 分あたり x リクエストを超えるリクエストをブロックします)。これはすべて透過的に処理されます (つまり、アプリケーションは実際にはそれについて何も知る必要がありません)。動的ブロッキングが発生します)。

ボックスを完全に制御でき、ファイアウォールにスロットリングを処理させたい場合は、 iptables メソッドをお勧めします (利点は、このロジックを Web アプリに組み込む必要がなく、リクエストに応じてリソースを節約できることです)ウェブサーバーに到達する前にドロップされました)

それ以外の場合、ブロックが大きなコンポーネントにならないことが予想される場合 (または、アプリがポータブルであり、iptables へのアクセスを保証できない場合)、そのロジックをアプリに組み込む方が合理的です。

他のヒント

を見てみましょう 失敗2禁止. 。IP テーブルを生成して、誤った動作のパターンを追跡するログ ファイルをブロックできる Python フレームワーク。

ユーザー名と IP ブロックの組み合わせであるべきだと思います。IPだけではありません。

カスタム ロックアウト コードを見ているのです。オープンソースの世界には、そのようなコードのさまざまなフレーバーを含むアプリケーションが存在します。要件は非常に些細なものですが、おそらくこれらのいくつかを確認する必要があります。そのため、IP/ユーザー名の組み合わせをマークし、それを利用して IP を x 時間ブロックします。(ユーザーではなく IP をブロックすると言ったことに注意してください。ユーザーは、有効な IP/ユーザー名/パスワードの組み合わせを使用してオンラインに接続しようとする可能性があります。)

実際のところ、ユーザーのログインの痕跡を保持することもでき、3 ストライクの不正なユーザー名とパスワードの組み合わせで未知の IP からログインする場合、そのユーザー名に対して好きなだけその IP をロックアウトできます。(多くの ISP が IP を共有していることに注意してください...)

また、IP が「y」秒ごとに複数回ログインを試行できないように、認証を遅らせることもできます。

私は、Web サーバーに対するヒットを追跡し、特定の犯罪に対して可変期間、オペレーティング システム/ファイアウォール レベルで IP アドレスを動的に禁止するクライアント用のシステムを開発しました。したがって、はい、これは間違いなく可能です。オーウェン氏が述べたように、この種のことを行うには、Web サーバーよりもファイアウォール ルールの方がはるかに適しています。(残念ながら、クライアントはこのコードの著作権を厳格に保持することを選択したため、私にはそれを共有する自由がありません。)

私は通常、PHP ではなく Perl で作業しますが、ファイアウォール ルール エンジンへのコマンドライン インターフェイス (/sbin/iptables など) がある限り、どの言語からでもこれをかなり簡単に実行できるはずです。システムコマンドを実行する機能があります。

ああ、この種のシステムは簡単で一般的です、私はあなたに十分に簡単に私のものを与えることができます

ここで簡単かつ簡単に説明します http://www.alandoherty.net/info/webservers/

書かれたままのスクリプトはダウンロードできません(現在コメントが追加されていないため)。ただし、上記のサイトから電子メールを送ってください。コードを送信して、デバッグやサーバーへの組み込みを喜んでお手伝いします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top