ほぼすべて、ユーザ名を変えつつ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{$_}++; }
これでいいみたいだ。わざわざ「なければ」とかしなくても。