以下でご紹介する設定例はいずれも Apache 2.4 系での設定例です。2.2 系以前では異なるディレクティブを使う必要があります。
13章 Appendix
WebRelease には、ログインしたユーザに、その都度ログインがあったことを通知するメールを送付する機能があります。その通知メール内には、不正アクセスと考えられる場合に即座に該当するアカウントを閉鎖するための URL (アカウント閉鎖ページの URL) が含まれています。この URL を使って手早くアカウントの閉鎖ができるようになっています。
一方、多くの場合、WebRelease 本体へのアクセスについては、アクセス元 IP アドレスなどを利用したアクセス制限を設定していると思いますが、そのアクセス制限設定のためにアカウント閉鎖ページへのアクセスが制限されてしまい、必要な時にアカウント閉鎖ができない事態が発生してしまう可能性があります。
例えば WebRelease にログインできる環境(ネットワーク)が身近にない状況で、身に覚えのないログイン通知メールをスマートフォンで受け取った場合など、即座にアカウント閉鎖を行いたいところではありますが、手元のスマートフォンからは WebRelease へのアクセス制限にかかってしまい、WebRelease にアクセスできず、結果、アカウント閉鎖が手遅れになってしまう場合などが考えられます。
このような状況を避けるために、WebRelease 本体には一定のアクセス制限を加えておきながら、アカウント閉鎖 URL には任意のネットワーク (IP アドレス) からのアクセスを許可しておくことが必要かもしれません。
ここでは、そういった設定を行う例をご紹介しておきます。なお、設定方法はいろいろ考えられます。ここでご紹介する方法以外の方法でも、利用環境に合った方法を採用していただいて良いと思います。
アクセス制限を考える前提として WebRelease のログイン通知メールに含まれている、アカウント閉鎖ページの URL の形を理解しておく必要があります。URLは、例えば
http(s)://<hostname>/WebRelease2/closeaccount.4e133763-88ad-4cac-8316-dcf0798f1e2a
という形をしています。この URL の http(s)://<hostname>/WebRelease2 までの部分は、ログイン通知メールの発送のきっかけとなったログインの時に使用された URL から採られたものが使われます。例えば、それが不正アクセスであれば、攻撃者が侵入時に使用したプロトコルとホスト名から構成されています。その後ろの部分は
/closeaccount.zzzzz....
という形状をしています。ピリオド以降には、URL をワンタイムにするための乱数から生成された文字列がつけられています。この部分は単なる乱数です。解読してもアカウント名などを取り出すことはできません。
以上より、アクセス制限については、以下の設定があれば良いことになります。
① http(s)://<hostname>/WebRelease2/以下には必要なアクセス制限を設定すること。
② http(s)://<hostname>/WebRelease2/closeaccount.zzzzz に対しては、アクセス制限を解除しておくこと。
普通にインストールした WebRelease は、WebRelease のフロント側に reverse proxy スタイルの Apache が稼働していると思います。この Apache に対して設定を行うことで必要なアクセス制限を設定できるでしょう。
以下でご紹介する設定例はいずれも Apache 2.4 系での設定例です。2.2 系以前では異なるディレクティブを使う必要があります。
/etc/httpd/conf.d/z_closeaccount.conf というファイルを作成して内容を以下のようにしておくことで目的の設定を実現できるでしょう。ファイル名の先頭に z_ をつけているのは、同じディレクトリにある welcome.conf より後に apache に読み込ませる必要があるためです。
① http://<hostname>/WebRelease2/ には 192.168.254.0/24 以外からのアクセスを拒否する設定にしています。
② http://<hostname>/WebRelease2/closeaccount. 以下にはどこからでもアクセスできるように設定しています。
<LocationMatch "^/.*$">
<RequireAll>
Require ip 192.168.254.0/24
</RequireAll>
ErrorDocument 403 default
</LocationMatch>
<Location /WebRelease2/closeaccount.*>
<RequireAll>
Require all granted
</RequireAll>
</Location>
最初に、 サーバへのアクセスをすべて 192.168.254.0/24 に制限しています。この制限は、環境に合わせて変更してください。ErrorDocument の指定は welcome.conf の指定を上書きするためです。
その上で、/WebRelease2/closeaccount. で始まる URL については、任意のクライアントからアクセスできるように設定を加えています。
設定変更後には apache の再起動が必要です。sudo apachectl コマンドで apache の再起動ができます。
/etc/apache2/other/closeaccount.conf というファイルを作成して内容を以下のようにしておくことで目的の設定を実現できるでしょう。基本的に Red Hat Enterprise Linux 系の場合と同じですが macOS の場合 welcome.conf が存在しないので設定はいくらか単純です。
① http://<hostname>/WebRelease2/ には 192.168.254.0/24 以外からのアクセスを拒否する設定にしています。
② http://<hostname>/WebRelease2/closeaccount. 以下にはどこからでもアクセスできるように設定しています。
<LocationMatch "^/.*$">
<RequireAll>
Require ip 192.168.254.0/24
</RequireAll>
</LocationMatch>
<Location /WebRelease2/closeaccount.*>
<RequireAll>
Require all granted
</RequireAll>
</Location>
ここで紹介している設定は、あくまでも設定例です。お使いの環境では異なる設定が必要になる場合があります。また、これらの設定の結果について当社は一切の責任を負いません。設定が意図したとおりの動作になっているかどうか十分に検証した上で実環境でご利用ください。