home-harmening:sicherheit:fail2ban:fail2ban_installieren

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
home-harmening:sicherheit:fail2ban:fail2ban_installieren [2024/11/05 20:03] – gelöscht - Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1home-harmening:sicherheit:fail2ban:fail2ban_installieren [2024/11/06 05:34] (aktuell) charmening
Zeile 1: Zeile 1:
 +===== 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
 +<code Bash>apt install fail2ban</code>
 +\\
 +Danach sollte der fail2ban Daemon eingerichtet und automatisch gestartet werden.
 +<code Bash>systemctl enable --now fail2ban</code>
 +\\
 +=== 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.
 +<code Bash>apt install nftables</code>
 +\\
 +Firewall bei nftables hinterlegen
 +<code Bash>nano /etc/fail2ban/jail.conf</code>
 +<code Bash>
 +...
 +banaction = nftables-multiport
 +banaction_allports = nftables-allports
 +...
 +</code>
 +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.
 +\\
 +<code Bash>nano /etc/fail2ban/jail.local</code>
 +<code Bash>
 +[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
 +
 +...
 +</code>
 +
 +=== 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.
 +\\
 +<code Bash>nano /etc/fail2ban/jail.local</code>
 +<code Bash>
 +...
 +
 +[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
 +
 +...
 +</code>
 +
 +=== Apache Dienst ===
 +Auch der Webserver kann abgesichert werden indem wir unsere jail.conf anpassen.
 +<code Bash>nano /etc/fail2ban/jail.local<code>
 +<code Bash>
 +...
 +
 +[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
 +</code>
 +\\
 +=== Überprüfen ===
 +Liste auf welche und wieviele jails aktuell laufen
 +<code Bash>fail2ban-client status</code>
 +\\
 +Liste auf wieviele IPs derzeit in einer jail gesperrt sind
 +<code Bash>fail2ban-client status sshd</code>
 +\\
 +Erlaube einer gesperrten IP wieder den Zugriff
 +<code Bash>sudo fail2ban-client set sshd unbanip 111.111.111.111</code>