本記事は、AWS LightsailのWordPressにて、IPアドレスによるアクセス制限をApache HTTP Serverの設定ファイル『httpd.conf』で行う手順のメモになります。
IPアドレス制限は、アクセス元のIPアドレスによってアクセスを許可/拒否することをいいます。全てのアクセス元からの通信を拒否してから指定したIPアドレスからのみ接続を許可するパターン(ホワイトリスト方式)と、原則全てのアクセス元からの通信を許可しつつ、指定したIPアドレスからの接続は拒否するパターン(ブラックリスト方式)に分けられます。今回は後者のパターンで行います。

今回はIP制限をApache HTTP Serverで実現します。Apache HTTP Server(以下、Apacheと表記)はWebサーバソフトウェアで、クライアントからの要求をアプリケーションに渡し、アプリケーションからの応答をクライアントに返す役割を担います。このWebサーバにて設定ファイルを編集し、IPアドレス制限を実現します。

※ こちらのサイト様によるとLightsailのWordPressに含まれるApacheは2023年7月現在でバージョン2.4となり、Requireディレクティブを使うのが良いようですが、本サイトでは2.2の方式(Allow,Denyディレクティブ)で行っています。
※ 本記事ではApache HTTP ServerをApacheと表記していますが、ApacheはHTTP Server以外にも様々なソフトウェアが存在するのでご注意ください。
◆ LightsailのWordPressのApacheでIPアドレス制限 (2023年7月時点)
1.
AWS Lightsail管理コンソールにアクセスし、対象インスタンスのコンソールアイコンをクリックします。

2.
以下のようにコピーコマンド “cp” を管理者で実行 “sudo” して、Apacheの設定ファイル『httpd.conf』のコピーを取得してバックアップとします(バックアップファイル名は任意で構いません)。
sudo cp -ip /opt/bitnami/apache/conf/httpd.conf /opt/bitnami/apache/conf/httpd.conf_[日付].bak
(sudo cp [オプション] [コピー元] [コピー先])
※ 以下、オプションの説明
-i : コピー先が既に存在する場合、上書きするかどうかを確認する。
-p : コピー元のパーミッション、所有者、タイムスタンプを保持する。

3.
以下の “vi” コマンドを管理者で実行 “sudo” して、Apacheの設定ファイル『httpd.conf』を標準テキストエディタで開きます。
sudo vi /opt/bitnami/apache/conf/httpd.conf
(sudo vi [開きたいファイル])

4.
『httpd.conf』が開くので、末尾まで移動します。

5.
末尾まで移動したら、キーボードの[i]キーを押してInsertモードに入ります。

6.
以下の内容を挿入します。
今回はWordPressに対してIPアクセス制限をかけるので、対象ディレクトリは ”/opt/bitnami/wordpress” となります。
基本的にはどのIPアドレスからもアクセスを受け付けつつ、一部IPアドレスからのアクセスは拒否するような流れの記載となります。


7.
記載が完了したらキーボードの[esc]キーを押してInsertモードを終了し、 ”:wq” と入力することで編集した内容を保存してテキストエディタを終了します。

8.
”apachectl configtest” コマンドを管理者で実行 “sudo” して、Apacheの設定ファイル『httpd.conf』の構文に問題がないかのチェックを行います。
”Syntax OK” と出れば構文エラーはありません。
sudo apachectl configtest

9.
”apachectl graceful” コマンドを管理者で実行 “sudo” して、Apacheの設定ファイルを再読み込みすることで、設定ファイルにきさいされたIPアクセス制限を有効化します。
gracefulはそれまでにApacheに来たリクエストを処理してから再読み込みをするので、Webサイトへのアクセスへの影響をなくすことができます。
本コマンド実行後にもWordPressへのアクセスが正常にできれば問題ございません、お疲れさまでした。
sudo apachectl graceful

◆ 参考文献
・Apacheでip制限をする方法|httpd.confとhtaccessでのやり方を解説する (code-bug.net)
・【 cp 】コマンド――ファイルをコピーする:Linux基本コマンドTips(17) – @IT (itmedia.co.jp)
・viコマンドについて詳しくまとめました 【Linuxコマンド集】 (eng-entrance.com)
・Apacheのrestartやgraceful、stopなどの違い | ⬢ Appirits spirits