Am configurat o instanță Traefik rulată de motorul Docker în modul Swarm cu o configurație „clasică” (a se vedea mai jos, din motive de concizie, am pus doar părți relevante [pentru mine]. Simțiți-vă liber să cereți mai multe detalii dacă aveți nevoie).
Fail2Ban este instalat, precum și firewalld (distribuție CentOS). Până acum am pus o configurație simplă de filtru/închisoare, mai ales pentru blocarea DOS și bruteforce, urmărind jurnalul de acces Traefik.
Problema mea: cand incerc cu Nikto sau Hidra, văd că IP-ul meu de încercare a fost inclus pe lista neagră:
# fail2ban-client status symfony-auth
Starea închisorii: symfony-auth
|- Filtru
| |- Momentan eșuat: 3
| |- Total eșuat: 906
| `- Lista de fișiere: /var/log/traefik/access.log
`- Acțiuni
|- Interzis în prezent: 1
|- Total interzise: 2
`- Lista IP interzisă: 37.19.218.169
Dar nimic nu se schimbă în partea regulilor iptables și văd că IP-ul dat nu este blocat.În plus, dacă încerc să navighez pe site de pe IP-ul interzis, o pot face, deși este interzis.
Trebuie să adaug că am Fișierul 00-firewalld.conf
, cu instrucțiuni implicite privind acțiunile pentru această distribuție:
# cat /etc/fail2ban/jail.d/00-firewalld.conf
# Acest fișier face parte din pachetul fail2ban-firewalld pentru a configura utilizarea
# acțiunile firewalld ca acțiuni implicite. Puteți elimina acest pachet
# (împreună cu metapachetul gol fail2ban) dacă nu utilizați firewalld
[MOD IMPLICIT]
banaction = firewallcmd-rich-rules[actiontype=<multiport>]
banaction_allports = firewallcmd-rich-rules[actiontype=<allports>]
backend=systemd
În cele din urmă, nu am nicio diferență de timp, așa cum s-a spus Aici.
# tail /var/log/messages
12 iulie 13:28:05 ....
# timedatectl
Ora locală: Luni 2021-07-12 13:30:18 UTC
Ora universală: Luni 2021-07-12 13:30:18 UTC
Ora RTC: Luni 2021-07-12 13:30:13
Fus orar: UTC (UTC, +0000)
Ceas de sistem sincronizat: da
Serviciu NTP: activ
RTC în TZ local: nr
Deci, de ce IP-ul meu interzis poate ajunge în continuare la site-ul țintă? Mulțumesc pentru pistele și luminile tale.
Fragmente
Traefik docker-compose.yml
Partea de logare
versiunea: "3.3"
Servicii:
proxy invers:
imagine: „traefik:v2.4”
comanda:
# Configurare jurnal
#- "--log.level=DEBUG"
- „--log.filepath=/var/log/traefik/traefik.log”
- „--accesslog.filepath=/var/log/traefik/access.log”
Parte de volum :
#...
volume:
# Pentru a persista certificatele
- traefik-certificates:/letsencrypt
- „/var/run/docker.sock:/var/run/docker.sock:ro”
- /var/log/traefik:/var/log/traefik/
#...
Fail2Ban
Filtrul meu
/etc/fail2ban/filter.d/my_filter.conf
[Definiție]
failregex = ^<HOST>.*"(GET|POST|HEAD).*" (404|444|403|400|301) .*$
ignoreregex =
Închisoarea mea
[închisoarea_mea]
activat = adevărat
port = http,https
filtru = filtrul_meu
logpath = /var/log/traefik/access.log
maxretry = 10
Statutul clientului
# fail2ban-starea clientului
stare
|- Numărul închisorii: 2
`- Lista închisorii: sshd, my_jail