ユーザー名/パスワードによるログイン試行が 4 回失敗した後、サーバーへの IP アクセスを拒否したいと思います。/etc/apache2/httpd.conf ファイルに IP またはブロックを追加して、以前に Web サーバーへのアクセスを拒否しました。
<Location "/">
Order Allow,Deny
Allow from all
Deny from 1.2.3.4/30 3.4.5.6/15
Deny from 9.4.3.4
</Location>
PHPでプログラム的にこれを行う方法を知っている人はいますか、または設定された間隔で「IP拒否リスト」についてApache2クエリmysqlを持っていますか?
ありがとう!
明確にするために編集
フォームの送信が完了すると、mysql はユーザー名を照会されます。ユーザー名が見つかった場合、スクリプトは pw のチェックを続行し、その後、失敗したログインをチェックします。失敗したログイン カウンタが >=4 の場合、ユーザーのアカウントはロックされていますが、引き続きサーバーにアクセスできます。
ユーザー名が見つからない場合は、差分を照会します。ユーザーの IP のテーブル。IP が見つかり、login_counter >=4 の場合、上記の apache2 httpd.conf のような方法を使用してサーバーから IP をブロックします。
* *最終編集/感想
www-data ユーザーパーマを付与すると、より大きなセキュリティ上の脆弱性が生じるのではないかと心配しています。.htaccess ファイルを編集するには、参照する方法がないためです。www-data書き込み可能な.htaccess内のファイル、これが私の解決策です。
ユーザー名が db にない場合は、IP を db に書き込み、IP ごとに失敗した試行を追跡します。サイトの再訪問時に、IP が db にあり、4 回以上試行した場合、ログイン スクリプト die() が実行されます。次に、外部スクリプト (www-data からはアクセスできません) を作成します。このスクリプトは毎晩 db をポーリングして、試みが 4 以上の IP を探し、それらを .htaccess に追加します。