Vor ein paar Tagen ist mir in einer Diskussion aufgefallen, dass da jemand den Benutzername "pi" in seiner (Raspian?)-Installation belassen hat.
Heute habe ich mal mit PHP und einem schellem Skript nachgesehen, was diesbezüglich wirklich abgeht. Die Nachricht ist:
Ändert die Default-Benutzernamen!
Die folgenden Daten betreffen die letzten 4 Wochen. Ich dürfte lerrdings nur noch wenige Angriffe haben, weil ich etliche, teils sehr große Blöcke (z.B. aus China, Russland, der Türkei, Bulgarien bzw. auch von Rechenzentren ( Microsoft, Amazon, OHV...) und natürlich ganz besonders auffällige IP-Adressbereiche (auch von gewissen, selbst ernannten Marktführern) längst dauerhaft gesperrt habe.
Der (stark gekürzte) Abschnitt mit der Statistik für die versuchten Benutzernamen:
[pi] => 139
[admin] => 102
[student] => 22
[ubuntu] => 19
[user] => 16
[ubnt] => 13
[oracle] => 12
[from] => 10
[debian] => 9
[guest] => 8
[tech] => 7
[avanthi] => 5
[test] => 5
[anonymous] => 5
[vnc] => 5
[rootadmin] => 4
[0] => 4
[1] => 4
[2] => 4
[3] => 4
[4] => 4
[bdos] => 4
[smmsp] => 3
[nagesh] => 3
[supervisor] => 3
[Administrator] => 3
[support] => 3
[zookeeper] => 3
[es] => 2
[kafka] => 2
[jenkins] => 2
[jira] => 2
[zhouh] => 2
[admin1] => 2
[hadoop] => 2
[webadmin] => 2
[scan] => 2
[ntps] => 2
[5] => 2
[redis] => 2
[rpm] => 2
[tit0nich] => 2
[user3] => 2
Preisträger des Monats ist der Typ, der versuchte, mit dem Benutzername "noligin" (sic!) einzudringen.
Das schnelle Skript:
<?php
$csv=`grep 'Invalid user' /var/log/auth.log.* /var/log/auth.log | awk '{ print $8";"$10}' | grep -v '^TTY=pts'`;
$perIP_User = [];
$uniuqeIPs = [];
$perUser_IP = [];
$uniuqeUsers = [];
$UsersAbsolute = [];
$IPsAbsolute = [];
foreach ( explode( "\n", $csv ) as $line ) {
$line=trim($line);
if (''==$line) break;
list( $user, $ip) = explode( ';', $line );
if ( ! isset( $IPsAbsolute[$ip] ) ) {
$IPsAbsolute[$ip]=1;
} else {
$IPsAbsolute[$ip]++;
}
if ( ! isset( $UsersAbsolute[$user] ) ) {
$UsersAbsolute[$user]=1;
} else {
$UsersAbsolute[$user]++;
}
if ( ! isset( $IPsAbsolute[$ip] )) {
$IPsAbsolute[$ip]=1;
} else {
$IPsAbsolute[$ip]++;
}
if ( isset( $uniuqeIPs[$ip] ) ) {
$uniuqeIPs[$ip]++;
} else {
$uniuqeIPs[$ip]=1;
}
if ( isset( $uniuqeUsers[$user] ) ) {
$uniuqeUsers[$user]++;
} else {
$uniuqeUsers[$user]=1;
}
if ( ! isset ( $perIP_User[$ip] ) ) {
$perIP_User[$ip] = [];
}
if ( ! isset ( $perIP_User[$ip][$user] ) ) {
$perIP_User[$ip][$user]=1;
} else {
$perIP_User[$ip][$user]++;
}
if ( ! isset ( $perUser_IP[$user] ) ) {
$perUser_IP[$user] = [];
}
if ( ! isset ( $perUser_IP[$user][$ip] ) ) {
$perUser_IP[$user][$ip]=1;
} else {
$perUser_IP[$user][$ip]++;
}
}
asort($perIP_User);
asort($uniuqeIPs);
asort($perUser_IP);
asort($uniuqeUsers);
asort($UsersAbsolute);
asort($IPsAbsolute);
echo PHP_EOL.'$UsersAbsolute:'.PHP_EOL;
print_r( array_reverse( $UsersAbsolute ) );
echo PHP_EOL.'$IPsAbsolute:'.PHP_EOL;
print_r( array_reverse( $IPsAbsolute ) );
echo PHP_EOL.'$uniuqeIPs:'.PHP_EOL;
print_r( $uniuqeIPs );
echo PHP_EOL.'$uniuqeUsers:'.PHP_EOL;
print_r( $uniuqeUsers );
echo PHP_EOL.'$perIP_User:'.PHP_EOL;
print_r( $perIP_User );
(Ich hätte auch alles mit dem AWK machen können.)