Capitolo 3 · 3.4
Un firewall con ufw (o nftables)
Sulla rete di WebOké tutto il traffico in entrata verso il Suo VPS è aperto. È Lei a decidere che cosa può entrare, con un firewall sul Suo server. In questo modo consente solo ciò che è necessario, come SSH e il Suo sito web.
Attenzione: Apra SSH prima di attivare il firewall. Altrimenti si chiude fuori da solo. Se dovesse comunque succedere, disattivi il firewall tramite la console (vedere Accesso bloccato: non riesce più a entrare nel Suo server).
ufw su Debian e Ubuntu
ufw è un semplice livello sopra il firewall di Linux. Su Ubuntu è già presente, su Debian lo installi così:
anna@web1:~$ sudo apt install ufw
anna@web1:~$ sudo ufw allow OpenSSH
anna@web1:~$ sudo ufw allow 80,443/tcp
anna@web1:~$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
anna@web1:~$ sudo ufw status verbose
Status: active
Default: deny (incoming), allow (outgoing), disabled (routed)
To Action From
-- ------ ----
22/tcp (OpenSSH) ALLOW IN Anywhere
80,443/tcp ALLOW IN Anywhere
22/tcp (OpenSSH (v6)) ALLOW IN Anywhere (v6)
80,443/tcp (v6) ALLOW IN Anywhere (v6)
Tutto ciò che non consente viene rifiutato. Le regole valgono automaticamente anche per IPv6. Le porte 80 e 443 Le servono solo per un sito web (capitolo 5). Se usa Caddy con HTTP/3, apra anche sudo ufw allow 443/udp.
Comandi ufw utili
| Comando | Che cosa fa? |
|---|---|
sudo ufw status numbered | Le regole con un numero |
sudo ufw delete 3 | Eliminare la regola 3 |
sudo ufw allow from 198.51.100.7 to any port 22 proto tcp | Aprire una porta solo per un indirizzo IP |
sudo ufw limit OpenSSH | Rifiutare temporaneamente un indirizzo che avvia 6 o più connessioni entro 30 secondi |
sudo ufw disable | Disattivare il firewall (per esempio tramite la console se è rimasto chiuso fuori) |
Senza ufw: nftables
Su Debian nftables è il firewall che lavora dietro le quinte. Se non desidera ufw, scriva Lei stesso le regole in /etc/nftables.conf. Una piccola base per IPv4 e IPv6 insieme:
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input {
type filter hook input priority filter; policy drop;
ct state established,related accept
iif "lo" accept
meta l4proto { icmp, ipv6-icmp } accept
tcp dport { 22, 80, 443 } accept
}
}
anna@web1:~$ sudo nft -c -f /etc/nftables.conf
anna@web1:~$ sudo systemctl enable --now nftables
Con nft -c controlla prima il file. Usi ufw oppure nftables, non entrambi contemporaneamente.
Su AlmaLinux e Rocky Linux firewalld è già presente: sudo firewall-cmd --permanent --add-service=http --add-service=https e sudo firewall-cmd --reload. Lì SSH è aperto per impostazione predefinita.
Suggerimento: Usa Docker? Le porte che pubblica con Docker aggirano ufw. Per questo legga Docker e il firewall: pubblicare le porte in modo sicuro.
