さくらのVPSへの不審なアクセス

lastbをやると、膨大な数の不審なアクセスがあることがわかる。

ほぼすべて、ユーザ名を変えつつssh接続を試みているものだ。

そしてちょっとした「ビッグデータ」なので、件数を数えてみた。

10270 176.227.XX.XX GB
4638 211.144.XX.XX CN
4505 116.255.XX.XX CN
3566 49.212.XX.XX JP
3241 178.79.XX.XX GB
1728 58.241.XX.XX CN
1572 217.12.XX.XX RU
1427 61.130.XX.XX CN
792 111.74.XX.XX CN
466 112.65.XX.XX CN
(以下略)


最多だったアドレスはイギリスからであった。中国からが多い。ちなみに国名はアドレスをwhoisで引いて調べた。アドレスは晒してもいいのだが一応一部伏せた。こういうアクセスは、スクリプトが流布していて、興味本位かダメ元でやってるだけではないかと思う。プロバイダに文句を言ってもキリがないしな・・・。

使われているユーザ名も数えてみた。

root,35928
test,886
nagios,800
admin,632
oracle,572
user,446
postgres,392
webmaste,322
web,320
ftpuser,308
backup,294
www,260
tomcat,234
guest,232
mysql,222
support,178
testuser,170
user1,148
hadoop,142
user2,128
temp,126
teamspea,124
mythtv,112
download,106
www-data,104
ftpguest,104
info,102
prueba,102
ftptest,100
teste,92
webuser,90
mailman,84
cacti,82
gast,76
suporte,72
office,70
bin,70
student,68
mailtest,64
gnats,62
koha,62
squid,56
alex,54
minecraf,52
firefly,52
news,52
informix,52
ftp,50
david,50
postmast,50
kiosk,48
(以下略)


ひとつ、使われている可能性が非常に高い(実際私が使っている)ユーザ名を試していないことに気づいた。そんなものすら試していないことからも、この手のアクセスが「本気」でないことが想像できる。

別に痛くもかゆくもないし・・・と思っていたが、時々sshがすごく重くなるのはこのせいかと思って、sshdのポート番号を変えた。

使われているユーザ名を数えたスクリプト。

最初にlastbの結果をファイルに書いておいてそれを読ませる。

while(<>){
    ($name) = split;
    push @list, $name;
}

%hash;

for (@list){
    if(exists $hash{$_}){
        $hash{$_}++;
    }else{
        $hash{$_}=1;
    }
}

foreach my $name (sort { $hash{$b} <=> $hash{$a} } keys %hash){
    print "$name,$hash{$name}\n";
}


キモはハッシュをキーでなくデータ(この場合ユーザ名)でソートするところだ。

「キーがハッシュに存在すれば値を加算、なければ追加」というところが、もっと簡単にできそうなのだが、こうするしかないかな?

for (@list){
    $hash{$_}++;
}


これでいいみたいだ。わざわざ「なければ」とかしなくても。