Capítulo 3 · 3.4
Uma firewall com ufw (ou nftables)
Na rede da WebOké, todo o tráfego de entrada para o seu VPS está aberto. É o utilizador que decide o que entra, através de uma firewall no seu servidor. Assim, permite apenas o que é necessário, como o SSH e o seu website.
Atenção: Abra o SSH antes de ativar a firewall. Caso contrário, fica sem acesso ao servidor. Se isso acontecer, desative a firewall através da consola (consulte Bloqueado: já não consegue aceder ao seu servidor).
ufw em Debian e Ubuntu
O ufw é uma camada simples por cima da firewall do Linux. No Ubuntu já vem instalado; no Debian, instale-o da seguinte forma:
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)
Tudo o que não permitir é recusado. As regras aplicam-se automaticamente também ao IPv6. As portas 80 e 443 só são necessárias para um website (capítulo 5). Se utilizar o Caddy com HTTP/3, abra também sudo ufw allow 443/udp.
Comandos úteis do ufw
| Comando | O que faz? |
|---|---|
sudo ufw status numbered | Mostra as regras com um número |
sudo ufw delete 3 | Remove a regra 3 |
sudo ufw allow from 198.51.100.7 to any port 22 proto tcp | Abre uma porta apenas para um endereço IP |
sudo ufw limit OpenSSH | Recusa temporariamente um endereço que inicie 6 ou mais ligações em 30 segundos |
sudo ufw disable | Desativa a firewall (por exemplo, através da consola, se tiver ficado sem acesso) |
Sem ufw: nftables
No Debian, o nftables é a firewall que funciona nos bastidores. Se não quiser utilizar o ufw, escreva as regras diretamente em /etc/nftables.conf. Uma pequena base para IPv4 e IPv6 em conjunto:
#!/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
Com nft -c verifica primeiro o ficheiro. Utilize o ufw ou o nftables, nunca os dois ao mesmo tempo.
Em AlmaLinux e Rocky Linux o firewalld já vem instalado: sudo firewall-cmd --permanent --add-service=http --add-service=https e sudo firewall-cmd --reload. Aí, o SSH está aberto por predefinição.
Dica: Utiliza o Docker? As portas que publica com o Docker contornam o ufw. Por isso, leia Docker e a firewall: publicar portas em segurança.
