ApacheでBasic認証とIPアドレス制限を一緒に設定する




投稿日:

Apache忘却録シリーズです。

webを運用する上で、あのIPからはすべて遮断して、
このIPからは許可しbasic認証を掛けるというような設定が必要な時は多々あると思います。
そんな時に、まとめて設定する方法です。

まずは別々に設定する方法を見てみます。

【Basic認証を掛ける場合】

# htpasswd -b -c -m /www/.htpasswd user password

.htpasswdというファイルが出来て、そこにユーザ名、そしてパスワードが暗号化された状態で記録されます。

# vi /etc/httpd/conf/httpd.conf

該当部分に以下を追加
<Directory "/var/www/html/member">
    AuthType Basic
    AuthName "Private"
    AuthUserFile /etc/httpd/.htpasswd
    Require user secret
</Directory>

※ 詳細設定は色々なところに情報が載っているのでそこを参照してください。

Apacheの再起動をして反映

# service httpd restart



【IPアドレス制限を掛ける場合】

特定のIPを許可したり、拒否したりすることが可能です。

# vi /etc/httpd/conf/httpd.conf

該当部分に以下を追加
  <Directory "/var/www/html/member">
   order deny, allow #許可の項目を優先
   deny from all  #すべての要求を拒否
   allow from 111.222.222.222/32  #許可するIPアドレス
  </Directory>

Apacheの再起動をして反映

# service httpd restart



【Basic認証とIPアドレス制限を一緒に掛ける場合】

# vi /etc/httpd/conf/httpd.conf

該当部分に以下を追加
  <Directory "/var/www/html/member">
    AuthType Basic
    AuthName "Private"
    AuthUserFile /etc/httpd/.htpasswd
    Require valid-user
    Satisfy Any #これがあれば、IPかbasic認証のどちらかが通ればアクセス可能になる。
    Order Deny,Allow
    Allow from 111.222.222.222/32
 </Directory>

Apacheの再起動をして反映

# service httpd restart



以上の設定で、
許可されたIPの場合は、basic認証なしでアクセス可能。
許可されてないIPからは、Basic認証を突破したらアクセス可能。という設定になる。





これ、おすすめ!