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