【WordPress】 wp-login.phpが総当り攻撃に晒される…。

 危うくサイトを落とされかけたのですわ。くわばらくわばら。

 今日の夜、突然プロ野球・クリンチナンバー計算ページにアクセスすると「データベースエラー」が出るようになって、他のページの表示も遅い遅い。

 プロセスをチェックしてみると httpd がアホほど走っていてメモリもCPUも負荷が酷いことになっている。MySQLサーバも停止しているようだ。
 どうしようもないので Apache を一旦ストップさせて、とりあえずアクセスログを見てみると、あら、何ということでしょう。

 うちは一つのサーバに freefielder.jptategaki.info を同居させているのだけれど、tategaki.info のほうは WordPress でページ管理をしているのです。そこのログインフォームに世界中からアクセスされて不正ログインを試みた形跡が…。

 まぁこんなことは今までにもあったのですが、今回はアクセス数が桁違い。

 21:25頃から始まった不正アクセス、21:40までに約1,000回。この辺りで度重なるユーザ名とパスワードの照合作業に耐えかねたMySQLサーバが落ちたっぽい。その後、Apacheを一旦ストップさせたのが 23時過ぎ。ここまでの2時間弱で、アタック回数は 15,000 回

 もうね、馬鹿なの? 加減というものがあるでしょうが。ほんとに。あんたらがデータベースサーバを落としといて、何故に更なるアクセスを重ねるか。

 よりによってアクセスが一番多い時間帯にこんな悪さをしなくても…。

ちなみにアクセス元のIPアドレスが所属する国々は…
  • エジプト
  • トルコ
  • ロシア
  • ルーマニア
  • バングラデュ
  • タイ
  • ベトナム
  • カザフスタン
  • イタリア
  • インドネシア
…などなど。国際色豊かだね!

 で wp-login.php にIPアドレスによるアクセス制限をかけて、ひとまずサーバは健康を取り戻したのでした。

 どうせ自分が自宅から接続することしかないので、自分のところのIPアドレス以外のアクセスは弾いてしまいましょ。

この辺りの記事(WordPressを死守せよ!~管理画面にIP制限をかける方法~|イー・エージェンシー)を参考に .htaccess を弄れば良さそうですが、なんか転送ループに陥ってしまったの。

 もう夜中だし、面倒くさくなったので wp-login.php を直接編集してみた。wp-login.php のド頭に、

if( $_SERVER['REMOTE_ADDR'] != 'xxx.xxx.xx.xxx' ){ //許可するIP以外の場合は
   header("HTTP/1.1 404 Not Found"); //404ヘッダを返して
   exit; //終了
}

…と書いてみる。自宅の回線以外からのアクセスに対しては、"404 Not Found" を返して即刻終了、というわけですね。

 相変わらず不正アクセスは続いているけれど、ウェブサーバへの負荷は最小限、データベースサーバへの負荷はゼロに抑えられているのではないかと。

カテゴリ: