いきなり誤検知でビックリする、ハードルの高いSucuri(スクリ)プラグインを問題なく使用するために、豊富な機能をわかる範囲で説明しまくる。
特に初期設定はアラート地獄確定のため、確実に調整しておこう。
厳選した推奨設定にまとめておいたので、主要機能は簡単に実装可能。
なお、このプラグインはレア機能以外イマイチなので、他の軽量かつ競合しないと謳っているプラグインと併用して、総合セキュリティごっこを目指すのを推奨している。
インストールや魅力、理想的な組み合わせは以下を先に確認しよう。
Sucuri Security
WordPressダッシュボード左側の「Sucuri Security」にカーソルを乗せると、4つ項目が出現するので、上から説明していく。
厳選した推奨設定
機能に被害後の後始末や履歴確認ばかりなので、重要な機能だけをとりあえず有効化するだけで良い。
最初からどのような感じか確認したいなら、Dashboard(ダッシュボード)まで読み飛ばそう。
戻りすぎるとチェックが消えるので注意!
バックアップはImport & Export Settings(バックアップ:読み込み・書き出し)。
非常に少なく、困ったら確認すれば良い。
Sucuriと一緒に使うなら、競合もせず保護階層を簡単に増やせる都合の良い使い方を試そう。
Dashboard(ダッシュボード)
WordPress Integrity(整合性)で、いきなり変なファイルと言われるかもしれない。
その際見覚えのあるファイルは無視するべきなので、以下の画像のように「バツ」マークが付いていたら、このプラグインに教えてあげよう。
いわゆるホワイトリストだ。
最初から感染している方はほぼ居ないかと思うので、通常はこのとき表示されたものをMark as Fixed(修正済みとしてマーク)扱いにしてしまって良い。ちなみに、「Restore File」が復元、「Delete File」が削除。
このマルウェアスキャンは6時間以内に繰り返しおこなわれる。
どうもマルウェア(ウイルス)的な挙動をしているのなら、マークを外すことができるので、その場合は「Review False Positives(誤検知の確認)」から進むか、Settings(設定) → ScannerのWordPress Integrity (False Positives:誤検知判定)まで自力で向かい、解除しよう。
何かしらのファイルをアップロードした際、またなったら除外すること。
ダッシュボードは他に、
- Audit Logs(監査ログ)
- 最近の活動履歴
- API連携で削除・改変できない
- iFrames
- Links(リンク集)
- Scripts(スクリプト)
上記下から3つは基本無視、最近の活動履歴で何をされたのか確認できることが重要。
- Site is Clean(サイトは綺麗です)
- ブラウザから確認できるものだけをチェックしてくれ、内部のマルウェア(ウイルス)は無理
- SiteCheckと同じもの
- Blacklisted(ブラックリスト)
- 有名どころのブラックリストに載っていないか
- Recomendations(オススメ)
- Sucuriおすすめセキュリティヘッダ3種を推奨される
- .htaccessに記述するとでき、当サイトは記述済みだが割愛
というものがあり、閲覧者が被害を受けないかなどを簡単に確認可能。
Generate API Key(APIキーを生成)
この機能は、Sucuriが成長するためのWebサイトに関する匿名データを提供し、保存することに同意しなければ使えない。仕方なく同意しよう! セキュリティ統計を上げまくる会社なので(大変参考になる)、それ目的かもしれない。
不正アクセスを許した際、ダッシュボードにあるAudit Logs(監査ログ)を削除されたとしても、Sucuriサーバーから履歴を復旧可能。
これにより、「何ファイルを変更・追加したのか履歴」を確認でき、どこにマルウェア(ウイルス)を仕込んだのかもわかるようになる。
右上にある「Generate API Key」をクリック。
メールアドレスが自分宛てだと確認したら、①と②にチェックを入れて③「Submit」するだけ。
このAPIキーは、Settings(設定)→ General(全般)→ API Keyで確認・削除可能。
Firewall(WAF:ファイアウォール)
「WordPressファイアウォール界最強の一角」であるSucuriだが、この機能すべて有料である。
非常に魅力的なので読み進めてほしいとはいえ、お金持ちになってからでも良いので(そもそもCDNなので割高)ブックマークだけして、次のLast Logins(最終ログイン履歴)まで読み飛ばしても良い。
ちなみに、ファイアウォール自体はこのプラグインがなくても使える。
Settings(ファイアウォールの設定)
自分のサイトへ訪れる前に、Sucuriの最強ファイアウォールがシールドとして働く。
- SQLインジェクション
- 総当たり攻撃(XML-RPC含む)
- XSS
- RFI
- DDoS
- ゼロデイ攻撃(未知の攻撃対策)
- 例えば、WordPressのアップデートをしなくてもSucuriが防ぐ
- バックドア
といった、強力な厄介シリーズを網羅しており、ページごとに2段階認証を付けられるなど、かなり魅力的な機能も付いている。
ようするに、ログインページ試行回数制限・XML-RPC無効・2段階認証などのプラグインを減らせるうえ、最上級のセキュリティ向上を受けられる。
実はCDN(コンテンツデリバリーネットワーク)であるためスピードも向上。
ただ、Cloudflare(クラウドフレア)とモロ被りであるため、使用する際はどちらか一つに絞って利用すると良い。
料金は以下、マルウェア除去が付いているものと付いていないもので値段は違い、他有料プラグインの料金より断然高く(CDNなので当然)、最高級品だ。
ちなみに、利用者限定の別途月5ドルだが、バックアップも取れる。
複数サイトの割引はお問い合わせ必須、CloudflareのWAFが付いているプロプランは月額20ドルかつ年プランはないため、除去付きでも値段はこちらが安め。
お金が無限ならSucuriファイアウォールはとても魅力的だろうが、BBQファイアウォールで代わりをさせてもOK。
Audit Logs(監査ログ)
ファイアウォールが攻撃に関連するすべての要求をログに記録して、ここで確認できる。
IP Access(IPアクセス)
IPアドレスをブラックリストに入れられる。
総当たり攻撃だと思われるIPも自動で登録するようにでき、問題のないユーザーがロックされた場合はSucuri側のダッシュボードへログインし、IPを削除しにいこう。
Clear Cache(キャッシュの消去)
Clear cache when a post or page is updated(投稿・ページが更新されたときにキャッシュをクリア)にチェック → Clear Cache。
おそらくCDNのキャッシュをクリアする機能。
Sucuri公式のダッシュボードからキャッシュ関係を操作できると思うが、こちらにチェックをいれておけば、投稿・ページ更新時に自動でクリアしてくれ、反映されるはずだ。
参考Caching Options, Website Firewall, Sucuri KB(英語)
Last Logins(最終ログイン履歴)
複数人運営ならお世話になるが、そうそう不正侵入されるわけではないので、不審なことがあったら確認するだけで良い。
All Users(すべてのユーザー)
Successful Logins (all:成功したログイン)をすべて閲覧できる。
Admins(管理者)
Successful Logins (admins:管理者のログイン成功)を確認できる。
さきほどのAll Users(すべてのユーザー)と違い、「管理者権限を持っているユーザーのみ」の確認専用。
Logged-in Users(ログインユーザー)
現在ログインしているユーザーを確認できる。
Failed logins(ログイン失敗)
総当たり攻撃(ブルートフォースアタック)をされている際に確認するところで、ログイン失敗を確認できる。
※有料ファイアウォールには、ページごとの2段階認証が付いているため不要。
なお、総当たり攻撃と判断する設定は初期設定で「1時間あたり30回のログイン失敗」と、一番キツい設定となっており、通常は変更する必要なし。
どうしても変更したい場合は、Settings(設定)→ Alerts(アラート)→ Password Guessing Brute Force Attacks(パスワード推測総当たり攻撃)で緩めよう。
Settings(設定)
General(全般)
API Key
Generate API Key(APIキーを生成)で生成したAPIキーを確認・削除・復元できる。
削除後、初期設定なら「Recover Via E-mail」でWordPressに登録しているメールアドレス宛に復元メールが届き(届かなかったら迷惑メールフォルダを確認)、そこに記載されているAPIキーを「Manual Activation(手動認証)」に入力して復元できる。
新たに生成する際は、削除後にGenerate API Key(APIキーを生成)が復活しているので、再度生成してこよう。
Data Storage(データストレージ)
よくわからないので無視。
あらゆるデータを保存するのだが、削除して良いものはどれなのだろうか。
削除に挑戦する際はファイルのバックアップをし、その後に削除しよう。今後ファイルサイズが増えていく可能性があるかもしれないので、初回だけスクリーンショットを取って保存しておけば、どのファイルが増えたのかよくわかるぞ。
Log Exporter(ログ書き出し)
API連携で監査ログを削除されないようにしているため無視。
ダッシュボードのAudit Logs(監査ログ)をローカルログファイル?に書き出し、専用のソフトウェア(OSSEC(英語)推奨)で読み取ることが可能になる。
ドキュメントルート?と呼ばれる場所の少なくとも1レベル上の場所にファイルを指定する必要があり、あきらかに上級知識が必要となっている。
わかる人はやってみよう。
OSSECでも監視できるみたいなんだけど、レンタルサーバーじゃ無理かもー
Reverse Proxy(リバースプロキシ)
ファイアウォール必須のようで、通常気にする必要はないようだ。
おそらく、有料のSucuriファイアウォールを通る際に「IPがSucuri化」してしまうのを防ぐ機能(仕様)。
CDN側から確認すると本物なのだが、WordPressに書き込む際にはSucuri化してしまっているため、コメント欄や不審な動きをするIPをブラックリストに登録することができない。
当サイトのCloudflare(クラウドフレア)でそのような現象が発生しており、戻す方法はあるが、別に無視してもよい。
IP Address Discoverer(IPアドレス検出機能)
最初から有効になっており、よくわからないので無視。
Timezone(タイムゾーン)
当サイトでもズレていた、Audit Logs(監査ログ)の日付と時刻を調整できる。
WordPressに付属している「設定」→「一般」のタイムゾーンが、日本だったとしてもズレていたので、表示されている時間がおかしかったら現在時刻に変更しよう。
Import & Export Settings(バックアップ:読み込み・書き出し)
現在のサイトの固有の値を除いた設定を読み込み・書き出しできる。
{}で囲まれた長い文字列はすべて設定で、これをコピーしてtxtファイルにでも貼り付ければお手軽バックアップだ。
APIキーなど、一部のセキュリティ的なものは書き出されないので安心。
読み込む際は、{}で囲まれた文字列をバックアップした文字列に貼り替えてチェック → Submit。
Reset Security Logs, Hardening and Settings(セキュリティログ・硬化設定リセット)
すべてのローカルセキュリティログとHardening(硬化)設定がリセットされる?
初期設定に戻るわけではないし、硬化設定も元に戻らず(.htaccessの内容も削除されていなかった)何が削除されているのか謎。
使用する際は先にバックアップをとっておき、覚えていたらアンインストール時はここでリセットしてからやってみよう。
Scanner(スキャナー)
Scheduled Tasks(予定されたタスク)
通常は初期設定推奨。
スキャンスケジュール間隔を変更できるが、短くする際は必ずサーバーの負荷を考えること。
WordPress Integrity Diff Utility
よくわからないので無視。
特殊環境専用のようだ。
WordPress Integrity (False Positives:誤検知判定)
Dashboard(ダッシュボード)のスキャンで検出した、誤検知のリストが表示される。
リストに載っているということは「誤検知と自分が判定した」ということであり、スキャンは無視される。
ファイルを選択し、Stop Ignoring the Selected Filesで無視していたファイルを無視しない状態に戻せる。
Ignore Files And Folders During The Scans(スキャン時ファイル・フォルダ無視)
魅力的だが、挙動がわかりにくいので重くなるまで無視。
スキャンする必要のないファイル・フォルダを指定して無視できる。
あまりに重すぎる場合スキャンでは邪魔なので、セキュリティ上問題のない
- 画像・動画・オーディオなどのメディアファイル
- バックアップ
は除外しておくといい。
除外方法はFTPの「~public_html/自サイト/wp-content/uploads」のような、ファイルパスと呼ばれるものを入れると思うのだが、ちょっとよくわからない。
IGNORE A FILE OR DIRECTORY(ファイルまたはディレクトリ無視)にファイルパスを入れてSubmit(提出)すると下のリストに載り、その下にあるUnignore Selected Directories(選択したディレクトリを無視)で選択すると消える。
翻訳結果が同じような意味となっており、おそらくリストに載せたまま使用するのが正しいとは思うが、使用する際は本当に無視されているかを実験して確認すること。
ファイルパスを正常に入れてもおかしいのなら、そのまま該当ファイル名でもエラーにならないので、適用されているか試してみよう。
Hardening(硬化)
Hardening Options(硬化オプション)
バックドア(後で侵入する際の裏口)対策の比較的珍しい設定を、「Apply Hadening(硬化を適用)」をクリックするだけで有効化できるが、環境次第では使用できないので要確認。
- Website Firewall Protection(ファイアウォール):有料
- Verify WordPress Version(WordPressのバージョン確認)
- Verify PHP Version(PHPのバージョン確認)
- Remove WordPress Version(WordPressのバージョン削除)
- Block PHP Files in Uploads Directory (FTPのUploadsディレクトリでPHPファイルブロック):適用でいいが、不具合の可能性があるのでバックアップ後に実験
- ログインできなくなったら、FTPの「public_html/自サイト/wp-content/uploads」にある.htaccessを削除で元に戻る
- .htaccess削除前にバックアップ推奨
- Block PHP Files in WP-CONTENT Directory(FTPのwp-contentディレクトリでPHPファイルブロック):適用でいいが、不具合の可能性があるのでバックアップ後に実験
- ログインできなくなったら、FTPの「public_html/自サイト/wp-content」にある.htaccessを削除で元に戻る
- .htaccess削除前にバックアップ推奨
- Block PHP Files in WP-INCLUDES Directory(FTPのwp-includesディレクトリでPHPファイルブロック):適用でいいが、不具合の可能性があるのでバックアップ後に実験
- ログインできなくなったら、FTPの「public_html/自サイト/wp-includes」にある.htaccessを削除で元に戻る
- .htaccess削除前にバックアップ推奨
- Information Leakage(情報漏えい):適用・一度適用させると元に戻せない
- Default Admin Account(adminアカウントの存在確認)
- Plugin and Theme Editor(プラグインとテーマからコード編集禁止):誤操作防止目的で適用
- 元に戻せなくなったら、バックアップ後wp-config.phpにある「DISALLOW_FILE_EDIT」の行を削除
上記のようなセキュリティを向上させることができる。
PHPファイルブロックを現在乗り切ったとしても、今後プラグインを追加するたびにこれが原因で面倒なことになるかもしれない。そのたびにこの設定を思い出すこと! 一応、適用しつつ次のホワイトリストの章で除外できる。
PHP関係はバックドア対策に有効なようだ。
参考WordPress にバックドア仕掛けられないように… | dogmap.jp
Whitelist Blocked PHP Files(ブロックするPHPファイルのホワイトリスト)
PHPを硬化したなら、「今後絶対に使用したいプラグインに出会った場合」にこの機能でホワイトリスト(特別に許可シリーズ)に入れよう。
FILE PATHに除外したい.phpファイルを入れ、プルダウンで除外したいファイルの所在地を次の「wp-includes」・「wp-content」・「wp-content/uploads」の3つから選択しよう。
できなかった場合は、コメント欄に「ウソつき!」と残していい。
Post-Hack(ポストハック)
クラッキング(ハッキング)された際に利用する場所。
無料で妥協する場合は公式のプロヒント案内に従い、頑張れば可能なようだが、不安を拭いきれないので結局有料を選択することになるだろう。
参照How to Clean a Hacked WordPress Site – Sucuri Guide(英語)
見ると絶望するだろうが、どう考えても素人でやるべきではなく、失敗した場合「再感染して閲覧者が危険に晒されるリスク」から逃れられない。
ほとんどのプラグインは侵入された際の対処機能は付いておらず、地味にレアだ。
セキュリティの基本は「そもそも入れない」なんだけど、Sucuriは完璧は無理だからと諦めてる印象
Update Secret Keys(秘密鍵更新)
緊急事態用、通常無視。
「wp-config.php」の秘密鍵・セキュリティキーを変更し、「自分を含めたログインユーザー」・「今はログインしていないけど、ログイン状態保持中」をすべて強制的にログアウトさせる。
お手軽秘密鍵更新ができるため、どちらかというと被害にあった場合にこのプラグインを導入し、変更するために利用するといったケースで使うといいだろう。
挑戦する際は「public_html/自サイト」にwp-config.phpがあるので、バックアップ推奨。
Reset User Password(他ユーザーパスワード変更強制)
指定したユーザーアカウントに、新しいランダムパスワードを生成してメールアドレスに送り、強制できるようだ。
これによりセキュリティの底上げが簡単にでき、指定されたユーザーは強制ログアウト。
メール送信時に暗号化されているかは知らない。httpsなら大丈夫なはず。
Reset Installed Plugins(インストール済みプラグイン再インストール)
緊急事態用、通常無視。
マルウェア(ウイルス)感染が疑われた場合、念の為プラグインを再インストールするべきだ。
リストに該当プラグインが載っていない場合は、更新されるまで30分待とう。
有料系プラグインは再インストールによりライセンスが切れてしまうことがあるため、勝手に除外してくれる。
ここでの再インストールは壊れることがあるようなので、利用するならFTPの「public_html/自サイト名/wp-content」のpluginsフォルダをバックアップしておこう。
Available Plugin and Theme Updates(プラグイン・テーマの更新確認)
プラグイン・テーマの更新ができるようだが、ここでする必要はない。
そんなことはどうでもよく、常に最新版を心がけよう。
最新版が思いっきりバグるとかでないかぎり、セキュリティ優先。
Alerts(警告)
Alerts Recipient(警告受信者選択)
セキュリティ警告を受け取りたいメールアドレスの変更・追加・削除が可能。
初期設定でWordPressのメアドが入っているため、都合が悪ければ変更すると良い。
Trusted IP Addresses(信頼できるIPアドレス)
よくわからないので無視。
Alert Subject(警告の件名選択)
初期設定のままでOK(上から2番目)。
固定IPでしか使えないテクニックだが、件名にIPアドレスが入るので、これを利用しメールソフト側で(Gmailなど)自分のIPは既読orアーカイブorゴミ箱どれかにしておけば、知らないIPのみ受信箱にメールが残る。
固定IPはVPNサービスの共有サーバーを使い、なんちゃって固定IPとしても使え、万が一バレてもサーバーを変えるだけで都合が良い。
※VPNサービスでもメンテナンスで頻繁ではないが定期的にIPは変わる。
Alerts Per Hour(1時間あたりの警告)
通常無視。
初期設定の5回より増やすことができる。
そのままだととにかく警告メールが多いのだが、2つ先の章「Security Alerts(セキュリティ警告)」でメール送信条件を変更するので、こちらは無視で良い。
Password Guessing Brute Force Attacks(パスワード推測総当たり攻撃)
初期設定の30 failed logins per hour(1時間あたり30回のログイン失敗)のままでOK。
XML-RPCに対する攻撃にも対応している模様で、他のログイン系プラグインを使用しているなら、そちらはアンインストールしてしまって良い。
公式フォーラムに30回以下に減らすことができる方法があったので、そちらのリンクも置いておく。
ログインできない場合
この方法は他のプラグインでも言えることなので、覚えておこう。
FTPにアクセスし、public_html/自サイト名/wp-content/pluginsにある「sucuri-scanner」フォルダに、ハイフン(-)やアンダーバー(_)を足すだけで無効化される。
ログイン後はフォルダ名を戻すだけでOK。
Sucuri側だけでなく、他のプラグインの画面がでていたら、そちらのフォルダ名を変えよう。
Security Alerts(セキュリティ警告)
初期設定だとすごくアラートが届いてしまうので、整理する。
多すぎるのでだいぶ割愛するが、
- Receive email alerts for changes in the settings of the plugin(プラグインの設定変更に関するアラートを受信する)
- OFF
- Receive email alerts for password guessing attacks (summary of failed logins per hour)パスワード推測攻撃についてアラートを受信する
- ON
- Receive email alerts for changes in the post status (configure from Ignore Posts Changes)投稿ステータスの変更についてアラートを受信する
- OFF
- Receive email alerts when the WordPress version is updated(WordPressのバージョンが更新されたときにアラートを受信する)
- 他で受信していないならON、基本中の基本
- Receive email alerts when your website settings are updated(Webサイト設定が更新されたときにアラートを受信する)
- OFF
- Receive email alerts when a plugin is activated(プラグインがアクティブになったときにアラートを受信する)
- OFF
- Receive email alerts when a theme is activated(テーマがアクティブになったときにアラートを受信する)
- OFF
を設定しておけば、鬱陶しくなく、うまく調整されるはずだ。
新機能やそのほかに期待したいアラートがあれば、Chromeなどの右クリック → 日本語に翻訳で探すといい。
Post-Type Alerts
セキュリティ警告であった「Receive email alerts for changes in the post status (configure from Ignore Posts Changes)投稿ステータスの変更についてアラートを受信する」をOFFにしたなら無視。
投稿関係のなんらかのアラート(更新・公開・下書きに戻したなど)を調整できる……が、いくらなんでも多すぎる。
面倒なのでセキュリティ警告の方で無効化してしまったが、自己流にアレンジしたい方はやってみるといい。
API Service Communication(APIサービス通信)
無視。
APIを設定していれば、書かれているURLに送信されているようだ。
実際アクセスしてみると、最近の行動とIPが紐づけされている(すごく見にくい)。
API Communication via Proxy(プロキシ経由のAPI通信)
難しすぎるので無視。
Malware Scan Target(マルウェアスキャンターゲット)
無視。
スキャンするURLを変更でき、初期設定で現在のサイトが登録されているはずだ。
WordPress Checksums API(チェックサムAPI)
無視。
これで追加・削除・変更されたファイルを確認できるらしく、破損もしていないらしい。
が、こちらも別ツールを使わないといけないのか、すこぶる読みにくい。
Website Info(ウェブサイト情報)
サーバーや.htaccessのことを言われ、どちらもわかっていると思うので割愛。
コメント
どうも!
Sucuri Securityの使い方オンラインで説明できますか?
もちろん従業料支払います。
宜しくお願いします。
できません(´ε`;)
ごめんなさいー