Die Option `MaxAuthTries` bewirkt, dass pro Authentifierzierungsvorgang nur eine bestimmte Anzahl an Versuchen unternommen werden darf. Wird diese überschritten, wird die Verbindung serverseitig getrennt.

# file: /etc/ssh/sshd_config
MaxAuthTries 5

Jedoch kann ein Angreifer gleich darauf eine neue Verbindung aufbauen. Um dies zu erschwerden, ist ein Blocken von IP-Adressen nötig. Das Paket `fail2ban` ermöglicht, die Anzahl an Verbindungen in einem bestimmten Zeitintervall auszuwerten und ggf. Zugriffe von auffälligen IP-Adressen zu beschränken.

# file: /etc/fail2ban/jail.conf
maxretry = 5
findtime  = 600
bantime  = 600
SchalterBedeutung
`maxretry = 5`Anzahl an Fehlversuchen, bis der anfragende host (bzw. die IP-Adresse) gebannt wird
`findtime  = 600`Zeitintervall (in Sek.), in denen Wiederholungen gezählt werden
`bantime  = 600`Zeit (in Sek.) der Verbannung des hosts

Der Einsatz von `fail2ban` kann leider nicht vor DDOS Attacken schützen. Mit Hilfe von `pam_tally` kann man Login-Versuche auf ein Konto prüfen und Aktionen auslösen.

# file: /etc/pam.d/common-auth
auth	required	pam_tally2.so deny=5 unlock_time=1200
SchalterBedeutung
`deny=5`Anzahl fehlgeschlagener Login-Versuche
`unlock_time=1200`Zeit (in Sek.) der Sperrung des Kontos

Am Beispiel wird ein Account nach 5 fehlgeschlagenen Login-Versuchen für 1200 Sekunden gesperrt. Auf das root-Konto kann trotzdem jederzeit _lokal_ zugegriffen werden.


Durch Sperrungen von IP-Adressen oder Konten entsteht allerdings die Gefahr, dass per DDOS-Attacken systematisch der Zugriff auf Konten gesperrt wird.


Hier ist es sinnvoll, den Zugriff auf Admin-Konten nur von bestimmten Hosts zu erlauben.

# file: /etc/ssh/sshd_config
AllowUsers <other users> admin1@host1a admin1@host1b admin2@host2a ...

Zusätzlich bietet sich eine Einschränkung der IP-Adressen mit Hilfe von `iptables` an.

iptables -A INPUT -p tcp -m state --state NEW --source 134.34.0.0/16 --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

Auch `hosts.allow` kann für Zugriffskontrolle verwendet werden.

# file: /etc/hosts.allow
ssh : 134.34. : allow
ssh : localhost : allow
ssh : ALL : deny