WebサイトでIPアドレスかパスワード認証で制御したい

特定のWebページや、analog、MRTGのログデータのページに対して、Basic認証にてアクセス制御するケースがあります。
しかし、これを使うと自宅内LANからアクセスした場合でも認証しなければなりません。
「特定のIPアドレスからのアクセスは許可し、それ以外からはパスワード認証で制御する」
といった設定ができないか調べてみました。
まず、パスワード認証ですが一般的にはBasic認証が使用されます。
この場合、パスワードファイルを作成しなければならず、複数ユーザにて利用する場合はパスワードを周知するなど管理が煩雑になります。
以前から自宅サーバでは、「mod_auth_shadow」を利用しています。
このモジュールは、OSの/etc/passwd、/etc/shadowファイルを使って認証してくれますので非常に便利です。
古い設定方法ですが、こちらが参考になるかな・・・。
で、肝心のhttpd.confの設定ですが、以下になります。
ここでは、sample.htmlファイルに対してのアクセス制御です。
接続元IPアドレス「192.168.11.xxx」からは許可し、それ以外からの場合は「mod_auth_shadow」での認証を表してます。
また、「satisfy any」にすることで、いずれかの条件を満たす場合に許可するという設定になります。
全ての条件を満たした場合に許可するという場合は「satisfy all」を宣言します。
もちろんディレクトリを対象とした<Directory>ディレクティブでも動作可能です。
<Files Report.html>
order deny,allow
deny from all
allow from 192.168.11.0/255.255.255.0
AuthShadow on
AuthType Basic
AuthName “Enter User and Password"
require valid-user
satisfy any
</Files>

PC・Internet

Posted by simoyan