カテゴリー
WordPressカスタマイズ

管理画面(ダッシュボード)へのアクセスを制限する

ガンプラー攻撃の媒体としてウェブサイトが使われる原因のひとつが FTP 経由です。
しかし、 CMS の場合はもうひとつ大きな危険があります。
ログイン ID(ユーザー名)とパスワードを盗むブルートフォースアタックで管理画面にログインされてしまうと、やりたい放題なのです。
普及率の高い WordPress はとくに狙われやすいといえます。
「すべての WEB サイトオーナーのガンブラー攻撃対策」では FTP 関連のセキュリティについて書きましたが、 WordPress のダッシュボードの乗っ取りはまた別の問題です。
実際にログインパスワードを解析されるという被害はかなり多いのです。

ブルートフォースアタック(総当たり攻撃)といわれる不正ログインの手法では辞書ツールなどを使って、文字通り理論的にありうるパターンを総当たりでログインを試みます。
プログラムやツールなどを使い、回数制限なしにアタックしてきますので、非常にやっかいです。

単純な文字列を使わない

ブルートフォースアタックによる攻撃ではログインユーザー名が admin の場合には目をつけられてしまうと時間の問題でログインされてしまう可能性が高いといえます。
基本中の基本ですが、ログイン ID に admin は使わない。
パスワードは憶測されにくい複雑なものを使用します。

ただし、ここでひとつ落とし穴があります。

それは、ユーザー名を変更しても WordPress では簡単にユーザー名を知ることができるということです。

WordPress のユーザー名は丸見え!?

パスワードの強度

ユーザー名が判明した後はパスワードですが、この解析に要する時間も知ると驚愕です。
情報処理推進機構のデータでは、大文字・小文字の区別なし=英字 26 文字だけの4桁のパスワードは3秒で解析されるとしています。
逆に大文字・小文字区別あり=93 文字で 10 桁のパスワードでは、なんと1千万年(笑
単純ではないパスワードがいかに重要か理解できると思います。

英字(大文字・小文字区別なし=26 文字)
4文字:約3秒
6文字:約 37 分
8文字:約 17 日
10 文字:約 32 年

英字+数字(大文字・小文字区別あり=62 文字)
4文字:約2分
6文字:約5日
8文字:約 50 年
10 文字:約 20 万年

英字+数字+記号(大文字・小文字区別あり=93 文字)
4文字:約9分
6文字:約 54 日
8文字:約1千年
10 文字:約1千万年

大文字・小文字区別あり+数字=62 文字で8桁のパスワードを作成すれば、実用上はかなり強固であるといえます。

プラグインで防御する

ブルートフォースアタック対策プラグインといえる「Limit Login Attempts」では特定 IP アドレスから誤ったログイン情報が連続して送信れた場合に一定時間遮断することができます。

英語のプラグインですが、複雑な設定は必要ありませんので、とくに問題はないと思われます。
一応、 Limit Login Attempts の設定について簡単に解説するとデフォルトでは以下のような設定となっています。

  1. リトライ許可回数→4回
  2. 定義回数後の遮断時間→20 分
  3. 4回遮断されると→24 時間遮断
  4. 24 時間経過→リセット
一般設置→LimitLoginAttempts 設定

ブルートフォースの攻撃例

以下は手持ちのサイトの最近のログですが、 wp-login.php を探している様子が伺えます。
ブルートフォース仕掛ける気満々です。
このサイトは自前のプログラムでログイン URL を変更しているため、ログイン画面には到達できていませんが、ありそうなディレクトリ名に順にトレースしています。
IP も違いますし、アタック時間も微妙にずらされていてなかなか狡猾です。
これらのサーバーは踏み台にされてるっぽいですね…

/site/wp-login.php 06:44:54 54.200.37.93
/wp7/wp-login.php 06:27:23 128.199.252.199
/wp5/wp-login.php 06:09:41 178.33.77.157
/wp5/wp-login.php 05:51:53 52.238.209.51
/wp4/wp-login.php 05:34:50 132.148.104.135
/wp3/wp-login.php 05:18:47 149.56.129.192
/wp2/wp-login.php 05:03:27 167.99.230.48
/wp1/wp-login.php 04:47:13 18.234.202.61
/news/wp-login.php 04:32:21 46.101.210.147
/forum/wp-login.php 04:16:24 111.230.17.163
/blog/wp-login.php 04:01:00 128.14.232.115
/wp/wp-login.php 03:45:27 3.18.212.65
/wordpress3/wp-login.php 03:05:14 18.191.167.200
/wordpress2/wp-login.php 02:51:01 39.115.214.67
/wordpress1/wp-login.php 02:35:33 146.83.221.146

管理画面へのアクセス自体を IP 制限する

もっとも効果が高いと思われる対策がガンプラーウイルスにおける FTP 対策でも推奨する接続 IP によるログイン制限です。.htaccess を使いホワイトリスト方式で自分の IP アドレスからしかアクセスできないようにします。

WordPress やプラグインの微弱性などをつかれるおそれもありますから、 IP による制限は考えられる最善の対策だと思われます。

ログインページであるwp-login.phpを指定 IP アドレス以外からのアクセスを禁止します。
WordPress がインストールされた第一階層の.htaccessに以下を追加します。
なお、親であるwp-adminディレクトリ自体を制限する方がより安全度は高いです。

<Files "wp-login.php">
order deny,allow
deny from all
allow from ***.***.***.*** # 自身が接続する IP アドレス
</Files>

これで指定した IP アドレス以外から、ログインページへのアクセスは 403error となります。
事実上ブルートフォースアタックは不可能です。
※Apache サーバー以外では IP 制限は別の手法となります。

IP アドレスによる制限は ID ・アカウントの流出によるサイト改ざんの最終防衛ともいえます。
ただし、ガンプラーウィルスなどでボット化されてしまうと IP 制限も無意味ですので、やはりお使いのパソコン自体のセキュリティ対策が基本です。

なお、この場合は外出先の接続環境では IP が異なるため、当然管理画面にはアクセスできなくなります。
ただし、 VPN 環境を構築している場合は許可 IP アドレスを経由させることもできます。

VPN 経由でインターネットにアクセスする

また、固定 IP ではない環境で接続 IP が変更になると、自身もアクセスできなくなってしまいます。
VPS などでしたら、 SSH 接続より、レンタルサーバーでは.ftpaccessでの対処と同様にブラウザよりアクセスできるファイルマネージャーより指定 IP アドレスを変更ください。

すべての WEB サイトオーナーのガンブラー攻撃対策

profile image

執筆:R3098

WEB サービス構築・監修が生業です。 WordPress 関連では Aurora Heatmap などプラグイン開発も行っています。悩めるサイト運営者の無料相談受付けます!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトは reCAPTCHA によって保護されており、Google のプライバシーポリシー および 利用規約 に適用されます。

reCaptcha の認証期間が終了しました。ページを再読み込みしてください。