このブログで利用しているセキュリティ関係のプラグインを紹介します。こういう情報はあまり公開しない方が良いのですが、本気の攻撃者の場合はプラグインファイルの存在を総当たりで検出すれば判ってしまいます。
プラグイン選定の基準
あまりブログのメンテナンスに時間を使いたくないので、出来るだけ手間を掛けずにメンテナンスできる物を選んでいます。条件として
- 利用者が多い(少なくとも数千程度は居る)
- 比較的評価が高い
- 更新が比較的頻繁に行われている(行われていた)
を基準に選んでいます。このブログではWordPress本体だけでなく、プラグインも含めて自動更新しています。利用者が多い方が互換性に注意した更新を行っている、と考えられるので比較的利用者が多いプラグインの方が更新安全性が高いことを期待できるからです。
同じ機能を持つプラグインを多数比較/吟味して選んではいません。参考程度にするようお願いします。「これより、こっちの方が良い」という物があれば教えてください!
セキュリティ関係プラグインのリスト
- BulletProof Security
- Wordfence Security
- WP Google Authenticator
- Login rebuilder
- Jetpack
- Activity Log
これらのプラグインを簡単に紹介します。
BulletProof Security
https://wordpress.org/plugins/bulletproof-security/
Webアプリケーションファイアーウォール(WAF)機能を持ったセキュリティ強化プラグインです。ファイアーウォール機能は.htaccessを利用し、不正な制御コード/文字列/リクエストメソッドや明らかなSQLインジェクション攻撃を含むリクエストなどを防止できます。
無料版と有料版があり、無料版の主な機能は以下の通りです。
- One-Click Setup Wizard
- .htaccess Website Security Protection (Firewalls)
- Hidden Plugin Folders|Files Cron (HPF)
- Login Security & Monitoring
- Idle Session Logout (ISL)
- Auth Cookie Expiration (ACE)
- DB Backup: Full|Partial DB Backups | Manual|Scheduled DB Backups | Email Zip Backups | Cron Delete Old Backups
- DB Backup Logging
- DB Table Prefix Changer
- Security Logging
- HTTP Error Logging
- FrontEnd|BackEnd Maintenance Mode
- UI Theme Skin Changer (3 Theme Skins)
- Extensive System Info
セキュリティログには以下のような内容が記録されます。
[403 GET Request: 2016/10/14 - 6:06 AM] Event Code: BFHS - Blocked/Forbidden Hacker or Spammer Solution: N/A - Hacker/Spammer Blocked/Forbidden REMOTE_ADDR: 197.7.117.94 Host Name: 197.7.117.94 SERVER_PROTOCOL: HTTP/1.0 HTTP_CLIENT_IP: HTTP_FORWARDED: HTTP_X_FORWARDED_FOR: 197.7.117.94 HTTP_X_CLUSTER_CLIENT_IP: REQUEST_METHOD: GET HTTP_REFERER: REQUEST_URI: //wp-includes/wp-media.php QUERY_STRING: HTTP_USER_AGENT: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.63 Safari/537.31
個人的なプラグインの評価
- 総合評価:4
- おすすめ度:4
- セットアップ:1
とても便利かつ簡易WAFも十分有用なのですが、.htaccessの設定を良く理解していなと使いづらいのでおすすめ度は4です。比較的安定しているのですが、このブログでもこのプラグインが原因で何度か問題が起きています。セットアップ用のウィザードが用意されていますが、初めてだと良く解らないかも知れません。
キャッシュプラグインを利用している場合、手動で.htaccessの調整が必要な場合があります。このブログでは少しだけ手作業で調整しました。.htaccessの設定を間違えるとおかしな事になります。インストールと設定は難しい方だと思います。
.htaccessなら問題ない、という方にはオススメです。
Wordfence Security
https://wordpress.org/plugins/wordfence/
ルールベースのWebアプリケーションファイアーウォール(WAF)機能を持ったセキュリティ強化プラグインです。これも無償版と有償版があります。ルールを自動学習する学習モードと保護モードがあり、ルールを手動で定義する必要がありません。
IDS(侵入検知機能)機能もあります。WordPressのプログラムは勿論、キャッシュされたデータなどもスキャンします。想定していないファイルの改ざんがあるとレポートされます。以下のスクリーンショットは直接WordPressのバグを直した部分が「改ざん」としてレポートされた物です。
ただし、スキャン機能は高度な物ではなく、攻撃ファイルによく含まれるキーワードを検索します。この為、本文に/etc/passwdなどがあると誤検出することもあります。誤検出は修正/対応済とすることができます。
クラウドを利用した防御機能もあり、他のWordfenceを利用したサイトが攻撃された場合、自動的にそのIPアドレスからの攻撃を防止します。
個人的なプラグインの評価
- 総合評価:5
- おすすめ度:5
- セットアップ:5
導入も利用も非常に簡単です。今まで役だった事はありませんが、スキャン機能/IDS機能があるのも便利です。このブログでは全く気になりませんが、ルールベースのファイアーウォールなのである程度リソースを利用することは覚悟してください。
ファイアーウォールが動作に影響を与える場合もあります。このブログにはGoogle AdSenseプラグインを利用していますが、Wordfenceを有効にしていると設定保存時にエラーが発生します。無効にすると解消されます。こういう事もある、と理解した上で利用すると良いでしょう。
WP Google Authenticator
https://wordpress.org/plugins/wp-google-authenticator/
WordPressの認証にTOTP(時間ベースの2要素認証)を導入するプラグインです。2要素認証プラグインには色々ありますが、これを使っています。特に問題はありません。ユーザー毎に2要素認証を有効/無効が設定できます。
使い始めた時にはこのプラグインの利用者は少なかったのでざっとコードを見ています。リスクは低いとはいえタイミング攻撃に脆弱だったので修正パッチを送ったのですが、最近マージされたようです。1
個人的なプラグインの評価
- 総合評価:5
- おすすめ度:5
- セットアップ:5
この種類のプラグインは必須です!2要素認証プラグインを利用すれば、万が一パスワードが洩れた場合でもログインできません。
スマホのGoogle認証アプリをインストールしていれば、簡単に導入できます。(アプリの導入も、もちろん簡単です)2要素認証の初期化に必要なQRコード画像も表示されるので、Google認証アプリで認識させ、2要素認証を有効化させるだけで使えます。
追記:
メンテナンスが行われていないので現在は
参考:
Login rebuilder
WordPressのログインURLはhttp://example.com/wp-login.phpですが、このプラグインを利用するとログインURLを変更できます。2要素認証を入れていれば総当たり攻撃もできなくなるので、必須ではない、と言えますがセキュリティログに大量の総当たり攻撃ログが残るとチェックが面倒になります。
ログインに利用するURLは任意のURLに変更できます。http://example.com/sadfascaerafdasdfcasdf.php などに設定することが可能です。
デフォルトだとこのブログのログインURLは https://blog.ohgaki.net/wp-login.php になりますが、アクセスすると404エラー(Page Not Found)になります。上の画像の設定画面で判るように403(Forbidden)や他のページにリダイレクトすることも可能です。
個人的なプラグインの評価
- 総合評価:5
- おすすめ度:5
- セットアップ:5
設定も簡単で、不必要なログが減ることは間違いないです。プログラムによる総当たり攻撃は既知のURLに対して行われます。都合により2要素認証が導入できない場合は「必須中の必須プラグイン」と言って良いです。
Jetpack
https://wordpress.org/plugins/jetpack/
WordPressを作っているAutomattic社が開発しているプラグインです。プラグインの機能を使うにはWordPress.comのアカウントが必要です。ここでは紹介しませんがスパム防止プラグインのAkismet2の利用にもアカウントが必要なので、アカウントの必要性はあまり問題にならないと思います。
これはセキュリティ専用のプラグインではありません。総当たり攻撃に対する防御機能もありますが、これらは既に紹介したBullet ProofやWordfenceプラグインでも対応可能です。認証部分だけをターゲットにした別のプラグイン(ログインのブルートフォース攻撃や弱いパスワードをチェックするなど)もありますが、私の使い方/構成ではこの種のプラグインは必要ありません。
Jetpackの機能でセキュリティ的に重要な機能は「プラグインの自動更新」です。WordPress本体は自動更新されますが、プラグインは自動更新されません。Jetpackにはプラグイン自動更新の設定があり、wordpress.comのサイトでプラグイン毎に自動更新の有効/無効を設定できます。
私のように何週間もブログを放置したままにすることもあるユーザーにとっては必須の機能です。
個人的なプラグインの評価
- 総合評価:4
- おすすめ度:5
- セットアップ:4
Jetpackには非常に多くセキュリティには関係ない機能が付いているので、セキュリティ関連のプラグインとして総合評価は4にしています。普通に評価するなら5です。導入は簡単ですが、wordpress.comのアカウントが必要なので4にしています。
Activity Log
https://wordpress.org/plugins/aryo-activity-log/
WordPress本体にはログ機能がありません。Activity Logはログインは勿論、誰が何時どの記事を編集したかなど、WordPressのイベントが記録/参照できます。ログ機能はセキュリティ機能として重要です。侵入はされなくても、万が一何らかの操作が外部から不正に行える問題があった場合でも、ログが有れば攻撃の概要や影響範囲が判ります。
個人的なプラグインの評価
- 総合評価:5
- おすすめ度:5
- セットアップ:5
これに限りませんが、イベントログプラグインは必須です。導入するだけでイベントログが取得できます。キャッシュを利用していれば参照リクエストには影響しませんが、パフォーマンスには多少影響があるでしょう。
まとめ
セキュリティプラグインとして当たり前の機能(ブルートフォースによるログインの保護)は紹介しませんでした。ログインを保護するだけのプラグインを入れる意味はあまりないです。
Bulletproofは.htaccessに詳しい方以外には難しいかも知れませんが、他のプラグインの利用は簡単です。WordPressプラグインの種類は大過ぎて比較しきれません。取り敢えず勘で選んだ物で満足した物を使っています。他に良い物があれば教えてください!
折角セキュリティプラグインを入れても、通知メールやログをチェックしないと意味が半減します。できれば頻繁にログを確認しましょう。
因みに、このブログは現在、CentOS7+Apache 2.4.6+PHP 7.1RC3で動作しています。これらのプラグインはPHP 7.1でも問題ありません。