WordPress のセキュリティ: リスクを減らす5ステップ (Sucuri Blog より訳出)

いまだに訳し終わらない「WordPress の守りを固める」の中で再三にわたってオススメされているウェブセキュリティ関連のサービスや情報を提供している会社 Sucuri のブログ「Sucuri – Protect Your Interwebs」より、「WordPress Security: 5 Steps To Reduce Your Risk(WordPress のセキュリティ: リスクを減らす5ステップ )」の翻訳と転載の許可をメールでもらったのでご紹介します。

This is the Japanese translation of “WordPress Security: 5 Steps To Reduce Your Risk” written by Dre armeda.

「WordPress のセキュリティにはどのプラグインを使うべきですか?」このような質問をよく聞くと思います。もっともな質問ですが、これしか質問しなかったり、これしか行動を起こさないとしたら、それはベストなアプローチとは思えません。自分のブログのセキュリティをサードパーティ製のプラグインだけに頼っていてはダメです!

リスクを減らすというのはゲームのようなものです。行動、ツール、一連の作業、これらすべてが一つのセットとなってリスクの低減に役立つのです。

これ(セキュリティ対策)はみんなの義務!

(セキュリティ対策は) あなたから始まります。次のステップにしたがって (たくさんのプラグインを使わずに!) リスクを劇的に減らしましょう:

1. ソフトウェアを最新に保つ

今週(訳注: 2013年1月24日の週)は WordPress 3.5.1 がリリースされました。これはメンテナンスとセキュリティのリリースです。パッチ(修正)がリリースされるのには理由があります。すてきな新しい機能だけではなく、バグやセキュリティの脆弱性を修正するためでもあるのです。

アップグレードしたらサイトが見れなくなりましたか?サイトが壊れるからアップグレードするなとプラグインの作者や開発者に言われましたか?これはそのサイトで使用しているそのテーマやプラグインが WordPress コーディング基準を考慮して開発されていないというしるしなのかもしれません。テーマやプラグインが WordPress のアップグレードしたバージョンとは互換性がなく、非推奨なのかもしれません。どちらにせよ、これは最良の状態とは言えませんので、ふさわしい代替を探すときなのでしょう。代わりを探してレビューし、そのテーマやプラグインが作者によって活発にサポートされているか確認しましょう。

やるべきことをちゃんとやりましょう。WordPress の公式のテーマディレクトリやプラグインディレクトリなど、信頼できるソースを利用するようにしましょう。もし商用のテーマやプラグインを利用しているのなら、しっかりリサーチして、サポートポリシーやコーディング実務について作者にたずねてみましょう。

2.ノースープキッチンサーバー※!(Tony Perez 氏が創った言い回し)

(※訳注: 日本語にうまく訳せないのでカタカナにしてごまかしたけど、「給仕台(Kitichen Servers – ウェブサーバーの比喩)にスープ(脆弱性のあるソフトウェアなど、クラッカーにとっておいしいものの比喩)を残しておくとゴXブXやネXミ(クラッカー)が寄ってくるから、残しておくな!」ということ)

テスト用にダミーの WordPress をインストールしたことはありませんか?そしてそのまま放置して何年もたっていたりしてませんか?ハイ、そんなことをしてはいけません。そうすると、結局はそのサーバ上のすべてのウェブサイトを二次汚染の危険に晒すことになるんです。

攻撃者たちは弱点をみつ、その弱点を悪用し続け、つぎにその共用スペースのすべてに感染させます。もし脆弱性を一掃できなければ、指先が落ちるまで徹底的にきれいにできなければ、また感染するでしょう。これは共用サーバーが同じルート権限でホスティングエリアに複数のウェブサイトを追加できるようにしているためによく起こります。一つが感染するとすべてに感染するのです!サイトを使用していないのなら、削除しましょう。最低限、上のステップ1を実行しておきましょう。 🙂

冗談抜きで、すべてのウェブサイトは独立したスペースに区分けするべきです。開発、ステージング、本番用のウェブサイトは特に。さらに、使用していない テーマ/プラグインがあるのなら、サーバーにおいておく必要はないので削除しましょう。必要なもの、使用するものだけを保持するように!

3. アクセスを制限する

権限は必要とする分だけを与えるようにし、必要がなくなったらその権限も制限しましょう!これは(いわゆる)「最小権限の原則(practice)」というもので、どんな情報システムでもこれを実践(practicing)すべきです。 WordPress、FTP、データベースやどんなログインシステムでも同じです。つまり適切な管理とういうことです。権限グループを活用しましょう。あるユーザーの仕事がコンテンツの編集だとしたら、なぜそのユーザーは管理者権限を必要とするのでしょうか?管理者権限のアカウントを使用するのは管理者権限を必要とするタスクを実行するとき、例えば WordPress のアップグレードやプラグイン、テーマ、ウィジェットの追加削除を実行するときだけにしましょう。

ウェブサイトのオーナーが直面するもうひとつのアクセスコントロールに関する危険性は、WordPress のログインページ – /wp-admin もしくは /wp-login.php – に対するブルートフォースアタックです。これには簡単な対処方法が2つあり、そのひとつは WordPress の管理画面のログインに2要素認証を導入することです。もしご存じなければ Google Authenticator プラグインをチェクしてみてください。これはとてもうまく機能しますし、Google Authenticator を導入済みであれば、既存のツールやデバイスの多くでも機能することはご存知かと思います

もうひとつの方法はログインの失敗回数に制限を設けることです。最近、デフォルトでは wp-admin に攻撃を仕掛けることがいかに簡単なことかをデモしました。そのデモでは、もし弱いパスワードを使用している場合にはどれだけ素早くハックされうるかを お見せしました。Limit Login Attempts などで3,4回ログインに失敗したらそれ以上のログインを試せなくすることで、この危険性は大きく減らすことができます。

4. パスワードよりもパスフレーズ

(訳注: 元のブログにある画像はよく使用されているパスワードをクラウドにしたもの)

インターネット中で最も広く現在も使用されているパスワードの一つが「password」であるというのをご存知 でしたか?みなさんがこれを知っているということは、攻撃者たちもこれを知っているとは思いませんか?当然知ってます!WordPress のアドミンアクセスや SSH の認証情報へブルートフォースを仕掛ける攻撃者たちは、このような既知のパスワードを使用、列挙してきます。パスワードに関する議論の中から持ち帰って欲しい最も重要なことは「(パスワードは)固有であるべし!!!」ということです。

短いパスワードを使用する代わりに、あなたのお気に入りのノートリアスBIGの歌詞のような長いパスフレーズを使用するようにしましょう。ログインごとに別のパスフレーズを使うようにしましょう。もうひとつの良いアプローチは、パスワードをすべて自分で記憶する代わりに、LastPass のようなパスワード管理ツールにこの厄介事をまかせてしまうことです。こうしたツールはパスワードを安全に保管し、パスワードを知ることさえせずにその作成までしてくれます。

5. バックアップスケジュールを策定する

もしちゃんとしたバックアップ計画とその実践がされていなのなら、それはマズイです!サイトを掃除してほしいと依頼され、攻撃者が重要なデータ構成要素やたくさんのテーマファイルをすっかり消去してしまったことがすぐに判明したことは数限りなくあります。そして、そうしたデータやファイルのバックアップを所望すると、依頼者も依頼者のホスティング会社もバックアップを持っていないということが判明するのです。(となると)そのサイトは存在すらしていなかったようなものです。

バックアップはあなたの責務です。(もしまだなら)今こそバックアップを始める時です。BackupBuddyVaultPress など、マーケットには様々なツールがあり、公式のリポジトリには無料のものさえあります。利用しているホスティング会社もなんらかの手段を持っているかもしれません。ツールはどれを選択してもかまいませんが、確実にプランを作り、そのスケジュールを実行し、使用しているサーバーとは別の場所(できれば複数の場所)にそのバックアップを保存するようにしましょう。


これ以外の ”admin” ユーザーの削除、WordPress バージョン表記の削除、データベースのプレフィックスの変更など、よく聞く大抵の対策はまったくと言っていいほど役に立ちません。これらは間違いなく曖昧な対策で、スクリプトをかじった程度の幼稚な者の邪魔にはなるかもしれませんが、ウェブサイトやサーバーの特定の脆弱性をスキャンしたり弱いパスワードを攻撃したりすることのできる最新の自動化された攻撃に対してはほとんど役に立たないので、騙されないようにしてください。(まぁ)確かにリスクを減らすということなので、こうしたことを完全に無視はしませんが。

プラグインかプラグインじゃないか、それが問題だ!

5つのステップで言及したこと以外のありとあらゆることをしている(もしくはそう謳っている)たいていのセキュリティ関連のプラグインにも興味はありますし、リンク/トラフィックをおびき寄せること以上の価値があるのかどうか評価してみたいところではあります。(とはいえ)たいていの場合、はやりの単語や「大変だ大変だ」と騒ぎ立てる方策で、誤ったセキュリティ認識を与えるだけです。

悪意あるアドレスからのトラフィックをブロックするのに役立つビルトインのウェブアプリケーションファイアーウォールをもつプラグインもいくつかあります。私たちのすべてのサービスアカウントに含まれている Sucuri WordPress plugin もそのひとつです。このアプローチはとても有効で、ひどい不正行為を行なっているとして分類された IP アドレスを能動的にオンザフライでブラックリストに載せます。また、何十万もの既知の悪質なスパムサイト/IP アドレス/ホスト名をもつネットワークを利用し、世界中でこのプラグインがインストールされたすべてのサイトででこうした輩をブロックすることができます。

他のプラグインでは発生したかもしれない問題の監査と発見により重きを置いていますが、積極的なリスク削減にはあまり役に立ちません。

結局はあなた次第です。あなたに求めるのはちょっとしたリサーチです。適切な配慮を怠らず、サーバーにインストールしたものには確実に有効なセキュリティ対策を施し、たんなる慣習のような曖昧な対策には耳をかさないこと。アップデート、良好な状態の維持、アクセスの制限と強力な認証、そしてバックアップ。これらを守ることで自分を有利な立場に置くことができます。

終わりに

過ぎたるは及ばざるがごとし。いまではたくさんのプラグインがあり、それに伴いたくさんの重複があります。私は徹底した防御を好むので重複はいいことかもしれませんが、なにもかもすべてをインストールするということはしなように。追加すればするほどメンテナンスするものが多くなり、脆弱性を生む危険性も高まります。シンプルに保ち、ノイズを遮断し、リスク削減を考えてください!

以上です。これが私の考えで、私はこの考えに従っています。あなたなら何を追加し、何を省きますか?


WordPress のセキュリティに関するみなさんの取り組みをお聞かせください。また、みなさんのおすすめの対策があったらぜひ下のコメントでお知らせください!

参考情報:

3件のコメント

  1. こんにちは。
    「WordPress のセキュリティに関するみなさんの取り組みをお聞かせください。」とありましたので、コメントさせていただきます。

    上の5つの項目全て対処しているのですが、そのうちの3番について、

    1. /wp-admin/ および wp-login.php へのアクセス制限
    1-1. 投稿するユーザー全ての端末にクライアント証明書をインストールし、一致した場合のみアクセスを許可。
     (ちょっと直接作業をした訳ではないので表現が曖昧です)
     複数ユーザーが投稿する可能性があるサイトでかつユーザーの端末を特定できる場合で同IPの他の端末を許可しないようにこの方法をとりました。
    1-2. Basic認証(紹介されているWP-Dとmemo.dogmap.jpを参考にしています)
     これも複数ユーザーが投稿する可能性があるサイトなんですが、ユーザーの端末やIPを特定できない場合があったので、この方法を選択しました。

    1-2の補足なんですが、3.5から標準で許可されているXML-RPC を不許可にし、HTMLに出力されるこれに関するソースも削除しました。様々なアプリからではなく、あくまでダッシュボードからのみ更新できるようにと思い、このような対応を取ったのですが、はたしてセキュリティという観点から有効な手段なのかどうか、識者のご意見を伺いたいです。

    長文失礼しました。

コメントは受け付けていません。