UFW - Firewall Linux#
Referências:#
- Documentação completa para Ubuntu: UFW - Ubuntu Documentation
- Documentação para Debian: UFW - Debian Wiki
1. Desabilitando o IPV6#
Para desabilitar o suporte a IPV6 no UFW, edite o arquivo /etc/default/ufw:
sed -i '/IPV6/s/yes/no/' /etc/default/ufw2. Habilitando o serviço UFW#
Defina a política padrão, permitindo ou negando tráfego conforme necessário:
# Política padrão: negar todo tráfego
ufw default deny
# Permite tráfego de redes específicas
ufw allow from 200.202.0.0/24
ufw allow from 200.200.1.0/24
ufw allow from 200.202.3.0/24
# Habilita o UFW
ufw enable
# Verifica o status
ufw status3. Remover Regras#
Para excluir regras específicas:
# Exclui regras de IPs específicos
ufw delete allow from 200.202.0.0/24
ufw delete allow from 200.200.1.0/244. Liberando Portas#
Liberando uma única porta:#
# Liberando porta TCP 873
ufw allow 873/tcp
# para uma interface específica:
ufw allow in on eth0 to any port 445 proto tcp comment 'SMBD via SSH'Liberando um intervalo de portas:#
# Liberando um intervalo de portas TCP de 200 a 2000
ufw allow 200.202:2000/tcp5. Liberar uma Porta para um IP Específico#
Para liberar uma porta para um IP específico, utilize:
ufw allow from 200.202.0.44 to any port 873 proto tcp6. Manipulação de Regras Numeradas#
Exibindo as regras numeradas:
ufw status numberedExemplo de saída:
To Action From
-- ------ ----
[ 1] 873/tcp ALLOW IN 200.202.0.44
[ 2] 22007/tcp ALLOW IN 200.202.3.6 Excluindo uma regra numerada:#
ufw delete 1Adicionando uma regra em um índice específico:#
ufw insert 1 allow from <ip address>7. Liberando Portas para Contêineres#
Se você utiliza contêineres (ex: podman), pode liberar portas para acesso entre as interfaces:
# Permite tráfego de entrada na interface "wlp0s20f3" e saída para "podman0" na porta 8888
ufw route allow in on wlp0s20f3 out on podman0 to any port 8888
ufw route allow proto tcp from 192.168.0.1/24 to 192.168.1.4 port 5000 comment 'Docker <> iDESTINATION'8. DNAT para Redirecionamento de Gateway para Servidor#
Configuração de redirecionamento de tráfego (DNAT) em /etc/ufw/before.rules:
# Habilita o encaminhamento de pacotes
sudo ufw route allow proto tcp from any to 172.16.1.6 port 80
# Arquivo /etc/ufw/before.rules
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
# Redireciona o tráfego de 172.43.1.2:80 para 172.16.1.6:80
-A PREROUTING -d 172.43.1.2 -p tcp --dport 80 -j DNAT --to-destination 172.16.1.6:80
# Mascaramento para garantir o retorno do tráfego
-A POSTROUTING -d 172.16.1.6 -p tcp --dport 80 -j MASQUERADE
COMMIT9. Criando Regras para Aplicações#
Você pode criar perfis de regras para aplicações específicas. Exemplo para o mkchromecast:
cat << EOF > /etc/ufw/applications.d/mkchromecast
[mkchromecast]
title=mkchromecast - casting services
description=Casting services
ports=5353/udp|5000/tcp
EOF
# Permite tráfego para a aplicação
ufw allow mkchromecast
# Ou permite de um IP específico para a aplicação
ufw allow from <some_address> to any app mkchromecastReferência adicional: StackOverflow - UFW Application Profiles
10. Solução para Máquinas Virtuais (Libvirt) sem IP e Rotas#
Se você usa o libvirt e suas máquinas virtuais não possuem IPs ou rotas, adicione a seguinte linha no arquivo de configuração do libvirt:
# Altere para iptables como backend para firewall
firewall_backend=iptables11. Configuração para LXC#
Liberando tráfego para a rede LXC:#
# Permite tráfego de entrada na interface "lxdbr0"
ufw allow in on lxdbr0 comment 'Trafego entrada LXC_BRIDGE'
# Permite tráfego de saída da interface "lxdbr0"
ufw route allow out on lxdbr0 comment 'Rota saída LXC_BRIDGE'
# Permite comunicação entre lxdbr0 e outras interfaces
ufw route allow out on enp2s0f5 comment 'Permite enp2s0f5 <-> lxdbr0'
ufw route allow out on wlp1s0 comment 'Permite wlp1s0 <-> lxdbr0'Regras de rede para LXC:#
# Permite tráfego para o container com IP 10.0.3.6 na porta 8111
ufw route allow proto tcp from any to 10.0.3.6 port 8111 comment 'Rota para o container SSL_TESTE IN <-> OUT'
# Arquivo /etc/ufw/before.rules
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
# Redireciona tráfego para o container
-A PREROUTING -d 10.0.0.2 -p tcp --dport 8111 -j DNAT --to-destination 10.0.3.6:8111
# Mascaramento para garantir o retorno do tráfego
-A POSTROUTING -d 10.0.3.6 -p tcp --dport 8111 -j MASQUERADE
COMMIT12. Configuração para Roteamento e Encaminhamento de Pacotes#
Para máquinas com múltiplas interfaces de rede, é necessário habilitar o roteamento no sysctl e configurar regras específicas de encaminhamento:
# Configuração de roteamento no sysctl para múltiplas interfaces
echo 1 > /proc/sys/net/ipv4/ip_forward
# Em /etc/ufw/sysctl.conf
net.ipv4.ip_forward=1Exemplo de regras de roteamento:
ufw route allow from 10.235.0.85 to any
ufw route allow from 10.10.0.0/24 to anyFirewalld#
1. Configuração de Política Default#
Para definir a política de bloqueio padrão no Firewalld, use o comando:
firewall-cmd --permanent --zone=public --set-target=DROP2. Manipulando Portas#
Para remover ou adicionar portas no Firewalld, use os seguintes comandos:
# Remove uma porta
firewall-cmd --remove-port=5001/tcp
# Adiciona uma porta
firewall-cmd --add-port=5001/tcp
# Torna as mudanças permanentes
firewall-cmd --runtime-to-permanent3. Manipulando Serviços#
Adicione serviços ao Firewalld:
# Adiciona o serviço cockpit
firewall-cmd --add-service=cockpit
# Lista todos os serviços disponíveis
firewall-cmd --get-services
# Torna as mudanças permanentes
firewall-cmd --runtime-to-permanent
# Verifica a configuração atual
firewall-cmd --check-config
# Exibe zonas ativas
firewall-cmd --get-active-zones