Fail2ban SSHd Konfiguration in CentOS

Hallo Freunde der Sonne,

hier eine kleine Vorlage für die Sicherung des SSHd per Fail2ban.
Meiner Meinung nach ist es zwar empfehlenswerter auf ein reine RSA-Zertifikatsauthentifizierung umzuschalten, schön jedoch das Fail2ban einen gerne bei Sperrungen informiert.

Fail2ban SSHd Konfiguration

Zusätzliche Filter-Jobs werden in der jail.conf hinterlegt.
nano /etc/fail2ban/jail.conf
Hier nun meine Standardvorlage für CentOS und den SSHd:
[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=<deine@mail.tld>, sender=<fail2ban@mail.tld>]
logpath  = /var/log/messages
maxretry = 5
Sieht doch aus wie die Default-Vorlage von Fail2ban, ja aber sieht nur so aus.
Bitte achtet darauf, dass das Logfile zum prüfen eingetragen ist, dass auch die entsprechenden Textzeilen mitloggt.
Im Falle von Redhat, Fedora, CentOS ist dies:
/var/log/secure # – Authentifizierungsmeldungen = falsch
/var/log/messages # – Kernel/Anwendungsmeldungen = richtig
Ironie:
Gerade wenn der SSHd per RSA-Authentifizierung arbeitet, dokumentiert das Secure-Logfile nur erfolgreiche Verbindungen oder Verbindungstrennungen.
Wir suchen jedoch fehlerhafte Verbindungen/Abbrüche, diese sind wiederum nur in dem Messages-Log vorhanden…
Anderes Problem:
Der SSHd führt standardmäßig eine DNS-Prüfung seines Gegenüber durch, dies wird im Secure-Log meist als Fehler und möglicher Einbruchsversuch durch unbekannt vermerkt – zufälligerweise prüft der Fail2ban’s SSH-Filter hiernach…
Lösung:
Bevor an den Diensten/Konfigurationen etwas angefasst wird, würde ich mich einfach auf das Filter des Messages-Log beschränken!!!
Die DNS-Prüfung im SSH abschalten:
nano /etc/ssh/sshd_config
Folgende Zeile anpassen:
UseDNS no
Alternativ kann die Zeile aber auch aus der Filter-Datei von Fail2ban entfernt werden…
nano /etc/fail2ban/filter.d/sshd.conf
Und folgende Zeile auskommentieren…
^%(__prefix_line)sAddress <HOST> .* POSSIBLE BREAK-IN ATTEMPT!*s*$
Im Endeffekt legt dieser Filter einen IP-Tables-Eintrag für den entsprechenden Dienst an wenn der SSHd Fehler protokolliert.
Wer das gerne abändern möchte kann zum Beispiel auch das host.deny-File füllen lassen.
Aus einem einfachen Grunde empfehle ich bis jetzt für Wartungszugänge die Lösung per iptables,
denn nach einem Neustart der Firewall/des Linux-Servers sind die Fail2ban-Filter immer wieder zurückgesetzt…also falls man sich komplett aussperren sollte muss nur der Host neugestartet werden.
Das sollte jeder Provider kostenfrei anbieten.