UFW é um programa que gerencia o firewall Netfilter. UFW serve como interface entre o usuário e o firewall e tem como objetivo facilitar.
Certamente você já ouviu falar do iptables. Iptables é um programa que de firewall que serve para definir grupo de regras. Iptables foi substituído pelo nftables. Iptables era desenvolvido pelo time da netfilter mas recebia melhorias da comunidade.
Mas voltando ao assunto, UFW tem funcionalidade semelhante na sua essência: alterar o firewall netfilter de facilitadamente.
Exemplos de Utilização do UFW
UFW: Iniciando, Parando, Resetando e Vendo Status
- Vendo o Status do UFW com “sudo ufw status”
elder@ubuntu:~$ sudo ufw status Estado: inativo
- Ativando e Fazendo o UFW iniciar durante o boot com “sudo ufw enable”. Digite “s” quando solicitado.
elder@ubuntu:~$ sudo ufw enable O comando pode romper conexões ssh existentes. Proceder com a operação (s|n)? s Firewall está ativo e habilitado na inicialização do sistema
- Vendo o status novamente
elder@ubuntu:~$ sudo ufw status Estado: ativo
- Desabilitando o firewall e fazendo com que ele não inicie durante o boot com “sudo ufw disable”
elder@ubuntu:~$ sudo ufw disable Firewall parado e desativado na inicialização do sistema
- Reativando e vendo a versão
elder@ubuntu:~$ sudo ufw enable O comando pode romper conexões ssh existentes. Proceder com a operação (s|n)? s Firewall está ativo e habilitado na inicialização do sistema
elder@ubuntu:~$ sudo ufw --version ufw 0.35 Copyright 2008-2015 Canonical Ltd.
- Se quiséssemos resetar o UFW usaríamos “ufw reset”. Digite s quando solicitado.
elder@ubuntu:~$ sudo ufw reset Reconfigurando todas as regras para os padrões instalados. Isso pode romper conexões ssh existentes. Proceder com operação (s|n)? s Salvando 'user.rules' para '/etc/ufw/user.rules.20210527_173409' Salvando 'before.rules' para '/etc/ufw/before.rules.20210527_173409' Salvando 'after.rules' para '/etc/ufw/after.rules.20210527_173409' Salvando 'user6.rules' para '/etc/ufw/user6.rules.20210527_173409' Salvando 'before6.rules' para '/etc/ufw/before6.rules.20210527_173409' Salvando 'after6.rules' para '/etc/ufw/after6.rules.20210527_173409'
O Firewall ficará inativo, Ative-o novamente.
elder@ubuntu:~$ sudo ufw enable
UFW: Permitindo e Negando Acesso
- Permitindo conexão na porta 22.
elder@ubuntu:~$ sudo ufw allow 22 Regra adicionada Regra adicionada (v6)
Poderíamos também acrescentar o protocolo(tcp, udp)
elder@ubuntu:~$ sudo ufw allow 22/tcp
- Desabilitando a porta 80
elder@ubuntu:~$ sudo ufw deny 80 Regra adicionada Regra adicionada (v6)
- Liberando apenas entrada de dados na porta 443. Aqui, “in” significa entrada
elder@ubuntu:~$ sudo ufw allow in 443
- Negando saída de dados para smtp. Aqui “out” quer dizer saída. Podemos usar o nome do protoclo(smtp, pop) ou a porta referente, como 587 ou 465 para smtp. Usarei o nome do protocolo.
elder@ubuntu:~$ sudo ufw deny out smtp
- Veja o status novamente e olhe as regras que configuramos.
elder@ubuntu:~$ sudo ufw status Estado: ativo Para Ação De ---- ---- -- 22 ALLOW Anywhere 22/tcp ALLOW Anywhere 80 DENY Anywhere 443 ALLOW Anywhere 22 (v6) ALLOW Anywhere (v6) 22/tcp (v6) ALLOW Anywhere (v6) 80 (v6) DENY Anywhere (v6) 443 (v6) ALLOW Anywhere (v6) 25/tcp DENY OUT Anywhere 25/tcp (v6) DENY OUT Anywhere (v6)
- Podemos usar uma forma mais completa ainda. Abaixo negamos acesso usando protocolo tcp à porta 80 para qualquer(to any) endereço.
elder@ubuntu:~$ sudo ufw deny proto tcp to any port 80
- Outro exemplo mais complexo. Abaixo nenhum endereço de rede classe A terá acesso à porta 25 com endereço ip 192.168.0.1
elder@ubuntu:~$ sudo ufw deny proto tcp from 10.0.0.0/8 to 192.168.0.1 port 25
Deletando Regras
Vamos excluir algumas das regras abaixo? Antes exiba o status com numeração(numbered)
elder@ubuntu:~$ sudo ufw status numbered Estado: ativo Para Ação De ---- ---- -- [ 1] 22 ALLOW IN Anywhere [ 2] 22/tcp ALLOW IN Anywhere [ 3] 80 DENY IN Anywhere [ 4] 443 ALLOW IN Anywhere [ 5] 25/tcp DENY OUT Anywhere (out) [ 6] 80/tcp DENY IN Anywhere [ 7] 192.168.0.1 25/tcp DENY IN 10.0.0.0/8 [ 8] 22 (v6) ALLOW IN Anywhere (v6) [ 9] 22/tcp (v6) ALLOW IN Anywhere (v6) [10] 80 (v6) DENY IN Anywhere (v6) [11] 443 (v6) ALLOW IN Anywhere (v6) [12] 25/tcp (v6) DENY OUT Anywhere (v6) (out) [13] 80/tcp (v6) DENY IN Anywhere (v6)
Para excluir basta epenas digitarmos a regra acrescentando “delete”.
Vamos deletar a regra “192.168.0.1 25/tcp DENY 10.0.0.0/8” que é representada pelo número 7.
elder@ubuntu:~$ sudo ufw delete 7
Outras opções para apagar uma regra o mesmo texto que digitamos ao criar regra:
ufw delete deny 80/tcp
UFW com mais de Uma Interface de Rede
Quando houver mais de uma interface de rede, por exemplo, eth0 e eth1, podemos usar “in on” ou “out on”
- in on: significa entrada em
- out on: saída em
Exemplos retirados do manual de UFW
Abaixo, permitimos para eth0 toda entrada de na porta 80(http) e usando protocolo tcp
ufw allow in on eth0 to any port 80 proto tcp
Redirecionamento de Portas Usando UFW
Não existe nenhuma regra no UFW para redirecionamento de portas. Redirecionamento de portas é conhecido também como port forward.
Para redirecionar devemos configurar o arquivo /etc/ufw/before.rules
Vamos supor que queiramos redirecionar toda entrada na porta 8080 para porta 80.
- Libere a porta 8080
elder@ubuntu:~$ sudo ufw allow 8080
- Abra o arquivo “/etc/ufw/before.rules” e adicione o texto abaixo na parte de cima
*nat :PREROUTING ACCEPT [0:0] -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 COMMIT
Liberando um Intervalo de Portas
Abaixo liberei todas as portas tcp dentro do intervalo de 6000 à 6500.
elder@ubuntu:~$ sudo ufw allow 6000:65000/tcp
Conclusão
A ferramenta UFW é bem simples, fácil de manusear; porém carece da opção para redirecionamento de portas.
Para mais informações sobre a ferramenta UFW consulte o seu manual.
4 Comments to “Gerenciando Firewall com UFW”