Persistência e Migração do ufw para iptables-persistent
Olá, sou um incompetente.
Até agora, eu estava usando o ufw, que permite configurar o firewall facilmente, mas eu queria gerenciá-lo no nível de configuração para facilitar a migração, como o pf.conf, então instalei o iptables-persistent.
Parece que também existem patches de kernel para usar o pf, mas forçar o uso deles não é o ideal, e também seria fugir do iptables, então o adotei.
Instalação
Como o iptables já deve estar instalado na maioria dos casos, vou instalar apenas o iptables-persistent.
A propósito, como o ufw será removido automaticamente devido a conflitos, certifique-se de verificar as regras existentes com antecedência.
sudo apt install iptables-persistent
Uso mínimo do netfilter-persistent
Para salvar as regras atuais em /ets/iptables/
sudo netfilter-persistent save
Para recarregar usando as configurações atuais de /etc/iptables/
sudo netfilter-persistent reload
A propósito, se você save sem ter feito um reload, as regras atuais serão salvas, e as configurações que você escreveu serão perdidas, então tome cuidado.
Configuração
As configurações ficaram assim.
É bem difícil que o iptables perca todos os comentários e quebras de linha ao save...
# cat rules.v4
# Generated by iptables-save v1.8.9 (nf_tables) on Sat Oct 11 16:27:52 2025
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [18:1900]
:TCP - [0:0]
:UDP - [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -i 127.0.0.1/32 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -j ACCEPT
-A INPUT -i wg0 -j ACCEPT
-A INPUT -m conntrack --ctstate INVALID -j DROP
-A INPUT -p icmp -m icmp --icmp-type 8 -m conntrack --ctstate NEW -j ACCEPT
-A INPUT -p udp -m conntrack --ctstate NEW -j UDP
-A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m conntrack --ctstate NEW -j TCP
-A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
-A INPUT -p tcp -j REJECT --reject-with tcp-reset
-A INPUT -j REJECT --reject-with icmp-proto-unreachable
COMMIT
# Completed on Sat Oct 11 16:27:52 2025
As regras de permissão basicamente permitem o acesso por interface local e WireGuard.
Basicamente, eu as copiei da Arch Wiki.
Firewall Stateful Simples - ArchWiki
Isso porque
se você não adicionar -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT, por exemplo, a resposta de um curl não retornará, então parece que é necessário direcionar explicitamente as conexões estabelecidas para uma regra separada. Percebi novamente que a força do pf reside em gerenciar esse tipo de estado de forma inteligente, e foi um dia em que quis acariciar o pf novamente.
Até a próxima.
A propósito, sem IPv6.
# cat rules.v6
# Generated by ip6tables-save v1.8.9 (nf_tables) on Sat Oct 11 17:37:50 2025
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
COMMIT
# Completed on Sat Oct 11 17:37:50 2025
Obrigado.