WordPressのシェア率はざっくり3割強、つまりリリースされるWebサイトの3つに1つはWordPressが採用されている事になります。
WordPressは多機能でテーマを切り替えるだけで簡単にWebサイトを変える事ができる為非常に人気ですよね。
プラグインを追加する事でブログサイトだけではなくECサイトや会員制サイトの構築も可能。
そこで気になるのがセキュリティ、多機能だからこそセキュリティ対策をしっかり施しておきたいもの。
その中でもかなり強固なセキュリティを実現できる2段階認証をWordPressに導入していきましょう!
なぜWordPressサイトに2段階認証が必要なの?
そもそもなぜWordPressに2段階認証が必要か、分かりやすく言うと不正ログインされる事でどんな被害があるのか知っておきましょう。
データの改竄
まず真っ先に思いつくのがこのデータの改竄。
言うまでも無くサイト内容が書き換えられ、意図しないページになってしまう可能性があります。
これによって引き起こされる困った事は、これまで信頼して読んでくれている読者の方へ不正な情報を提供してしまう恐れがある事。
例えばサイト内のハイパーリンクが全てフィッシングサイトへのリンクへ書き換えられてしまったら、間接的にフィッシングサイトの片棒を担ぐことになってしまいます。
また、Googleアドセンス等のアフィリエイトを導入している場合内容をアダルトサイトに書き換えられてしまったらポリシー違反でアカウント停止の恐れも。
偽情報に書き換え、フィッシングサイトへのリンク等はユーザーに被害を与える恐れ有り!
バックドアの設置
攻撃者がいつでもログインできるような下準備をバックドアといいます。
バックドアを仕掛けられると、攻撃者はいつでも簡単に不正ログインできるようにプログラムを書き換えたりします。
複数の脆弱なサイトにバックドアを仕掛け同時に特定のサイトへ攻撃を行う事が可能。
不正ログインされた事に気付け無いでいると知らぬうちに攻撃準備が進められている事も・・・。
バックドアは即座に気付かないケースもあるから本当に怖い・・・!
SPAMメールの送信
WordPressにはメール送信ができるプラグインが多く配布されています。
通常WordPressはメールアドレスを使用してログインしたりユーザーからの問い合わせへの返答ができるので、悪意あるユーザーにログインされると迷惑メールの送信に使われる恐れがあります。
先述したように有意義な内容に見せかけたフィッシングサイトを送信されたりする可能性が考えられますね。
実際にSPAMメールが原因で犯罪被害が起こったら高い確率で警察の取り調べの対象になり、必要の無い労力を払うことに(もちろん不正ログインされた事は調べれば分かる事だとは思いますが・・・)。
厳しい言い方をすると、Webサイト運営をする上で第三者に被害を与えない事は運営者の義務です。
甘いセキュリティが理由で踏み台にされたら被害者であると同時に間接的に加害者に・・・。
データ削除
先述した3つはどちらかと言うと一番困るのは第三者である読者・ユーザーです。
そして管理者側として最も困るうちの一つがこのデータの削除。
データの改竄と重複する部分はあるんですが、万が一バックアップを取っていなければ消されたデータは基本的に戻ってきません。
WordPressで書いた記事だけではなくプラグインの設定やテーマのカスタマイズ等、蓄積されているデータは多岐にわたります。
特にブログを収益化している場合、収入を得る手段が永遠に闇に消え去ってしまうかも知れません。
もちろん普段からバックアップは必須!でもそもそもデータにアクセスされない環境が重要!
WordPressサイトは2段階認証以外の対策でも大丈夫?
WordPressには実に様々なセキュリティ対策が存在しその多くはプラグインとして提供され、ユーザーはプラグインを導入する事で簡単に対策可能。
なんですが、僕は最低限とりあえず2段階認証さえ入れておけば良いと考えています。
プラスしていくつか同時に採用する方が良いですが、2段階認証が最も強固なセキュリティ対策。
他の対策と比較してみましょう。
BASIC認証
おすすめ度:
よくある管理画面にBASIC認証を入れるという手段。
プラグインはもちろん、.htaccessで簡単に設定できるので推奨しているサイトも多い方法。
しかしBASIC認証は毎度IDやパスワードを送信しなければならないのでサーバーへの負荷も連続すれば高く、非常に簡素な認証方法なので○○回ログインに失敗したら遮断するという設定も行えません。
WordPressサイトを乗っ取るという目的が達せなかった場合、BASIC認証へのDoS攻撃を食らってただサーバーを落とされる被害に合うだけです。
BASIC認証は個人的にはいらないかな・・・。
Google reCAPTCHA
おすすめ度:
Google reCAPTCHAはよくある「私はロボットではありません。」のチェックボックスにチェックを付ける認証方法。
最新のv3ではチェックを付ける必要も無く、ユーザーの動作分析をして不審な動きをしているユーザーのみ自動的に弾いてくれます。
例えば不正ログインを試みるBot(自動プログラム)を高い確率で弾く事ができます。
またWordPressサイトにはありがちなスパムコメント、プラグインではAkismetが非常に有名ですがAkismetは動作も遅くサイトが重くなりがち。
Google reCAPTCHAをWordPressに採用できるプラグインには非常に軽量な物があり、そういう意味でも手軽に実装できるので是非導入して頂きたい対策です。
Google reCAPTCHAは誰でも簡単に導入できる有効な手段だけど、人間相手には効果が薄いから組み合わせて使おう!
規定回数の失敗でIP制限
おすすめ度:
回数を指定して、一定回数ログインに失敗したらIPアドレスを制限するという方法。
これは非常に有効な手段だと言えます、ブルートフォースアタックのように片っ端からパスワードを入力するような攻撃に最適な手段。
しかしIDやパスワードの使いまわしをしているような方だと規定回数以内でログインできてしまう可能性も・・・。
基本的にはメイン手段ではなく、2段階認証と組み合わせて使えばかなり安全性が上がります。
これはぜひ導入したい対策!ただし組み合わせ必須。
ログインページのURL変更
おすすめ度:
これも一定の効果がある方法だと言えます、「そもそもログインするページが分からなかったらログインできないよね」という発想。
プラグインで簡単に実装可能なので手軽ですよね!
ただしこれだけ単品で導入すればOKかというとそんな事ないです、ログインページが分かってしまえば危険性は無対策状態と変わりません。
あくまで組み合わせて利用すべき対策です。
2段階認証と組み合わせて導入すると更に安全!
ユーザーIDを隠す
おすすめ度:
個人的には別に隠さないで良いかな、という手段のユーザーIDを隠すセキュリティ対策。
WordPressサイトはURL末尾に?author=1とつけてアクセスすると自動的にリダイレクトされユーザーIDがURL上に表示されます。
つまりログインする為に必要なIDがこれで分かる訳ですが、そもそも他のWebサービスを見てもユーザーIDって公開されている事がほとんどですよね。
例えばTwitterはユーザーID宛へリプライを送信します。
もちろん可能な限り秘匿した方がセキュリティレベルは上がると思いますが、多くの方はIDを使いまわしています。
例えばあなたのWordPressサイト、ユーザーIDがTwitterやInstagramなんかとIDが一緒じゃありませんか・・・?
だとしたらほとんど意味無いと一緒です、不正ログインを試すなら他のサイトで使っているIDからWordPressサイトのIDを推測するなんて基本中の基本。
それなら2段階認証を取り入れてそもそもログインが限りなく不可能な状況の方がよっぽど安全ですよね。
何度も言うけどもちろん隠した方が安全だよ!でも隠したからそれだけでOKというのは違うからね!
WordPressサイトに2段階認証を導入して不正ログインを防ぐ
不正ログインされた時の恐れが分かったところで、いよいよそれを防ぐ2段階認証を理解します。
2段階認証はID/パスワードの第1認証、生体認証やセキュリティキー、ワンタイムパスワード(OTP)等の第2認証を組み合わせた方式で、Two Factor Authentication(2FA)と呼ばれています。
2段階認証については「Google Authenticatorで2段階認証を導入!不正アクセスを可能な限り遮断」も合わせてお読み下さい。
直訳するとFactor=要素なのでTwo Factor Authenticationは2要素認証だけど、便宜上2段階認証と記述してるよ。
メール(SMS)認証
おすすめ度:
Eメールや携帯電話のショートメッセージ(SMS)を利用した認証方法です。
Webサイト上でログインしようとID/パスワードを入力するとメールが送信され、受け取ったユーザーはメールに記載されている4~8桁程度の認証コードを入力して認証します。
一見強固な認証手段に思えますが、メールは盗聴の恐れがある為他に手段があるなら利用すべきでない認証方法です。
実際に過去世界で著名なサイトであるRedditでSMSインターセプトによる認証突破が報告されています。
スマホでももちろん、ガラケーでも導入ができる為利用者は追加コストが必要無く、手っ取り早く誰でも導入できる認証手段と言えます。
他の手段があるならメール認証はなるべく避けよう!でも何もやらないより遥かにマシ。
App認証
おすすめ度:
Google Authenticator等のスマホ認証Appを利用した認証手段です。
基本的に通信を行う必要が無く、手元のスマホで簡単に導入ができるのでメール(SMS)認証より信頼度が上がります。
メール(SMS)認証同様追加コストが必要ありませんがガラケーでは使用ができません。
Appを導入するだけで非常に簡単です。
低コストで今すぐ導入できる強固な認証手段!
FIDO認証
おすすめ度:
FIDO認証はFast IDentity Online(速いオンライン認証)の略です。
- 生体認証やセキュリティキーを利用する
- パスワードが不要(UAFの場合)
- 生体情報はネットワークに送信されない
FIDOは指紋、虹彩(目)、静脈、顔認証のような生体認証や物理的なセキュリティーキーを使い、基本的に自分自身がその場にいないとならないorセキュリティーキー等のデバイスがその場に無ければならないという制約があるので非常に安全性が上がります。
生体認証はiPhoneやAndroid端末に指紋認証や顔認証が搭載されているので皆さんにも馴染み深いですよね!
FIDO認証はセキュリティが非常に強固ですが、認証方法によっては専用のデバイス(指紋認識リーダーやセキュリティキー)を導入しなければならないので少しコストが掛かります(数千円~1万円程度)。
しかし近年ではWebサイトのログインにも生体認証を使える技術が確立されているので、近い将来例えばTwitterへのログインやAmazonでの買い物が指紋や顔認証でできるようになると予想されています(既にYahoo!JapanのAndroid版ではID/パスワード不要で指紋認証ログインができるようになっています)。
これから主流になるであろうFIDO認証!僕も自宅のパソコンのログインは生体認証を取り入れています!ちなみに残念ながらWordPressにはまだ生体認証ログインが設定できるプラグインはありません・・・。
バックアップコード
バックアップコードはメール(SMS)、App、FIDOと違いその名の通りバックアップの為にある認証方法、あくまでサブ的な位置付けです。
上記の認証方法でログインできない場合に、事前に発行したバックアップコードを使って一時的にログインし対処します。
基本的にバックアップコードは1度使用すると同じコードは2度と使用できず、規定個数を使い切ってしまうと再生成しなければログインできません。
あくまで緊急時用と割り切って使うべきであり、基本は先述した3つと組み合わせて使用します。
バックアップコードは絶対にメインで使わない事!
WordPressサイト用2段階認証プラグイン比較
WordPressサイトに2段階認証を導入する場合、プラグインを使って実現するのが一般的です。
- 頻繁にアップデートされているもの
- 利用者が多いもの
可能な限りこの2つを選びましょう、アップデートが古いと脆弱性がある恐れがありますし利用者が少ないと単純に情報を集めるのに苦労します。
Two Factor
Two Factorは非常にシンプルな2段階認証提供プラグインです。
- メールによる認証コード送信
- 認証Appを利用した認証コード表示
- FIDO U2Fを利用した認証
- バックアップコードの発行
3種類の認証方法と万が一スマホが故障・紛失してしまった場合の使い捨てバックアップコードの発行も提供しています。
特に認証App、FIDO U2Fを利用した認証はどちらも非常に強固なので複数種類に対応しているのは嬉しいですね!
非常に簡素なので、設定ページもアカウントページ内で完結しており日本語翻訳もされているので初心者には使いやすいプラグインです。
手っ取り早く2段階認証を導入したいなら最もおすすめ!
メール認証 | ○ |
認証App | ○ |
FIDO | U2F |
バックアップコード | ○ |
信頼できるデバイス登録 | × |
日本語対応 | ○ |
おすすめ度 |
Two Factor Authentication
Two Factor AuthenticationもTwo Factor同様に認証Appを利用したログイン設定が行えます。
しかしこちらはFIDO U2Fを利用した認証に非対応、更にバックアップコードは有料(£19、執筆時の日本円で約2,700円)。
ただしTwo Factorにはなかった信頼できるデバイスの登録ができるので、頻繁に2段階認証をするのが面倒な方は利用する価値有り。
WordPressのユーザー権限(管理者/編集者/投稿者/寄稿者/購読者)ごとに2段階認証設定可能、例えば購読者は必要無いけど管理者は2段階認証を必須にする、という設定が可能です。
こちらのプラグインは全て英語、残念ながら現在日本語翻訳はされていません。
FIDO認証非対応、バックアップコード有料とTwo Factorに比べるとちょっと微妙。信頼できるデバイス目的なら後述するWordfence Securityの方がおすすめ!
メール認証 | × |
認証App | ○ |
FIDO | × |
バックアップコード | ○(有料£19) |
信頼できるデバイス登録 | ○(有料£19) |
日本語対応 | × |
おすすめ度 |
miniOrange 2 Factor Authentication
miniOrange
認証コード以外にもアプリのプッシュ通知によるログインや質問への回答によるログインも行えますし、それ以外にもIPアドレスブロック機能やデータベースのバックアップ、メールによるレポート送信、Google
ただし多機能ゆえ、しっかり設定を行うには事前のセキュリティ知識が必要です。
多機能を求めるならminiOrange 2 Factor authenticationは最有力候補です。
多彩な手段で認証が行え、その他のセキュリティ対策も抜群!
メール認証 | ○(有料$5/年) |
認証App | ○ |
FIDO | ○(有料$30/年) |
バックアップコード | ○(有料$30/年) |
信頼できるデバイス登録 | ○ |
日本語対応 | × |
おすすめ度 |
Wordfence Security
Wordfence
最大の特徴として、無料で「信頼できるデバイス」への登録ができます。
同じ環境からログインする事がほとんどの方は無料で使える点は嬉しいですね。
もちろんバックアップコードにも対応しており、miniOrangeのようなGoogle reCAPTCHAの導入やIP制限等も利用可能(データベースのバックアップ機能は無し)。
過去Wordfenceの2段階認証は有料扱いでしたが、現在は完全に無料で提供されています。
信頼できるデバイス登録を使いたい方は最有力候補ですが、セキュリティ的には毎度入力する方が遥かに好ましいので僕はあまりおすすめしません(もちろんWordfence Securityを使って信頼できるデバイス機能をオフにして利用すればOK)。
できればFIDO認証に対応してほしいけど、信頼できるデバイス登録が唯一無料で行える点は有意義!
メール認証 | × |
認証App | ○ |
FIDO | × |
バックアップコード | ○ |
信頼できるデバイス登録 | ○ |
日本語対応 | × |
おすすめ度 |
Jetpack by WordPress
一昔前はほとんどのWordPressサイトに導入されていたであろうJetpack
しかし、最近は(少なくとも日本国内のブログサイトにおいて)WordPressテーマが進化し多機能化した事でJetpackを利用するユーザーも相対的に少なくなっているように思います。
Jetpackの2段階認証は少し特殊で、ログインにwordpress.comのIDを利用します(そもそもJetpackの利用にwordpress.comIDが必要)。
で、Jetpackの2段階認証はあくまでwordpress.comIDに対してだけで通常のID/パスワードログインもそのまま併用できるのでぶっちゃけ何の意味もありません。
形としては2段階認証が提供されているけれど、セキュリティ的な意味で言えば完全にザルなのでJetpackの2段階認証は利用不推奨です。
ぶっちゃけ「この2段階認証何の意味があるの?」という感想・・・
メール認証 | × |
認証App | ○ |
FIDO | × |
バックアップコード | ○ |
信頼できるデバイス登録 | × |
日本語対応 | ○ |
おすすめ度 |
WordPressプラグインTwo Factorを利用した2段階認証導入
それでは実際にWordPressサイトにTwo Factorプラグインをインストールし、認証Appを用いた2段階認証を導入していきましょう!
なお既にスマホ側にGoogle
もしGoogle Authenticator等の認証Appを利用した事が無い方は「Google Authenticatorで2段階認証を導入!不正アクセスを可能な限り遮断」を合わせてお読み下さい!
プラグインのダウンロード・インストール
まずはプラグインのダウンロードとインストールを行います。
公式サイトからZIPファイルをダウンロードするか、プラグイン検索してダウンロードします。
「Two Factor」で検索すると同じような2段階認証プラグインがかなり表示されますが、画像のアイコンを参考に同じものをインストールして下さい。
今すぐインストール→有効化とクリックし、Two Factorを使用できる状態にします。
2段階認証有効化
インストールが完了すると、ユーザー > あなたのプロフィール内にTwo Factorの設定が表示されます。
まずはGoogle Authenticator等の認証AppでQRコードを読み込みます。
読み込みが完了したら認証コード欄に6桁の数字を入力して”送信する”をクリックで登録完了です。
続いて有効のチェックボックスをオンにし有効化、更に右隣のメインのラジオボックスにチェックを入れます。
最後に画面一番下の”プロフィール更新”ボタンをクリックすれば準備完了です。
バックアップコードの有効化
2段階認証の設定はできましたが、万が一スマホを紛失したり壊してしまった場合ログインができなくなってしまいます。
そこで、不足の自体に備えてバックアップコードを使ってログインできるようにしておきます。
検証コードを生成ボタンをクリックするとこのように10個のバックアップコードが生成できます。
このバックアップコードは必ずWordPressのID/パスワードとは別で保管しておいて下さい、3つが揃えば誰でもログインできてしまいます。
なお”ダウンロードコード”ボタンをクリックすると.txt形式でパソコンに保存できます。
最後にチェックボックスにチェックを入れ、プロフィール更新ボタンをクリックして完了です。
2段階認証の確認
それでは実際に2段階認証が設定できているか試してみましょう!
一度ログアウトして再度ログイン画面を表示します。
Two Factorはログイン画面自体はそのままですが、いつも通りログインしようとすると次のページで2段階認証を求められます。
こんな感じで認証コード欄が表示されればOK!
後は認証App側に表示された6桁の認証コードを入力してログインすればいつも通りログイン可能。
もしスマホの故障等で認証Appが使用できない場合は、下の「または、独自のバックアップ方法をご使用下さい」をクリックしてバックアップコードでログインができます。
バックアップコードは性質上1度しか使用ができず、10個全て使い切ってしまったら再生成が必要なので覚えておきましょう。
Two Factorで2段階認証以外の認証方法を使う
ここまでの設定でTwo Factorを利用して
- 認証Appによる2段階認証
- バックアップコードによる緊急ログイン
この2つの方法でログインが可能になりました。
設定画面を見れば分かる通り後2つログイン方法があります。
- メール認証
- FIDO認証
それぞれ理解しておきましょう。
メール認証
先述した通り、可能な限り避けた方が良いオプションです。
メール認証は万が一メールを盗み見られたら終わり、これは一見認証Appと変わらないように思いますがネットワーク上をメールで送受信する分傍受されるリスクは認証Appより上です。
特に外出先のフリーWi-Fiを良く利用される方は暗号化されていないフリーWi-Fiだと簡単に傍受可能。
認証Appや後述するFIDO認証が採用できる場合、利用すべきではないです。
FIDO認証
Two FactorのFIDO認証はU2F、ID/パスワードとは別に認証を行う2段階認証です。
YubiKey
対象デバイスを持っている場合は「新しいキーを登録」から使用ができます。
物理デバイスを使用するのでパスワードを入力しているところを隠し見される・・・なんて超アナログな心配も無く、利用できるなら是非利用したいですね。
WordPressサイトに2段階認証を導入しよう まとめ
WordPressサイトは多機能な反面、1度不正ログインされてしまうとサイト全体を壊滅的にされてしまう恐れがあります。
だからこそ”不正ログインされたら”ではなく、”不正ログインさせない“対策が必要不可欠。
そして不正ログインを防ぐ為には2段階認証が最も手軽で最も強固です、基本的に2段階認証を入れているだけでほとんどの不正ログインを防ぐことができるでしょう。
Webサイトを運営する人間として、Webサイトを脆弱(=不正ログインしやすい環境)にしておく事は絶対やってはいけません。
また、Webサイトで収益を得ている方は自分の大切な収益源を失ってしまうリスクがあります。
2段階認証は簡単に導入できるので、是非導入して自分の大切なサイトを守りましょう!
コメント