wordpressへの不正ログイン
久しぶりの投稿となります。仕事の都合で2ヶ月ほど不在にしておりました。
サーバのほうも2ヶ月放置プレイ状態(^^;
早速サーバログ等を確認してみるも特に異常は、ないようですがブログのほうは、少し様相が違うようです。
ざっと見るとこのcrazyboneというプラグインで不正ログイン履歴を1月上旬にインストールして以来なので約半年間で762件もの不正アクセスがありました。
しかもこの輩たちは、ログインユーザ名は、adminではないものに変更していましたが、htmlソースなどから調べたのか、正規管理者ユーザ名でログインを試みているようです。
adminなどでのすべての不正ログインをトータルするとなんと
となった!!約19万件です。今これを書いていて非常に驚いています。
それでは、admin以外でログインを試みたユーザ名を記述しておきます。
mysqlにログインしてwordpressのデータベースのテーブルより下記コマンド発行するとCSVファイルが生成されます。
mysql> select * from wp_user_login_log INTO OUTFILE “/tmp/mysql.csv” FIELDS TERMINATED BY ‘,’;
それをダウンロードして集計してみます。
#! /usr/local/bin/perl $filename = "mysql.csv"; $outfile = " username1.csv"; open(IN, $filename); open (OUT, ">$outfile") or die "$!"; while(<IN>){ $substrings = 0; $position = 0; $substrings = "user_login"; $position = index $_, $substrings; if($position > 0){ #ユーザーログインの文字列を検索してそこから60文字分を抽出 $user_name = substr($_, $position,60); print OUT "$user_name\n"; } } close (IN); close(OUT);
ある程度文字列を抽出してそこからユーザ名を取り出します。
汚い記述ですが重複ユーザ名は、ある程度削除しますがもう少しきれいにかけるかもしれませんがとりあえずなので
ご容赦ください。
#! /usr/local/bin/perl $filename = "username1.csv"; $outfile = " username2.csv"; $hantei = 0; $result2 = 0; open(IN, $filename); open (OUT, ">$outfile") or die "$!"; while(<IN>){ #コロン:で文字列を分割 @splited = split /:/; #ユーザ名のところの文字列を変数に渡す $result = @splited[2]; #先頭の1文字を削除 $result2= substr($result, 1); #文字列末尾の4文字削除 $i = 4; while($i > 0){ chop $result2; $i=$i -1; } if($hantei ne $result2){ #整形した文字列(ユーザ名)をファイルに書き込み print "$result2\n"; print OUT "$result2\n"; $hantei = $result2; } } close (IN); close(OUT);
ユーザ名の抽出
これでユーザ名だけを大体ですが取り出したところ下記のようになりました。
Intabyhab
adm
admin
adminadmin
administrator
changeme
demo
editor
god
master
MichaelTalm
root
taka
test
toor
webmaster
wp_admin
wpadmin
www16071ue
www16071ue.sakura.ne.jp
takaは、ブログ名からきたものでしょうか?、下の2行は、ドメイン名から引っ張ってきたものと推測されます。
そのほかのユーザ名は、一般的なadminやrootなどですね。上記のようなものに当てはまるユーザ名を使っていると
不正ログインの餌食になるかもしれません。要注意ですので早急に変更が望ましいと思います。
方法としては、
1 不正アクセスは、大体海外からなので海外からのアクセスをサーバ上で拒否する。
2 ログイン画面のURLを変更する。(プラグインで可能 Login rebuilder )
3 パスワードをより強固なものとする。& ログインに失敗すると指定時間アクセス拒否にする(プラグインで可能 Limit Login Attempts)
当方は、3番で行っていますが2番をもうそろそろ取り入れたほうがいいのかもしれません。
今後の不正アクセスをチェックしてみます。