Introdução
Configurar um firewall funcional é crucial para garantir a segurança do seu servidor na nuvem. Anteriormente, configurar um firewall era feito através de utilitários complicados ou obscuros. Muitos desses utilitários (por exemplo, iptables
) têm muitas funcionalidades incorporadas, mas exigem esforço adicional do usuário para aprender e entendê-los.
Outra opção é UFW, ou Firewall Descomplicado. O UFW é uma interface para o iptables
que visa fornecer uma interface mais amigável ao usuário do que outros utilitários de gerenciamento de firewall. O UFW é bem suportado pela comunidade Linux e geralmente é instalado por padrão em muitas distribuições.
Neste tutorial, você configurará um firewall usando o UFW para proteger um servidor na nuvem Ubuntu ou Debian. Você também aprenderá como configurar regras padrão do UFW para permitir ou negar conexões para portas e endereços IP, excluir regras que você criou, desativar e ativar o UFW e redefinir tudo para as configurações padrão, se preferir.
Pré-requisitos
Para seguir este tutorial, você precisará de um servidor que esteja executando Ubuntu ou Debian. Seu servidor deve ter um usuário não-root com privilégios sudo. Para configurar isso para o Ubuntu, siga nosso guia sobre Configuração Inicial do Servidor com Ubuntu 20.04. Para configurar isso para o Debian, siga nosso guia sobre Configuração Inicial do Servidor com Debian 11. Ambos os guias de configuração inicial do servidor garantirão que você tenha o UFW instalado em sua máquina e que tenha um ambiente seguro que você possa usar para praticar a criação de regras de firewall.
Usando IPv6 com UFW
Se o seu Servidor Virtual Privado (VPS) estiver configurado para IPv6, certifique-se de que o UFW esteja configurado para suportar IPv6 para que ele configure tanto suas regras de firewall IPv4 quanto IPv6. Para fazer isso, abra o arquivo de configuração do UFW no seu editor de texto preferido. Aqui vamos usar o nano
:
Confirme se IPV6
está definido como sim
:
/etc/default/ufw# /etc/default/ufw
#
# Definir para sim para aplicar regras para suportar IPv6 (não significa apenas IPv6 no loopback
# aceito). Você precisará 'desativar' e depois 'ativar' o firewall para
# que as alterações tenham efeito.
IPV6=yes
…
Depois de fazer suas alterações, salve e saia do arquivo. Se estiver usando o nano
, pressione CTRL + X
, Y
e, em seguida, ENTER
.
Agora reinicie seu firewall, primeiro desabilitando-o:
OutputFirewall stopped and disabled on system startup
Em seguida, habilite-o novamente:
OutputFirewall is active and enabled on system startup
Seu firewall UFW está agora configurado para configurar o firewall para IPv4 e IPv6 quando apropriado. Em seguida, você ajustará as regras padrão para conexões com seu firewall.
Configurando Padrões do UFW
Você pode melhorar a eficiência do seu firewall definindo regras padrão para permitir e negar conexões. O padrão do UFW é negar todas as conexões de entrada e permitir todas as conexões de saída. Isso significa que qualquer pessoa tentando acessar seu servidor não seria capaz de se conectar, enquanto qualquer aplicativo dentro do servidor é capaz de se conectar externamente. Para atualizar as regras padrão definidas pelo UFW, primeiro aborde a regra de conexões de entrada:
OutputDefault incoming policy changed to 'deny'
(be sure to update your rules accordingly)
Em seguida, aborde a regra de conexões de saída:
OutputDefault outgoing policy changed to 'allow'
(be sure to update your rules accordingly)
Nota: Se você deseja ser mais restritivo, pode negar todas as solicitações de saída. Esta opção é baseada em preferência pessoal. Por exemplo, se você tiver um servidor de nuvem de frente para o público, isso poderá ajudar a evitar qualquer tipo de conexões de shell remoto. No entanto, isso torna seu firewall mais difícil de gerenciar porque você terá que configurar regras para todas as conexões de saída também. Você pode definir isso como padrão com o seguinte:
Permitindo Conexões no Firewall
Permitir conexões requer a alteração das regras do firewall, o que pode ser feito emitindo comandos no terminal. Se você ativou seu firewall agora, por exemplo, ele negaria todas as conexões de entrada. Se você estiver conectado via SSH ao seu servidor, isso seria um problema porque você ficaria bloqueado fora do seu servidor. Evite que isso aconteça permitindo conexões SSH para o seu servidor:
Se suas alterações foram bem-sucedidas, você receberá a seguinte saída:
OutputRule added
Rule added (v6)
O UFW vem com alguns padrões, como o comando ssh
usado no exemplo anterior. Alternativamente, você pode permitir conexões de entrada para a porta 22/tcp
, que utiliza Protocolo de Controle de Transmissão (TCP) para realizar a mesma função:
Se você tentou isso depois de já ter executado allow ssh
, no entanto, você receberá a seguinte mensagem, pois a regra já existe:
OutputSkipping adding existing rule
Skipping adding existing rule (v6)
Se o seu servidor SSH estiver em execução na porta 2222
, você pode permitir conexões com a mesma sintaxe, mas substitua pela porta 2222
. Por favor, note que se você usar apenas o número da porta, isso afetará também tcp
e udp
:
OutputRule added
Rule added (v6)
Protegendo Servidores Web
Para proteger um servidor web com acesso ao Protocolo de Transferência de Arquivos (FTP), você precisará permitir conexões para a porta 80/tcp
.
Permitir conexões para a porta 80
é útil para servidores web como Apache e Nginx que escutam solicitações de conexão HTTP. Para fazer isso, permita conexões na porta 80/tcp
:
O UFW geralmente fornece os perfis com as regras necessárias para o funcionamento do servidor web. Se não, os perfis do servidor web podem ser armazenados como “WWW” e abertos como ftp
ou tcp
, como nos seguintes exemplos:
Você também pode usar ftp
ou a porta 21
para permitir conexões FTP:
Para conexões FTP, você também precisa permitir conexões para a porta 20
:
Seus ajustes dependerão de quais portas e serviços você precisa abrir, e testes podem ser necessários. Lembre-se de deixar sua conexão SSH permitida também.
Especificando Faixas de Portas
Você também pode especificar intervalos de portas para permitir ou negar com o UFW. Para fazer isso, você deve primeiro especificar a porta no limite inferior do intervalo, seguido por dois pontos (:
), e então seguir com o limite superior do intervalo. Por último, você deve especificar qual protocolo (seja tcp
ou udp
) deseja aplicar às regras.
Por exemplo, o seguinte comando permitirá o acesso TCP a todas as portas de 1000
a 2000
, inclusive:
Da mesma forma, o seguinte comando negará conexões UDP a todas as portas de 1234
a 4321
:
Especificando Endereços IP
Você pode permitir conexões de um endereço IP específico como no exemplo a seguir. Certifique-se de substituir o endereço IP pelas suas próprias informações:
Como esses exemplos demonstram, você tem muita flexibilidade quando se trata de ajustar as regras do firewall, permitindo seletivamente certas portas e conexões de endereços IP. Consulte o nosso guia para aprender mais sobre permitir conexões de entrada de um endereço IP ou sub-rede específica.
Negando Conexões
Se você quisesse abrir todas as portas do seu servidor — o que não é recomendado — você poderia permitir todas as conexões e então negar quaisquer portas às quais você não deseja dar acesso. O exemplo a seguir é de como você negaria acesso à porta 80:
Excluindo Regras
Se você deseja excluir algumas das regras que você administrou, use delete
e especifique a regra que você deseja eliminar:
OutputRule deleted
Rule deleted (v6)
Se as regras forem longas e complexas, há uma abordagem alternativa em dois passos. Primeiro, gere uma lista numerada das regras atuais:
Então, com esta lista numerada, revise quais regras estão atualmente permitidas e exclua a regra referindo-se ao seu número:
OutputStatus: active
To Action From
-- ------ ----
[ 1] OpenSSH ALLOW IN Anywhere
[ 2] 22/tcp ALLOW IN Anywhere
[ 3] 2222/tcp ALLOW IN Anywhere
[ 4] 80 ALLOW IN Anywhere
[ 5] 20/tcp ALLOW IN Anywhere
…
Por exemplo, se a porta 80 for o número 4 na lista, você usaria a seguinte sintaxe. Você também pode ser questionado se deseja prosseguir com a operação. Você pode decidir sim y
ou não n
:
OutputDeleting:
allow 80
Proceed with operation (y|n)? y
Rule deleted (v6)
Habilitando UFW
Depois de definir todas as regras que deseja aplicar ao seu firewall, você pode habilitar o UFW para que ele comece a aplicá-las. Se estiver se conectando via SSH, certifique-se de configurar sua porta SSH, comumente a porta 22, para permitir que as conexões sejam recebidas. Caso contrário, você poderia se trancar fora do seu servidor:
OutputFirewall is active and enabled on system startup
Para confirmar se as suas alterações foram aplicadas, verifique o estado para revisar a lista de regras:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
22/tcp ALLOW Anywhere
2222/tcp ALLOW Anywhere
20/tcp ALLOW Anywhere
80/tcp DENY Anywhere
…
Você também pode usar verbose
para uma saída mais abrangente:
Para desativar o UFW, execute o seguinte:
OutputFirewall stopped and disabled on system startup
Redefinindo Configurações Padrão
Se por algum motivo você precisar redefinir as regras do seu servidor em nuvem para suas configurações padrão, você pode fazer isso com o comando ufw reset
. Por favor, note que você receberá um prompt para escrever y
ou n
antes de redefinir tudo, já que isso pode interromper conexões SSH existentes:
OutputResetting all rules to installed defaults. This may disrupt existing ssh
connections. Proceed with operation (y|n)? y
Backing up 'user.rules' to '/etc/ufw/user.rules.20220217_190530'
Backing up 'before.rules' to '/etc/ufw/before.rules.20220217_190530'
Backing up 'after.rules' to '/etc/ufw/after.rules.20220217_190530'
Backing up 'user6.rules' to '/etc/ufw/user6.rules.20220217_190530'
Backing up 'before6.rules' to '/etc/ufw/before6.rules.20220217_190530'
Backing up 'after6.rules' to '/etc/ufw/after6.rules.20220217_190530'
A redefinição para as configurações padrão irá desativar o UFW e excluir quaisquer regras que você tenha definido anteriormente. No entanto, as configurações padrão não voltarão para as originais se você as tiver modificado. Agora você pode começar do zero com o UFW e personalizar suas regras e conexões conforme preferir.
Conclusão
Neste tutorial, você aprendeu como configurar e configurar seu servidor em nuvem para permitir ou restringir o acesso a um subconjunto de portas ou endereços IP. Além disso, você praticou a exclusão de quaisquer regras que não deseja mais e confirmou que essas alterações foram contabilizadas desativando e depois ativando seu firewall UFW. Finalmente, você aprendeu como redefinir seu firewall UFW para as configurações padrão. Para saber mais sobre o que é possível com o UFW, confira nosso guia sobre Essenciais do UFW: Regras Comuns de Firewall e Comandos.