今回はプラグインに頼らずに最低限やっておくべきWordPressのセキュリティ対策についてご紹介します。プラグインを使用する事でのメリット・デメリットもありますが、それはまた次の機会に。
セキュリティ対策を行うことで、逆に不具合が起こってしまうこともあります。必ずバックアップを取り、復元が可能な状態で作業してください。
WordPressのバージョンは常に最新にアップデートする
WordPressは機能の追加や、セキュリティへの改善でバージョンアップが行われています。WordPressは常に脆弱性が発見させ、アップデートを繰り返しておきます。そのため、必ず最新のバージョンにしておくようにしましょう。
プラグインも常に最新にアップデートする
プラグインから脆弱性が発見されることもあります。WordPressと同様に常に最新のバージョンを使用するようにし、また不要なプラグインは削除しておくようにしましょう。
ユーザー名とパスワードを複雑なものにする
WordPressは管理画面がWEB上に公開されています。そのため、ユーザー名とパスワードが分かれば、だれでもログインする事ができます。そのため、他人からは推察されにくいユーザー名とパスワードにしておきましょう。パスワードを作成するツールもあるので、利用すると便利です。
ローカル環境の「Local by Flywheel」でWEBサイトを構築し、そのまま公開してしまうとユーザー名を兼ねる管理者のメールアドレスがデフォルトの「dev-email@flywheel.local」になっている可能性があります。この場合、攻撃者にユーザー名がバレてしまっている状態と同様です。公開する際には変更するようにしましょう。
管理画面にBASIC認証をかける
管理画面はURLを知っていると誰でもアクセスできる状態になっています。それを防ぐために管理画面にBASIC認証をかけておくようにしましょう。
「.htaccess」に以下の記述を追記し、「.htpasswd」をサーバーにアップロードします。
運用上の問題がない場合は、管理画面にIP制限の方をかける方がよりセキュリティが強化されます。
AuthType Basic
AuthUserFile /* サーバーのパス *//.htpasswd
AuthGroupFile /dev/null
AuthName “Please enter your ID and password”
require valid-user
</Files>
WordPressバージョンを隠す
バージョンは特に問題になるような情報では無いのですが、セキュリティホールが発見されているバージョンを使っている場合は、公開すべきでない情報になるため無効化しておく方が良いです。
以下のコードを「functions.php」に追記します。
wp-config.php へのアクセスを制限する
「wp-config.php」には、データベースへの接続情報が記載されている重要なファイルです。 そのため、外部からのアクセスを拒否しておくことが望ましいです。
以下のコードを「.htaccess」に追記します。
Order deny,allow
Deny from all
</Files>
REST APIを禁止する
WordPressはデフォルトで、「REST API」が有効になっています。
「REST API」の脆弱性を突いたコンテンツ改ざんも発生しているため、使用しない場合は無効化します。
ただし、「REST API」はプラグインで利用されている場合があります。「REST API」を禁止しても、きちんとWEBサイトが動作するかは必ず確認するようにしましょう。
以下のコードを「functions.php」に追記します。
if ( isset( $endpoints[‘/wp/v2/users’] ) ) {
unset( $endpoints[‘/wp/v2/users’] );
}
if ( isset( $endpoints[‘/wp/v2/users/(?P[\d]+)’] ) ) {
unset( $endpoints[‘/wp/v2/users/(?P[\d]+)’] );
}
return $endpoints;
}
add_filter( ‘rest_endpoints’, ‘my_rest_endpoints’, 10, 1 );
xmlrpc.phpを停止する
「xmlrpc.php」はWordPress専用のスマホアプリなどで使用されます。ただし、このファイルはDDoS攻撃、ブルートフォースアタックの対象にされてしまうことがあるため、使用しない場合は無効化しておきましょう。
以下の記述を「.htaccess」に追記します。
Order deny,allow
deny from All
</Files>
オーサー情報の保護をする
以下のコードを「functions.php」に追記します。
if( is_author() ) {
wp_redirect( home_url());
exit;
}
}
add_action( ‘template_redirect’, ‘my_template_redirect’ );
Pingbackを無効する
スパムのトラックバックやコメントの可能性があるため、不要な場合は無効化します。
以下の記述をfunctions.php に追記します。
$home = get_option( ‘home’ );
foreach ( $links as $l => $link ){
if ( 0 === strpos( $link, $home ) ){
unset($links[$l]);
}
}
}
add_action( ‘pre_ping’, ‘my_pre_ping’ );
まとめ
最低限やっておくべきWordPressのセキュリティ対策について書いていきました。
この他にも、管理画面のURLを変更したり、ファイルやフォルダのパーミッションをきちんと設定するなどの対策が可能です。
今回は基本的には「functions.php」と「.htaccess」で設定できることに関してご紹介しました。
セキュリティ対策に関しては、これを設定しておけば完璧という事ではないので常にバージョンアップを行い、バックアップを取り、いつでも最新の状態に戻せるようにしておくことが大事です。
また、セキュリティ対策を行うことで、逆にWEBサイトが壊れてしまう可能性もあります。どうするか判断に悩む場合には専門家に相談してみましょう。
コメント