WordPressのセキュリティを高める方法

WordPressのセキュリティを高める方法

WordPressは無料で利用でき、多くのサイトに使用されているCMSですが、それゆえセキュリティ対策をしっかり行っていないと狙われてサイトが使えなくなったり、乗っ取られたりする可能性があります。

WordPress本体のバージョン情報の隠喩

管理画面にログインして「テーマの編集」から「functions.php」に以下の記述を追記して「ファイルを更新」してください。
remove_action('wp_head','wp_generator');

WordPressログイン画面のプラグインによる強化

ログイン失敗回数に制限がない場合、パスワード辞書の使用や総当たりによるパスワードクラッキング攻撃が成功する恐れがあります。
連続でパスワードを間違えたアカウントは、一定時間または管理者が解除を行うまでの間、ログインできないようにする機能 (アカウントのロック機能)を実装してください。
ロック機能を実装することで、攻撃者によるパスワードクラッキングの試みが困難となり、不正ログインの成功率が大幅に低下します。
なお、ロックまでの回数は、少なすぎる(2, 3回)とユーザの利便性が低下します。5~10回程度の回数が設定されているサイトが多くなっています。
こちらはプラグインで対応することができます。プラグイン「 SiteGuard WP Plugin 」は、管理ページとログインページを保護することができます。
プラグイン「 SiteGuard WP Plugin 」を導入したら、設定の「ログインロック」から「期間」「回数」「ロック時間」をそれぞれ設定することができます。

また、このプラグインはそのほかにも、「管理ページへのアクセス制限」「ログインページのURL変更」「画像認証の導入」「ログインに関するエラーメッセージの無効化」「ログインアラートの設定」「フェールワンス」「XMLRPC防御」「アップデートの通知」「WAFチューニングサポート」「IPアドレスの取得方法を設定」「ログイン履歴の閲覧」をすることができます。
最低限、「画像認証の導入」はしておきましょう。

WordPressユーザー名の隠喩

WordPressは投稿者アーカイブ機能があるため、ユーザー名(ログインID)が外部から閲覧可能となっています。攻撃者がブルートフォースアタックを行う際の手助けとなり、容易に管理画面に不正アクセスされる可能性があります。例えば、「https://ドメイン/?author=01」にアクセスすると「https://ドメイン/author/admin/」のように表示され、「admin」というユーザー名が確認できます。こちらは「サイトURL/?author={数字}」でアクセスするとユーザー名が露呈するWordPressの仕様による脆弱性になっており、改善策としてはユーザー名が表示されるページを非表示(トップページにリダイレクト等)や、URLに表示されるユーザー名を変更する必要がございます。

まず、ユーザー名が表示されるページをトップページにリダイレクトする設定については、以下の記述を「テーマの編集」から「functions.php」に追記してください。

function knockout_author_query() {
// disable author rewrite rule
global $wp_rewrite;
$wp_rewrite->flush_rules();
$wp_rewrite->author_base = ”;
$wp_rewrite->author_structure = ‘/’;
// for author query request
if (isset($_REQUEST[‘author’]) && !empty($_REQUEST[‘author’])) {
$user_info = get_userdata(intval($_REQUEST[‘author’]));
if ($user_info && array_key_exists(‘administrator’, $user_info->caps) && in_array(‘administrator’, $user_info->roles)) {
wp_redirect(home_url());
exit;
}
}
}
add_action(‘init’, ‘knockout_author_query’);

URLに表示されるユーザー名を変更する方法としては、プラグイン「 Edit Author Slug 」で対応可能です。こちらは、ユーザー名を判らなくするために外部表示時のユーザー名を設定することができます。