WordPressのセキュリティ対策について

このアカスブログはWordPressというブログシステムを利用しています。
しかしWordPressは有名なブログシステムのため常に外(主に海外)から不正なアクセスがあります。
WordPressを導入したシステムに必要最低限なセキュリティ対策を書いていこうと思います。
WordPressへの対策

WEBサーバのアクセス制限
wp-login.php
ブログシステムにログインする際にアクセスされるファイルです。
このファイルへのアクセスはIPアドレスなどでアクセス制限をかけておいた方がいいでしょう。
もしくは『WPS Hide Login』などのプラグインを導入してログインページのURLをランダムなものに変更して分かりにくくしておきましょう。
Nginxで制限をかける場合はlocationの評価順位と
location ~ \.php$ {
...
}
などのphpスクリプト起動用のlocation設定の評価順位を考慮して下さい。
場合によってはアクセス制限用location設定の中に、追加でphpスクリプト起動用の設定が必要になるかもしれません。
# location = での評価なのでマッチしたら他は評価されない
location = /wp-login.php {
allow xxx.xxx.xxx.xxx;
deny all;
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
# 評価順位的にwp-login.php以外はこっちが評価されるはず
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
wp-config.php
WordPressの設定ファイルです。
通常直接アクセスされて実行されても問題は起こりませんが、設定ミスなどでphpスクリプトが実行されない場合、中身がそのまま表示されてしまいます。
いずれにしても直接外部からアクセスできてしまうのは好ましくないのでアクセスは禁止しておきましょう。
以下はNginxの例です。
location = /wp-config.php {
deny all;
}
xmlrpc.php
WordPressの記事を外部ツールなどを使用して投稿する時に必要となるファイルです。
wp-login.phpと同じように頻繁に不正アタックを受けますので、必要ないのであればアクセスを禁止しておきましょう。
xmlrpc機能を使用している方はIPなどでアクセス制限をかけておくのが望ましいと思います。
色々な場所からツールで記事を投稿しているのでxmlrpc.phpファイルへのアクセスは必要でありIPでのアクセス制限が難しい方はセキュリティ的にかなり危険だと思います。
wp-adminディレクトリ以下
ブログのシステムにログインした後に使用されるファイル群です。
基本的にこのディレクトリ以下に対してはIPアドレスなどでアクセス制限をかけておいた方が良いと思います。
Nginxで制限をかける方はlocationの優先順位に気を付けて設定を行って下さい。
location ~ /wp-admin {
allow xxx.xxx.xxx.xxx;
deny all;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php-fpm/www.sock;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
include fastcgi_params;
}
}
WordPressの更新
脆弱性が発見されて対応されることがありますので、WordPress本体やプラグイン、テーマなどは常に更新しておくことをおすすめします。
脆弱性をそのままにしておくとWordPressを乗っ取られてしまう危険性が非常に高くなります。
サーバOSへの対策

ポートへのアクセス制限
サーバで動いているサービスが使用しているポートへのアクセス制限をかけておきましょう。
ロードバランサーを通してWEBサーバへアクセスする構成になっているのであれば、WEBサーバへの通常アクセスはロードバランサーからのアクセスに制限するのが良いでしょう。
また、サーバへのSSHポートへのアクセスもIP制限するか、最低限ポート番号を変更しておきましょう。
クラウド上のサーバであればサーバのサービスごとにアクセス制限をかけなくても、インスタンスへの通信を制限する機能(AWSでいうとセキュリティグループの設定)がありますので、そちらでまとめてアクセス制限をかけるのが楽だと思います。
システムの更新
常にシステムは最新のものに更新しておきましょう。
ほとんどの方はパッケージ管理システムを用いて必要なサービスを導入していると思いますので、導入したパッケージに更新がないか定期的にチェックするのが良いと思います。
システム導入時のままシステムを放置することのないように気を付けましょう。
まとめ

システムを乗っ取られてからでは遅いですので、セキュリティ対策は最初から意識しておきましょう。
また脆弱性対策のためシステムのメンテナンスは怠らないようにしましょう。
関連記事

【Linux】小規模な環境のNTPサーバはchronyがおすすめ
chronyはNTPクライアント・サーバの機能を持っておりntpdの代替として活 ...

【WordPress】おすすめの無料テーマLuxeritasのご紹介
WordPress用の無料テーマで断然おすすめなのが当アカスブログでも使用してい ...

プログラミングに必要な力は大きく3つ
プログラマーがプログラミングを行う上で必要になる力は大きく3つあると思います。 ...

WEBビジネス立ち上げはセミオーダー式パッケージシステムが最適
WEBビジネスには「ショッピング系のECサイト」、「比較や見積もり・資料請求サイ ...

WordPressテーマ更新で消えたウィジェットを復元する方法
このアカスブログではWordPressのテーマにLuxeritasを使用させても ...