CentOS gegen SSH Attacken schützen mit fail2ban

Wie ich ja schon vor ein paar Tagen geschrieben habe ist der Blog nun auf einen Root-Server umgezogen. Dadurch ergeben sich aber auch ganz neue Herausforderungen. Auffällig war, dass ständig versucht wurde per SSH auf den Server zuzugreifen. Deshalb habe ich mich nach einer Lösung umgeschaut die es verhindert das ständige Brute Force Attacken auf den Server laufen.

Allgemeines

Unter dem Verzeichnis var/log/ liegt das Logfile secure. Dieses zeichnet sämtliche Versuche, die per SSH zuzugreifen wollen, auf. Dort war dann auch zu sehen das ständig ein Bot versucht hat sich einzuloggen.

vi /var/log/secure

 fail2ban

Mit fail2ban ist es möglich die Angreifer nach einer gewissen Anzahl von fehlgeschlagenen Loginversuchen auszusperren. Die Anwendung überwacht dabei die Logfiles und trägt bei erkennen einer Attacke die Angreifer IP-Adresse in die lokale Firewall ein und blockt diese IP für eine definierte Zeit.

Installation

Da in den Standard Repositories bei CentOS fail2ban nicht vorhanden ist muss erst das EPEL Repository hinzugefügt werden.

Für CentOS 6 sieht das so aus:

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
sudo rpm -Uvh epel-release-6*.rpm

anschließend kann sollte sich fail2ban installieren lassen.

yum install fail2ban

 Konfiguration

Die Konfiguration sollte nicht in der mitgelieferten Konfigurationsdatei gemacht werden, weshalb erst mal eine Kopie dieser zu erzeugen ist. Die Konfigurationsdateien liegen unter /etc/fail2ban/.

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Im Anschluss kann die Konfiguration vorgenommen werden.

vi /etc/fail2ban/jail.local

Die Standardwerte sollten sich relativ weit oben in der Konfiguration finden lassen:

# "bantime" is the number of seconds that a host is banned.
bantime  = 600

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime  = 600

# "maxretry" is the number of failures before a host get banned.
maxretry = 3

Um speziell Einstellungen für den SSH Zugriff zu machen sollte weiter unten der folgende Eintrag zu finden sein:

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=you@example.com, sender=fail2ban@example.com, sendername="Fail2Ban"]
logpath  = /var/log/secure
maxretry = 5

Dieser Eintrag sagt das nach 5 fehlgeschlagenen Loginversuchen der Ban ausgelöst wird. Dieser definiert sich dann über die Defaultwerte und schließt den Client für 600 Sekunden über die Firewall aus.

Starten des Dienstes

Im Anschluss muss der Dienst gestartet werden dies geschieht über das folgende Kommando:

sudo service fail2ban restart

Um zu prüfen welche IP Adressen momentan geblockt werden kann man das folgende Kommando nutzen:

iptables -L

 

Schreibe einen Kommentar