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以外からの攻撃を防ぐことができます |
以上です。
最低限、これらの設定は行いましょう。
ディスカッション
コメント一覧
まだ、コメントがありません