ガンプラー攻撃の媒体としてウェブサイトが使われる原因のひとつがFTP経由です。
しかし、CMSの場合はもうひとつ大きな危険があります。
ログインID(ユーザー名)とパスワードを盗むブルートフォースアタックで管理画面にログインされてしまうと、やりたい放題なのです。
普及率の高いWordPressはとくに狙われやすいといえます。
「すべてのWEBサイトオーナーのガンブラー攻撃対策」ではFTP関連のセキュリティについて書きましたが、WordPressのダッシュボードの乗っ取りはまた別の問題です。
実際にログインパスワードを解析されるという被害はかなり多いのです。
ブルートフォースアタック(総当たり攻撃)といわれる不正ログインの手法では辞書ツールなどを使って、文字通り理論的にありうるパターンを総当たりでログインを試みます。
プログラムやツールなどを使い、回数制限なしにアタックしてきますので、非常にやっかいです。
単純な文字列を使わない
ブルートフォースアタックによる攻撃ではログインユーザー名がadminの場合には目をつけられてしまうと時間の問題でログインされてしまう可能性が高いといえます。
基本中の基本ですが、ログインIDにadminは使わない。
パスワードは憶測されにくい複雑なものを使用します。
ただし、ここでひとつ落とし穴があります。
それは、ユーザー名を変更しても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千万年
プラグインで防御する
ブルートフォースアタック対策プラグインといえる「Limit Login Attempts」では特定IPアドレスから誤ったログイン情報が連続して送信れた場合に一定時間遮断することができます。
英語のプラグインですが、複雑な設定は必要ありませんので、とくに問題はないと思われます。
一応、Limit Login Attemptsの設定について簡単に解説するとデフォルトでは以下のような設定となっています。
- リトライ許可回数→4回
- 定義回数後の遮断時間→20分
- 4回遮断されると→24時間遮断
- 24時間経過→リセット
ブルートフォースの攻撃例
以下は手持ちのサイトの最近のログですが、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アドレスからしかアクセスできないようにします。
ログインページである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アドレスを経由させることもできます。
また、固定IPではない環境で接続IPが変更になると、自身もアクセスできなくなってしまいます。
VPSなどでしたら、SSH接続より、レンタルサーバでは.ftpaccess
での対処と同様にブラウザよりアクセスできるファイルマネージャーより指定IPアドレスを変更ください。