どうも、ホワイトです。
いつだったか、対応した案件で非常にセキュリティ面についてのルールが決まっている案件があり、そこから自分も強く意識するようになったのが、WordPressへの不正アクセスへの対応。
WordPressはログイン画面のURLがわかりやすく、ブルートフォースアタックも多いので、ログイン画面やその関連ファイルへのアクセスについても充分気を付けなくてはいけません。
今回はそのログイン画面と、それに関連して制限をしておいた方が良いファイルへの設定方法です。
アクセス制限の記述は全て.htaccessに記述する方法を説明します。
↓セキュリティ関連だと、こちらの記事も参考になるかと思います。
アクセス制限(1)wp-login.php
どのWordPressでも共通のログイン画面URLの末尾に付くのが、wp-login.php。
まずはこのファイルへのアクセスを制限します。
特定のIPだけを許可する場合
<Files "wp-login.php">
order deny,allow
deny from all
allow from 000.000.000.000
</Files>
0のところにIPを入れていきます。
許可するIPを増やす場合は、allow from~のところを増やしてIPを
特定のIPだけを拒否する場合
<Files "wp-login.php">
order allow,deny
allow from all
deny from 000.000.000.000
</Files>
さっきの逆ですね。
こちらも0のところをIPに変えて、複数指定の場合は、許可のときと同様に記述を増やしていきます。
アクセス制限(2)wp-admin
wp-login.phpとともにログイン画面へのアクセスURLで代表的なものがwp-adminディレクトリへのアクセス。
WordPressはhttps://xxxxxx.com/wp-admin/というURLでもログイン画面へアクセスすることができます。
そこで、wp-adminディレクトリへアクセス制限を行います。
wp-adminディレクトリ内にも.htaccessを設置して、そちらに以下の記述を行います。
order deny,allow
deny from all
allow from 000.000.000.000
<FilesMatch "(admin-ajax.php)$">
Satisfy Any
Order allow,deny
Allow from all
Deny from none
</FilesMatch>
他と同様、0にIPを入れます。
途中で<FilesMatch “(admin-ajax.php)$”>という記述が入っているのは、admin-ajax.phpはアクセス制限の対象から除外しているためです。
admin-ajax.phpはプラグインで使用している場合があるため外しておいた方が良いそうです。
アクセス制限(3)wp-config.php
こちらもWordPressを構築する上では結構大事な情報が記述されているので、是非アクセス制限をかけておくことをオススメします。
データベース情報なんか知られたら厄介ですからね。
<Files "wp-config.php">
order deny,allow
deny from all
</Files>
基本的に見る必要のないファイルなので、アクセスすること自体を制限しておきます。
アクセス制限(4)xmlrpc.php
<Files "xmlrpc.php">
order deny,allow
deny from all
</Files>
このファイルへのアクセスを集中させてサーバーに高負荷をかけられることもあるので、アクセス制限をかけておきます。
これに関してはこちらの記事を参考にさせていただきました。
ちょっと油断すると外部アタックの対象になりかねないWordPressなのでセキュリティ対策は万全に講じておいた方が良いですね。