ITトレンド等をまとめるブログ

ALB経由のwp-adminをアクセス制限する

目次

AWS ALB経由のwp-admin(管理画面)のアクセスを制限する方法を解説します。

.htaccessの設定

設定編集箇所(新規作成)

sudo su -
sudo nano /var/www/html/wp-admin/.htaccess

.htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
# 直接Wordpressにアクセスする場合
# RewriteCond %{REQUEST_URI} ^/wp-admin
# RewriteCond %{REMOTE_ADDR} !^202\.1\.1\.1
# RewriteCond %{REMOTE_ADDR} !^10\.6\.
# RewriteRule ^(.*)$ - [R=403,L]

# AWS ALBなどリバースプロキシを経由する場合
RewriteCond %{REQUEST_URI} ^/wp-admin
RewriteCond %{HTTP:X-Forwarded-For} !^202\.1\.1\.1
RewriteRule ^(.*)$ - [R=403,L]

# AWS ALBからHTTPリスナーの場合、
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP:X-Forwarded-Proto} !=https
RewriteRule ^/?(.*) https://%{HTTP_HOST}/$1 [R,L]
</IfModule>

上記の条件を満たさない場合(すなわち、指定されたIPアドレス以外からのアクセス)には、403 Forbiddenエラーを返してアクセスを拒否します。
このコードをwp-adminディレクトリ内の.htaccessファイルに追加することで、指定されたIPアドレスとIPレンジからのみwp-adminにアクセスできるようになります。

「/var/www/html/」と「/var/www/html/wp-admin/」両方に.htaccessが存在する場合、wp-adminにはwp-adminディレクトリの.htaccessが適用されます。

Apacheの設定

amazon linux 2023のapache設定では以下が必要です。

Apache の設定でデフォルト .htaccess によるアクセス制限等が無効になっているためApache の設定ファイルを編集する。

sudo nano /etc/httpd/conf/httpd.conf

設定を編集する

# Further relax access to the default document root:
<Directory "/var/www/html">
    AllowOverride All
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks
    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   Options FileInfo AuthConfig Limit
    #
#    AllowOverride None

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>

<Directory “/var/www/html”>の部分に「AllowOverride All」を追加し、「AllowOverride None」をコメントアウトする。
“/var/www/html” の部分は、DocumentRoot のパスに合わせて適宜変更してください。

Apacheの再起動

sudo systemctl restart httpd
  1. ファイルのパーミッションを確認する
    .htaccess ファイルと wp-admin ディレクトリが正しいパーミッションで設定されているか確認してください。ファイルとディレクトリの所有者がApache(通常は apache または www-data)であり、正しいアクセス権が設定されていることが重要です。

ファイルのパーミッションを確認する

sudo chown apache:apache /var/www/html/wp-admin/.htaccess
sudo chmod 644 /var/www/html/wp-admin/.htaccess


これらの手順を試しても .htaccess が動作しない場合、Apache のエラーログを確認し、特定の問題がないか確認することもおすすめです。

「/var/log/httpd/error_log」

このログにエラーメッセージが記録されている可能性があります。

PAGE TOP