Home / Dicas e Tutoriais / O básico sobre Firewall com UFW em Linux

O básico sobre Firewall com UFW em Linux

Olá galera,

Não sou um especialista em firewall em Linux e conheço esse assunto apenas em um nível bem básico e sei que existem muitos profissionais “feras” na área. Mas acho importante postar aqui como colocar um Firewall no ar em um servidor Linux, mesmo que de forma básica, para negar os acessos indesejados e proteger o servidor. Para isso, nesse artigo, iremos usar o UFW. Mas se você desejar um programa para gerenciar o seu Firewall com interface gráfica, dê uma olhada neste ARTIGO que explica como instalar e usar o Gufw. Ou este outro ARTIGO que explica sobre o FirewallBuilder.

Este artigo pode ser usado e testado em um GNU/Linux como o Debian ou Ubuntu e derivados. Para que estiver iniciando sugiro praticar usando uma máquina virtual.

Bom, então vamos lá.

Uma das primeiras linhas de defesa em proteger o seu servidor é um firewall funcionando. No passado, este era muitas vezes feito através de utilitários complicados e misteriosos. Há um monte de funcionalidades incorporadas a esses utilitários, sendo o IPTABLES o mais popular hoje em dia, mas eles exige um esforço do usuário para aprender e compreender. As regras de firewall não é algo que você pode  aprender intuitivamente.

Para este fim, o UFW é uma alternativa muito mais fácil de usar.

O que é UFW?

UFW ou Uncomplicated Firewall (Firewall Descomplicado), é um front-end para iptables. Seu principal objetivo é fazer com que o gerenciamento de seu firewall seja simples e para fornecer uma comandos de fácil utilização. É bem suportado e popular na comunidade Linux, e vem instalado por padrão em muitas distros. Como tal, é uma ótima maneira de começar a proteger o seu Sever.

Antes de começarmos

Primeiro, obviamente, você quer ter certeza de UFW está instalado. Ele deve ser instalado por padrão no Ubuntu, mas se por algum motivo ele não estiver, você pode instalar o pacote usando o apt-get com os seguintes comandos:

sudo apt-get install ufw

Verifique o Status

Você pode verificar o status do UFW, digitando:

sudo ufw status

Neste momento, ele provavelmente irá dizer-lhe que está inativo. Sempre que o ufw estiver ativo, você poderá obter uma listagem das regras atuais que é semelhante a este:

Status: active

To               Action      From
--               ------      ----
22               ALLOW       Anywhere

Usando IPv6 com UFW

Se o seu VPS é configurado para IPv6, garantir que UFW está configurado para suportar IPv6, de modo que irá configurar tanto o IPv4 e IPv6 regras de firewall.Para fazer isso, abra a configuração do PFM com este comando:

sudo vi /etc/default/ufw

Em seguida, certifique-se “IPV6” esteja definido como “yes”, assim:

IPV6=yes 

Salvar e sair. Em seguida, reinicie o seu firewall com os seguintes comandos:

sudo ufw disable
sudo ufw enable

Agora UFW está configurado para IPv4 e IPv6, quando for o caso.

Configurar Defaults

Uma das coisas que vai fazer a criação de qualquer firewall mais fácil é definir algumas regras padrão para permitir e negar conexões. Os padrões do UFW são negar todas as conexões de entrada e permitir todas as conexões de saída. Isso significa que qualquer um que tente chegar ao seu servidor cloud, por exemplo, não será capaz de se conectar, enquanto que qualquer aplicação dentro do servidor seria capaz de chegar ao mundo exterior. Para definir os padrões usados ​​por UFW, você usaria os seguintes comandos:

sudo ufw default deny incoming

e

sudo ufw default allow outgoing

Nota: Se você quiser ser um pouco mais restritivo, você também pode negar todos os pedidos de saída também. A necessidade desta é discutível, mas se você tiver um servidor em nuvem voltados para o público, isso poderia ajudar a prevenir contra qualquer tipo de conexões de shell remoto. Ele faz o seu firewall mais complicado de gerir, porque você vai ter que definir regras para todas as conexões de saída também. Não é recomendável, mas você pode definir este padrão com o seguinte comando:

sudo ufw default deny outgoing

Permitir conexões

A sintaxe é bastante simples. Você pode alterar as regras de firewall por meio de comandos no terminal. Se nosso firewall estiver habilitado agora, isso iria negar todas as conexões de entrada. Se você estiver conectado via SSH a um servidor na nuvem, isso seria um problema, porque você vai ficar trancado do lado de fora de seu servidor. Vamos antes permitir conexões SSH para o nosso servidor para impedir que isso aconteça:

sudo ufw allow ssh

Como você pode ver, a sintaxe para adicionar serviços é bastante simples. UFW vem com alguns padrões para usos comuns. Nosso comando SSH acima é um exemplo.É basicamente apenas um atalho para:

sudo ufw allow 22/tcp

Este comando permite que uma conexão na porta 22 usando o protocolo TCP. Se o nosso servidor SSH é executado na porta 2222, nós poderíamos permitir conexões com o seguinte comando:

sudo ufw allow 2222/tcp

Outras Conexões Podemos precisar

Agora é um bom momento para permitir que algumas outras ligações que possa necessitar. Se nós estamos proteção de um servidor web com acesso FTP, que pode precisar destes comandos:

sudo ufw allow www
ou
sudo ufw allow 80/tcp 

e

sudo ufw allow ftp
ou
sudo ufw allow 21/tcp


Você poderá variar em quais portas e serviços que você precisa para abrir dependendo do seu ambiente e serviço rodando no seu servidor.Provavelmente haverá um pouco de testes necessários. Além disso, você precisará certificar-se de deixar sua conexão SSH permitida.

Intervalos de portas

Você também pode especificar intervalos de portas com PFM. Para permitir que as portas 1000 a 2000, use o comando:

sudo ufw allow 1000:2000 / tcp

Se você quiser UDP:

sudo ufw allow 1000:2000 / udp

Endereços IP

Você também pode especificar endereços IP. Por exemplo, se eu queria permitir conexões a partir de um endereço IP específico (dizer o meu endereço comercial ou residencial), eu uso o seguinte comando:

sudo ufw allow from 192.168.255.255

Permitir Sub-rede Específica

Você pode usar uma máscara de sub-rede:

sudo ufw allow from 192.168.1.0/24


Permitir por Porta e IP Específicos

 sudo ufw allow from <endereço IP> to <protocolo> port <número da porta>

Exemplo: permitir acesso do endereço IP 192.168.0.4 à porta 22 para todos os protocolos:

sudo ufw allow from 192.168.0.4 to any port 22

Permitir por Porta, Endereço IP e Protocolo Específico

 sudo ufw allow from <endereço ip> to <protocolo> port <número da porta> proto <nome do protocolo>

Exemplo: permitir acesso do endereço 192.168.0.4 à porta 22 usando TCP:

sudo ufw allow from 192.168.0.4 to any port 22 proto tcp

Habilitar PING

Por padrão, o UFW permite requisições ping. Você talvez deseje deixar requisições ping (icmp) habilitadas para diagnosticar problemas de rede.

Para desabilitar requisições ping (icmp), você precisa editar /etc/ufw/before.rules e remover as seguintes linhas:

# ok icmp codes
-A ufw-before-input -p icmp --icmp-type destination-unreachable -j ACCEPT
-A ufw-before-input -p icmp --icmp-type source-quench -j ACCEPT
-A ufw-before-input -p icmp --icmp-type time-exceeded -j ACCEPT
-A ufw-before-input -p icmp --icmp-type parameter-problem -j ACCEPT
-A ufw-before-input -p icmp --icmp-type echo-request -j ACCEPT

ou mudar “ACCEPT” para “DROP”

# ok icmp codes
-A ufw-before-input -p icmp --icmp-type destination-unreachable -j DROP
-A ufw-before-input -p icmp --icmp-type source-quench -j DROP
-A ufw-before-input -p icmp --icmp-type time-exceeded -j DROP
-A ufw-before-input -p icmp --icmp-type parameter-problem -j DROP
-A ufw-before-input -p icmp --icmp-type echo-request -j DROP

 

Negando Conexões

Nossa configuração padrão é negar todas as conexões de entrada. Isso faz com que as regras de firewall sejam mais fácil de administrar, uma vez que só são seletivamente permitidas determinadas portas e endereços IP. No entanto, se você quer abrir todas as portas do seu servidor (não recomendado), você pode permitir que todas as conexões e, em seguida, de forma restritiva negar portas que você não quer dar acesso, substituindo “allow” com “deny” no comandos acima. Por exemplo:

sudo ufw allow 80/tcp

permitiria o acesso à porta 80, enquanto:

sudo ufw deny 80/tcp

seria negar acesso à porta 80

*Obs do Cleuber: Esse conceito é o que geralmente é chamado de lista branca e lista negra.

Lista Branca (mais recomendada): Você NEGA TUDO, e libera as portas, serviços, e IPs sob demanda.

Lista Negra (não recomendada): Você PERMITE TUDO, e libera as portas, serviços, e IPs sob demanda.

Obviamente é menos seguro você liberar tudo, e abrir portas para que os serviços se comuniquem, visto que terá que deixar um monte de portas abertas, e para bloqueá-las deverá ter mais trabalho criando muito mais regras.

Excluindo regras

Existem duas opções para excluir regras. O mais simples é usar a seguinte sintaxe:

sudo ufw delete allow ssh

Como você pode ver, usamos o comando “delete” e insira as regras que você quer eliminar depois disso. Outros exemplos incluem:

sudo ufw delete allow 80/tcp

ou

sudo ufw delete allow 1000:2000 / tcp

Isso pode ficar complicado quando você tem regras que são longas e complexas.

A alternativa mais simples, de duas etapas é digitar:

sudo ufw status numbered

que terá lista UFW todas as normas vigentes em uma lista numerada. Em seguida, execute o comando:

sudo ufw delete [number]

onde “[número]” é o número da linha do comando anterior.

Ligando

Depois chegamos UFW para onde queremos, podemos ligá-lo usando este comando (lembre-se: se você estiver conectando via SSH, certifique-se que você defina o seu porta SSH, geralmente a porta 22, para ser autorizado a receber conexões):

sudo ufw enable

Você deverá ver o prompt de comando novamente, se tudo correu bem. Você pode verificar o status de suas regras agora, digitando:

sudo ufw status

ou

sudo ufw status verbose

para a exibição mais completa.

Para desligar o UFW, use o seguinte comando:

sudo ufw disable

Registrando logs

 

Para habilitar o registro, use:

sudo ufw logging on

 

Para desabilitar o registro, use:

sudo ufw logging off

Redefinir Tudo

Se, por qualquer razão, você precisa redefinir as regras do seu servidor de nuvem para suas configurações padrão, você pode fazer isso digitando o seguinte comando:

sudo ufw reset

Conclusão

Apesar de não me aprofundar muito neste tópico de estudo, estas dicas básicas nos ajudarão a ter um servidor que está configurado corretamente para restringir o acesso a um subconjunto de portas ou endereços IP conforme a sua necessidade.

É isso aí galera,

Abraços,

About Cleuber

Cleuber Silva Hashimoto. Administrador

2 comments

  1. Excelente artigo, parabéns!

    Sobre o registro de Logs (sudo ufw logging on), qual a forma de acessar posterior tais para análise?

    Grato!

  2. Muito bom o artigo, mas uma coisa que me indigna no ufw ou ainda não descobri como fazer, é liberar um ip com mascara, exemplo: quero liberar o acesso total a maquina que comece com ip 202.58 e o final pode ser qualquer coisa… e pelas opcoes que vi o ufw so permitir liberar uma sub rede.. ja tentei ufw allow from 202.58.0.0/24 mas nao aceitou. ou entao 202.58.*.*/24 tbm nao

Leave a Reply to Renato Cancel reply

x

Check Also

Elementary OS 6 Odin Lançado – Confira as Novidades

Desenvolver um sistema operacional não é ...