IP直打ちでのアクセスを拒否したいのですが、
下記の設定時にhttps://IPアドレス
でアクセスするとホスト名とIPどちらで叩いても接続できてしまいます。
<VirtualHost *:443> ServerName (ホスト名) DocumentRoot "/var/www/html" (略) </VirtualHost> <VirtualHost *:443> ServerName Any <Location /> Order deny,allow Deny from all </Location> </VirtualHost>
ホスト名で叩いた際も下のディレクティブに引っかかってしまう理由はなんでしょうか?
私の認識では「上から順にマッチしたら以下は評価しない」と思ったのですが。。
試したこと
下記はうまく行きますが、
LB配下のサーバを複製して運用したいためIPアドレス指定は避けたい状況です。
正しく403が返される
<VirtualHost *:443> ServerName (ホスト名) DocumentRoot "/var/www/html" (略) </VirtualHost> <VirtualHost *:443> ServerName IPアドレス <Location /> Order deny,allow Deny from all </Location> </VirtualHost>
理由を教えていただきたいのと、
代替案は何かありますでしょうか?
ちなみに下記では質問者様に同様の疑問が残ったまま解決していないようでした。
https://teratail.com/questions/117089
追記
このように逆にするとホストとIPどちらで叩いても拒否されてしまいます
※正確には拒否(403)ではなく「ERR_SSL_PROTOCOL_ERROR」となり表示されない
<VirtualHost *:443> ServerName Any <Location /> Order deny,allow Deny from all </Location> </VirtualHost> <VirtualHost *:443> ServerName (ホスト名) DocumentRoot "/var/www/html" (略) </VirtualHost>
ServerNameが効いていないということなんでしょうか。。
確かにServerName (ホスト名)
をServerName (ホスト名2)
に変えてもこのディレクティブが適用されているようです。
試したパターン
#IP直Chromeで証明書エラー(無視して表示できるオプションもでない) → NG #ドメインアクセス時Chromeで証明書エラー(無視して表示できるオプションもでない) → NG <VirtualHost *:443> ServerName Any <Location /> Order deny,allow Deny from all </Location> </VirtualHost> <VirtualHost *:443> ServerName (ホスト名) DocumentRoot "/var/www/html" (略) </VirtualHost> ###################################################### #IP直はChromeで証明書エラーだが(無視して表示できるオプションが出る)200(ドキュメントルート表示) → NG #ドメインアクセス時は200(ドキュメントルート表示) → OK <VirtualHost *:443> ServerName (ホスト名) DocumentRoot "/var/www/html" (略) </VirtualHost> <VirtualHost *:443> ServerName Any <Location /> Order deny,allow Deny from all </Location> </VirtualHost> ###################################################### #IP直Chromeで証明書エラー(無視して表示できるオプションもでない) → NG #ドメインアクセス時Chromeで証明書エラー(無視して表示できるオプションもでない) → NG <VirtualHost *:443> ServerName (IPアドレス) <Location /> Order deny,allow Deny from all </Location> </VirtualHost> <VirtualHost *:443> ServerName (ホスト名) DocumentRoot "/var/www/html" (略) </VirtualHost> ###################################################### #IP直は403 → OK #ドメインアクセス時は200(ドキュメントルート表示) → OK <VirtualHost *:443> ServerName (ホスト名) DocumentRoot "/var/www/html" (略) </VirtualHost> <VirtualHost *:443> ServerName (IPアドレス) <Location /> Order deny,allow Deny from all </Location> </VirtualHost>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/12/29 03:13