sudo apt install fail2ban
sudo nano /etc/fail2ban/jail.local
[DEFAULT]
# quanto dura un ban
bantime = 24h
# finestra temporale per contare i tentativi
findtime = 10m
# tentativi falliti prima del ban
maxretry = 4
# usa i log di systemd (bene su Ubuntu)
backend = systemd
# integra con UFW per bannare gli IP
banaction = ufw
# IP da non bannare (metti i tuoi)
# ignoreip = 127.0.0.1/8 ::1 YOUR.PUBLIC.IP/32
ignoreip = 127.0.0.1/8 ::1
# ban progressivi (opzionale ma consigliato)
bantime.increment = true
bantime.factor = 1.5
bantime.formula = bantime * (1 + factor) ** (failures - 1)
bantime.maxtime = 168h
[sshd]
enabled = true
# se usi la porta di default, puoi lasciare "ssh"; se hai cambiato porta, metti il numero (es. 2222)
port = ssh
logpath = %(sshd_log)s
# più severo sui pattern brute-force
mode = aggressive