Firewall e SSH
UFW, nftables, fail2ban e l'operatività SSH quotidiana senza chiudersi fuori. Ogni comando è verificato e copiabile; in chat basta descrivere cosa vuoi fare.
11 comandi in questa pagina
- Come vedo lo stato e le regole di UFW?
- Come attivo UFW senza chiudermi fuori?
- Come apro una porta con UFW (anche solo per un IP)?
- Come cancello una regola UFW?
- Come vedo le regole nftables attive?
- Perché Docker ignora le regole UFW?
- Come mi semplifico la vita con ~/.ssh/config?
- SSH non si connette: come lo debuggo?
- Come modifico sshd_config senza chiudermi fuori?
- Come vedo chi ha bannato fail2ban?
- Come sbanno un IP da fail2ban?
# Come vedo lo stato e le regole di UFW?
ufw status verbose
ufw status numbered # coi numeri, per cancellare
verbose mostra anche le policy di default: quelle contano più delle singole regole.
Approfondisci: Come si imposta il firewall dell'host (tramite ufw o regole native nftables) secondo il principio di default deny su tutto il traffico?
# Come attivo UFW senza chiudermi fuori?
ufw allow OpenSSH # PRIMA di tutto
ufw default deny incoming
ufw default allow outgoing
ufw enable
L'ordine è la differenza tra hardening e lockout: la regola SSH va messa PRIMA di enable.
Approfondisci: Come si imposta il firewall dell'host (tramite ufw o regole native nftables) secondo il principio di default deny su tutto il traffico?Come si mette in sicurezza SSH su un server esposto?
# Come apro una porta con UFW (anche solo per un IP)?
ufw allow 443/tcp
ufw allow from 192.168.1.50 to any port 5432 proto tcp
La forma from ... to any port ... è il minimo privilegio applicato al firewall: apri a CHI serve, non al mondo.
Approfondisci: Come si imposta il firewall dell'host (tramite ufw o regole native nftables) secondo il principio di default deny su tutto il traffico?Cos'è il principio del minimo privilegio?
# Come cancello una regola UFW?
ufw status numbered
ufw delete 3
I numeri si RICALCOLANO dopo ogni delete: cancella dal numero più alto verso il basso.
Approfondisci: Come si imposta il firewall dell'host (tramite ufw o regole native nftables) secondo il principio di default deny su tutto il traffico?
# Come vedo le regole nftables attive?
nft list ruleset
Anche UFW e Docker scrivono qui: questa è la verità effettiva del firewall, qualunque frontend usi.
Approfondisci: Come si imposta il firewall dell'host (tramite ufw o regole native nftables) secondo il principio di default deny su tutto il traffico?
# Perché Docker ignora le regole UFW?
# Docker scrive in una chain propria (DOCKER) che precede UFW.
# La soluzione pulita: pubblica su localhost e metti un reverse proxy davanti
# ports: ['127.0.0.1:8080:80']
È il gotcha di sicurezza Docker più comune in self-hosting: -p 8080:80 apre la porta al mondo ANCHE con UFW attivo.
Approfondisci: Come si imposta il firewall dell'host (tramite ufw o regole native nftables) secondo il principio di default deny su tutto il traffico?Cosa sono le porte TCP e UDP (e quali sapere a memoria)?
# Come mi semplifico la vita con ~/.ssh/config?
# ~/.ssh/config
Host web
HostName 203.0.113.10
User mario
Port 2222
IdentityFile ~/.ssh/id_ed25519
# poi basta: ssh web
Vale anche per scp/rsync/git; con ProxyJump bastione attraversi il bastion host in trasparenza.
Approfondisci: Come funzionano le chiavi SSH (e perché abbandonare le password)?Come si mette in sicurezza SSH su un server esposto?
# SSH non si connette: come lo debuggo?
ssh -vvv mario@server
# lato server: journalctl -u ssh -e
In -vvv cerca quale chiave sta offrendo; Permission denied (publickey) = chiave non in authorized_keys o permessi sbagliati (600/700).
Approfondisci: Come si mette in sicurezza SSH su un server esposto?Come funzionano le chiavi SSH (e perché abbandonare le password)?
# Come modifico sshd_config senza chiudermi fuori?
sshd -t # valida la sintassi
systemctl reload ssh # reload, NON restart
# e prova il login da un SECONDO terminale, tenendo aperto il primo
La sessione aperta sopravvive al reload: è la tua rete di sicurezza. Chiudila solo dopo il login di prova riuscito.
Approfondisci: Come si mette in sicurezza SSH su un server esposto?
# Come vedo chi ha bannato fail2ban?
fail2ban-client status
fail2ban-client status sshd
La jail sshd è quella di default; Currently banned sono gli IP fuori dalla porta in questo momento.
Approfondisci: Fail2ban: cos'è e quali alternative esistono?Come si fa security logging fatto bene?Cos'è un attacco brute force (e il credential stuffing)?
# Come sbanno un IP da fail2ban?
fail2ban-client unban 203.0.113.7
# preventivo: ignoreip = 192.168.1.0/24 in jail.local
Il classico è bannarsi da soli sbagliando password: metti la tua rete in ignoreip PRIMA che succeda.
Approfondisci: Fail2ban: cos'è e quali alternative esistono?Come si imposta il firewall dell'host (tramite ufw o regole native nftables) secondo il principio di default deny su tutto il traffico?Come si mette in sicurezza SSH su un server esposto?