SSH zusätzlich mit Fail2ban absichern
Fail2ban installieren
Debianpackage.png fail2ban ist bereits in den Paketquellen enthalten und lässt sich spielend leicht mit
apt-get install fail2ban whois
installieren. Wir installieren whois mit, um später weitere Informationen zum blockierten Client zu erhalten.
Fail2ban konfigurieren (jail.conf)
Wir wollen jetzt mal einen Blick auf die Hauptkonfigurationsdatei von Fail2ban werfen. Es handelt sich dabei um die Datei „nano /etc/fail2ban/jail.conf
„.
Generelle Einstellungen finden sich unter [DEFAULT]
[DEFAULT]
# "ignoreip" can be an IP address, a CIDR mask or a DNS host
ignoreip = 127.0.0.1/8
bantime = 600
maxretry = 3
backend = auto
#
# Destination email address used solely for the interpolations in
# jail.{conf,local} configuration files.
destemail = root@localhost
Die wichtigsten Standard-Parameter:
bantime: Kontrolliert die Blockzeit eines Clients, via Standard 600 Sekunden = 10 Minuten,
maxretry: Steht für die maximalen Regelverstösse, bis ein Client blockiert wird
destemail: Hier sollten wir unsere eigene E-Mail Adresse angeben (dazu später mehr)
Hinweis: Die Filter-Einstellungen am Ende der Datei haben immer Vorrang.
Der nächste Absatz beschäfigt sich mit der Aktion, die bei einem Ban ausgeführt werden soll:
#
# ACTIONS
#
banaction = iptables-multiport
mta = sendmail
Die wichtigsten Parameter:
banaction: Die Standard-Aktion die ausgeführt werden soll; iptables-multiport kann man so stehen lassen.
mta: Der MTA, der zum Versenden von Mails verswendet wird (Standard: sendmail)
Ich möchte jetzt auf den destemail-Parameter zurückkommen: Sobald ein Client blockiert wird, könnt ihr euch eine E-Mail mit IP-Adresse samt WHOIS- und Logdatei Auszug zuschicken lassen.
Das macht Fail2ban aber nicht von Haus aus, wir müssen folgende Zeile
action = %(action_)s
abändern zu
action = %(action_mwl)s
Der E-Mail Versand bei einem Client-Ban wäre damit aktiviert. Wir widmen uns jetzt den zu überwachenden Diensten, bei Fail2ban Filter genannt:
[ssh]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 6
Wie wir erkennen können, ist der Standard-Filter ssh schon aktiviert. Hier müssen wir nichts ändern. Es gibt jedoch auch noch einen Filter gegen DDoS-Angriffe auf SSH, folgender Abschnitt:
[ssh-ddos]
enabled = false
port = ssh
filter = sshd-ddos
logpath = /var/log/auth.log
maxretry = 6
„enabled = false“ ändern wir hier einfach ab zu „enabled = true“.
Wir speichern die Konfigurationsdatei jail.conf. Jetzt müssen wir Fail2ban noch neustarten mittels
/etc/init.d/fail2ban restart
Hinweis: Die Konfigurationsdateien der Filter finden sich in „/etc/fail2ban/filter.d“ und die der Aktionen in „/etc/fail2ban/action.d“
Hinweis: Fail2ban führt eine Logdatei unter /var/log/fail2ban.lorg
logwatch installieren
Damit man seinen Server unter Kontrolle hat ist es wichtig regelmässig die Logdateien der laufenden Serverdienste zu checken. Unter /var/log/apache2 liegen beispielsweise die Logdateien des Apache-Servers. Nun wäre es sehr mühsam, sich jeden Tag über SSH einzuloggen und jede einzelne Logdatei via Hand zu kontrollieren.
Eine Menge Arbeit kann man sich mit Debianpackage.png logwatch sparen, welches täglich eine Zusammenfassung aller Logdateien erstellen und die Zusammenfassung dann an eine hinterlegte E-Mail Adresse schicken kann.
Installation und Konfiguration von Logwatch
logwatch installieren wir mit
apt-get install logwatch
Im Anschluss bearbeiten wir die Konfigurationsdatei „logwatch.conf“:
nano /usr/share/logwatch/default.conf/logwatch.conf
Dort setzen wir diese Einstellungen
MailTo = root
Output = mail
Format = text
Detail = High
Die folgenden Zeilen sollte man ausklammern:
#Service = "-zz-network" # Prevents execution of zz-network service, which
# prints useful network configuration info.
#Service = "-zz-sys" # Prevents execution of zz-sys service, which
# prints useful system configuration info.
#Service = "-eximstats" # Prevents execution of eximstats service, which
# is a wrapper for the eximstats program.
Wir speichern die Konfigurationsdatei ab.
Cronjob für Logwatch anlegen (Mail-Versand)
Folgende Zeile in einfügen:
nano /etc/crontab
0 */3 * * * root /usr/sbin/logwatch --mailto deine@email.ch>/dev/null 2>&1
Die E-Mail Adresse muss angepasst werden, damit sie auch im richtigen Postfach ankommt. Der Cron-Daemon wird uns jetzt alle 3-Stunden eine Logwatch-Report via E-Mail schicken.