この記事はWordPress Advent Calendar 2016の1日目の記事になります。
WordPressは、サーバにインストールして使えるCMSと呼ばれるソフトウェアです。このサイトをはじめ、世界的に利用されているため、攻撃されやすいのも特徴です。今回は、WordPressのセキュリティに関する話をしようと思います。
今回は、ログインに関するセキュリティと、スパムコメントに対するセキュリティの話をします。なお、私はあくまで1利用者ですので、ご理解の上おつきあいくださいませ。
1. ログインに関するセキュリティ
WordPressに限らず、管理用のパスワードが乗っ取られると、システムが乗っ取られてしまいます。Webシステムが乗っ取られると、サーバ本体にアクセスされたり、ウイルス等を設置されアクセスしてきた人に感染するなどの問題が起きます。
Jetpackをインストールしていれば、ダッシュボードに不審なログインが阻止された回数が表示されます。
攻撃手法としては、主に「ブルートフォース攻撃」「リスト攻撃」「エクスプロイト攻撃」の3つがあります。
1-1. ブルートフォース攻撃
ブルートフォース攻撃は、考え得るすべてのユーザ名、パスワードの組み合わせを片っ端から入力してログインを試みる方法です。
ユーザ名とパスワードの組み合わせは無限にあるため、普通に考えれば現実的ではありません。しかし多くの場合、ユーザ名には「admin」「root」などの管理者を示すような名前が使われていたり、管理者やサーバの名前がそのまま使われていたり(たとえば私なら「hiyowa」など)します。
また、パスワードも「123456」「password」などの破られやすいパスワードが使われていたりします。このような現状から目星をつけると、現実的な時間でログインに成功できる可能性が高くなります。
ブルートフォース攻撃の対策方法は3つあります。
1つめは、ユーザ名やパスワードを推測されにくいものにすることです。最近のWordPressでは、ランダムなパスワードを自動で生成することができますので、この機能を使用して強固なパスワードを使うことが効果的です。
2つめは、何回かログインに失敗すると、そのパソコンから一定期間ログインできなくなるプラグインを使うことです。
たとえば、Michael VanDeMar氏による「Login LockDown」プラグインがあります。たとえば、下の画像のように設定すれば、60分の間に3回ログインに失敗すると、その後240分間ログインを試行できなくなります。
3つめは、2段階認証を使うことです。
2段階認証については、この記事の3番で詳しく説明していますので、ご覧ください。
Henrik Schack氏による「Google Authenticator」プラグインを使えば、WordPressのログイン画面でGoogle2段階認証のトークンを入力しなければログインできなくなります。
1-2. リスト攻撃
リスト攻撃は、様々なWebサービスにおいて、多くの人がパスワードを使い回していることを利用した方法です。
たとえば、あるWebサービスからユーザ名とパスワードが流出した場合、これを使って他のWebサービスにログインできる可能性が非常に高くなります。WordPressも例外ではありません。
リスト攻撃の対策方法は2つあります。
1つめは、サイトごとに異なるパスワードを使うことです。WordPressのパスワードは、Gmailともヤフオクとも異なるものであるべきです。すべてのサイトで別のパスワードを使用すると覚えることができませんが、これを効率よく運用する方法として、この記事の2で説明している「パスワード管理ツール」があります。
2つめは、1.のブルートフォース攻撃の対策と同じく、2段階認証を使うことです。2段階認証を使えば、たとえユーザ名とパスワードが正しかったとしても、トークンを入力しない限りログインすることはできなくなります。
1-3. エクスプロイト攻撃
エクスプロイト攻撃は、古いWordPressのバグ(脆弱性)を使う方法です。
WordPress、テーマ、プラグインはすべて、各開発者によって絶えずアップデートされています。既知のバグは最新のプログラムで修正されていますが、お使いのサーバにインストールされているWordPressが最新でないと、最悪の場合パスワードを使わずに管理者権限が乗っ取られてしまいます。
この対策方法は、WordPress、テーマ、プラグインを常に最新にしておくことです。
設定を変更していなければ、WordPress本体は自動で最新版に更新されていきますが、プラグインは自動更新されない場合があります。定期的に更新がないか確認しておきましょう。更新は、「ダッシュボード」→「更新」から確認できます。
2. スパムコメントに対するセキュリティ
WordPressの初期テーマはブログ型で、記事に対してコメントがつけられるようになっています。記事を見た人がコメントをつけてくれると執筆の励みになりますが、時折スパムコメントが投稿されることがあります。多くは違法薬物や偽ブランド品のサイトに誘導するものです。放置するとサイトを訪れた人がリンクを踏み、被害を出してしまうかもしれません。
対処方法はいくつかありますが、ここでは「スパムフィルタ」と「CAPTCHA」を紹介します。
2-1. スパムフィルタ
WordPressでは、スパムフィルタプラグインの「Akismet」が標準で入っています。プラグインを有効化し、初期登録を済ませれば、自動でスパムを振り分けてくれるようになります。上で示したスパムの例も、Akismetにより自動で振り分けられたものです。
2-2. CAPTCHA
CAPTCHAは、プログラムによる自動投稿を阻止するためのものです。たいていの場合、スパムは自動で送られていますので、CAPTCHAを使うことでほとんどのスパムをはじくことができます。
BestWebSoftによる「Google Captcha (reCAPTCHA) by BestWebSoft」プラグインは、WordPressにGoogle reCAPTCHAを追加することができます。Gmailのアカウントを作るとき、「画像の読みにくい文字を入力してください」といった確認が表示されるアレです。
最近はreCAPTCHAが進化し、「猫の画像をすべて選んでください」といったものに変わりました。このプラグインでは好きな方を使用できます。
以上、長くなりましたがWordPressのセキュリティに関するお話でした。他にも対策しなければならないことはありますし、便利なプラグインもありますので、もし何かありましたらコメントしていただければ可能な限りお答えします。
また、もしこのページになにかセキュリティの問題を見つけた方は、速やかにTwitterでお知らせください。