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