Professional Documents
Culture Documents
Como Configurar Um Firewall Com o UFW No Ubuntu 20.04
Como Configurar Um Firewall Com o UFW No Ubuntu 20.04
Ubuntu 20.04
Introdução
O UFW, ou Uncomplicated Firewall, é uma interface de gerenciamento simplificado de firewall que
esconde a complexidade das tecnologias de filtragem de pacotes de baixo nível, como iptables e
nftables. Se você deseja começar a proteger sua rede, mas não tem certeza sobre qual ferramenta
usar, o UFW pode ser a escolha certa para você.
Este tutorial lhe mostrará como configurar um firewall com o UFW no Ubuntu 20.04.
Pré-requisitos
Para seguir este tutorial, você vai precisar do seguinte:
Um servidor Ubuntu 20.04 com um usuário sudo não-root, que você pode configurar
seguindo o nosso tutorial Initial Server Setup with Ubuntu 20.04
O UFW vem instalado por padrão no Ubuntu. Se ele tiver sido desinstalado por algum motivo, você
pode instalá-lo com sudo apt install ufw.
Então, certifique-se de que o valor IPV6 seja yes. Deve se parecer com isto:
/etc/default/ufw excerpt
IPV6=yes
Salve e feche o arquivo. Agora, quando o UFW estiver habilitado, ele será configurado para escrever
regras de firewall para ambos IPv4 e IPv6. No entanto, antes de habilitar o UFW, nós vamos querer
garantir que seu firewall esteja configurado para permitir que você se conecte via SSH. Vamos começar
configurando as políticas padrão.
Vamos retornar as regras do seu UFW para as configurações padrão, para que possamos ter certeza
de que você conseguirá acompanhar este tutorial. Para definir os padrões usados pelo UFW, utilize
estes comandos:
Esses comandos configuram os padrões para negar as conexões de entrada e permitir as conexões de
saída. Esses padrões do firewall poderiam suprir as necessidades de um computador pessoal Porém,
os servidores normalmente precisam responder às solicitações que chegam de usuários externos.
Vamos verificar isso a seguir.
Passo 3 — Permitindo as conexões via protocolo SSH
Se nós habilitássemos nosso firewall UFW agora, ele negaria todas as conexões de entrada. Isso
significa que precisaremos criar regras que permitam de maneira explícita as conexões de entrada
legítimas — conexões SSH ou HTTP, por exemplo — se quisermos que nosso servidor responda a
esses tipos de pedidos. Se você estiver usando um servidor na nuvem, você provavelmente irá querer
permitir conexões de entrada via protocolo SSH para que você consiga se conectar e gerenciar o seu
servidor.
Para configurar seu servidor para permitir as conexões de entrada via SSH, você pode utilizar este
comando:
Esse procedimento criará regras do firewall que permitirão todas as conexões na porta 22, que é a porta
na qual o SSH daemon escuta por padrão. O UFW sabe o que a porta allow ssh significa porque ela
está listada como um serviço no arquivo /etc/services.
No entanto, podemos realmente escrever a regra equivalente, especificando a porta em vez do nome
do serviço. Por exemplo, este comando funciona de forma semelhante ao anterior:
Se você configurou seu SSH daemon para usar uma porta diferente, você terá que especificar a porta
apropriada. Por exemplo, se seu servidor SSH estiver escutando na porta 2222, você pode usar este
comando para permitir as conexões naquela porta:
Agora que seu firewall está configurado para permitir as conexões de entrada via SSH, podemos
habilitá-lo.
Você receberá um aviso que diz que o comando pode interromper conexões via SSH existentes. Nós já
configuramos uma regra de firewall que permite conexões via SSH, então tudo bem continuar.
Responda ao prompt com y e tecle ENTER.
O firewall agora está ativo. Execute o comando sudo ufw status verbose para ver as regras que foram
definidas. O resto deste tutorial tratará de como usar o UFW em mais detalhes, como, por exemplo,
permitir ou negar diferentes tipos de conexões.
Há várias outras maneiras de permitir outras conexões, além de especificar uma porta ou serviço
conhecido.
Por exemplo, para permitir conexões via protocolo X11, que usam as portas 6000-6007, utilize esses
comandos:
Ao especificar as faixas de porta com o UFW, você deve especificar o protocolo (tcp ou udp) para o qual
as regras devem aplicar-se. Nós não mencionamos isso antes porque não especificar o protocolo
automaticamente permite ambos os protocolos, o que é OK na maioria dos casos.
Endereços IP específicos
Ao trabalhar com o UFW, você também pode especificar endereços IP. Por exemplo, se quiser permitir
conexões de um endereço IP específico, como um endereço IP de trabalho ou domicílio de 203.0.113.4,
você precisa especificar from, então o endereço IP:
Você também pode especificar uma porta específica na qual o endereço IP tem permissão para se
conectar, adicionando to any port seguido do número da porta. Por exemplo, se quiser permitir que o
endereço 203.0.113.4 se conecte à porta 22 (SSH), utilize este comando:
Sub-redes
Se você quiser permitir uma sub-rede de endereços IP, você pode fazer isso usando uma notação CIDR
para especificar uma máscara de rede. Por exemplo, se você quiser permitir todos os endereços IP na
faixa de 203.0.113.1 a 203.0.113.254, você pode usar este comando:
De maneira similar, você também pode especificar a porta de destino na qual a sub-rede 203.0.113.0/24
tem permissão para se conectar. Novamente, nós vamos usar a porta 22 (SSH) como um exemplo:
Você pode querer verificar suas interfaces de rede antes de continuar. Para fazer isso, utilize este
comando:
1. ip addr
Output Excerpt
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state
...
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default
...
O resultado destacado indica os nomes de interfaces de rede. Normalmente, elas recebem nomes
como eth0 ou enp3s2.
Então, se o seu servidor tiver uma interface de rede pública chamada eth0, você pode permitir o tráfego
HTTP (porta 80) nela, usando este comando:
Fazer isso permitiria que seu servidor recebesse pedidos HTTP da internet pública.
Ou, se você quiser que seu servidor de banco de dados MySQL (porta 3306) escute conexões na
interface de rede privada eth1, por exemplo, você pode usar este comando:
Isso permitiria que outros servidores na sua rede privada se conectassem ao seu banco de dados
MySQL.
No entanto, algumas vezes você irá querer negar conexões específicas baseadas no endereço IP ou na
sub-rede da origem, talvez porque você saiba que seu servidor está sendo atacado a partir daí. Além
disso, se você quisesse alterar sua política de entrada padrão para permitir (allow) (o que não é
recomendado), você precisaria criar regras para negar (deny) quaisquer serviços ou endereços IP para
os quais você não quisesse permitir conexões.
Para escrever regras de deny, você pode usar os comandos descritos acima, substituindo allow por
deny.
Por exemplo, para negar conexões HTTP, você pode usar este comando:
Ou se você quiser negar todas as conexões do endereço 203.0.113.4 você pode usar este comando:
Numbered Output:
Status: active
To Action From
-- ------ ----
[ 1] 22 ALLOW IN 15.15.15.0/24
[ 2] 80 ALLOW IN Anywhere
Se decidirmos que queremos excluir a regra 2, aquela que permite conexões na porta 80 (HTTP),
podemos especificar isso em um comando delete do UFW desta forma:
Isso mostraria um prompt de confirmação e então excluiria a regra 2, que permite conexões HTTP. Note
que se você tivesse o IPv6 habilitado, você iria querer excluir a regra correspondente ao IPv6 também.
Pela regra
A alternativa para os números das regras é especificar a regra propriamente dita a ser excluída. Por
exemplo, se quiser remover a regra allow http, você pode escrever desta forma:
Você também poderia especificar a regra por allow 80, em vez de pelo nome do serviço:
Se o UFW estiver ativo - o que deve ser o caso se você tiver seguido o Passo 3 - o resultado dirá que
ele está ativo e listará quaisquer regras que estejam definidas. Por exemplo, se o firewall estiver
configurado para permitir conexões via SSH (porta 22) de qualquer lugar, o resultado poderia parecer
com este:
Output
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN Anywhere
Quaisquer regras que você tenha criado com o UFW já não estarão mais ativas. Você sempre poderá
executar sudo ufw enable se precisar ativá-lo mais tarde.
Se você já tiver regras do UFW configuradas, mas decidir que quer começar novamente, você pode
usar o comando de redefinição:
Isso irá desabilitar o UFW e excluir quaisquer regras que tiverem sido definidas anteriormente. Lembre-
se de que as políticas padrão não irão voltar para suas configurações originais se, em algum momento,
você as tiver alterado. Isso deve dar a você um novo começo com o UFW.
Conclusão
Seu firewall agora está configurado para permitir (pelo menos) conexões via SSH. Certifique-se de
permitir outras conexões de entrada necessárias para o seu servidor, ao mesmo tempo em que limita
quaisquer conexões desnecessárias, para que seu servidor seja funcional e seguro.
Para aprender sobre mais configurações comuns do UFW, verifique o tutorial Fundamentos do UFW:
regras comuns de firewall e comandos.