O UFW (Uncomplicated Firewall) é um firewall de uso simplificado, embora poderoso e versátil. Como você deve saber, a segurança de servidores e desktops, nesse sentido, é algo que não deve ser deixado de lado.
Neste enorme mundo conectado, existem inúmeros riscos de segurança aos quais qualquer pessoa pode se ver exposta.
Seja você usuário de um computador “doméstico” ou então alguém que, por algum motivo, possui um servidor, é importante que esteja ciente dos riscos envolvidos e dos procedimentos de segurança necessários.
Este guia cobre o firewall UFW, e conta com informações e exemplos práticos voltados a iniciantes. Tudo de forma simples e didática.
Assim, confira agora alguns pré-requisitos necessários para que você possa continuar a leitura.
Pré-requisitos
Sistema/Ferramenta | Pré-requisito |
---|---|
Sistema local | Linux / Windows / Mac |
Ferramentas locais | O próprio terminal, no Linux, ou então um cliente SSH como o PuTTY |
Ferramentas/plataformas remotas | Servidor Linux com Ubuntu |
Detalhes adicionais | Usuário com privilégios administrativos – sudo |
O que é firewall?
Um firewall é um importantíssimo elemento de segurança quando se lida com tecnologia da informação. Existem firewalls em hardware, ou seja, fornecidos ao usuário através de um equipamento (físico), e existem também os firewalls em forma de software.
Dessa forma, este guia para iniciantes cobre um firewall em software. Além disso, apesar do foco em servidores, nada impede que você instale e use um firewall em seu computador desktop.
Continuando, vale destacar que o firewall é um elemento de proteção em redes de computadores, capaz de filtrar o tráfego de dados de entrada e de saída (inbound e outbound).
O firewall pode filtrar todo o tráfego de rede em uma máquina, e então decidir o que pode ou não entrar e/ou sair, visando proteger o ambiente em questão.
O próprio significado da palavra firewall, além disso, dá uma dica importante a respeito de sua funcionalidade, pois a tradução seria algo como “parede de fogo”, ou “muro de fogo”.
Pense em um firewall como uma barreira de segurança entre a internet (a rede mundial de computadores) e sua rede interna, privada (incluindo seu computador).
Extrapolando um pouco mais as coisas, é válido dizer que, no caso de um servidor, o firewall também atua como uma importante barreira de segurança, monitorando o tráfego de entrada e de saída e decidindo se algo deve ser permitido ou bloqueado.
Um firewall pode atuar com base em um conjunto de regras (rules). Assim acontece quando estamos configurando um servidor com Apache e ativamos o profile (perfil) Apache Full
, por exemplo, o qual abre as portas 80
e 443
.
Portanto, um firewall protege um computador contra ameaças cibernéticas, monitorando o tráfego de entrada e de saída, bloqueando ameaças e liberando o tráfego seguro.
O que é UFW (Uncomplicated Firewall)?
Agora que você entendeu o que é um firewall, chegou o momento de conhecer o UFW.
O UFW (Uncomplicated Firewall, ou Firewall Descomplicado) é um frontend para o iptables. Por frontend, entenda que estamos falando sobre o elemento de um software com o qual a interação do usuário é possível.
O iptables, por sua vez, é também um tipo de firewall, que trabalha com filtragem de pacotes (packet filtering). É uma ferramenta também largamente utilizada no Linux e em outros S.O.s Unix-like.
Não entrarei em detalhes a respeito do iptables, pois este não é o foco deste guia, que é focado no UFW e no usuário iniciante.
Em suma, portanto, o UFW é uma interface para trabalharmos com o iptables. De forma muito mais simples e direta, é também importante ressaltar.
Desenvolvido para facilitar as etapas de configuração de um firewall, o UFW é também uma excelente escolha para servidores e usuários com pouca experiência.
Este firewall deve ser utilizado única e exclusivamente através da linha de comando. Ou seja, a instalação e a configuração, bem como a criação e edição de regras, são operações que devem ser executadas através de um terminal.
Através do UFW, você também pode definir regras específicas para IPs, intervalos (de portas, por exemplo), serviços e até mesmo aplicativos.
Os comandos são bastante simples, e neles são utilizadas “ordens”, para negar ou permitir o tráfego (deny
e allow
, por exemplo), o que torna os procedimentos ainda mais fáceis de serem decorados e implementados.
Configurando um firewall com UFW no Ubuntu
Em primeiro lugar, valem algumas palavras de atenção. É importante também dizer que o firewall não representa a única forma de proteger um servidor.
Existem outros métodos de proteção também importantíssimos, além de várias outras medidas simples porém eficazes.
Assim, devo dizer que você deve sempre ter o máximo de cuidado ao lidar com este tipo de ferramenta. Por exemplo, ao alterar a porta do SSH, você corre o risco de ver seu servidor inacessível, caso não tome as medidas necessárias.
É preciso também muito cuidado e atenção durante a criação ou edição de regras (rules), uma vez que um deny
ou um allow
indevido pode representar um risco ou um problema (você pode ser impedido de acessar seu próprio servidor, por exemplo).
E caso você esteja se perguntando agora mesmo se vale a pena ou não instalar um firewall em seu computador Linux pessoal (um desktop ou um notebook, por exemplo), minha dica é: instale o Gufw (veja acima), ative-o e recuse conexões de entradas enquanto permite as de saída.
Particularmente, faço isto em todos os meus computadores locais, e não tenho problema algum.
Mas não se preocupe. A seguir veremos detalhes do UFW em um servidor Linux, desde sua instalação até sua configuração.
A distribuição utilizada durante os testes é o Ubuntu 22.04, valendo também a pena lembrar que os procedimentos abaixo podem ser executados tanto em um servidor dedicado quanto em um VPS ou cloud.
Como instalar o UFW
No Ubuntu, o UFW vem instalado por padrão, sendo necessário apenas ativá-lo e configurá-lo. De qualquer forma, segue abaixo o comando para a instalação do software, caso seja necessário.
Confira agora o comando para a instalação:
sudo apt install ufw
Iniciando o uso do UFW
Observe que, conforme dito acima, a ferramenta encontra-se desabilitada inicialmente. Você pode inclusive conferir este pequeno detalhe, através do comando abaixo:
sudo ufw status
Você provavelmente obterá uma saída semelhante à abaixo, que indica que o firewall neste momento encontra-se inativo (inactive):
Portanto, neste momento, é necessário ativá-lo, através do seguinte comando:
sudo ufw enable
Observe que uma pergunta relacionada às conexões SSH existentes é feita. Responda com y
(yes = sim) e tecle ENTER
a seguir.
Pronto, a ferramenta foi ativada no sistema. Veja:
Se neste momento você usar novamente o comando sudo ufw status
, a saída será diferente da acima. Agora você receberá a mensagem “Status: active
“, indicando que a ferramenta encontra-se em funcionamento.
Trabalhando com regras e perfis no UFW
É interessante que você tenha em mente, neste momento, que as regras (ou rules) em um firewall servem para determinar o que será permitido e o que será proibido.
Em outras palavras, as regras servem para que a aplicação de segurança saiba o que pode e o que não pode entrar (tráfego inbound e outbound – entrada e saída). Elas definem quais conexões serão negadas e quais serão permitidas.
Nesse sentido, há um outro comando muito útil, que pode inclusive ser usado como ponto de partida neste guia. Este comando exibe todas as regras adicionadas pelo usuário (no caso, por você):
sudo ufw show added
Após executar o comando acima, e lembrando que estamos ainda no início da configuração do UFW (ou seja, ele está “limpo” no que diz respeito a regras por nós criadas), você provavelmente receberá o seguinte resultado:
(None)
Isto indica, como você já deve ter percebido, que ainda não criamos nenhuma regra.
As políticas padrão (default policies) do UFW
Além disso, vale dizer que, por padrão, o UFW deve bloquear todas as conexões de entrada ao mesmo tempo em que libera todas as conexões de saída.
Trata-se de uma forma de simplificar ainda mais as coisas, lembrando mais uma vez que a ferramenta tem como um de seus objetivos facilitar a vida de usuários com pouca experiência.
Assim, no UFW temos as políticas padrão (ou default policies), as quais representam, de certo modo, uma maneira mais abrangente de negar ou permitir conexões.
Dessa forma, após a definição das default policies, as regras adicionais que você cria no firewall funcionam como exceções. O nível de controle, desse modo, é muito maior.
Através de uma política padrão para deny
(negar), o UFW bloqueará todas as conexões de entrada. E através de uma política padrão para allow
(permitir), ele irá liberar aplicações no servidor que tentarem acessar algum recurso de rede e/ou internet.
Portanto, para que você possa prosseguir neste guia, defina agora no seu UFW as políticas padrão, utilizando os seguinte comandos:
sudo ufw default deny incoming
sudo ufw default allow outgoing
De qualquer modo, o software também permite que inúmeras regras sejam criadas de forma muito fácil, lembrando mais uma vez que todas elas servem a partir de agora como exceções às políticas padrão.
No caso de um servidor, por exemplo, onde geralmente temos diversas ferramentas, aplicativos e serviços em execução, algumas regras específicas devem ser criadas.
Perfis de aplicações no UFW
O UFW também é capaz de trabalhar com perfis de aplicações. Este é um modo de facilitar ainda mais a vida do usuário/administrador. Basicamente, os perfis se localizam no diretório /etc/ufw/applications.d
.
Cada perfil de aplicação conta com instruções pré-definidas, e assim, há inclusive um primeiro perfil, pré-instalado juntamente com o firewall.
Trata-se do perfil OpenSSH, e você pode conferir as integrações com aplicações já existentes no seu Ubuntu através do comando abaixo:
sudo ufw app list
Neste momento, você pode inclusive executar o seguinte comando, para que seja criada uma nova regra com base no perfil OpenSSH, a qual permitirá conexões SSH no servidor através da porta padrão:
sudo ufw allow openssh
Para verificar melhor como tudo funciona, execute novamente o comando sudo ufw show added
, e você perceberá que ele agora lista a regra criada através do comando acima.
Veja:
Ou seja, a partir deste momento as conexões SSH através da porta 22
do servidor são permitidas.
Regras e/ou perfis básicos para um servidor web Apache
É importante ressaltar mais uma vez que o modo de funcionamento “padrão” (default) do programa não é adequado a um servidor web, por exemplo.
Bloquear automaticamente todas as conexões de entrada e liberar todas as conexões de saída não é uma boa ideia, neste caso, e por motivos óbvios.
Assim, certamente você deseja realizar um “ajuste fino”, neste quesito. No caso de um servidor web que faça uso do Apache, além disso, é possível utilizar um perfil de aplicativo muito útil.
O perfil Apache Full
cria as regras básicas necessárias para o funcionamento de um servidor web. Para instalá-lo/habilitá-lo, basta usar o comando abaixo:
sudo ufw allow "Apache Full"
O perfil de aplicativo Apache Full
adiciona novas regras ao UFW. Através dele, a partir de agora, são permitidas conexões via HTTP e HTTPS (portas 80
e 443
, respectivamente).
Para conferir tudo isto, execute novamente o comando sudo ufw show added
. Observe então a nova regra (recém adicionada):
ufw allow "Apache Full"
.
Além disso, é importante lembrar que o perfil Apache Full
cria uma regra para IPv6 e outra para IPv4. Para conferir tudo isto, bem como checar quais conexões encontram-se atualmente bloqueadas ou liberadas pelo UFW, basta usar o comando abaixo:
sudo ufw status verbose
Em especial, agora preste atenção às duas regras abaixo:
- 80,443/tcp (Apache Full) – ALLOW IN – Anywhere;
- 80,443/tcp (Apache Full (v6) – ALLOW IN – Anywhere (v6).
Agora, de forma visual:
Vale lembrar que além do Apache Full
existem dois outros perfis relacionados ao web server. A saber:
Apache
: permite apenas conexões HTTP;
Apache Secure
: permite apenas conexões HTTPS.
Deny e allow em serviços, portas e IPs com o UFW
É possível, por exemplo, liberar ou não determinadas conexões, através de um allow
(permitir) ou um deny
(negar).
Perceba que o firewall, embora de uso bastante facilitado, é prático e flexível, além de poderoso. Utilizando as políticas padrão você ganha tempo durante a configuração inicial.
Porém, logo em seguida inúmeros ajustes finos podem ser feitos, através do uso de perfis de aplicativos. E, finalmente, existem comandos para a abertura e o fechamento de portas, bem como para a liberação ou não de serviços e IPs.
Como trabalhar com regras para serviços no UFW
Agora, o comando para permitir/liberar (allow
) um serviço possui a seguinte sintaxe:
sudo ufw allow [nome_do_servico]
Por exemplo:
sudo ufw allow http
Por outro lado, o comando para negar/bloquear (deny
) determinado serviço possui a sintaxe abaixo:
sudo ufw deny [nome_do_servico]
Por exemplo:
sudo ufw deny http
Como trabalhar com regras para portas e protocolos no UFW
De modo bastante similar, o firewall descomplicado permite que você defina regras para portas e protocolos.
Neste caso, o comando necessário para liberar (allow
) uma porta e um protocolo possui a seguinte sintaxe, lembrando que aqui, inicialmente, você deve especificar qual é o protocolo (TCP ou UDP):
sudo ufw allow [porta/protocolo]
Por exemplo:
sudo ufw allow 25/tcp
Em relação à regra acima, através dela você está liberando o tráfego TCP direcionado à porta 25
do seu servidor (SMTP). Trata-se de um mero exemplo, é claro.
Agora, o comando necessário para bloquear (deny
) o tráfego em direção a uma porta e a um protocolo no servidor tem a seguinte sintaxe:
sudo ufw deny [porta/protocolo]
Por exemplo (e fechando agora a porta que foi aberta através do exemplo acima):
sudo ufw deny 25/tcp
Neste momento, se você executar o comando sudo ufw show added
(veja detalhes acima), obterá um resultado como o abaixo (observe a última linha, na qual encontra-se a regra que bloqueia a porta 25
):
De forma um pouco mais abrangente, se você não especificar um protocolo, estas regras serão criadas simultaneamente para os protocolos TCP e UDP.
Ou seja, o seguinte comando executará um allow
na porta 25
, simultaneamente para UDP e TCP:
sudo ufw allow 25
É também possível definir um intervalo de portas e protocolos tanto em um allow
quanto em um deny
. Isto também é bem simples.
Veja agora um exemplo para a abertura das portas 400
a 520
:
sudo ufw allow 400:520/tcp
Em contrapartida, para fechar o mesmo intervalo de portas, use o seguinte comando:
sudo ufw deny 400:520/tcp
Confira na imagem:
Como trabalhar com regras para IPs no UFW
O UFW também permite que você lide com endereços IP, de forma muito simplificada. Observe, porém, antes de prosseguirmos, que os vários modos de trabalho com regras (serviços, portas e IPs, além de perfis de aplicações) na verdade reforçam a enorme versatilidade deste firewall.
Como você provavelmente já percebeu, e até mesmo levando em consideração algo que eu aprecio bastante no “universo Linux” como um todo, sempre existem diversos modos de executar uma mesma tarefa.
Assim, agora você irá aprender a trabalhar com IPs no firewall descomplicado. Digamos que você de repente encontrou, nos logs, um determinado IP “maroto” tentando fazer coisas que não deve.
Você pode simplesmente bloqueá-lo, por exemplo, mas sempre tendo em mente que esta não é a melhor abordagem a uma situação como esta (talvez, neste caso, uma ferramenta como o Fail2Ban seja mais indicada).
De qualquer modo, o comando para bloquear um IP tem a seguinte sintaxe:
sudo ufw deny from [Endereço_IP]
Por exemplo:
sudo ufw deny from 192.168.0.1
Agora, o comando para permitir conexões oriundas de um determinado IP tem a seguinte sintaxe:
sudo ufw allow from [Endereço_IP]
Por exemplo:
sudo ufw allow from 192.168.0.2
Lembre-se apenas de realizar as substituições necessárias, com os IPs reais que porventura deseja liberar ou bloquear.
Neste momento, você pode inclusive verificar estas informações através do comando sudo ufw status
. Observe, então, o IP bloqueado e o liberado:
De modo geral, estas são as maneiras mais comuns de trabalhar com regras relacionadas a endereços IP. Também é possível trabalhar com interfaces de rede em específico, dentre outras coisas.
Porém, uma vez que este guia tem como alvo o usuário iniciante, para evitar complicações não entrarei neste tipo de detalhe.
Conferindo regras e status
Este capítulo conta com alguns comandos e opções já vistos (acima). Entretanto, julguei por bem incluí-lo para uma melhor organização e também como referência.
Assim, o comando abaixo representa um modo bem básico de conferência das regras do firewall:
sudo ufw status
Se você desejar um pouco mais de detalhes, basta utilizar da seguinte forma:
sudo ufw status verbose
Não se esqueça também da opção abaixo, que lista as regras que você adicionou manualmente:
sudo ufw show added
Um outro modo de conferir mais detalhes a respeito de nossas regras dá-se através do comando abaixo:
sudo ufw status numbered
Observe agora que este comando lista todas as regras existentes juntamente com uma numeração:
Esta numeração é muito importante, como você verá abaixo.
Como deletar regras no UFW
A remoção de qualquer regra no UFW é muito simples. Para uma maior simplificação, use o comando acima como ponto de partida (ou seja, sudo ufw status numbered
).
Isto porque deletar uma regra através de seu respectivo número é bem mais fácil. Com o número da regra em mãos (veja na imagem acima) é possível apagá-la rapidamente.
Portanto, o comando para deletar uma regra com base em seu número tem a seguinte sintaxe:
sudo ufw delete [Número_da_Regra]
Por exemplo, o comando abaixo irá apagar nossa regra número 5:
sudo ufw delete 5
Ao executar o comando, o firewall pergunta se a operação deve mesmo ser realizada. Responda com y
(de yes) e tecle ENTER
.
Observe:
Também é possível deletar regras através de seus respectivos nomes. Aqui, entretanto, você deve informar tanto o nome da regra quanto seu tipo (allow
ou deny
).
Ou seja, digamos que você tem em mente apagar a regra OpenSSH
. Neste caso, deve ser utilizado um comando como o abaixo:
sudo ufw delete allow openssh
Perceba que deletar uma regra com base em seu número (o primeiro método) é muito mais simples. Particularmente, prefiro este modo.
E assim por diante. Observe que até mesmo aqui o Uncomplicated Firewall prima pela simplicidade. Uma vez que você conhece seus princípios básicos, tudo se torna fácil e rápido.
Como ativar e desativar o UFW
De forma também muito fácil, tanto a ativação quanto a desativação do UFW pode ser feita através dos comandos abaixo:
sudo ufw enable
sudo ufw disable
Como reiniciar (reset) o UFW
Se você, por algum motivo, precisar reiniciar o firewall, retornando assim para os “padrões de fábrica” (para os padrões do momento da instalação), basta utilizar o comando abaixo:
sudo ufw reset
Logs no UFW
Um guia do UFW para iniciante não estaria completo sem algumas informações a respeito dos logs. Você pode visualizar o nível de logging do firewall através do comando sudo ufw status verbose
.
Veja:
Os níveis dos logs no UFW
A ferramenta de segurança conta com vários níveis de logging, conforme abaixo:
off
(desligado): logging desativado;
low
(baixo): logs relativos a pacotes de dados bloqueados (tanto os “enquadrados” pelas regras do firewall quanto os não “enquadrados”) – com limitação de taxa;
medium
(médio): além dos logs relativos ao nívellow
, inclui logs de pacotes permitidos que não foram “enquadrados” pelas regras, bem como pacotes inválidos e novas conexões – com limitação de taxa;
high
(alto): todos os logs relativos ao nívelmedium
– com e sem limitação de taxa;
full
(completo): todos os logs relativos ao nívelhigh
, porém sem qualquer limitação de taxa.
Os logs do UFW são armazenados por padrão no diretório /var/log
, em um arquivo chamado ufw.log
.
Você pode visualizar as entradas através do comando abaixo:
sudo nano /var/log/ufw.log
Você também pode visualizar as últimas entradas no log de forma rápida. Basta usar o comando abaixo:
sudo tail /var/log/ufw.log
Algo bastante interessante, além disso, pode ser obtido através da opção -f
juntamente com o comando tail
.
Neste caso, acontecerá uma atualização das informações em tempo real:
sudo tail -f /var/log/ufw.log
Obviamente, podemos inclusive filtrar os resultados em diversos logs, sendo possível até mesmo a filtragem mediante palavras-chave.
Porém, para evitar maiores complicações neste momento, e permanecendo dentro do escopo de um guia para iniciantes, não entrarei em detalhes sobre isto.
Ligando e desligando o logging
Muito provavelmente você não desejará desativar estes registros no seu servidor. De qualquer forma, vale lembrar que o recurso de logging pode ser desativado através do comando sudo ufw logging off
.
Agora, para ativá-lo novamente, basta utilizar o comando abaixo:
sudo ufw logging on
Como alterar os níveis de logging no UFW
Como você pode perceber, o firewall descomplicado é capaz de gravar registros de atividades em vários níveis, níveis estes definidos pelo próprio usuário/administrador.
Por padrão, o nível low
é definido automaticamente. Mas é possível ajustar esta configuração, e você pode escolher qualquer um dos cinco níveis disponíveis (veja acima).
O comando para alterar o nível do logging tem a seguinte sintaxe:
sudo ufw logging [Nível_de_logging]
Por exemplo, para definir o nível médio, use o seguinte comando:
sudo ufw logging medium
Assim, logo a seguir, use novamente o comando sudo ufw status verbose
e perceba que o nível foi alterado para o médio:
Conclusão
As etapas de configuração de um firewall no Ubuntu são bastante simples, graças à existência do UFW. Através desta ferramenta você pode aumentar ainda mais a segurança do seu servidor.
Trata-se de um software poderoso porém amigável. Este guia do UFW para iniciantes cobre as situações mais comuns na rotina diária de alguém em posse de um servidor Linux.
Você também pode, é claro, adaptar todos os comandos e exemplos práticos vistos neste guia para adequá-los às suas necessidades.
Além disso, é também possível consultar a documentação oficial online do UFW, caso maiores detalhes sejam necessários.
Espero que você tenha apreciado este conteúdo, e não hesite em deixar um comentário em caso de dúvidas e/ou sugestões.
Até a próxima!
0 comentários