kusanagi9 のサイトに「ブルートフォース攻撃」を受けたので、ログインに関してBasic認証を実装したので、その内容を紹介します。
kusanagi8 とちょっと構成ファイルの場所などが違うので、備忘録までに。
NGINX の構成ファイルの場所
各プロビジョン毎の構成ファイルがあり、その場所は以下のディレクトリ内に存在します。
/etc/opt/kusanagi/nginx/conf.d/
そこに二つの構成ファイルがあります。例えば、kusanagi-mainというプロビジョンがあった場合は以下のようなファイルになります。
kusanagi-main.conf
kusanagi-main.wp.inc
ここでは、WordPress の管理者ログイン等に Basic 認証を付けることを目的するので、kusanagi-main.wp.inc
を修正する形で対応します。
パスワードファイルの作成
.htpasswd
というBasic認証のためのパスワードファイルを作る必要があります。このファイルの詳細の説明は割愛します。知らない方は別途調べてください。
ユーザー名をuser-name
として作る場合を以下は想定しています。また、デフォルの設定だと、全てのプロビジョンにて同じBasic認証が使われてしまいますので、プロビジョン毎に管理するためにパスワードファイルを各プロビジョン毎に変えるように、プロビジョンのフォルダの最上部に設定するようにここでは変更しています。もちろん、一つのプロビジョンしか使っていないような場合やステージングサイトと本番環境のみの場合は変更する必要はないと思います。
デフォルトでは設定場所が/home/kusanagi/.htpasswd
となります。
$ htpasswd -c /home/kusanagi/kusanagi-main/.htpasswd user-name
New password:
Re-type new password:
一番上のコマンドを実行すると上記のようにパスワードを入力するように表示されますので、2回同じパスワードを入力してください。
ここで設定したパスワードとユーザー名がBasic認証時に使うものとなります。
構成ファイルの変更
以下のviコマンドなどで設定ファイルを書き換えます。
$ vi /etc/opt/kusanagi/nginx/conf.d/kusanagi-main.wp.inc
2023年3月現時点でBasic認証の設定箇所は19行目から24行目となります。
デフォルトとの違いも含めての記載は以下の通りです。
18 location ~* /wp-login\.php|/wp-admin/((?!(admin-ajax\.php|images/)).)*$ {
-19 satisfy any;
+19 #satisfy any;
-20 allow 0.0.0.0/0;
+20 #allow 0.0.0.0/0;
-21 allow 127.0.0.1;
+21 #allow 127.0.0.1;
-22 deny all;
+22 #deny all;
23 auth_basic "basic authentication";
-24 auth_basic_user_file "/home/kusanagi/.htpasswd";
+24 auth_basic_user_file "/home/kusanagi/bb-main/.htpasswd";
この設定を変更して上書き保存をした上で、nginxを再起動します。kusanagi本体を再起動しても構いません。
$ kusanagi nginx
nginx: the configuration file /etc/opt/kusanagi/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/opt/kusanagi/nginx/nginx.conf test is successful
nginx completed.
上記のように成功が表示されたら、問題なくnginxが再起動されています。
もし、エラーが出た場合はサイトが表示されていませんので、変更したファイルを元に戻すようにしてください。
以上で設定方法は完了です。