Denial of service SSH Logins verhindern mit fail2ban

Früher verschob ich den standard Port für ssh auf einen nicht Standard Port. Damit konnte ich viele Attacken (denial of service) unterbinden. Heute sind diese Angriffe auf Systeme viel ausgeklügelter. Ein sehr wirkungsvolles Tool ist fail2ban, welches Du fast in jeder Linux Distribution findest und es ist ausserdem einfach zu konfigurieren. Ich nutze es unter anderem, um den ssh login zu schützen.

Die Installation unter Debian ist wie immer ganz einfach.

apt-get install fail2ban

Mit dem fail2ban-client lässt sich der Status und die aktuelle Konfiuration prüfen:

fail2ban-client ping
fail2ban-client status

Konfiguration

Die Basiskonfiguration findet sich im Ordner /etc/fail2ban in der Datei jail.conf. Alle Abweichungen, oder anders formuliert, so wie Du die Konfiguration haben möchtest, schreibst Du in die Datei jail.local.

vi /etc/fail2ban/jail.local
[ssh]                                                                           
bantime  = 86400  ; 1 day                                                       
[apache]                                                                        
enabled  = true                                                                 
bantime  = 86400  ; 1 day                                                       
[ssh-ddos]                                                                      
enabled  = true                                                                 
bantime  = 86400  ; 1 day                                                       
[postfix]                                                                       
enabled  = true                                                                 
bantime  = 86400  ; 1 day                                                       
[apache-noscript]                                                               
enabled  = true                                                                 
bantime  = 86400  ; 1 day                                                       
[apache-overflows]                                                              
enabled  = true                                                                 
bantime  = 86400  ; 1 day

Damit wir bei jeder fail2ban Massnahme mitbekommen was geschieht, ändern wir noch eine Zeile in der Datei jail.conf auf

vi /etc/fail2ban/jail.conf
# Choose default action.  To change, just override value
# of 'action' with the   
# interpolation to the chosen action shortcut (e.g.
# action_mw, action_mwl, etc) in jail.local                                                                  
# globally (section [DEFAULT]) or per specific section
action = %(action_mwl)s

Damit erhältst Du jedesmal eine E-Mail mit einem whois Report und den relevanten Logzeilen weshalb fail2ban die IP gesperrt hat.

Reload Konfiguration

service fail2ban restart
fail2ban-client status
Status
|- Number of jail:      6
`- Jail list:           apache-overflows, apache-noscript, ssh,
postfix, apache, ssh-ddos

Zusammenfassung

fail2ban kennt verschiedenste Techniken. In der Basiskonfiguration wird eine IP mittels iptables gesperrt und nach einer gewissen Zeit wieder freigegeben. Das Tool überprüft die Logfiles von über 47 verschiedenen Diensten und sperrt fremde IP’s wenn eines der Angriffsmuster auftritt.