【警告】絶対やるべき!WordPressのセキュリティ対策リスト13項目

必ずやっておくべきWordPressのセキュリティ対策をリスト化しました。

WordPressの脆弱性を狙うサイバー攻撃は、1日に5,000万件超も観測されていて、セキュリティ対策は超重要です。

専門的な知識がなくても誰でもできるWordPressのセキュリティ対策とは?

本記事は、ブログブートキャンプブログの始め方-WordPressに関する内容となります。

レオのアイコン画像レオ

WordPressのセキュリティ対策ってやった方がいいのかな?

アレックスのアイコン画像アレックス

当然だ!不正アクセスの被害に遭ってからでは遅い。今からできる対策はやっておこう。

スポンサーリンク

ジャンプできる目次

この記事の著者

アレックス
Alex

ブログブートキャンプ アレックス

10年間のブログ経験を活かしてブログブートキャンプを2020年に設立。ブログ運営スキルを鍛え上げるためのノウハウを発信中。

WordPress セキュリティ対策リスト

WordPress セキュリティ対策リスト

必ずやっておくべきWordPressのセキュリティ対策を13項目のリストにまとめました。

簡単な設定変更やコードのコピペですぐにできるものばかりなので、ウェブサイト運営の合間に時間を見つけて、1つずつ実施してみてください。

最新版にアップデート

最新バージョンのWordPressを利用

WordPress関連のソフトウェアを最新版にアップデートしておくことが最も基本の対策です。

古いソフトウェアにはセキュリティ上の脆弱性が見つかっていることがあり、攻撃者が不正アクセスをする際の起点となってしまうからです。

Web サイトの脆弱性を標的としたアクセスについては,SQL インジェクションの脆弱性の他,ブログサイト等の構築に広く使用されているソフトウェア WordPress の脆弱性がねらわれている.WordPress で構築されたサイトに対する不審なアクセス,さらに同脆弱性を利用したサイト改ざんも確認されている.

引用元: 安全工学-サイバーインシデントの最新動向

攻撃者はWordPress本体だけではなく、テーマやプラグイン、PHPの脆弱性を狙ってくるため、以下4種のアップデートが必要になります。

  • WordPress本体
  • テーマ
  • プラグイン
  • PHP

WordPress本体

WordPress本体のアップデート

WordPress本体のアップデートがある場合は、管理画面に更新のメッセージが表示されます。

更新ページで「今すぐ更新」をクリックし、最新バージョンにアップデートしておきましょう。

テーマ

WordPress管理画面 テーマのアップデート

テーマについてもアップデートがある場合、管理画面に更新のメッセージが表示されます。

更新ページにアクセスして「テーマの更新」をクリックし、最新版にアップデートしましょう。

レオのアイコン画像レオ

テーマの更新が通知されたことなんて、ないんだけど…?

アレックスのアイコン画像アレックス

テーマによっては、管理画面での更新に対応していない場合もある。開発者のページで最新版をダウンロードすればOKだ。

プラグイン

WordPressプラグインの更新

プラグインのアップデートも同様に、管理画面に更新のメッセージが表示されます。

更新ページかプラグイン一覧ページで、「今すぐ更新」をクリックするだけで完了です。

PHP

PHPバージョンのアップデート

PHPは、WordPressを動かすためのバックボーンであり、サーバー側で更新が必要になります。

現時点でバージョン7.1より古いPHPについては、セキュリティサポートが終了していて、脆弱性に対して保護されていない状態です。

サーバーの管理画面にPHPバージョン切替という項目があるので、最新版に変更してください。

自動アップデートを有効化

WordPressの自動アップデートを有効化

最新版が出る度に更新するのが大変という場合は、自動アップデートを有効化すればOKです。

バージョンアップで脆弱性が公表されると、その情報を元に攻撃されることもあり、自動アップデートは効果的なセキュリティ対策となります。

管理画面から「外観→テーマエディター→テーマファイル」と進み、function.phpに以下のコードをコピペで設置してください。

//本体のメジャーアップデート
add_filter( 'allow_major_auto_core_updates', '__return_true' );
//本体のマイナーアップデート
add_filter( 'allow_minor_auto_core_updates', '__return_true' );
//テーマ
add_filter( 'auto_update_theme', '__return_true' );
//プラグイン
add_filter( 'auto_update_plugin', '__return_true' );
アレックスのアイコン画像アレックス

自動アップデートを無効化したいという場合は、__return_trueの部分を__return_falseに変えればOKだ。

バージョン情報を非表示に

WordPressのバージョン情報が出力されている

WordPressのバージョン情報を非表示にして、攻撃者に情報を与えないようにしましょう。

攻撃者は不正アクセスを試みる際に、ターゲットの情報収集から始めて脆弱性を探すので、ソフトウェアのバージョンを隠すことが効果的です。

こちらも、管理画面から「外観→テーマエディター→テーマファイル」と進み、function.phpに以下のコードをコピペしてください。

remove_action('wp_head','wp_generator');

function remove_wp_version( $src ) {
    if ( strpos( $src, 'ver=' . get_bloginfo( 'version' ) ) )
        $src = remove_query_arg( 'ver', $src );
    return $src;
}
add_filter( 'style_loader_src', 'remove_wp_version', 9999 );
add_filter( 'script_loader_src', 'remove_wp_version', 9999 );

ログインURLを変更

WordPressのログインURLを変更

WordPressのログイン画面には誰でもアクセスできてしまうため、URLを必ず変更します。

攻撃者にログインURLにアクセスされると、ユーザー名・パスワードを総当りで試していくブルートフォース攻撃を仕掛けられてしまいます。

サーバーにある.htaccessに以下のコードをコピペで追加してください。多くのサーバーでは、管理画面から直接ファイルを編集できます。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^enter/?$ /wp-login.php?xxxxxxxxxx [R,L]
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^dashboard/?$ /wp-login.php?xxxxxxxxxx&redirect_to=/wp-admin/ [R,L]
RewriteRule ^dashboard/?$ /wp-admin/?xxxxxxxxxx [R,L]
RewriteRule ^register/?$ /wp-login.php?xxxxxxxxxx&action=register [R,L]
RewriteCond %{SCRIPT_FILENAME} !^(.*)admin-ajax.php
RewriteCond %{HTTP_REFERER} !^(.*)example.com/wp-login.php
RewriteCond %{HTTP_REFERER} !^(.*)example.com/wp-admin
RewriteCond %{HTTP_REFERER} !^(.*)example.com/enter
RewriteCond %{HTTP_REFERER} !^(.*)example.com/register
RewriteCond %{HTTP_REFERER} !^(.*)example.com/dashboard
RewriteCond %{QUERY_STRING} !^xxxxxxxxxx
RewriteCond %{QUERY_STRING} !^action=logout
RewriteCond %{QUERY_STRING} !^action=rp
RewriteCond %{QUERY_STRING} !^action=register
RewriteCond %{QUERY_STRING} !^action=postpass
RewriteCond %{HTTP_COOKIE} !^.*wordpress_logged_in_.*$
RewriteRule ^.*wp-admin/?|^.*wp-login.php /not_found [R,L]
RewriteCond %{QUERY_STRING} ^loggedout=true
RewriteRule ^.*$ /wp-login.php?xxxxxxxxxx [R,L]
</IfModule>

上記のコードをベースに、自分自身で変更する箇所が2つあります。

1つ目の変更点として、example.comの部分をWordPressのドメインに変更してください。

2つ目の変更点として、xxxxxxxxxxを任意の文字列に設定してください。設定した文字列に応じて、次のようにログインURLが設定されます。

https://example.com/wp-login.php?xxxxxxxxxx

?author=1を非表示に

WordPressは?author=1でユーザー名が表示される

WordPressのログインに使うユーザー名がわかってしまう?author=1を非表示にしておきます。

試しにURLの末尾に?author=1を付けてアクセスしてみてください。投稿者ページにリダイレクトされ、ユーザー名が表示されているはずです。

こちらも、サーバーにある.htaccessに以下のコードを追加してください。ファイルはサーバーの管理画面から編集することができます。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} ^author=([0-9]*)
RewriteRule .* https://example.com/? [L,R=302]
</IfModule> 

https://example.com/の部分については、自分自身のURLに変更してください。

パーミッションの変更

セキュリティ上の重要度が高いファイルのパーミッションを変更し、アクセスを制限します。

パーミッションとは、サーバーに置かれたファイルへのアクセス権のことで、読み込み・書き込み・実行の各権限を与えるかを設定できます。

今回は、特に重要なwp-config.phpのパーミッションを変更します。このファイルには、データベースのパスワードなどが記載されています。

ファイルマネージャーでwp-config.phpを探す

サーバーの管理画面でファイルマネージャーを実行し、wp-config.phpを探してください。

多くのサーバーでは、ドメイン下public_html下にファイルが置かれているはずです。

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

パーミッション(属性)変更を選択し、「400」と入力して変更を反映します。

400は、所有者が読み込みだけをできるというパーミッション設定となり、第三者がファイルを読み取ったり改ざんすることを防げる設定です。

xml-rpc.phpを無効化

サイバー攻撃に使われることが多いxml-rpc.phpというファイルを無効化しましょう。

元々は、WordPressでリモート投稿機能を使うためのAPIですが、不正ログインDoS攻撃の標的にされるという事例が多数報告されています。

DoS 攻撃は, ネットワークシステムその他のリソースへの正規のユーザーからのサービスを妨害したり, 完全に利用不能に陥らせるようなタイプの攻撃である [1].

引用元: 情報科学技術フォーラム-UTM では検出困難な DDoS 攻撃を統計的手法を用いて検出する研究における DDoS 攻撃環境の開発

サーバーにある.htaccessに以下のコードを追加して、全てのアクセスを遮断します。

<files xmlrpc.php>
order deny,allow
deny from all
</files>
アレックスのアイコン画像アレックス

WordPressアプリなどによる記事投稿は使えなくなってしまうので、注意が必要だ。

不要なファイルを削除

WordPress 不要ファイルを削除

WordPressの動作に直接関係がない不要なファイルを削除しておきましょう。

公開したままだと、攻撃者にバージョンなどの余計な情報を与えることにつながってしまいます。

具体的には、次の3つのファイルをファイルマネージャーで削除すればOKです。完全にいらないファイルなので、バックアップも必要ありません。

  • license.txt
  • readme.html
  • wp-config-sample.php

不要なテーマ・プラグインを削除

全てのPHPファイルは攻撃対象になるため、不要なテーマ・プラグインは削除してください。

テーマ・プラグインの脆弱性を狙われるリスクを最小限にするという観点から、インストール数は少しでも減らすことが望ましいためです。

特に、WordPressコアに同梱されているテーマであるTwenty Twentyはインストール率が高く標的となりやすいので、削除しておきましょう。

reCAPTCHAによる認証

WordPress reCaptchaによる保護

BOTによる自動攻撃を防げるreCAPTCHAを導入することも効果的なセキュリティ対策です。

reCAPTCHAとは、Googleが提供する認証システムで、人間がBOTかを自動で判別してスパムをほぼ全て遮断することができます。

手軽かつ効果的に各種フォームのセキュリティを強化できるので、導入を進めてみてください。

サーバーでWAFを有効化

WAFによるサイバー攻撃遮断

ウェブサイトの脆弱性を狙う攻撃を遮断することができるWAFを有効化しておきましょう。

Web Application Firewall(WAF)はその名の通り Web システムに特化した専用ファイアウォールで,HTTP や SSL のプロトコルの内容を検査し,攻撃を検知,防御するシステムである.

引用元: 日本ユニシス-Web サービスのためのネットワーク基盤技術

WAFを使うことにより、SQLインジェクションクロスサイトスクリプティングといった一般的な攻撃パターンからWordPressを守れます。

嬉しいことに、多くのレンタルサーバーではWAFが標準装備されていて、無料で利用可能です。

エックスサーバー WAFの有効化

サーバーの管理画面にWAFという設定項目があるので、全て有効化しておけばOKです。

レオのアイコン画像レオ

WAFを有効化したら、記事投稿ができなくなったんだけど?

アレックスのアイコン画像アレックス

WAFは、偽陽性といって正当なリクエストを誤って攻撃と判定してしまうこともあるんだ。
その場合は、一時的にWAFをOFFにすればOKだ。

海外からのアクセスを遮断

国内在住の方であれば、重要なファイルへの海外からのアクセスを遮断するのがベストです。

WAFがブロックした攻撃のログを確認してみても、海外IPアドレスからの攻撃が大多数を占めているため、確かに効果的なことがわかります。

こちらも国内のレンタルサーバーであれば、管理画面で簡単に設定できるようになっています。

サーバー管理画面 海外からのアクセス制限

サーバーの管理画面で、WordPressセキュリティ設定という項目を探してみてください。

基本的には、ダッシュボード・XML-RPC・REST APIの3つを保護しておけばOKです。

定期的なバックアップ

WordPressを守るためのセキュリティ対策に加えて、定期的なバックアップも重要となります。

きちんとバックアップデータを残していれば、万が一不正アクセスや改ざんの被害に遭ってしまっても、元通りにデータを復元できます。

プラグインで予めスケジュールを入力しておくだけで、定期的に自動バックアップできるので、ぜひ導入をしてみてください。

スポンサーリンク

セキュリティ関連の情報サイト

セキュリティ関連の情報サイト

最後に、WordPress関連のセキュリティ情報を提供しているサイトを2つ紹介します。

深刻な脆弱性が発見された場合など、最新情報のキャッチアップに役立ちます。

WordPress.org

WordPress.org Security

Security NEXT

Security NEXT 脆弱性

まとめ

今回は、WordPressのセキュリティについて、必ずやっておくべき対策を解説しました。

記事のポイントをまとめます。

本記事のポイント
  • WordPressのセキュリティ対策を13項目のリスト形式で紹介しました
  • アップデートはとにかく重要なので、常に最新版を使うようにしましょう
  • 重要なファイルを手厚く守り、不要ファイルを削除する方法を解説しました

同じカテゴリーの記事

以上、「WordPressのセキュリティ対策リスト」でした。

スポンサーリンク

ジャンプできる目次
閉じる