WordPressでの
不正ログイン対策について

検索サイトからの評価が高まり、サイトへのアクセスが拡大してくると、多くのケースで管理画面への不正なアクセス(アタック)も拡大する。特に、お使いのCMSがWordPressの場合、特に多くの不正アクセスが発生する。

これは、インターネットで使用されているCMSの多く(50%超え)がWordPressである事にも起因している。つまり、ハッキングする不正アクセスする側からすれば、WordPress攻略方法を確立すれば効率がよいという事になる。

 

スクリーンショット 2016-06-30 17.00.46
不正アクセスログリスト(画像をクリックすると拡大表示されます)

左の画像(画像をクリックすると拡大表示されます)は、管理画面への不正アクセスリストの一部である。

ご覧いただいておわかりの様にadminというユーザー名でのアクセスが多い。これは、wordPressインストール時に何もしなければadminというユーザー名で管理者アカウントが生成されるからである。

では、具体的にどのように、こういった不正アクセスのログ(記録)を取得するのか?

弊社では、Crazy Boneというプラグインを活用している。これは、管理画面へのアクセスログを取得する。(※現在ではCrazy Boneは使用していない。理由:アプリのアップデートが2年ほどされていない)

使い方は、至ってシンプルで、管理画面左メニューの「ユーザー」→「ログイン履歴」で表示される。そして、プルダウンメニューで、「全て」と「login_error」チョイスして「フィルターを適用」をクリックすると、上記のリストが表示される。

表示されない場合は、不正アクセスがなかったという事で、一安心である。ただ、プラグインを設定してすぐの場合、ログが取得できていないのである程度の期間の後、及び継続的にログを確認するのが望ましい。

all in one wp securityというプラグインの場合、ログインエラーの状況だけではなく、さらにログインしたユーザーも確認できるので、実際に不正アクセスが実行されてしまった事も確認できる。

 

こういった不正アクセス対策として、
何を実行すべきなのかをリストにしてみた。

  1. 管理画面に不正アクセスをさせない。
    → ログインURLのカスタマイズ。※以下に設定のフローを記載。
  2. 不正アクセスがあっても簡単にログインをさせない。
    → Login Lock Downと呼んでいる「一定回数ログインに失敗した場合、アクセス元のIPアドレスを一定時間プロテクトする」機能を設定にする。※以下に設定のフローを記載。
  3. 不正アクセスがあるが、まだ、スパマーはログインできていない。
    → そのアクセス元IPアドレスをブラックリストとして登録して、指定IPからのアクセスを遮断する。*(アスタリスク)を使用して、一定の範囲のIPアドレスをブロックする事も可能。※以下に設定のフローを記載。
  4. スパムアクセスのユーザー名にadminが多い。
    → ユーザー名 admin を使用しない。もし、初期設定してしまった場合、難易度の高いパスワードを設定する。
  5. ログインIDを知られないためにも、ユーザーのニックネームを設定する。初期状態では、IDがそのままユーザー名として使用されるので注意が必要です。つまり、サイトにログインIDを公開している状態なのです。(ただしくは、この方法でもURLからログインIDは判明してしまいますので、管理権限の低いユーザーでの投稿に変更します)
  6. ログイン画面に、ユーザー名とハワード以外にも、簡単な計算(計算して正しい数字をいれないとログインできない)を設置することも有効のようです。ログインキャプチャと呼ばれています。
  7. パスワード再設定、つまり「パスワードをお忘れですか」のリンク先にも上記と同じ方法のキャプチャを設置すると有効のようです。つまり、メールアカウント自体がハッキングされている事を想定する必要もあります。

 

これらの設定が重要です。最も簡単なのは、All In One WP Securityというプラグインを活用する(弊社も活用しています)。

 

上記1.の場合、管理画面の左メニュー「WP Security」から「Brute Force」を選択、初期表示される「Rename Login Page」の「Enable Rename Login Page Feature」にチェックをいれて、その下の「Login Page URL」で、管理画面へのアクセスURLをカスタマイズする。

つまり、通常(多くのケース)、管理画面へのアクセスは、
https://dt-a.net/wp/wp-login.php
ですが、これを例として、以下のようにカスタマイズ(例として)
https://dt-a.net/exsample-login
することで多くの不正アクセスを排除する事ができる。

※一部のサーバでSSLを使用している場合、うまくいかないケースもあります。この場合は、FTPアクセスしてWP Securityのパーミッションを一端0000にしてからリトライです。

 

上記2.のLogin Lock Downは、左の管理メニュー「WP Security」の「User Login」の初期表示される「Login Lockdown」の「Enable Login Lockdown Feature」にチェックを入れて、その下に見える「3」「5」「60」の数字(初期状態の数字でも問題はない)は、5分間に3回ログインに失敗した場合、60分間、アクセス元のIPをプロテクトする、という意味です。

 

上記3.のブラックリスト登録は、まず不正アクセスしてくるIPアドレスを取得する事から始まる。もし、こういったIPアドレスのリストが必要な場合、ご相談いただければお渡しできますが、敵(スパムアクセス元)もIPアドレスは、いろいろと変更してくるので効果が薄いかも知れません。(例として一般のプロバイダを利用していれば、毎回アクセス毎にIPアドレスは変わるのです。これを活用されるとかなりIPアドレスのリストが必要になります)

その上で、左の管理メニュー「WP Security」の「Blacklist Manager」から「Enable IP or User Agent Blacklisting」にチェックをいれて、その下の「Enter IP Addresses」にIPアドレスのリストをいれます。もしくは、さらに下にある「Enter User Agents」にユーザーエージェント」いれる事で、不正アクセスもとのシステムをプロテクトする事も可能なようです(実際には試していません)。

 

上記以外にも、顧客向けに対策したのは、

  • コメント無効化。
  • Pingback機能の無効化。
  • DBのPrefixのカスタマイズ(初期状態ではwp_になっている)。
  • htmlソース内のwordpressバージョンを非表示にする。

といった対応をしました。

 

そもそも、不正アクセスされて、どんな問題がおきるのか?ですが、ここ数年、弊社顧客の例ですと、以下ような問題がありました。

 

  • ウィルスを拡散する土台にされた。つまり、そのwebページにアクセスすると、何らかのウィルス感染するようにしかけられた。(当時、弊社にノウハウがなく専門業者にお願いして対応しました。結構なコストが発生しました。)
  • 上記とDoDos攻撃などの土台にされる可能性もある。
  • 怪しい外部リンク、例えば、webカジノや怪しい薬剤販売のwebサイトへのリンクが設置された。(3,000カ所を超る外部リンクを設置されました。ほとんどの部分手作業で取り除く事になった。トホホホ。)

 

これらのトラブル経験から
サイトの管理運営を最適化したサービス
DtA管理サーバ」を始めました。

 DtA管理サーバ