WordPressで最初に設定すべきセキュリティ対策

WordPressはとても便利で多くの人が使用している人気のソフトウェアですが、その分狙われやすいのできちんとセキュリティ対策をしておかないと危険です。

自分のチェックリストもかねて対策すべき項目をメモしておきます。

スポンサーリンク

環境

  • CentOS 7.4
  • Apache 2.4

SQLインジェクション対策

WordPressインストール前のみ有効です。インストール後に変更するとWordPressが動作しなくなりますので注意してください。

データベースのテーブル接頭辞をwp_から変更します。

/wordpressインストールフォルダ/wp-config.php

# $table_prefix  = 'wp_';
$table_prefix  = 'hoge_';

ここからは、インストール後の設定になります。

wp-config.phpのパーミッション変更

DB接続情報など重要な定義が含まれているのでパーミッションを600に変更しましょう。

$ sudo chmod 600 wp-config.php

xmlrpc.phpファイルへのアクセス制限

wordpress管理画面外から記事投稿をするため等に用意されてますが、外部からアクセス可能な分だけ狙われやすいです。ちょっとアクセスが増えると真っ先に攻撃対象になります。
この機能を使わない、関連するプラグインも使用しないのであれば、無効にしておきます。

/wordpressインストールフォルダ/.htaccess

# 全拒否。
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>

# wp-configも制限するといいです。
<files wp-config.php>
order allow,deny
deny from all
</files>

# BEGIN WordPress
~
# END WordPress

※ # BEGIN WordPress ~ # END WordPressの範囲外に追加しないと、WordPressの設定を変更した際に上書きされるので注意。

wp-admin以下、管理画面へのアクセス制限

管理画面はIPアドレス制限を設けるのが一番いいですが、個人で固定IPはなかなか持っていないと思います。最低限BASIC認証をかけておきましょう。

ユーザ認証ファイル名: .htpasswd
※ ファイル名は「.htpasswd」でなくてもいいですが隠しファイルにしておきましょう。

/wordpressインストールフォルダ/wp-admin/.htaccess

AuthUserFile /ユーザ認証ファイルまでのパス/.htpasswd
AuthName "Secured Area!"
AuthType Basic
require valid-user

# admin-ajax.phpは許可にしないと記事が表示されなくなるので注意!
<Files admin-ajax.php>
Satisfy Any
Order allow,deny
Allow from all
</Files>

※ ユーザ認証ファイルは必ずドキュメントルート外に設置してください。

ちなみにユーザ認証ファイルは以下のコマンドで作成できます。

$ htpasswd -c  /ユーザ認証ファイルまでのパス/.htpasswd ユーザ名

ユーザを追加する場合は、「-c」を外します。

$ htpasswd /ユーザ認証ファイルまでのパス/.htpasswd ユーザ名

パスワードは定期的に変更しましょう

$ htpasswd /ユーザ認証ファイルまでのパス/.htpasswd 登録済みユーザ名

他のユーザにログインさせない場合

企業用HPや個人ブログ用であれば、一般ユーザ等にログインさせることはないと思います。
不要な機能は制限するに限りますので、こちらも必要であればIPアドレス制限やBASIC認証をかけましょう。
/wordpressインストールフォルダ/wp-admin/.htaccess

<Files wp-login.php>
AuthUserFile /ユーザ認証ファイルまでのパス/.htpasswd
AuthName "Secured Area!"
AuthType Basic
require valid-user
</Files>

アップロードディレクトリ内でのPHP実行制限

メディアファイル等のアップロード先ディレクトリにスクリプトを不正にアップロードされてバックドアを作られる場合がありますので、phpが実行できないようにします。(現在cgiが有効な環境はまれだ思います。phpだけで基本OKなはずですが環境に合わせてください。)

/wordpressインストールフォルダ/wp-content/uploads/.htaccess
※ファイルが存在しない場合は新規作成してください。

<Files *.php>
deny from all
</Files>

プラグインの導入

プラグイン名 備考
Akismet Anti-Spam スパムを防ぎます。デフォルトインストールされてますが、別途利用登録が必要(無料)です。
IP Geo Block 日本のIP以外からの攻撃を防ぐことができます

以上です。
最低限、これらの設定は行いましょう。