読者です 読者をやめる 読者になる 読者になる

マネー報道 MoneyReport

マネーにまつわる報道を取り上げ、自分の切り口で切り取り、噛み砕いてお伝えします。

WordPressの不正ログイン対策の数々!諸先輩方に学ぶ(^^)/

スポンサーリンク
あとで読む

WordPressのログイン防御

WordPressで作ったWebサイトの本格運用に向けて、WordPressを外部攻撃から守るためのセキュリティー向上策を調べつつ施している真っ最中です。
昨日はログイン画面をガードして不正アクセス防止対策を施しました。

いかんせんワードプレス初心者なもので、的外れの部分もあったかもしれませんが、色々なサイトで紹介されている不正ログイン対策で良さそうな対策で、かつ必要最低限で運用は楽なものを選んで導入してみました(^-^)w

セキュリティ対策でガードが硬くなったのはよくても、「運用が面倒臭いのはいやだな~」というのがあったので、その辺のバランスを考えてチョイスしてみました(^-^)w

ただ所詮、ワードプレス初心者なのでツッコミどころが多かった様で、多数のブコメを頂きました(^o^;

「他にもこんな対策もあるよ!」

という点で非常に有用なアドバイスが多かったので、ご紹介させて頂きます(^^)/

http://www.flickr.com/photos/11678844@N07/2986187518
photo by Eric M Martin

アクセス制限範囲はもう少し広めが良い最低限で良い

まずはアクセス制限の拡張のお話をば。

id:weepさん
wp じゃない話ですが、Movable Type は当初、ユーザーデフォルト設定がid:MelodyでPass:Nelsonだったので、総当たりで乗っ取られが多発。デフォルトのID/Pass設定した状態で配布しなくなったとか。 / あと wp-* ディレクトリ全てな。

MovableTypeは初期IDとパスワードがセットされてたんですか!?
それは突破されますね(>_<)
不正ログインされ放題(^^;

昨日は管理画面が入っている「wp-admin」ディレクトリをアクセス制限対象としたのですが、「wp-* ディレクトリ全て」を対象にした方が良いとのアドバイスを頂きました。
他の「wp-* ディレクトリ」は下記の2つですかね?

  • wp-content
  • wp-includes

あまり中身を覗いた事無いです(^^;
確認してみます。

まずは「wp-content」ディレクトリ。
テーマとかが入っていた様な・・・

f:id:MoneyReport:20151031075121j:plain

やっぱり!
後はプラグインやキャッシュ、言語パックとかも入ってますね。

続いて「wp-includes」ディレクトリ。

f:id:MoneyReport:20151031075220j:plain

こちらはスタイルシートやフォントにJavaScript、WordPressの写真格納フォルダなんかも入ってますねー。
確かにこの辺が攻撃されると、別テーマがインストールされてしまったり、マルウェアをばらまく様なプラグインやJavaScriptなんかも入れられてしまうのかもしれませんね(>_<)

昨日取った「同じプロバイダー以外からのアクセス制限」を「wp-content」と「wp-includes」ディレクトリにも施したいと思います(^-^)/
{2015/10/31 16:34追記}「同じプロバイダー以外からのアクセス制限」を「wp-content」と「wp-includes」ディレクトリにも施してから動作検証したところ、
スタイルシートは読み込まないし、JavaScriptも動かないしでWordPressがまともに動かなくなりました(TOT)

ですので、アクセス制限を掛けるのは昨日の記事で書いたとおり「wp-admin」ディレクトリのみに適用されるのが良いです!

アドバイス頂いた内容とはいえ未検証でご紹介してしまい、申し訳ありませんでしたm(_ _)m

※注意※
万が一、こちらの内容を適用してしまった方は「wp-content」と「wp-includes」ディレクトリに配置した「.htaccess」ファイルを削除して下さい。
よろしくお願い致します。

レンタルサーバーのお話

まずはWordPressをインストールするレンタルサーバー周りのお話から。

id:operationservicebuさん
そもそも「ロリポップ」でのWP本格運用を私はオススメしませんが・・・。

やはりレンタルサーバーの選択肢として「ロリポップ」選ぶのダメですか(-_-;
ロリポップは2013年のWordPress乗っ取られ事件も起こしていますし、薄々「イカンかな~」とは思いつつも安さに惹かれて(^o^;
本格運用を目指すWebサイトを構築する時には、より良いレンタルサーバーを検討したいと思います(^^)/


続きまして安価なラインナップから、かなり本格的なさーばーまで揃う「さくらインターネット」のオススメが。

id:psneさん
SSL/TLSが使えて特定ディレクトリの国外IPを弾く機能が選べるさくらのレンサバが便利です。

さくらのレンタルサーバーならSSLが使えるんですね(^^)w
教えて頂きありがとうございます!

さくらインターネット

でもTLSって何でしょう?

TLS 【 Transport Layer Security 】
TLSとは、インターネットなどのTCP/IPネットワークでデータを暗号化して送受信するプロトコル(通信手順)の一つ。データを送受信する一対の機器間で通信を暗号化し、中継装置などネットワーク上の他の機器による成りすましやデータの盗み見、改竄などを防ぐことができる。


元はSSL(Secure Socket Layer)と呼ばれるプロトコルで、SSL 3.0の次のバージョンがTLS 1.0という関係(機能的にはほぼ同じ)にあるが、SSLという名称が既に広く定着していたため、実際にはTLSを指していてもSSLと表記したり、「SSL/TLS」「TLS/SSL」などと両者を併記したりすることが多い。


TLSとは|Transport Layer Security|SSL/TLS - 意味/解説/説明/定義 : IT用語辞典

SSLの発展形がTLSなんですね~♪
現在では「SSL」とだけ書かれていても実際にはTLSが使われている場合もある、と。

また「特定ディレクトリの国外IPを弾く機能が選べる」のは良さげですね(^^)v
ロリポップよりも、さくらインターネットの方が良いのかもしれません。


続いてツッコミ。

id:TTTT2さん
おい。URLの後ろに「/?author=1」と〜

あ、いえこれは私がやっている手法ではなくて、昨日参考にしていたサイトに載っていた手法と言うだけでして(^-^;
でも実際にWordPressの他の方のサイトにアクセスして実行してみたら

 /author/user_name/

という形でユーザー名がばっちり見えてしまったサイトもあったので、やはりユーザー名が見えなくなる対応は必要かな、と思った次第でした。


次は私の勘違いのご指摘。

id:isidaiさん
冒頭にロリポの改ざん事件が例示されてるけど、これはWordPressの脆弱性ではなく、サーバのパーミッションと設定の不備が原因。ユーザは対策のしようがなかったのでこの例示には不適切。

そうなんですか!?
失礼しました<(_ _)>
あまりにも大量のWordPress不正ログイン事件だったので引き合いに出してしまいました。
サーバーのパーミッション設定が悪かったんですね~(-_-;

パーミッション周りの設定に付いてはまだ見直していないので、近々見直して記事にしたいと思います(^^)v
教えて頂きましてありがとうございました(^^)/

セキュリティプラグインのススメ

また昨日は自前での不正ログイン対策をご紹介しましたが、不正ログインをガードしてくれる便利なプラグインも多数公開されている様です。
レンタルサーバーの設定周りが分からなかったり、FTPが使えない初心者の方はこういったプラグインを利用した方が簡単で良いでしょうね(^-^)w

id:masamirockさん
Jetpack入れて二段階認証とかSSOを入れると良いかと思う

Jetpack」プラグインですね(^^)w
これは一度インストールした事があります。
でも多機能過ぎてアンインストールしました(>_<)

Jetpackで二段階認証が出来るんでしたら、利用するのも手ですね♪

6. また、オプションとして認証設定を更に強化することができます。[JetPack]>[設定]、Jetpack シングルサインオンを有効化したことで表示される[設定]をクリックします。

7. 二段階認証は、その名のとおり、有効にするとWordPress.comにログインかつ、モバイルデバイス上のアプリで生成されるワンタイムパスワードを要求することにより、ログインセキュリティをより向上することができます。
メール照合は、インストールしたサイトのユーザーメールアドレスに一致する WordPress.com アカウントへの自動紐付けを行わなくなります。


GMO WP Cloud Support Information| WordPress専用高速サーバー【GMO WP Cloud】

「SSO」って何でしょう(^^;?
知らない事ばかりで勉強になります<(_ _)>

Jetpack シングルサインオン(SSO)
Jetpack シングルサインオンモジュール今まで WordPress.com Connect という名称だったモジュールがなくなり、「Jetpack シングルサインオン」になりました。有効化すると、WordPress.com にログインした状態で、ユーザー名やパスワードを入力する必要なくログインできます。



WordPress.com のログインは二段階認証に対応しているため、Jetpack を入れたサイトのパスワード強度を上げつつ二段階認証プラグインも入れ、このシングルサインオンを使えばログインセキュリティを向上できるはずです。


Jetpack 2.6 のシングルサインオン機能など | ja.naoko.cc

「シングルサインオン」機能の事をSSOと呼ぶんですね!
二段階認証は面倒臭げですが、二段階認証した上でWordPress.comのID・パスワードでログインすれば簡単に利用できる様ですね♪

「Jetpack by WordPress.com」のプラグインを利用されている方は、二段階認証とSSO(シングルサインオン)を有効化すると良いですね(^^)v


続いてOS部さん再び。

id:operationservicebuさん
「SiteGuard WP Plugin」を入れてみてはどうでしょう?ログインページのURL変更、ログイン画像認証などいろいろ出来ますよ。

SiteGuard WP Plugin」ですか?
WordPressについては勉強を始めたばかりなので、まだまだ知らない事の方が多いですね(^-^;
教えて頂きありがとうございます<(_ _)>

調べてみると・・・

SiteGuard WP Plugin
概要
SiteGuard WP Pluginは、WordPressにインストールするだけで、セキュリティを向上させることができます。
SiteGurad WP Pluginは、管理ページとログインに関する攻撃からの防御に特化したセキュリティプラグインです。
WAF ( SiteGuard Lite )の除外ルールを作成する機能もあります。( 使用するにはWAFがWebサーバにインストールされている必要があります )


SiteGuard WP Plugin

SiteGuard WP Plugin機能一覧

機能 機能説明
管理ページアクセス制限 ログインしていない接続元から管理ディレクトリ(/wp-admin/)を守ります。
ログインページ変更 ログインページ名を変更します。
画像認証 ログインページ、コメント投稿に画像認証を追加します。
ログイン詳細エラーメッセージの無効化 ログインエラー時の詳細なエラーメッセージに変えて、単一のメッセージを返します。
ログインロック ログイン失敗を繰り返す接続元を一定期間ロックします。
ログインアラート ログインがあったことを、メールで通知します。
フェールワンス 正しい入力を行っても、ログインを一回失敗します。
ピンバック無効化 ピンバックの悪用を防ぎます。
更新通知 New WordPress、プラグイン、テーマの更新を、メールで通知します。
WAFチューニングサポート WAF (SiteGuard Lite)の除外リストを作成します。

おぉ凄い!
かなりの事をやってくれますね!
ログイン周りのセキュリティを一気に高めてくれる感じですね♪
昨日の私の記事の対応が難しい人は、こちらの「SiteGuard WP Plugin」を入れるだけでも相当強固な守りに出来るんじゃないでしょうか(^-^)w

.htaccessでやるならbasic認証も!

プラグインを使わないなら「ここまでやったら?」というご意見も。

id:shimokiyoさん
普通のレンサバでWordPress使うと管理画面にSSLつかないから対策とっても結局パスワード平文で送られるんだけどな。.htaccessでやるならbasic認証もやった方がいい。

「管理画面にSSL付かない」というのは確かにありますね~(-_-;
SSL化するのには「WordPress HTTPS(SSL)」を利用するのが良さそうではありますね。

「HTTP」と違う部分は、通信が暗号化されるか・されないかの違いです。【HTTPS】では通信が暗号化されるので、安全です。
ネットショップなどの「個人情報」や「クレジットカード情報」などを登録するページでは、ほとんどが【HTTPS】で通信されています。
今回の記事では、Wordpressの管理画面(ログイン画面も)を、【WordPress HTTPS(SSL)】プラグインを利用して、SSL通信にするための手順を解説していきます。


【WordPress HTTPS(SSL)】プラグインで、WordPressの管理画面をSSL通信に設定する手順

より重要なWebサイトやWebサービスの運用をされる時にはあると良いかもしれません。

「BASIC認証」ですか~。
あれやると結構面倒臭いんですよね(^o^;

ログイン画面が危ない!WordPressの「wp-login.php」をBASIC認証でアクセス制限する方法

他のサイトでやりましたけど、毎回ユーザー名とパスワードをWordPressログイン前に聞かれるので、結局2回IDとパスワードを入力しないとログインできない・・・(;_;)
セキュアなんでしょうけど、少々面倒な感じが・・・。

まとめ

色々な方のアドバイスをご紹介させて頂きました。

いずれにしても言えるのは、レンタルサーバーで簡単インストールでWordPressをインストールしただけの状態のままワードプレスを使うのは不正ログインに対して無力過ぎる、という点です。

デフォルト設定で使うと、いつ何時(なんどき)不正ログイン被害を受けてもおかしくありません(>_<)
単なるブログなら良いでしょうが、ブログ飯をやっている方や、多くの人が利用してくれるWebサイトをWordPressを使ってサービス提供している人は不正ログインはシャレになりません(T_T)

不正ログインされてしまうと、コンテンツがごっそり持っていかれたり、マルウェアやウイルスをばらまくサイトに改ざんされてしまったり、誹謗中傷等を書き込まれてしまったりと、かなりのダメージを受けてしまいます。

WordPressを利用されている方で不正ログイン対策を何もやっていない人は、昨日と今日の記事で紹介した対策のいずれか1つでも良いですから導入されて下さい。
1つでも対策が入っていると、相手の攻撃に対して多少は時間稼ぎになったり、攻撃してきても突破できずに退散していく可能性があります。

また本格的なWordPress運用をされている方は、ご自身で導入する組み合わせを吟味され、必要な防御策を施される事を推奨します。

不正ログイン防御を施し快適なWordPressライフを(^-^)/

追記(2015/10/31 16:34)

id:weepさんから頂いたアドバイスで

id:weepさん
あと wp-* ディレクトリ全てな。

の部分をアクセス制限を掛ける範囲のご指摘と思い、「wp-admin」ディレクトリだけではなくて「wp-content」と「wp-includes」ディレクトリにも施した方が良いよと認識し記事に書きました。
しかし実際に「wp-content」と「wp-includes」ディレクトリにアクセス制限を掛けたところ、自分のプロバイダー以外のアクセスでWordPressにアクセスした場合に、「スタイルシートが反映されない」、「JavaScriptが動作しない」事象が発生致しました(>_<)

アドバイスを私が拡大解釈した結果、間違った情報をお伝えしてしまい申し訳ありません<(_ _)>

アクセス制限についてはディレクトリでは「wp-admin」ディレクトリだけに掛けて頂くのが正しい対応になります。

動作未検証でお伝えしてしまったが故に間違った情報をお伝えしてしまいました。
今後はこの様な事が無いように注意してお伝えさせて頂きたいと思います。
申し訳ありませんでした。