2022.09.20 システム
IP制限やベーシック認証の併用
Apache2.4からIP制限やベーシック認証などのアクセス制限の書き方が変わりましたが、サイト検索すると古い記事も残っており、未だに古い書き方が残ってる場合があります。
書き方の違いを記載しましたので、参考にしていただければと思います。
特定のIPアドレスはアクセス可能、それ以外はベーシック認証を表示
まず古い書き方ですが、特定のIPアドレスからアクセスされた場合は、ベーシック認証を表示せず、特定IP以外からアクセスが有った場合は、Apache2.4より前の頃は「Satisfy Any」を書くことで「いずれかの条件に一致した場合」という意味になるので、対象のIPでアクセスするとベーシック認証が表示されずにアクセス可とすることが出来ました。
入力例は以下の通りです。
# 特定のIPアドレスはアクセス可能、それ以外はベーシック認証を表示(Apache2.4より前の書き方)
Satisfy Any
# IP制限設定
allow from xxx.xxx.xxx.xxx
allow from xxx.xxx.xxx.xxx
allow from xxx.xxx.xxx.xxx
# ベーシック認証
AuthType Basic
AuthName "Require Auth"
AuthUserFile /home/XXXXXXXXXXX/www/XXXXXXXXXXXXXXXXXXXXXX/.htpasswd
Require valid-user
Apache2.4では、「Satisfy Any」の代わりに「RequireAny」ディレクティブというタグが出来ましたので、以下のように記入してください。
またIP制限も「allow from」から「Require ip」に記載方法が変わっております。
# 特定のIPアドレスはアクセス可能、それ以外はベーシック認証を表示(Apache2.4)
<RequireAny>
# IP制限設定
Require ip xxx.xxx.xxx.xxx
Require ip xxx.xxx.xxx.xxx
Require ip xxx.xxx.xxx.xxx
# ベーシック認証
AuthType Basic
AuthName "Require Auth"
AuthUserFile /home/XXXXXXXXXXX/www/XXXXXXXXXXXXXXXXXXXXXX/.htpasswd
Require valid-user
</RequireAny>
ベーシック認証とIP制限を両方設定する
セキュリティを強化するために、IP制限とベーシック認証を同時にかけたいという場合は、Apache2.4より前の頃では「Satisfy All(デフォルトなので省略可)」を記載すると両方のルールに一致している場合のみアクセス可となります。
# ベーシック認証とIP制限を両方設定する(Apache2.4より前の書き方)
Satisfy All
# IP制限設定
allow from xxx.xxx.xxx.xxx
allow from xxx.xxx.xxx.xxx
allow from xxx.xxx.xxx.xxx
allow from xxx.xxx.xxx.xxx
# ベーシック認証
AuthType Basic
AuthName "Require Auth"
AuthUserFile /home/XXXXXXXXXXX/www/XXXXXXXXXXXXXXXXXXXXXX/.htpasswd
Require valid-user
Apache2.4では、「RequireAll」ディレクティブというタグを書くと全てに一致するという意味になるので、先程の「RequireAny」ディレクティブと併用して、より視認しやすい書き方をすることが出来るようになりました。
# ベーシック認証とIP制限を両方設定する(Apache2.4)
<RequireAll>
<RequireAny>
# IP制限設定
Require ip xxx.xxx.xxx.xxx
Require ip xxx.xxx.xxx.xxx
Require ip xxx.xxx.xxx.xxx
</RequireAny>
# ベーシック認証
AuthType Basic
AuthName "Require Auth"
AuthUserFile /home/XXXXXXXXXXX/www/XXXXXXXXXXXXXXXXXXXXXX/.htpasswd
Require valid-user
</RequireAll>
最後に
アクセス制限の書き方1つでもバージョンにより書き方が異なりますので、Apacheのバージョンを意識して制限をかけると良いと思います。
サイトに制限をかけたいけど書き方が分からないなどありましたら、弊社までご相談ください。