2017-10-25 13 views
2

私は、ワードプレスの.htaccessファイルを設定して、ワードプレスのwp-login.phpと管理ページへのアクセスをブロックするようにしようとしています。直接IPとプロキシIPの両方をチェックするようにmod_rewriteを設定するには?

dev環境には直接アクセスできますが、プロダクションはプロキシの背後にあります。したがって、物事を単純にするために、どちらの場合でも適用される1組のルールを設定したかったのです。

私は私の研究に基づいたルールのセットの下に設定して、作業をする必要があります。

#only allow use of wp-login or wp-admin from users inside 
RewriteCond %{REQUEST_URI} ^(.*)?wp-login\.php(.*)$ [OR] 
RewriteCond %{REQUEST_URI} ^(.*)?wp-admin$ 
RewriteCond %{REMOTE_ADDR} !^192\.168\.(1|2|3|4)\.[0-9]{1,3}$   [OR] 
RewriteCond %{HTTP:X-FORWARDED-FOR} !^192\.168\.(1|2|3|4)\.[0-9]{1,3}$ 
RewriteRule ^(.*)$ - [R=403,L] 

しかし、REMOTE_ADDRとX-FORWARDED-FOR現れるの間にいくつかの理由[OR]のために無視され、すべての場合にページがブロックされます。

何か不足していますか?

編集:まず、OR条件を設定してはいけません。私の脳は基本的なバイナリ操作を計算するにはコーヒーが不足していたようです。

答えて

1

あなたのクライアントは、プロキシ経由または直接接続を経由するとします。どちらかが一致しない場合はブロックするので、すべてをブロックする可能性が高いです。ローカルプロキシを経由して来る人は、通過しなければなりません。可能な場合はmod_remoteipを使用し、クライアントがそのヘッダーを簡単に偽装することができるので、自分のプロキシを信頼するだけで、.htaccesでXFF-stuffを実行しません。

さらに、wp-admin行の$は、wp-admin/edit.phpと一致しないことを意味します。また、WP ajaxリクエストはwp-admin/admin-ajax.phpを経由することを考慮してください。

+0

私の脳の鼓腸を捉えてくれてありがとう。 – Ilsa

関連する問題