【Apache】アクセス制限の怖い(かもしれない)話

前提

  • 運用開始前/開発中Webシステムのhtaccess
  • CentOS 7
  • Apache HTTP Server 2.4
  • DocumentRoot = /var/www/html
# /var/www/html/.htaccess

# TODO: あとで外す
AuthName "Please enter your ID and password"
AuthType Basic
AuthGroupFile /dev/null
AuthUserFile /var/www/html/.htpasswd
Require valid-user
# /var/www/html/cms/admin/.htaccess

Order deny,allow
Deny from all
Allow from localhost 127.0.0.1
# Satisfy Any` なので、Basic認証かIP制限どちらかでOK
Satisfy Any

何が問題?

このような古い記述※1 のままBasic認証を外すと、 /cms/admin のIP制限が効かず、Require all granted (httpd.conf/var/www/html に対して記述されていることが多い) の判定になり公開状態になってしまう可能性がある。

Apache 2.2系 の場合は問題ない。


※1 最近のApacheでは、Order, Allow,Deny, Satisfy などのディレクティブは、互換性保持用のモジュール (mod_access_compat) に移されている