chrome firefox IE safari chain youtube-play pocket hatena facebook feedly github google-plus rss twitter search code envelope-o home pencil website works calendar drawer tag
2015/08/03

[WP]WordPressのセキュリティ対策【2015年版】

最近、WordPress公式プラグインJetpackでの機能の一つ「プロテクト」で非常にたくさんの攻撃を受けている事がわかりました。その為、セキュリティを強化致しました。またその上で色々セキュリティに関する事を調べたので、メモとして残しておきます。参考になれば幸いです。

WordPressのセキュリティ

久々の更新です。今回はWordPressのセキュリティ対策について色々と調べた+実践したので、こちらをメモしておきます。

WordPressの公式プラグイン Jetpackがバージョン3.4からプロテクト機能が実装されました。

Jetpack Protect は、クラウドベースのブルートフォース攻撃防止ツールです。不正な IP を識別してブロックするため、数百万もの WordPress サイトを活用しています。 Jetpack Protect は、プラグインをインストールしたすべてのユーザーのログイン試行の失敗を追跡します。短時間で1つの IP による試行の失敗が多数あった場合、このプラグインがインストールされているすべてのサイトへのログインがブロックされます。 Jetpack Protect は BruteProtect から派生したものであり、現在サイト上で BruteProtect が有効である場合は無効になります。

要はWordPressユーザーでこのプロテクト機能を使えば使うほど、

悪意のあるユーザー情報を蓄積、皆で共有し、事前にブロックする事が可能になるという事です。

私も導入しておりますが、導入から現段階の約4ヶ月で7000件以上の攻撃を受けておりました。

そこで、少しセキュリティを強化しました。

セキュリティ対策

セキュリティと言ってもたくさんの対策方法があります。

省略しようかと思いましたが、基礎的な部分から。

  • WordPressのバージョンはなるべく最新のものを使用する
  • パスワードは強固なものにする
  • プラグインのアップデートもなるべく行う
  • バックアップは必ず取っておく
  • 使用するパソコン自体もアンチウイルスソフト等の導入をしておく
  • FTPではなくSFTPを使用する

この辺りは押さえた上で、その他のセキュリティ対策をざっくりとタイプ分けしてみました。

  • サーバーの機能でのセキュリティ
  • WordPressの管理画面へのアクセス制限
  • プラグインを使用したセキュリティ強化

大体調べるとこの3つに分かれました。

サーバーの機能でのセキュリティ

こちらはレンタルサーバーで提供されている機能でセキュリティを強化する方法です。

例えば、エックスサーバーさんの「WordPressのセキュリティ設定」を見ると、

国外IPのアクセス制限、ログイン試行回数制限、コメント・トラックバック制限設定が機能として提供されています。

サーバーのコントロールパネルから設定出来、簡単にセキュリティの底上げが可能です。

WordPressの管理画面へのアクセス制限

この方法は私が実践したものです。ログイン画面へのアクセス制限を掛ける方法です。

こちらの方法は後ほどご紹介致します。

プラグインを使用したセキュリティ強化

調べると、非常にたくさんのセキュリティプラグインが出ておりました。

総合的なセキュリティ強化、テーマの脆弱性チェック、アクセス制御等がありました。

簡単なものから、詳細な設定が出来るものもあり用途に応じてプラグインを選択する事が可能です。

ただし、翻訳されていないプラグインが多く、また有料プラグイン(or有料アップグレード)も多々存在します。

調べた中で出てきた基本無料のプラグインを残しておきます。

※記事公開から1年未満でプラグインのアップデートがあったものをピックアップしています。

Wordfence Security

iThemes Security (formerly Better WP Security)

SiteGuard WP Plugin ※国産セキュリティプラグイン

All In One WP Security & Firewall

Jetpack by WordPress.com

ログインページへのアクセス制限をかける

アクセス解析を見ると、ログインページへのアクセスが異常に多い事がわかりました。

また攻撃手法はブルートフォースでした。

解析には、Crazy Boneという日本の方が作成してくれた、ログイン解析のプラグインを導入してみました。

crazy-bone-result

ロシア/ウクライナ/カザフスタン/韓国からの攻撃が占めていました。

wp-login.phpと/wp-admin/以下

この2つに対してアクセス制限をかけました。

IPアドレスで制限を掛ける方法もありますが、無線LANを使用している事と固定IPではない為、この方法はしておりません。

固定IPでそこ以外からアクセスする事がないならIPアドレスで制限をかけた方がより強固なものとなります。

wp-login.phpの階層に置く.htaccessファイルの内容は以下となります。

<Files wp-login.php>
AuthType Basic
AuthUserFile /virtual/your_id_is_here/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
require valid-user
</Files>

wp-login.phpが置いてある階層に作成した.htaccessを置きます。

AuthUserFile(.htpasswd)のパスに関しては、サーバーに環境によって変わります。

適時変更をお願い致します。

また、.htpasswdはURLでアクセス出来ない上位ディレクトリに設置した方がいいです。

次に/wp-admin/以下に置く.htaccessファイルの内容は以下となります。

AuthType Basic
AuthUserFile /virtual/your_id_is_here/.htpasswd
AuthGroupFile /dev/null
AuthName "Please enter your ID and password"
Require valid-user
<FilesMatch "(admin-ajax.php)$">
 Satisfy Any
 Order allow,deny
 Allow from all
 Deny from none
</FilesMatch>

/wp-admin内に設置します。

プラグインによっては、admin-ajax.phpを使用している場合があるそうです。

その為、admin-ajax.phpに関してはアクセス制限を許可する設定にしてあげます。

詳しくは以下のサイトを参考にしてください。

ブルートフォース攻撃 – WordPress Codex 日本語版

アクセス制限がかかっているかを確認してください。

また、データのバックアップは非常に重要です。

参考サイト

WordPressの管理画面に制限をかける(ver3.5.1) | Gatespace’s Blog

WordPress:WordPressのログイン画面にBasic認証を設定する | raining

WordPressの5つの主要セキュリティプラグインを詳細に比較してみた | 株式会社LIG

今後の励みになりますので、良かったらシェアをお願いします。

このエントリーをはてなブックマークに追加