home » search tags
Die Suche tag = fail2ban ergab 1 Treffer:

April
25
Mittels fail2ban lassen sich (mehr oder weniger) wirksam und automatisiert, unerwünschte Zugriff auf einen Server verhinden und protokollieren.

Um die Daten (z.B. wer hat wann, wie und auf welche Art versucht sich unlauter am System anzumelden) zu visualisieren gibt es verschiedene Ansätze.
Aktuell nutze ich auf div. Systemen eine Mischung aus Logstash, Elasticsearch und Kibana.

Ich gehe davon aus, das bereits eine Umgebung der genannten Komponenten läuft und gehe daher nicht auf die Installation ein.

Die von mir genutzte Konfiguration von fail2ban sieht wie folgt aus

loglevel = 3
logtarget = /var/log/fail2ban.log
socket = /var/run/fail2ban/fail2ban.sock



Wichtig für die weitere Konfiguration ist der Pfad zum Logfile (logtarget), in diesem Beispiel /var/log/fail2ban.log

Die Einträge im Logfile haben folgendes Muster (wobei www.xxx.yyy.zzz die IP darstellt):

2014-04-24 03:43:11,315 fail2ban.actions: WARNING [ssh] Ban www.xxx.yyy.zzz
2014-04-24 05:17:38,490 fail2ban.actions: WARNING [ssh] Ban www.xxx.yyy.zzz
2014-04-24 10:51:26,914 fail2ban.actions: WARNING [ssh] Ban www.xxx.yyy.zzz
2014-04-24 16:20:17,831 fail2ban.actions: WARNING [postfix] Ban www.xxx.yyy.zzz
2014-04-24 18:40:26,777 fail2ban.actions: WARNING [ssh] Ban www.xxx.yyy.zzz
2014-04-24 23:23:48,630 fail2ban.actions: WARNING [sasl] Unban www.xxx.yyy.zzz
2014-04-25 03:43:11,729 fail2ban.actions: WARNING [ssh] Unban www.xxx.yyy.zzz



Um das Logfile korrekt von Logstash verarbeiten zu lassen, benötigen wir passende Filter:

FAIL2BAN %{GREEDYDATA:timer} fail2ban.actions: %{GREEDYDATA:severity} \
[%{GREEDYDATA:service}\] %{FAIL2BAN_ACTION:action} %{IPV4:remoteaddr}



Nun kann man das Logfile von fail2ban in Logstash einbinden:

input {
file {
path => "/var/log/fail2ban.log"
type => "fail2ban"
tags => "fail2ban,system,security"
}
}

filter {
if [type] == "fail2ban" {
grok {
patterns_dir => ["/opt/logstash/patterns"]
match => ["message", "%{FAIL2BAN}"]
add_tag => [ "fail2ban_action" ]
}
}
if [remoteaddr] {
geoip {
source => "remoteaddr"
target => "geoip"
database => "/opt/logstash/GeoLiteCity.dat"
add_field => [ "[geoip][coordinates]", "%{[geoip][longitude]}" ]
add_field => [ "[geoip][coordinates]", "%{[geoip][latitude]}" ]
}
mutate {
convert => [ "[geoip][coordinates]", "float" ]
}
}

}



Nach einem restart/reload von Logstash muss man nur warten (was meist nicht sonderlich lange dauert) bis die ersten Zugriffe von fail2ban geloggt wurden.

Anschließend kann man innerhalb von Kibana (über den Tag fail2ban) die anfallenden Daten visualisieren:

Im folgenden Beispiel sind die Aktionen wie folgt eingefärbt:

Ban = grün
Unban = gelb