【WordPress全ユーザー必読】最近のWPサイトに対する猛アタックの詳細と対策

日本では意外とニュースになっていませんが、世界のネット業界で今最も話題になっている問題がWordpressサイトに対する世界的な猛アタック。日本語サイトへのアタックは少ないかもしれませんが、やられてからでは遅いのも事実。この記事を読んでWPサイトへのアタックに関する現状と対処法を確認しておくべし。 — SEO Japan

ワードプレスのサイトに対する大規模な攻撃が継続的に行われている。この攻撃は以前から行われているものの、先週、大幅に規模が拡大していた。

ウェブ上では、この状況に関する議論が至るところで行われているが、次の2つの理由でこの記事を作成する必要があると私は感じた 1. このサイトのコミュニティの全ての参加者がワードプレスやテクノロジー関連のニュースをチェックしているわけではないため 2. 大半の記事は非常に難易度が高いか、あるいは、詳細や推奨事項が十分に提供されていないため。この記事では、現状を報告するだけでなく、その理由を挙げ、そして、対策を紹介していく。

ワードプレスへの攻撃

様々なサイトが、攻撃を詳細にわたって説明している。Hostgatorは、このニュースを早い段階で伝えたサイトの一つであった(ワードプレスに対する総当たり攻撃が世界で発生)。Sucuriのワードプレスのセキュリティ担当チームは、サイトを守る方法攻撃の真実、そして、この手の攻撃が及ぼす影響等のトピックを網羅する一連の記事を提供している。 セキュリティ専門のブログ、Krebs on Securityは、このトピックを徹底的に追及した良質な記事を投稿している。

簡単に言うと、今回の攻撃では、違法なボットネット(大量の感染したコンピュータのネットワークが、攻撃の実行、スパムの送信等に用いられている)が、ワードプレスのサイトに対する総当たり攻撃に用いられている。正しいログイン情報を探し出すために、出来るだけ多くのユーザー名とパスワードの組み合わせを試すことが、総当たり攻撃の目的である。ダイヤル錠の組み合わせを推測する行為に似ているが、数秒間に1つの組み合わせを推測するのではなく、1秒間に大量の組み合わせを試す力がある。そして、人間とは異なり、疲労することもない。

目標

先程も申し上げた通り、この攻撃には、ボットネットが用いられている。実際の目標は不明だが、より多くのシステムに感染し、ボットネットの規模と強度を拡大することが目標だと考えられる。

ウィキペディアのボットネットが実施可能な攻撃のタイプの項目でも説明されているように、ボットネットを使って、セキュリティの高度なシステムを閉鎖することも、詐欺を行うことも、スパムを送信することも、そして、その他の様々な違法行為を実施することも出来る。ボットネットは大きなビジネスと化している。そのため、インターネットのセキュリティのために、ウェブマスター全員が感染を防ぎ、問題の一部にならないように全力を尽くす必要がある。

脅威

この攻撃には、 – ログインの試みによる脅威、そして、ログインが成功した場合の脅威の2つの脅威が存在する。

ワードプレスがログインの試みを処理する度に、サーバーのリソースが使われる。攻撃によって1秒間に大量のログインが行われると、サイトのパフォーマンスに悪影響が出る。ホスティングのサービスによっては、サーバーに負荷がかかり過ぎるため、利用を禁止される可能性がある。これは最悪のケースであり、実際に起きる可能性は低いが、可能性がゼロと言うわけではなく、このような攻撃がもたらす潜在的な危険を回避するため、触れておく価値はあるはずだ。

ログイン情報の推測が当たると、サイト全体およびサーバーが危険に晒されてしまう。当該のユーザーが管理者の権限を持っているなら、ハッカーはサイトのあらゆる部分を変更することが可能になる。新しいファイルを加え、既存のファイルを変更し、ユーザーのパスワードが変更された場合はユーザーを加え、マルウェアをサイトのアウトプットに注入し、ホスティングのアカウントをスパムボット化し、さらに、ランダムなサーバーを使って、ハッカーの思い通りに動かされてしまうだろう。

パターン

幸いにも、この手の攻撃にはパターンが存在する。パターンを見出せば、攻撃に対する賢明な対策を考案することが可能になる。

今回の問題に関する複数のセキュリティ関連の投稿を読み、自分のログを確認したところ、今回の攻撃が「admin」ユーザーのパスワードを解明する行為に集中していることが明らかになった。私が注目しているサイトのスタッツをチェックしたところ、99%に近い確率で「admin」ユーザーが狙われる点が判明した。その他の推測は、「administrator」や「Admin」に集中していた。また、ドメイン名の主な部分をユーザー名として利用するケースも見られた。 例えば、ithemes.comと言うサイトでログインを試みる場合、「ithemes」をユーザー名と考慮するパターンが見られた。

アップデート: この記事を投稿した後、ボットは、頻繁に試すユーザー名を追加した。新たに加えられたユーザー名は「moderator」と「editor」である。このユーザー名はそれぞれ全体の10%以上に達している。そのため「admin」、「editor」、「moderator」と言うユーザー名の利用を控えるべきである。このようなユーザー名を利用しているなら、次のセクションを参考にして削除しよう。

また、利用されるパスワードにも明確なパターンが存在する。非常に脆弱なパスワードを選ぶ人達が多いため、当然である。残念ながら、記憶しやすいパスワードは、推測もしやすい。ここ数日間で推測されているパスワードを確認したところ、次のパスワードが特に推測される回数が多かった:

  • admin
  • admin123
  • 123456
  • 123123
  • 123456789
  • password
  • 1234
  • root
  • 1234567
  • 12345
  • qwerty
  • welcome
  • pass
  • abc123
  • 12345678
  • 1111
  • test
  • monkey
  • iloveyou
  • dragon
  • demo

ご覧のように、基本的な英語のワード、入力しやすい文字、または、数字が利用されている。このタイプのパスワードの推測が頻繁に行われるのは、多くのサイトで実際に功を奏しているためである。つまり、このようなパスワードを今でも利用するユーザーが多いため、ハッカーに狙われているのだ。

この攻撃には多数のコンピュータが参加している。あるレポートによると、この攻撃には、9万以上の固有のIPアドレスが加わっているようだ。実際に、私が運営するサイトの一つへのログインを試みるため、246のIPアドレスが用いられていた。これがボットネット攻撃の力であり、まさに四面楚歌の状態である。

解決策

総当たり攻撃は新しい手法ではない。この手の攻撃は、ワードプレスが生まれて間もない頃から、同システムに対して行われている。過去、私はLogin Lockdownプラグインをインストールして、有効にするよう薦めたことがある。総当たり攻撃対策として役に立つためだ。これは、あるIPアドレスが連続で何度もログインに失敗した場合、当該のIPによるログインの試みをブロックして、サイトを保護する。残念ながら、パターンのセクションでも指摘したように、今回の攻撃は広範なIPアドレスから仕掛けられているため、単純に特定のIPアドレスをブロックするだけでは、今回のボットネット攻撃からサイトを守ることは出来ない。要するに異なるソリューションが必要とされているのだ。

ユーザーネーム「admin」を削除する

パターンの詳細に再び注目していく。ワードプレスのサイトの運営者が、何よりも先に実施しなければいけないのは、サイトからユーザーネーム「admin」を削除することだ。 今のところ、今回の攻撃で最も狙われている脆弱性はこのユーザー名である。そのため、「admin」をユーザー名で利用するユーザーが存在するなら、今すぐに削除するか、名前を変更するべきである。

ユーザーの名前を容易に変更したいなら、新しいユーザーと置き換えよう。その際は次の手順に従うことを薦める:

  1. 「admin」ユーザーと同じ権限を持つ新しいユーザーを作成する。通常は管理人が該当する。ユーザーを作成するには、異なるeメールアドレスが必要であり、今のeメールアドレスとは異なるアドレスを利用しなければいけないだろう。
  2. ログアウトする。
  3. 新しいユーザーとしてログインする。
  4. 「admin」ユーザーを削除する。
  5. 「admin」ユーザーが所有する投稿とリンクの取り扱いを尋ねられたら、「すべての投稿とリンクをこのユーザーに帰属させる」を選択し、ドロップダウンリストから新しいユーザーを選ぶ。その後、「確認のうえ削除する」をクリックする。
  6. ユーザーが削除されたら、新しいユーザーのeメールアドレスを変更することが出来る。

ユーザー名を変更することが可能なプラグインが存在し、また、データベース内でユーザー名を変更することも可能ではあるが、個人的には上述したメソッドを常に採用している。 このメソッドの大きな利点は、早く、簡単にユーザー名を変更することが出来る点である。また、ID番号が1のユーザーのデータベースの記録を修正するワードプレスのハッキングスクリプトを私は目撃したことがあり、ユーザー名を削除することで、このハッキングを回避することが可能になる。重要度が高いわけではないが、出回っているスクリプトが、ID番号が1ではないユーザーには役に立たない点を知っておいても損はしないはずだ。

もっとレベルの高いパスワードを使う

このアドバイスを最初に取り上げるかどうかで私は迷った。「admin」ユーザー名を削除することで、今回の悪意のあるログインの試みからほぼ確実にサイトを守ることが出来るはずだが、低レベルなパスワードを利用していると、今回の攻撃に限らず、あらゆる攻撃を受けやすい。上のリストに挙げられているパスワードを利用しているユーザーがいるなら、あるいは、同じぐらい単純なパスワードを利用しているユーザーがいるなら、すぐにパスワードを変更するべきである。

「どうすれば良質なパスワードを作ることが出来るのか?」と言う問いに対しては、一言で答えることは出来ない。XKCDコミックのパスワードの強度は名作である。この作品では、簡単に覚えることが可能であり、尚且つ、なかなか見破られないパスワードではなく、覚えるのが難しいものの、比較的簡単に見破られてしまうパスワードを作ることで発生する問題が描かれている。検索を実施すれば、安全なパスワードの作り方に関するガイドを多数見つけることが出来るはずである。

大半のガイドは、「fl1r7」等の覚えやすいはずの複雑な短いパスワードを作るか、あるいは、「ComplekspasswordsRsafer2011」等の長いパスワードを作るかのいずれかに焦点を絞っている。このタイプのパスワードの問題点は、現実的ではない点である。例えば、今日、3つ目の文字を数字に変える必要があることを覚えられたとしても、一週間後には、2つ目の文字だったのか、4つ目の文字だったのか分からなくなってしまう可能性がある。また、長いパスワードは1) (XKCDのランダル・マンロー氏には申し訳ないが)覚えにくく、2) 毎回入力するのが大変である。

つまり、パスワードを再び利用することこそが、パスワードのおける最大の脅威になってしまうのだ。同じパスワードを全てのサイトで利用していると、一つのアカウントが攻略されてしまうと、ほぼ全てのアカウントにアクセスされてしまう危険がある。これは非常に良くない習慣だが、多くのオンラインサービスが、プレーンテキスト、または、簡単な修正を加えるだけでパスワードを保存している。ここ数年間で、ユーザーのデータベースがハッカーの手に落ち、ネット上にリークされたサイトに関する報道が、幾度となく行われてきた。このような漏えいしたログインの詳細を手に入れると、ハッカーはすぐにこの情報を使ってその他のサービスのアカウントも攻略する。 従って、同じパスワードを多くのサイトで利用しているなら、そのうちの1つのサイトで情報がリークすると、その他の全てのサイトが危険に晒されてしまう。

そのため、1) 短くなく 2) 単純ではなく 3) 1つ目と2つ目のルールを違反しないように、入力しやすく 4) 利用するサイトでそれぞれ異なるワードを用いることが可能なパスワードが必要になる。この4つのルールを全て厳守するパスワードを作る方法は数多く存在する。「password123youtube」のようにパスワード内でサイトの名前を利用する方法は、幅広く利用されている。この方法を採用すると確かにサイトごとの異なるパスワードを作ることが出来るが、パスワードのパターンが見破られ、その他のサイトに適用されたら終わりである。そのため、5) 1-4のルールに従う上で、パターンを見破られても容易に推測することが出来ないパスワードを作る必要がある。

私自身、良いパスワードを作る試みに苦戦しているが、単純に人間はこの類の行為が苦手なのではないかと思うようになった。良質なパスワードを作るためには、適当な文字を長い文字列に変える必要がある。これは私達が苦手としている分野である。

最終的に私が行き着いたソリューションはLastPassである。LastPassはパスワード作成サービスである。このサービスは、全てのパスワードを管理し、また、非常に複雑なパスワードを作成するツールも用意している。また、LastPassに自動的にログイン情報を埋めさせる(タイプする必要はない)ブラウザ統合機能も提供している。さらに、モバイルプラットフォームとタブレットプラットフォーム用のアプリを提供している。その上、パスワードが必要であり、その他の方法で得ることが出来ない場合のためにウェブインタフェースを用意している。

LastPassを利用することで、決して記憶することが出来ない、入力するのが面倒な非常に複雑なパスワードを得ることが出来る。私はパスワードの長さをサイトによって変えているが、サイトが許す限り常に25文字のパスワードを作るようにしている。そのため、私が生きている間に、総当たり攻撃が、25文字以上のランダムな文字で構成された私のパスワードを解読するのは難しいだろう。

LastPassを利用する上での鍵は、ユーザーを認証する良質なパスワードを作ることだ。覚える必要があるのはこのパスワードのみであるため、優れたパスワードを用いる必要がある。弱いパスワードを作り、全ての強固なパスワードにアクセスされてしまうようでは、意味がない。

LastPassの代わりに利用することが可能なサービスはある。ただし、実際に使ったことがないので、推奨することは出来ない。頻繁に目にするサービスを幾つか紹介する:

  • KeePass – オフラインのクロスプラットフォームパスワード管理サービス。サーバーに保存されず、パスワードを暗号化し、ローカルにコピーするサービスである。ドロップボックスを使って、異なるシステムにパスワードをシンクさせることが出来るようだ。
  • 1Password – この有料のパスワードマネージャーは、クラウドにシンクさせる機能を持っている。私の知る限り、社内で1名がこのソフトウェアを利用している。
  • Keeper – 機能に関して、LastPassのライバルと言えるだろう。
  • RoboForm – このサービスもLastPassに似ている。

パフォーマンスの問題への対策

これで、サイトから「admin」が消え、推測が難しいパスワードを手に入れたことになるが、それでもサイトに頻繁にログインしようと試みるボットの問題は解決されていない。この問題の解決はさらにハードルが高い。技術的な観点では、サイトは安全だが、一部のボットがサーバーに押し寄せることで、サイトのパフォーマンスが落ちる事態を回避しておきたいところだ。

まずは、ホスティングサービスを提供する会社と話し合うことを薦める。一部の攻撃をブロックする上でユーザーを支援するため、サポートチケットを切ることを薦めるホスティング会社は多い。どのようなメソッドが用いられているのかは不明だが、効果の高い様々なメソッドが用いられている可能性がある。

自分でサーバーを管理しているなら、あるいは、ホスティングサービスが役に立たないなら、私ならまずは大量のリクエストが行われているかどうかを確認する。そのためには、サイトのアクセスログをチェックする必要がある。単純にwp-login.phpページがリクエストされる頻度を確認するだけよい。大きなコミュニティを抱えているなら、通常のサイトの運営の一部として、当該のページに対して多くのリクエストが行われている可能性がある。リクエストの数が比較的少ないなら(1分間に数回程度)なら、対策を講じる必要はないだろう。このレベルのログインの試みなら、サイトに与える影響は小さく、また、変更を加えることで、問題なく動いているサイトにダメージを与えるリスクが発生する。リクエストの回数が多いなら(特に1秒間に大量のリクエストが行われているなら)、その他の選択肢をより真剣に検討するべきである。

ホスティング会社に連絡を取る方法の次に容易な方法は、CloudFlareを利用する方法だ。CloudFlareはCDN(コンテンツデリバリネットワーク)サービスであり、今回の攻撃からサイトを守る効果も見込める。今回の状況を憂慮し、CloudFlareは、総当たり攻撃を処理する仕組みをブログの投稿で詳しく説明している。私は過去数ヶ月間に渡って無料のアカウントを利用している。CloudFlareがどれだけのトラフィックをブロックしているのかは不明だが、私のサイトのwp-login.phpページに対するリクエスト数が少ない点はハッキリしている。また、公式のCloudFlareプラグインがリリースされている。ただし、私はCloudFareのキャッシング機能を利用していないため、このプラグインのメリットを紹介することは出来ない。

ホスティングサービスが役に立たず、また、CloudFlareを利用することが出来ない場合、ハイレベルな技術、そして、サーバーでのルートの許可が必要とされる解決策に頼らざるを得なくなる(共有ホスティングまたは専有ホスティングのアカウントでは、利用することが出来ない)。サーバーの管理に関する知識が浅く、また、攻撃がサイトのパフォーマンスに悪影響を与えているなら、攻撃からサイトを守ってくれるホスティングに変えることを検討しするべきかもしれない。ホスティングサービスを変更する前に、この手の攻撃からサイトを保護する準備が整っているかどうかを、事前に確認しておこう。

技術的なソリューショの中では、アパッチでModSecurityルールを使って、ログインの試みを制限する手が最も幅広く用いられている。 当然ながら、サーバーがアパッチを用いており、ModSecurityが利用することが出来る、または、インストールすることが出来る点が前提である。

wp-login.phpファイルとwp-adminディレクトリにアクセスするパスワードを守る手も多くのサイトで用いられている。この方法のメリットは、認証されていない限り、リクエストがワードプレスに到達することはなく、攻撃の負荷をほぼゼロまで低減することが出来る点である。

wp-config.phpのキーをアップデートする

wp-config.phpファイルには、一連のセキュリティキーが含まれている。このキーは、ワードプレスが用いる各種の認証およびセキュリティのメソッドに利用される。キーは各サイトに固有のアイテムを用意するべきである。残念ながら、古いバージョンのワードプレスにはこのセットが欠けており、セキュリティホールとして悪用されるリスクがある。各種の攻撃からサイトを守る上で、キーのアップデートを強く推奨する。

キーをアップデートすることで、再び全てのユーザーがログインする必要性が生じる。このメソッドは、感染したログインが無効になるため、強力である。

処置

サイトが被害に遭った場合、何をすればいいのだろうか?残念ながら、基本的にゼロからやり直すしか完全な解決策は存在しない:

  1. サイトのバックアップを作成する。
  2. サイトの全てのファイルを削除する。
  3. ワードプレスを新たにダウンロードする。
  4. ワードプレスのファイルを解凍する。
  5. ワードプレスのファイルをサーバーにアップロードする。
  6. バックアップでwp-config.php ファイルを調べ、怪しいコードを探し出す。このファイルをダウンロードしたばかりのwp-config-sample.phpファイルと比較することで、問題を特定する上で役に立つ。
  7. バックアップからwp-config.phpを新しいサイトにコピーする。
  8. オリジナルのソースからテーマとプラグインの新しいコピーをダウンロードする。ランダムなサイトからファイルをダウンロードするべきではない。マルウェアが含まれていることが多いためだ。
  9. テーマとプラグインのファイルを解凍する。
  10. テーマとプラグインをサイトにアップロードする。
  11. サイトを実行し、問題なく機能するかどうかを確かめる。
  12. 知らないユーザーを全て削除する。
  13. 各ユーザーのパスワードを変更する。攻撃が原因でパスワードを変更したものの、再びサイトを脅威に晒すことなどあってはならない。全てのユーザーのパスワードを再設定して、理想的なパスワードを設けるべきである。その際は、上述した推奨事項に従ってもらいたい。「admin」ユーザーのままにしておくのは危険であり、また、単純なパスワードを利用しないように注意する必要がある。
  14. バックアップのwp-content/uploadsディレクトリにアクセスし、ディレクトリを新しいサーバーにコピーする。メディアファイル(イメージ、オーディオ、動画等)をコピーする必要がある。PHPファイルをコピーしないように気をつけよう。

このように、とても面倒な作業ではあるが、ハッカーによる修正を完全に排除するには、これしか方法がない。たった一つでもファイル、または、修正されたファイルが残ると、再びサーバーが攻撃を受ける可能性があるためだ。

複数のサイトを運営している場合はどうなるのだろうか?残念ながら、一つのアカウントで多くのサイトを運営しているなら、アカウント全体が影響を受けていることを前提に作業を行う必要がある。単一のサイトの修正に力を入れると、その他のサイトがハッキングされる可能性がある。

予防

最後の見出しは、若干嘘っぽいかもしれない。このセクションの前までは完璧であった。:)

100%安全を保障することは出来ない。そんなものは存在しない。だからと言って諦めるべきではない。安全対策を無視するのは、自ら災難を招いているようなものだ。しかし、セキュリティばかりを気にしていても、時間の無駄遣いにしからならない。そこで、バランスの取れたアプローチを採用する必要がある。

先程、Login Lockdownプラグインに触れた。このプラグインを使っても、今回の攻撃からはサイトを守ることは出来ないが、それでも、利用を検討してもらいたい。ワードプレスが、ビルトインで総当たり攻撃対策を講じるまでは(お願いしますよ、開発者の皆さん)、このタイプのプラグインの利用を私は薦める。

ジェームズ・マクワーター氏が、Login Lockdownに「Lockout Invalid Usernames?」(無効なユーザー名を追放しますか?)の選択肢が用意されている点をコメント欄で指摘してくれた。このオプションを有効にすると、このプラグインは無効なユーザー名を用いたログインの試みを自動的にブロックする。 これは、今回の攻撃からサイトを守る上で役に立つかもしれない。

コメントおよびツイートで、Loguin Lokckdownプラグインがリリースされた時期を尋ねる人達がいた。私はこのプラグインを何年も前から利用しているが、マルチサイトのインストールを含む、現バージョンのワードプレスと問題なく連動する。その他の同様のプラグインを試すことも可能であり、また、確かにリリース時期は不明だが、Login Lockdownを私は個人的にお薦めする。

やはり、解決策で提供した推奨事項に是非従ってもらいたい。今回の攻撃だけでなく今後の攻撃からもサイトを守る上で効果があるはずだ。

また、プラグインおよびテーマを含む、ワードプレスのサイトを常に最新の状態に保つべきである。古いバージョンのセキュリティホールは、時間の経過とともに見つかる傾向があるため、この取り組みは絶対にさぼらないでもらいたい。

多数のワードプレスサイトを運営し、管理するのが難しくなりつつあるなら、マルチサイトを使って、サイトの大半を1つにまとめる方法を検討しよう。 こうすることで、ワードプレス、テーマ、そして、プラグインのアップデートが容易になる。ManageWPを使って、中央から複数のサイトを管理する手もある。

ワードプレスにログインするためのパスワードは重要だが、ホスティングのアカウントにアクセスするためのパスワードも同じぐらい重要である。FTPやcPanelで容易に推測することが可能なパスワードを利用しているなら、危険である。また、ワードプレスはeメールを使ってパスワードを再設定することも出来るため、eメールのアカウントが脆弱なら、サイトも脆弱である。サイトのパスワードを改善したなら、ホスティングのアカウントおよびeメールで使っているパスワードも改善しよう。

利用していないプラグインやテーマに関するセキュリティの問題は、あまり重要視されていないが、無効にされているプラグインやテーマもまたサイトをハッキングするために用いられる可能性がある。1年半前のTimthumbのエクスプロイトは、無効のプラグインやテーマでも行われていた。従って、無効にしたプラグインやテーマをそのままにしておくのではなく、別の場所にバックアップを作成し、削除しておくことを薦める。

結論

この記事が皆さんの役に立つことを願っている。既に様々な情報が提供されているため、この記事を投稿するべきかどうか私は大いに悩んだ。この類の記事を今後も読みたい方は、記事のどの部分が最も重宝したのかコメント欄で教えて頂きたい。


この記事は、ithemesに掲載された「Ongoing WordPress Security Attacks, The Details and Solutions」を翻訳した内容です。

私の英語圏でWPブログを相当数運営しているのですが(スパムサイトじゃありません!)、常日頃からアタックを受けやすいWPサイトではありますが、今回は半端なかったですし、諸々の対策に相当の時間を取られました。日本ではそこまでの被害を受けているサイトは少ないようですが、逆に行うべきアップデート・対策を取っていないWPベースのサイトも多いと思います。狙われてからでは遅いのも現実ですし、この記事を読んで必要な対策を取っておくことを是非おススメします!って、SEO JapanもWPベースなので早速チェックしたいと思います。。。 — SEO Japan [G+]