最低限やっておくべきWordPressのセキュリティ対策

セキュリティ

今回はプラグインに頼らずに最低限やっておくべきWordPressのセキュリティ対策についてご紹介します。プラグインを使用する事でのメリット・デメリットもありますが、それはまた次の機会に。
セキュリティ対策を行うことで、逆に不具合が起こってしまうこともあります。必ずバックアップを取り、復元が可能な状態で作業してください。

WordPressのバージョンは常に最新にアップデートする

WordPressは機能の追加や、セキュリティへの改善でバージョンアップが行われています。WordPressは常に脆弱性が発見させ、アップデートを繰り返しておきます。そのため、必ず最新のバージョンにしておくようにしましょう。

プラグインも常に最新にアップデートする

プラグインから脆弱性が発見されることもあります。WordPressと同様に常に最新のバージョンを使用するようにし、また不要なプラグインは削除しておくようにしましょう。

ユーザー名とパスワードを複雑なものにする

WordPressは管理画面がWEB上に公開されています。そのため、ユーザー名とパスワードが分かれば、だれでもログインする事ができます。そのため、他人からは推察されにくいユーザー名とパスワードにしておきましょう。パスワードを作成するツールもあるので、利用すると便利です。

ローカル環境の「Local by Flywheel」でWEBサイトを構築し、そのまま公開してしまうとユーザー名を兼ねる管理者のメールアドレスがデフォルトの「dev-email@flywheel.local」になっている可能性があります。この場合、攻撃者にユーザー名がバレてしまっている状態と同様です。公開する際には変更するようにしましょう。

管理画面にBASIC認証をかける

管理画面はURLを知っていると誰でもアクセスできる状態になっています。それを防ぐために管理画面にBASIC認証をかけておくようにしましょう。
「.htaccess」に以下の記述を追記し、「.htpasswd」をサーバーにアップロードします。
運用上の問題がない場合は、管理画面にIP制限の方をかける方がよりセキュリティが強化されます。

<Files wp-login.php>
AuthType Basic
AuthUserFile /* サーバーのパス *//.htpasswd
AuthGroupFile /dev/null
AuthName “Please enter your ID and password”
require valid-user
</Files>

WordPressバージョンを隠す

バージョンは特に問題になるような情報では無いのですが、セキュリティホールが発見されているバージョンを使っている場合は、公開すべきでない情報になるため無効化しておく方が良いです。

以下のコードを「functions.php」に追記します。

remove_action(‘wp_head’,’wp_generator’);

wp-config.php へのアクセスを制限する

「wp-config.php」には、データベースへの接続情報が記載されている重要なファイルです。 そのため、外部からのアクセスを拒否しておくことが望ましいです。

以下のコードを「.htaccess」に追記します。

<Files wp-config\.php>
Order deny,allow
Deny from all
</Files>

REST APIを禁止する

WordPressはデフォルトで、「REST API」が有効になっています。
「REST API」の脆弱性を突いたコンテンツ改ざんも発生しているため、使用しない場合は無効化します。
ただし、「REST API」はプラグインで利用されている場合があります。「REST API」を禁止しても、きちんとWEBサイトが動作するかは必ず確認するようにしましょう。

以下のコードを「functions.php」に追記します。

function my_rest_endpoints( $endpoints ) {
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」に追記します。

<Files xmlrpc.php>
Order deny,allow
deny from All
</Files>

オーサー情報の保護をする

WordPressは投稿者ごとに投稿者アーカイブが作成されます。ユーザー名を知られるとブルートフォースアタックの成功率が上がる可能性があるため、不要な場合は無効化します。

以下のコードを「functions.php」に追記します。

function my_template_redirect() {
if( is_author() ) {
wp_redirect( home_url());
exit;
}
}
add_action( ‘template_redirect’, ‘my_template_redirect’ );

Pingbackを無効する

WordPressはPingback機能で他のブログからの通知を受け付けることができます。
スパムのトラックバックやコメントの可能性があるため、不要な場合は無効化します。

以下の記述をfunctions.php に追記します。

function my_pre_ping( &$links ) {
$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サイトが壊れてしまう可能性もあります。どうするか判断に悩む場合には専門家に相談してみましょう。

コメント

タイトルとURLをコピーしました