===== Fail2ban ===== Fail2ban ermöglicht uns, uns gegen Bruteforce Attacken auf z.B. unseren SSH Zugang zu schützen. Nach einer definierten Zeit und misslungenden Login Versuchen, erstellen Fail2ban eine Firewallregel um diese IP Adresse für einen gewissen Zeitraum zu sperren. === Installation === Fail2ban wird einfach mit nachfolgendem Paket installiert apt install fail2ban \\ Danach sollte der fail2ban Daemon eingerichtet und automatisch gestartet werden. systemctl enable --now fail2ban \\ === nftables oder iptables === Fail2ban erstellt automatisch Firewallregeln. Je nachdem welche Firewall genutzt werden soll muss diese Installiert sein und bei fail2ban hinterlegt werden. Ich nutze hier eine nftables Firewall. apt install nftables \\ Firewall bei nftables hinterlegen nano /etc/fail2ban/jail.conf ... banaction = nftables-multiport banaction_allports = nftables-allports ... Für eine iptables Firewall müssten hier die Einträge mit iptables stehen. \\ === Default Konfiguation === In der Default Konfiguration legen wir fest wieviele Versuche gestattet sind, wie lange überprüft wird und wie lange der Zugang gesperrt wird. Um die Standart Konfiguraton festzulegen muss eine neue Datei angelegt werden, die /etc/fail2ban/jail.local. \\ nano /etc/fail2ban/jail.local [DEFAULT] bantime = 60m # Wie lange wird gesperrt findtime = 10m # In welchem Zeitraum werden Fehlversuche überprüft maxretry = 3 # Nach wievielen Fehlversuchen wird gesperrt backend = auto ignoreip = 127.0.0.1/8 ::1 # Ip Adressbereiche für die nicht geprüft werden soll ... === SSH Dienst === Fail2ban kann mehrere Dienste überwachen, aber der wichtigste hierbei ist wohl der ssh Dienst. Dazu überwacht fail2ban das entsprechende Logfile auf Fehler und schreitet bei Bedarf ein. Um den SSH Dienst zu überwachen bearbeiten wir die /etc/fail2ban/jail.local. \\ nano /etc/fail2ban/jail.local ... [sshd] enabled = true # Einschalten oder ausschalten port = 22 # Auf welchem Port läuft der Dienst filter = sshd # Name der Filterdatei z.B. /etc/fail2ban/filter.d/sshd.conf logpath = /var/log/auth.log # Die Logdatei die überwacht werden soll ... === Apache Dienst === Auch der Webserver kann abgesichert werden indem wir unsere jail.conf anpassen. nano /etc/fail2ban/jail.local ... [apache] # Kümmert sich um grundlegende Authentifizierungsfehler enabled = true port = http,https filter = apache-auth logpath = /var/log/apache*/*error.log maxretry = 3 findtime = 600 [php-url-fopen] # Versucht böswillges PHP Verhalten zu stoppen enabled = true port = http,https filter = php-url-fopen logpath = /var/log/apache*/*access.log [apache-overflows] # Es wird der Versuch blockiert, ungewöhnlich lange und verdächtige URLs anzufordern. enabled = true port = http,https filter = apache-overflows logpath = /var/log/apache*/*error.log maxretry = 2 [apache-badbots] # Stopt einige bekannte Bot anfragen enabled = true port = http,https filter = apache-badbots logpath = /var/log/apache*/*error.log maxretry = 2 \\ === Überprüfen === Liste auf welche und wieviele jails aktuell laufen fail2ban-client status \\ Liste auf wieviele IPs derzeit in einer jail gesperrt sind fail2ban-client status sshd \\ Erlaube einer gesperrten IP wieder den Zugriff sudo fail2ban-client set sshd unbanip 111.111.111.111