最近WordPressへ不正にログインしようとするアクセスがすごい数になってきています。
このブログはWordPressで運用しているのですが、セキュリティ対策としてはログインID割れを防ぐためのEdit Author slugと、各種セキュリティ対策とログを残す目的でSiteGuardを使っています。
あとはさくらインターネットのWAFと海外IPブロックを使っています。
さくらインターネットの海外IPブロックの仕様
まずはさくらインターネットの海外IPブロックを有効にします。
公式サイトに掲載されている仕様はこんな感じ。
実際に運用してみるとブロックしてくれていないように見える
この仕様だとWordPressの管理画面への不正アクセスを防いでくれそうなのですが、SiteGuardのログイン試行履歴を見ると大量のログイン失敗の形跡が残っています。
ざっとこんな感じです。
ログイン試行回数が凄まじく。約3秒間ほどの間に一気に250回ほど、それが数日おきにという感じです。
このIPアドレスはどこから来ているのだろうと思い調べてみたのですが、オランダだったり、イタリアだったり海外からのアクセスです。
さくらの海外IPブロックはどうなっているのでしょうか・・・・ブロックしてくれている箇所以外に裏口があるという事なのでしょうか。
パスワードを強固にするしかない
ちなみに、上記のスクリーンショットのログイン名はEdit Author Slugで書き換えており、短時間に3回失敗するとSite Guardの機能でIPベースのロックがかかるようにはなっています。
パスワードは長く強固なものを設定しているのでまず突破されることは無いでしょうし、アタックも短時間なのでサーバー負荷も一時的なものだとは思います。
これはもう仕方が無いのでしょうね。
現在のところ実害が出ているでもないので諦める事にしました。
ログが残る事が気になるようであれば、htaccessを使用してIP制限をかけるか、画像認証を使用するか、二段階認証にするしか無いでしょう。
余談ですが、知り合いのWordPressが数カ月前に管理画面に入られてスパム記事を大量に投稿されていたようです。
IDとパスワードはサイトURLの文字列を組み合わせた程度のものだったそうなので・・・それはそうなるでしょうね。
気付いた時に記事を削除してパスワードも変えたりしたらしいのですが、以降もサイトが改ざんされたり、ファイルが大量にアプロードされたりと大変な事になって収集がつかず、結局サーバーを移転してサイトを作りなおしたらしいです。
本当に人事ではないと思うのでパスワードには気をつけましょう。
今のWordPressは管理画面のユーザープロフィールの画面で24桁のランダムパスワードを生成出来るようになっているので、それを使用するのが一番良いのではないでしょうか。
当然そんな長いパスワードは覚えることは出来ないので、keepass、LastPassあたりのパスワード管理ツールを使うと良いと思います。
自分はkeepassを使用して、パスワードの保存先をDropboxにする事でPCとスマホでデータを共有しています。
XML.RPC経由でのアタックらしい
その後サーバーログを調べたり、Googleで検索してみたりしたところ、xmlrpc.php経由で総当たり攻撃をしているようだという事が分かりました。
xmlrpc.phpはスマホアプリや、windows livewriter、jetpackを使用する場合に必要になってくるのですが、今のところそれらを使用していないため、下記のサイトで紹介されていた方法でxmlrpc.phpをブロックしました。
WordPressのセキュリティ対策 xmlrpc.phpとwp-cron.phpの無効化
htaccessに下記内容を追加という部分のみ実装しました。
<IfModule mod_rewrite.c> RewriteBase / RewriteRule ^xmlrpc.php$ "http://0.0.0.0/" [R=301,L] RewriteRule ^index.php$ - [L] </IfModule>
上記対策を実施から約1週間経ちましたが、今のところ総当たり攻撃の形跡は記録されていません。
Jetpackやlivewriterを使用していてxmlrpc.phpが必要な場合は無効化する事が出来ないので仕方ないかなと思います。
強度の高いパスワードを使用していればまず問題はないと思うので、それほど気にする事ではないのかもしれませんね。