wordpress(ワードプレス)におけるセキュリティを少しでも上げる為の対策を行う手順をお伝えします。セキュリティ対策としていろいろな手法がありますが、効果のある手法や効果の薄いものもあります。また、サイト運営の方法や目的でもどの対策を行うのか?の判断やサーバ環境・プラグインのバッティングなどさまざまな条件が発生するので、方法を知り出来る対策を組み合わせて行うのが大事だと思います。ここではそれぞれの視点に立って検討した内容を説明していますが、ひとつの例で参考になれば良いなと思います。
ログインページの保護
不正ログインを行う一つの手口として管理画面のログインページであるwp-login.phpはユーザーを「ブルートフォースアタック(総当たり攻撃)」で攻撃されます。ここではログインのセキュリティ対策としてSiteGuard WP Pluginを導入します。
SiteGuard WP Plugin
SiteGuard WP Pluginは管理ページとログインページの保護を中心とした日本語対応のシンプルな簡単プラグインですが、wp-login.phpの保護などが可能になります。次の「二段階認証」をプラスして導入すれば、かなりのセキュリティ対策となります。
詳しい使い方は以下の開発サイトでご覧ください。
https://www.jp-secure.com/siteguard_wp_plugin/
Two-Factor
二段階認証を導入します。Two-Factorを使ってログイン時にメールにログイン用確認コードを発行し、メールを受信して確認コードを入力する事で管理画面に入る様にします。
ログインページでユーザー名とパスワードを入力したら、登録したメールアドレスに認証用の番号が書かれたメールが届くので、その番号を入力することでログインが完了となります。
SiteGuard WP PluginとTwo-Factorを導入して設置を行う事でログインに対する攻撃はほぼ防ぐことが出来ると思います。同時に対策も行う項目もあります。
アクセスの管理
ここでは、IPアドレスで海外からのアクセスをシャットダウンします。404エラーのログを取りどういうアクセスがあるのかを傾向を捉えて対策の参考にします。
IP Location Block
サイトの攻撃に対する対策としてIPアドレスでブロック出来る
サイトの設置している国をベースにホワイトリスト・ブラックリストなどの手法でのアクセスをブロックする事のプラグインです。WordPressのXMLRPC機能やプラグイン・テーマのパスに対してphpでのアクセスをブロックするなどの細かい部分まで指定が可能です。
※自分がブロックリストに入った場合のログインページは必ず作成してブックマークしておく事
404 Solution
404エラーのログを取りエラーに対するアクセスの傾向を分析する事が出来ます。
404 Solutionは日本語化が進んでいないのですが、404ページの指定や404エラーの出たURLごとにアクセス件数をまとめて見ることが出来るので攻撃の傾向を知る事が出来ます。ログに関しても削除方法が分からないなどがあるので自己責任で検討してみてください。
注意事項
どちらのプラグインもアクセスログを作成しデータベースの容量を使います。サーバー側でデータベースの容量に制限がある場合にwordpress自体も動作しなくなったり、ログインできなくなったりする事があるので使用には注意して下さい。
パーミッションの対策
基本的な構成
パーミッションはアクセスする権利をサーバー側で設定します。
- すべてのディレクトリは755または750に設定
- すべてのファイルを644または640に設定
- wp-config.phpを400出来ない場合は、440にする
※レンタルサーバーの仕様などで設定が異なる場合があります。
.htaccessで対策
.htaccessを使うとファイルのアクセスや動作の仕方などの指定を行う事が出来ます。FTPなどを使ってファイルをアップロードして操作が必要になるので一般の方は制作会社などに任せて動作確認まで行ってもらう事をお勧めします。
.htaccess
.htaccessへのアクセスを制限する
<Files ~ "^\.ht">
order allow,deny
deny from all
satisfy all
</Files>
「.htから始まるファイル名のファイルについては、全てのホストからの接続を拒否」と設定する事で、「.htaccess」ファイルや、「.htpasswd」ファイルの閲覧を拒否できます。
Satisfy All(全ての条件をクリアしないとアクセスできない)は必ず必要という訳ではないです。
※サーバーのデフォルト値として「.htaccess」ファイルのアクセスを禁止しているサーバーもあるので、アクセス出来るかチェックして対策して下さい。
wp-config.php
wp-config.phpへのアクセスを制限する。
<files wp-config.php>
order allow,deny
deny from all
</files>
XML-RPC
XMLRPCを無効化する(重要度 ★★★★★)
<Files xmlrpc.php>
Order Deny,Allow
Deny from All
</Files
プラグインを使ってXMLRPCを無効化する事も出来ますが、より強固にするためと考えて行う方が良いと思います。
XMLRPCを無効化出来るプラグイン
wp-login.php
ログインページのURLを変更した場合に「wp-login.php」ファイルにアクセス出来る場合は
サンプル
# Hide Files
<Files ~ "^\.ht">
order allow,deny
deny from all
satisfy all
</Files>
<Files ~ "^(wp-config.php|xmlrpc.php|wp-login.php)$">
order allow,deny
deny from all
</Files>
# Disable Directory Browsing
Options All -Indexes
wp-content/uploads
「wp-content/uploads」ディレクトリは、WordPressが利用する画像ディレクトリで、PHPの実行は必要ありません。「.htaccess」を設置し、PHPの実行を防ぎます。
# Kill PHP Execution
<Files *.php>
deny from all
</Files>
ディレクトリブラウジングを無効にする
サーバーのディレクトリ内にあるデータファイルを「一覧リスト」として表示する機能でファイル名が知られる事で攻撃対象となるファイルを探したり、内部の情報を読み取られたりします。
# Disable Directory Browsing
Options All -Indexes
wp-config.phpでの対策
この項目では、wp-config.phpでwordprssの動作の制限などの指定を追加して攻撃に対する設定を行います。
WordPressダッシュボードでのファイル編集の無効化
全てンのユーザーがテーマファイル・プラグインファイル・ファイルを管理画面から編集が出来ない様にする事でファイルの書き換えを行わない様にする
define('DISALLOW_FILE_EDIT', true);
※制作時などメンテナンス時は設定をしない。
WordPressダッシュボードでは、デフォルトで管理者がPHPファイル(例えばプラグインとテーマファイル)を編集することが可能です。攻撃者がログインできると、多くの場合まずこの機能を利用してコードを実行します。WordPressダッシュボードには、編集を無効にする定数があります。wp-config.phpに次の行を追加することで、すべてのユーザの「edit_themes」、「edit_plugins」および「edit_files」を無効にします。
これにより、アップロードされる悪意があるファイルからあなたのサイトまで攻撃者を防ぎませんが、いくつかの攻撃を止めるかもしれません。
wp-config.phpをルート外に設置する
wp-config.phpファイル自体をネットからアクセスできないサーバーのルート外に置くことで設定内容を隠すという方法があります。
設置にはサーバー関係などの知識が必要なために詳しい人はチャレンジすると良いと思います。
※現在テスト中です。
設定内容を保存する
セキュリティ対策やサーバーの設置状況について、web制作会社に引き継ぐ場合やトラブルのあった時に対応を早くする為にセキュリティ対策の内容をドキュメントとしてテキストファイルなどに残しておくことをお勧めします。
またセキュリティ対策は常に見直していく必要もあり、サイトのログやエラーの分析を行う必要もあります。
その他の手法を探す。
「wordpress セキュリティ対策」などで検索すればいろいろな手法が見つかります。