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