Crowdsec / Fail2Ban / Docker

Docker fügt standardmäßig eigene Regeln hinzu, die die Host-Firewall-Regeln überschreiben können, das Problem dabei ist das z.b. Crowdsec oder Fail2ban eine IP sperrt, diese IP aber weiterhin zugriff hat weil die Docker Regel das überschreibt

Crowdsec
Anpassungen in Crowdsec, standard ist - DOCKER-USER auskommentiert
/etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml

iptables_chains:
  - INPUT
#  - FORWARD
  - DOCKER-USER

systemctl restart crowdsec-firewall-bouncer

jetzt funktioniert das Sperren von IP´s auch mit Crowdsec

Fail2Ban
Anpassung in Fail2Ban, Datei erstellen
/etc/fail2ban/action.d/iptables-docker.conf

[Definition]
actionstart = iptables -N <name>
              iptables -I DOCKER-USER -j <name>
actionstop = iptables -D DOCKER-USER -j <name>
             iptables -F <name>
             iptables -X <name>
actionban = iptables -I <name> 1 -s <ip> -j DROP
actionunban = iptables -D <name> -s <ip> -j DROP

Datei Anpassen
/etc/fail2ban/jail.local

[DEFAULT]
banaction = iptables-docker

oder in jeden filter separat

[sshd]
enabled = true
banaction = iptables-docker
port = ssh
logpath = /var/log/auth.log
maxretry = 5

systemctl restart fail2ban.service

jetzt funktioniert das Sperren von IP´s auch mit Fail2Ban

noch eine andere variante, wen man Crowdsec und Fail2ban parallel laufen hat, kann man Fail2ban sagen er soll die IP´s mit Crowdsec Sperren

Datei Erstellen
/etc/fail2ban/action.d/crowdsec.conf

[Definition]
actionstart =
actionstop =
actionban = cscli decisions add -i <ip> --reason <name> --duration 4h
actionunban = cscli decisions delete -i <ip>

/etc/fail2ban/jail.local

[DEFAULT]
banaction = crowdsec

oder in jeden filter separat

[sshd]
enabled = true
banaction = crowdsec
port = ssh
logpath = /var/log/auth.log
maxretry = 5

systemctl restart fail2ban.service

jetzt werden IP´s die durch Fail2Ban erkannt und gesperrt werden sollen mit Crowdsec gesperrt