wp-cron.phpを無効化
/* wp-config.php に追記 */
define('DISABLE_WP_CRON', 'true');
※wp-cron.phpを無効化した場合、予約投稿や通知機能などが動作しなくなるため、サーバーcronを利用
$ sudo vi /etc/crontab
# 1分ごとにcronを実行
* * * * * apache /usr/bin/php ~/wp-cron.php > /dev/null 2>&1
xmlrpc.phpのアクセス制限
# vi ~/.htaccess
<Files xmlrpc.php>
Order deny,allow
Deny from all
</Files>
wp-login.phpをアクセス制限
# vi ~/.htaccess
<Files wp-login.php>
Order deny,allow
Deny from all
Allow from xxxx.xxxx.xxxx.xxxx
Allow from xxxx.xxxx.xxxx.xxxx
...
</Files>
wp-login.phpにBasic認証を設置
# vi ~/.htaccess
<Files wp-login.php>
AuthType Basic
AuthUserFile ~/.htpasswd
AuthName "Please enter your ID and password"
require valid-user
</Files>
wp-comments-post.phpのアクセス制限
# vi ~/.htaccess
<Files wp-comments-post.php>
Order deny,allow
Deny from all
</Files>
wp-trackback.phpのアクセス制限
# vi ~/.htaccess
<Files wp-trackback.php>
Order deny,allow
Deny from all
</Files>
wlwmanifest.xmlのアクセス制限
「wlwmanifest.xml」は、Microsoft社製のブログ投稿ソフトである「Windows Live Writer」からWordPressに記事を投稿する際の情報が記載された設定ファイルです。
https://www.xserver.ne.jp/news_detail.php?view_id=8826
WordPressの管理画面(ダッシュボード)から記事を投稿する場合は、「wlwmanifest.xml」ファイルは使用しません。
# vi ~/.htaccess
<Files wlwmanifest.xml>
Order deny,allow
Deny from all
</Files>
複数設定例
# vi ~/.htaccess
<Files ~ "^(wp-config|wp-cron|xmlrpc)\.php$">
Order deny,allow
Deny from all
</Files>
wp-adminディレクトリ以下(admin-ajax.phpを除く)をアクセス制限
# vi ~/wp-admin/.htaccess
Order deny,allow
Deny from all
Allow from xxxx.xxxx.xxxx.xxxx
Allow from xxxx.xxxx.xxxx.xxxx
...
<Files admin-ajax.php>
Satisfy Any
Order allow,deny
Allow from all
Deny from none
</Files>
wp-adminディレクトリ以下(admin-ajax.phpを除く)にBasic認証を設置
# vi ~/wp-admin/.htaccess
AuthType Basic
AuthUserFile ~/.htpasswd
AuthName "Please enter your ID and password"
Require valid-user
<Files admin-ajax.php>
Satisfy Any
Order allow,deny
Allow from all
Deny from none
</Files>
wp-config.phpのアクセス制限
# vi ~/.htaccess
<Files wp-config.php>
Order deny,allow
Deny from all
</Files>
salt キーの変更
https://api.wordpress.org/secret-key/1.1/salt/
サイト全体のアクセス制限
# vi ~/.htaccess
order allow,deny
allow from all
deny from xxx.xxx.xxx.xxx
deny from xxx.xxx.xxx.xxx
Apache2.4以降の場合
Allow ディレクティブは使用できない。
サーバーのモジュール設定で、2.4でもAllow系が使えるようになっていることもあるが、基本的には無効になる。
代わりに Require ディレクティブを使用する。
<RequireAny>
Require all denied
Require ip XXX.XXX.XXX.XXX
</RequireAny>
<Files admin-ajax.php>
Require all granted
</Files>