All In One WP SecurityとIPアクセス制限

特定のIPアドレスからのアクセスしか許可しない設定をしようとして、はまりました。

リバースプロキシを経由しないアクセスを拒絶する設定をしようとして、.htaccess に以下を記載しました。Require ip で指定した2つのIPアドレスがリバースプロキシ(仮名:outer.taiyodo.ga)です。

<IfModule mod_authz_core.c>
<RequireAny>
Require all denied
## for reverse proxy
Require ip 123.456.789.1  123.456.789.2
</RequireAny>
</IfModule>
<IfModule !mod_authz_core.c>
Order deny,allow
Deny from all
Allow from 123.456.789.1  123.456.789.2
</IfModule>

オリジンサーバ(仮名:inner.taiyodo.ga)は名前ベースのバーチャルホストなので、動作確認をするには、テスト用のリバースプロキシ(Nginx)を作り、Windowsのhostsファイルで、outer.taiyodo.gaをNginxのIPアドレスに設定してアクセスする必要がありました。

Nginxのリバースプロキシの設定:

server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name outer.taiyodo.ga;

    location / {
        proxy_pass https://inner.taiyodo.ga/;
        proxy_set_header Authorization "Basic dXNlcjpwYXNzd29yZA==";
    }

    ssl_certificate /etc/letsencrypt/live/outer.taiyodo.ga/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/outer.taiyodo.ga/privkey.pem; # managed by Certbot
}

server {
    listen 80;
    listen [::]:80;
    server_name outer.taiyodo.ga;

    location / {
        proxy_pass http://inner.taiyodo.ga/;
        proxy_set_header Authorization "Basic dXNlcjpwYXNzd29yZA==";
    }
}

inner.taiyodo.gaはBASIC認証付きにしたので、Authorizationヘッダを加えています。

C:\Windows\System32\drivers\etc\hosts の設定:

192.168.10.128 outer.taiyodo.ga

これでWindowsのブラウザからアクセスすると、Nginx(192.168.10.128)からinner.taiyodo.gaにアクセスすることになるので、Forbiddenになるはずでしたが、ぜんぜん普通にアクセスできちゃいました。

.htaccess にはAll In One WP Security(AIOWPS)やCocoonの設定がいっぱいあったので、そのなかのどれかが干渉しているかも、と、めぼしを付けるまで、丸一日かかりました。で、やっと見つけたのがこれ:

# 6G:[USER AGENTS]
<IfModule mod_setenvif.c>
SetEnvIfNoCase User-Agent ([a-z0-9]{2000,}) bad_bot
SetEnvIfNoCase User-Agent (archive.org|binlar|casper|checkpriv|choppy|clshttp|cmsworld|diavol|dotbot|extract|feedfinder|flicky|g00g1e|harvest|heritrix|httrack|kmccrew|loader|miner|nikto|nutch|planetwork|postrank|purebot|pycurl|python|seekerspider|siclab|skygrid|sqlmap|sucker|turnit|vikspider|winhttp|xxxyy|youda|zmeu|zune)
bad_bot

# Apache < 2.3
<IfModule !mod_authz_core.c>
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</IfModule>

# Apache >= 2.3
<IfModule mod_authz_core.c>
<RequireAll>
Require all Granted
Require not env bad_bot
</RequireAll>
</IfModule>
</IfModule>
#AIOWPS_SIX_G_BLACKLIST_END

UAでへんなBOTかどうかチェックして変じゃなかったらアクセス許可、という設定です。へんなBOTだったら拒否、ってやってくれればいいのに。

AIOWPSの該当する箇所がこれ。WPセキュリティ>ファイアウォール>6G ブラックリスト/ファイアウォールルール:

「6Gファイアーウォール保護を有効化」でした。このチェックをはずしたら、ちゃんとForbiddenになってくれました。

機能的には5Gのほうがあるから、まぁいいや、という感じです。

ひさびさにはまった感があった一日でした。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です