Permanete brute-force-Attacken auf sshd ergeben unnötige Einträge in LOG-Files. Dies ist einfach so. Um die Sicherheit zu erhöhen, gibt es einfache Möglichkeiten in sshd. Dies ersetzt sicherlich keine Firewall, aber eine Firewall schützt eigentlich nur unsichere Dienste/Programme, die sowieso nicht laufen sollten! Jeder laufende Dienst sollte für sich bereits so sicher wie möglich sein.
Folgende Einträge sind sehr sinnvoll in sshd_config:
Nur Protokoll 2 soll verwendet werden; das alte ist normalerweise überflüssig:
Protocol 2
Es gibt keinen Grund, daß root sich per ssh einloggen darf:
PermitRootLogin no
Es dürfen sich nur bestimmte User (hier: test und tester) per ssh einloggen:
AllowUsers test tester
Die Match-Direktive kann beispielsweise genutzt werden, um Zugriffe aus unerwünschten IP-Bereichen praktisch zu verhindern. Hier wird verhindert, daß Benutzer aus einem anderen IP-Bereich als 192.168.* sich per Passwort einloggen können. Sollten sie es doch schaffen, wird der vordefinierte Befehl ausgefürt und sonst kann der Benutzer nichts machen. Genauso kann natürlich jeder andere IP-Bereich auch blockiert werden:
Match Address !192.168.* PasswordAuthentication no ForceCommand (/bin/echo $SSH_ORIGINAL_COMMAND ; /bin/echo $(/usr/bin/env)) > /home/einbruch/$USER-$(/bin/date +%s) ; echo missile launched.
Durch folgenden Eintrag kann ebenfalls erreicht werden, daß nur aus dem privaten Netzwerk 192.168.23.* per ssh zugegriffen werden kann; aber hiertmit kann kein IP-Bereich ausgesperrt werden:
ListenAddress 192.168.23.1
Man kann mit der Match-Direktive auch Benutzer blockieren:
Match User ftpuser,backup PasswordAuthentication no ForceCommand echo follow the white rabbit.
Folgende Benutzer sind mir aufgefallen, die oft automatisch gescannt werden: (Diese Benutzernamen sollten also entweder vermieden werden, sich nicht per ssh einloggen dürfen oder ein gutes Passwort haben)
adam adm admin administrator admins agent alan alex alias amanda amavisd angel apache appowner appserver aptproxy backup bash brett clamav core cyrus cyrusimap dan danny data david dean desktop divine eleve eppc frank ftp ftpuser games george gnats gopher guest halt harrypotter http httpd ident identd info irc jabber jack james jeff john library linux list lp mail mailman mailnull master michael mike mysql mythtv news newsletter nfsnobody office oracle party paul pgsql pop postfix postgres postmaster print qtss radiomail recruit richard robert root root0 root1 root2 root3 root4 rpc rpcuser rpm sales samba sara search securityagent setup sgi shop shutdown snort spam ssh staff stephen steven student sunny susan sync sys telnetd test tester tokend tomcat tony unknown user user1 username users uucp virus visitor web webadmin webmaster webpop windowserver workshop www-data wwwrun xgridagent xgridcontroller zzz
Wenn man ssh sowieso nicht braucht:
Match Address 0*,1*,2*,3*,4*,5*,6*,7*,8*,9* PasswordAuthentication no ForceCommand (/bin/echo $(/usr/bin/env)) > /home/einbruch/$USER-$(/bin/date +%s) ; echo try 127.0.0.1
Man kann mit der Match-Direktive auch Benutzer blockieren:
Autor: Daniel Mohr
Datum: 2008-04-06