CMSのセキュリティ対策 ~SiteGuardシリーズでセキュリティ強化(その3)~

編集部注:SiteGuard Liteについて
本記事にて紹介しております「SiteGuard Lite」は、名称が「SiteGuard Server Edition」に変更されています。適宜読み替えてください。(機能は同じです)

はじめに

この連載では、「さくらの専用サーバさくらのクラウド」で、ホスト型WAF「SiteGuard Lite」を利用するための手順や設定を紹介してきました。
連載の最終回となる今回は、WordPressを中心にCMSのセキュリティについて紹介していきます。
以下のポイントについて、「SiteGuard」シリーズによる対策を含めて、設定方法などを分かりやすく紹介していきたいと思いますので、宜しくお願いいたします。

  • 狙われるCMSの脆弱性
  • WAFによる対策
  • WordPress用セキュリティプラグイン「SiteGuard WP Plugin」

セキュリティプラグインについては、ジェイピー・セキュアが提供する「SiteGuard WP Plugin」(無償プラグイン)をもとに、説明させていただきます。

狙われるCMSの脆弱性

CMSは、簡単にブログを作成できるだけでなく、さまざまな機能拡張など、ユーザーにとって大きな魅力があり、今では多くの企業もCMSを活用して、Webサイトの構築・運用をしています。
しかしながら、不正ログインや改ざんなど、CMSで構築されたウェブサイトへの攻撃は増加の一途を辿っているのも事実であり、CMSのセキュリティ対策は重要な課題となっています。

国内のシェアは、WordPressが圧倒的ですが、

  • WordPress
  • Drupal
  • Joomla!

これらのCMSが、三大CMSと呼ばれることも多いため、ここ数年のセキュリティ事情について、少しずつ紹介します。

まず、WordPressですが、プラグインが豊富で、その拡張機能が大きな魅力である一方で、プラグインの脆弱性を悪用した攻撃が後を絶ちません。
2015年にかぎった話ではありませんが、人気プラグインの脆弱性発見が相次ぎ、多くのWebサイトが改ざんされるなど、深刻な状況が続きました。このほか、WordPress本体でも深刻なクロスサイトスクリプティングの脆弱性が見つかり、攻撃の実証コードや実演が公開されたことから、大きな話題になりました。

次に、Drupalですが、2014年の10月に深刻なSQLインジェクションの脆弱性が発見されたことが大きな話題となり、Joomla!については、2015年10月に発見されたSQLインジェクションの脆弱性に対する攻撃の増加と、12月のゼロデイによるリモートコード実行(原因は、PHPの既知の脆弱性)が記憶に新しいところです。
WordPress同様に、拡張機能の脆弱性が数多く報告されているのも実情であり、CMSが狙われる要因の一つとなっています。

プラグインやテーマなどの拡張機能は、不特定多数のユーザーや有志によって、自由に開発・提供されています。CMSの利用において、様々なメリットをもたらす反面、開発者ごとの安全性の配慮にばらつきがあるという実情から、深刻な脆弱性・攻撃へとつながってしまうことがあります。
CMS本体だけでなく、プラグインなどの拡張機能についても、運用中のサイトで利用している拡張機能のバージョンやメンテナンス状況、脆弱性の有無に注意するよう心がけてください。

 WAFによる対策

先に述べましたように、CMSにおいても、SQLインジェクションやクロスサイトスクリプティングなどによる攻撃、被害が多発しています。
2015年 WordPressに関しては、日に数件というペースで、プラグインの脆弱性が報告された時期もあり、クロスサイトスクリプティングとSQLインジェクションだけで脆弱性の6~7割を占めるという状況でした。
CMSの運用では、拡張機能を含めて、最新バージョンを利用することが重要ですが、「すぐにバージョンアップすることができない。」「利用しているプラグインが、最新の本体での動作をサポートしていない」など、バージョンアップが難しいことも多いのではないでしょうか。
このようなケースで、WAFを導入していると、WAFがセーフティネットとして大きな役割を果たします。

cms-waf

WordPress用セキュリティプラグイン「SiteGuard WP Plugin」

ここからは、人気のWordPressのセキュリテイ対策について、考えていきたいと思います。
SQLインジェクションやクロスサイトスクリプティングなどの対策はもちろんですが、WordPressの運用では、

  • 不正ログイン対策
  • コメントスパム対策
  • 管理画面(管理ページ)のアクセス制限

に悩むことも多いのではないでしょうか?

ジェイピー・セキュアでは、WordPressのセキュリティ対策と発展に貢献するために、「SiteGuard WP Plugin」を開発・提供しています。

siteguard-wp-plugin_image

「SiteGuard WP Plugin」は、シンプル且つ簡単に利用できるという「SiteGuard」シリーズのコンセプトを踏襲しており、難しい知識を必要とせず、インストールするだけでWordPressのセキュリティを向上させることができる日本語対応のセキュリティプラグインです。

「SiteGuard WP Plugin」を利用することで、外部からの不正ログインを防御するほか、管理ページへの不正アクセスやコメントスパムの脅威からウェブサイトを守ることができます。
なお、「SiteGuard WP Plugin」は、WordPressの公式ディレクトリへの登録、リリースとなっていますので、どなたでも無償でご利用いただくことができます。

siteguard-wp-plugin_dashboard

この記事では、先ほど課題として挙げた不正ログイン対策コメントスパム対策管理画面(管理ページ)のアクセス制限に役立つ機能を中心に紹介していきます。

ログインページ変更

WordPressのログインページである"wp-login.php"を変更し、機械的な不正ログインを回避するための機能です。
新しいログインページ名は、"login_(5桁の乱数)"で設定されますが、任意の名称を使用することもできます。

siteguard-wp-plugin_rename_loginpage
WordPressのスマートフォン用のアプリから接続するXML-RPC経由のアクセスは、ログインページ変更の対象外となりますが、簡単にログインページを変更することができる便利な機能です。
"wp-login.php"宛の機械的なアクセスが非常に多くなっていますので、不正ログイン対策に活用してみてください。(初期値:ON

変更後のログインページは、管理者宛にメールで通知されますので、メールを保存しておくか、忘れずにブックマークしましょう。
任意のログインページ名を設定する場合は、自分自身にとって分かりやすく、推測されにくいものを設定するようにしてください。

画像認証

ログインページとコメントページに画像認証(CAPTCHA)を追加する機能です。

siteguard-wp-plugin_captcha_01

画像認証(CAPTCHA)は、パスワード確認ページとユーザー登録ページにも表示させることができます。
また、表示する画像は、ひらがな英数字を選択することができ、各項目ごとに、有効・無効を設定することができるように配慮しています。
初期値:全ての項目でON・ひらがな

ログインページに画像認証(CAPTCHA)を設けることで、不正ログイン対策はより強固になり、

siteguard-wp-plugin_captcha_02

コメント欄の画像認証(CAPTCHA)により、コメントスパムへの対策も可能になります。

siteguard-wp-plugin_captcha_03

ひらがなの画像認証(CAPTCHA)が使用でき、読みやすいという点が好評です。

ログインロック

ログインに繰り返し失敗する接続元からのアクセスを禁止する機能です。

siteguard-wp-plugin_login_lock

デフォルト値では、5秒間に3回のログイン失敗があった場合に、その接続元からのアクセスを1分間禁止するという動作をします。
これにより、機械的な不正ログインの試行を効率良く防ぐことができます。(初期値:ON

「SiteGuard WP Plugin」は、ログインページ変更画像認証ログインロックの組み合わせにより、WordPressのログインページを強力に保護しています!

管理ページアクセス制限

管理ページ(/wp-admin/以下)への不正アクセスを防ぐための機能です。

siteguard-wp-plugin_adminpage_filter_01
WordPressの運用において、管理ページのアクセス制限は、重要な位置付けにありますが、接続元IPアドレスを固定することができない環境のアクセス制限は、困難であるという課題がありました。

管理ページアクセス制限の機能を使用することで、ログインに成功した接続元IPアドレスのみ、管理ページ(/wp-admin/)へのアクセスが許可されるようになりますので、簡単に管理ページのアクセス制限を適用できます。

siteguard-wp-plugin_adminpage_filter_0224時間以上、ログインしていない接続元IPアドレスは、順次削除されていきます。

なお、この管理ページアクセス制限の機能は、初期値がOFFになっています。
これは、変更後のログインページ忘れによる初心者の方のログイン不可など、管理ページへのアクセスを「/wp-admin/宛でも行えるようにして欲しい。」というリクエストが多かったためです。

WordPressの仕様上、ログインしていない状態で"/wp-admin/"にアクセスすると、ログインページにリダイレクトしますので、「SiteGuard WP Plugin」を利用する際は、管理ページアクセス制限を有効化(ON)し、リダイレクトによるログインページの表示を禁止することを推奨しています。

その他の機能

ログイン失敗時に詳細エラーを表示させないようにする機能やログインがあった場合のメール通知、WordPress本体やプラグイン、テーマに更新があった場合のメール通知、ピンバックの悪用を防ぐためのピンバック無効化の機能、ホスト型WAF「SiteGuard Lite」と連携したチューニングの補助機能があります。

  • ログイン詳細エラーメッセージの無効化
  • ログインアラート
  • ピンバック無効化
  • 更新通知
  • WAFチューニングサポート

更新通知の機能は、基本となる「最新バージョンの利用」を補助するための機能となっています。
運用中のサイトのバージョンや更新の有無を把握するための機能として、役立ててください。

 

いかがでしたか?
セキュリティ対策に役立つ機能や補助機能を一つのプラグインにまとめて提供していますが、機能毎にON/OFFを設定できるようになっています。
気に入った機能や使ってみたい機能がありましたら、是非お試しください。

プラグインのインストールは、他のプラグインと同様に、WordPressのダッシュボードから行うことができます。
ダッシュボードで、[プラグイン]-[新規追加]の順に選択し、"SiteGuard"を検索します。

siteguard-wp-plugin_install_01

"SiteGuard"が表示されたら、[今すぐインストール]を選択して、インストールを進めてください。

siteguard-wp-plugin_install_02

各機能の説明や使用方法については、「SiteGuard WP Plugin」の使用方法のページで確認することができます。

おわりに

この連載では、WAFの有効性とジェイピー・セキュア「SiteGuard」シリーズの活用方法、CMSのセキュリティについて紹介してきました。
セキュリティということから、少し難しい印象の話が続いてしまったかもしれませんが、できるだけ分かりやすく、役に立つ情報を紹介するように努めました。
連載の内容を「さくらの専用サーバ/さくらのクラウド」で構築するWebサイトのセキュリティ対策に、お役立ていただければ幸いです。