2016-05-24 10 views
1

ウェブサーバーの前にロードバランサを使用しています。つまり、すべての接続は192.168.x.x(または他の内部LANセグメント)から行われます。私のユーザは、すべて元のIPアドレスをx-forwarded-forヘッダに表示します。私は手動で管理者の介入なしに自動的に/静かにブラックリストすることができるようにユーザー(IPアドレス)を動的に禁止しようとしています。どのようにあなたは動的にApacheの内部のIPアドレスをブロックするのですか?

現在、私はhtaccessのルールでこれを手動で行います。アプリケーションレベルでユーザーを自動的にブロックすることはできません。

x-forwarded-forヘッダーに基づいてユーザーを自動的に拒否できるように、ipsetリスト、データベースなどを読み取るapacheモジュールまたは方法はありますか?

答えて

2

参照:Ban IPs from text file using htaccess

基本的に、あなたが(データベースにアクセスすることができ)、あるいはDBDを使用してSQLクエリを実行するスクリプトを実行し、テキストファイルから読み込むのいずれかにRewriteMapを活用することができます。 htaccessファイルでマップを定義することはできませんが、マップは1つで使用できます。

そして、あなたが代わりに%{REMOTE_ADDR}%{HTTP:X-FORWARDED-FOR}状態をチェックすることがしたい:

RewriteEngine On 
RewriteCond ${access:%{HTTP:X-FORWARDED-FOR}} deny [NC] 
RewriteRule^- [L,F] 
関連する問題