O
UFW (Uncomplicated Firewall, ou Firewall Descomplicado) é conhecido pelos usuários do
Ubuntu, embora nem sempre todos saibam como realizar a configuração dele. Acredito ser interessante apresentar como trabalhar com essa aplicação, que é instalada por padrão no Ubuntu desde a versão 18.04, auxiliando assim na segurança das estações e trabalho e dos servidores.
Como dito acima, o UFW é instalado no Ubuntu desde a versão 18.04, mas por padrão, ele está desabilitado. O UFW ainda possui uma interface gráfica chamada GUFW, que pode ser instalada caso você utilize um ambiente desktop.
Neste material, iremos aprender como habilitar e utilizar este
Firewall através do terminal.
Configurar o Firewall com o UFW
Ao utilizar uma versão mais recente do Ubuntu, como a 19.10 ou a 20.04, você terá o UFW instalado, mas inativo.
Iremos inicialmente ativar o UFW:
sudo ufw enable
Caso queira desativar o UFW, utilizar o comando:
sudo ufw disable
Caso você recebe uma mensagem de erro, como "comando não encontrado", instale o UFW executando o comando:
sudo apt-get install ufw
Na sequência, podemos verificar o status do UFW utilizando:
sudo ufw status
Agora o UFW deve estar ativado no seu Ubuntu, apresentando uma mensagem como "Status: active".
Por padrão, o Firewall com o UFW nega qualquer conexão recebida e permite todas as conexões realizadas do seu computador. Para muitos usuários, isto já é suficiente para a proteção da estação de trabalho, mas para quem possui serviços online ou aplicações, em servidores, é preciso criar algumas regras no Firewall.
Definir Regras no Firewall
O primeiro passo é entender que uma regra de Firewall, é uma instrução, que define a maneira com que o Firewall irá se comportar, como por exemplo, quais conexões serão aceitas ou rejeitadas.
Abrir e Fechar as Portas do Firewall
Todas as ações realizadas são com o comando ufw.
Para abrir uma porta, utilizamos o comando:
sudo ufw allow
Os protocolos utilizados podem ser TCP ou UDP, dependendo da porta e do protocolo de uma aplicação. Um exemplo seria liberar o acesso ao nosso DNS, que está na porta 53, com o protocolo UDP:
sudo ufw allow 53/UDP
Podemos liberar a porta 80 no protocolo TCP, liberando o acesso a um servidor web através do protocolo HTTP:
sudo ufw allow 80/TCP
Com os dois comandos anteriores, liberamos que todas as aplicações externas que tentarem realizar a conexão com o nosso servidor DNS, e com o nosso servidor WEB, poderão realizar a conexão com a nossa máquina, pois estas conexões estão permitidas.
Cosa eu queira agora negar as conexões no servidor DNS, ou seja, porta 53 no protocolo UDP, utilizo o seguinte comando:
sudo ufw deny 53/UDP
Desta forma, qualquer tentativa de conexão na porta 53, pelo protocolo UDP, no seu servidor, será negada pelo Firewall.
Podemos também trabalhar com um intervalo de portas, de forma parecida com os comandos anteriores. A alteração é que ao invés de informar uma porta, informamos o intervalo:
sudo ufw allow/deny /protocolo
Para liberar, por exemplo, o intervalo de portas entre a 8000 e 9000 no protocolo TCP, da seguinte forma:
sudo ufw allow 8000:9000/TCP
Para negar o intervalo de portas entre a 8000 e 9000 no protocolo TCP, da seguinte forma:
sudo ufw deny 8000:9000/TCP
Abrir e Fechar as Portas do Firewall pelos Serviços
Existem serviços que utilizam portas já determinadas, como por exemplo o HTTP utilizar a 80 e o HTTPS utiliza a 443. Podemos então liberar ou negar as conexões pelo nome dos serviços, não sendo necessário definir o protocolo:
sudo ufw allow http
sudo ufw allow https
Abrir e Fechar as Portas do Firewall pelos Softwares
Outro ponto interessante é podermos utilizar os nomes dos softwares para abrir, ou fechar, as portas utilizadas.
Para liberar as portas utilizadas pelo Nginx (HTTP e HTTPS), você pode utilizar:
sudo ufw allow 'Nginx Full'
Para liberar as portas do SSH, utilizar:
sudo ufw allow OpenSSH
Abrir e Fechar as Portas do Firewall para IPs ou Sub-redes
Em alguns momentos precisamos ajustar o Firewall para determinados IPs, como por exemplo, liberar o SSH para a rede interna e negar para a rede externa.
Para liberar, ou negar, toda as conexões de um determinado IP, utilizamos:
sudo ufw allow/deny from
Para liberar, ou negar, as conexões de um determinado IP em uma determinada porta, utilizamos:
sudo ufw allow/deny from to any port
Como exemplo, irei liberar todas as conexões para o IP 200.210.184.30:
sudo ufw allow from 200.210.184.30
Agora, irei liberar o acesso ao serviço SSH, na porta 22, para o IP 192.168.0.50:
sudo ufw allow from 192.168.0.50 to any port 22
Caso eu queira liberar o acesso ao serviço SSH, na porta 22, para toda a sub-rede 192.168.0.x, devo utilizar o seguinte comando:
sudo ufw allow from 192.168.0.0/24 to any port 22
Posso também negar a conexão na porta 80 (HTTP), para toda a sub-rede 192.168.0.x, devo utilizar o seguinte comando:
sudo ufw deny from 192.168.0.0/24 to any port 80
Deletar as Regas do Firewall
Para deletarmos as regras do Firewall, precisamos listar as existentes de forma numerada. Para essa listagem, devemos executar:
Conclusão
sudo ufw status numbered
Após saber o número da regra do Firewall que será excluída, utilizamos o comando:
sudo ufw delete
Para apagar a regra relativa à porta 443 no protocolo TCP, que possui o número 2, utilizo:
sudo ufw delete 2
Conclusão
Foram apresentados os principais comandos do UFW, para o gerenciamento do Firewall no Ubuntu.
Caso você queira buscar mais informações, o manual do UFW pode ser acessado com:
sudo ufw -help