Base de Conhecimento Instruções simples para trabalhar com o serviço Profitserver
a Principal Base de Conhecimento Configurando Firewall no Linux

Configurando Firewall no Linux


O Firewall no Linux desempenha um papel vital na proteção de um sistema de computador. Ele atua como uma barreira, controlando e filtrando o tráfego de rede para proteger o sistema de acesso não autorizado, ataques e outras ameaças. Sem um Firewall configurado corretamente, o servidor pode ficar vulnerável a vários tipos de ataques cibernéticos, levando a consequências sérias para a segurança e confidencialidade dos dados.

Neste artigo, analisaremos duas ferramentas principais para configurar o firewall do Linux: firewalld e iptables. Realizaremos uma análise comparativa de seus recursos, funcionalidades e vantagens. Além disso, forneceremos instruções detalhadas para configurar e usar cada uma dessas ferramentas, bem como discutiremos as melhores práticas para proteger seu sistema com um firewall na plataforma Linux. Todas as ações serão demonstradas em um servidor virtual com acesso root.

Configurando firewalld no Linux

O Firewalld (daemon de firewall) é um programa para gerenciar o firewall em sistemas operacionais Linux. Ele fornece uma interface de usuário para configurar regras de firewall, permitindo ou bloqueando conexões de aplicativos de rede. Ele vem pré-instalado por padrão na maioria das distribuições de servidor. Caso o Firewalld não esteja pré-instalado, ele pode ser instalado separadamente a partir dos repositórios oficiais da distribuição.

Para sistemas Red Hat (como RHEL, CentOS, Fedora) a instalação é realizada com o comando:

yum install firewalld

Para Debian/Ubuntu:

apt-get install firewalld

Após a instalação, ele pode ser iniciado e ativado imediatamente com o comando:

systemctl start firewalld

Em seguida, você precisa adicionar o serviço à inicialização:

systemctl enable firewalld
Adicionando firewalld no autoload do Linux

Neste ponto, recomendamos desabilitar o ufw, pois o uso simultâneo desta ferramenta com firewalld ou iptables não é recomendado. Verifique o status:

systemctl status ufw
Verificando ufw linux

Para pará-lo, digite o comando:

systemctl stop ufw

Para desativação completa:

ufw disable

Após essas ações, você pode prosseguir com a configuração do firewalld.

Primeiro, é necessário definir zonas de confiança. O Firewalld usa o conceito de zonas para determinar o nível de confiança para interfaces de rede. Cada interface recebe uma zona, e as regras de firewall são aplicadas com base na zona. A lista de todas as zonas disponíveis é aberta com o comando:

firewall-cmd --get-zones

Normalmente, são utilizadas 4 zonas principais:

  1. Público:Esta zona é para redes que você considera inseguras;
  2. Privado: Aplica-se a redes domésticas ou outras conexões de rede confiáveis;
  3. Interno: Usado para redes internas, como aquelas dentro de uma organização ou rede corporativa;
  4. DMZ:Esta zona é onde geralmente são colocados os servidores que devem ser acessíveis pela internet.

No entanto, este é apenas um exemplo. Você pode adicionar sua própria zona usando o comando:

firewall-cmd --permanent --new-zone=nameyourzone

Após adicionar, é necessário recarregar:

firewall-cmd --reload

Para excluir uma zona, um método semelhante é usado

firewall-cmd --permanent --delete-zone=nameyourzone

Após definir as zonas, é necessário permitir tráfego para os serviços e portas necessários. Para permitir um determinado serviço, use o comando:

firewall-cmd --zone=public --add-service=name

Onde `name` é o nome do serviço. Por exemplo, para permitir o tráfego para o Apache:

firewall-cmd --zone=public --add-service=http

Para definir portas permitidas, use o comando:

firewall-cmd --zone=public --add-port=number/protocol

Por exemplo, a porta padrão 22 para SSH ficaria assim:

firewall-cmd --zone=public --add-port=22/tcp

Nesta etapa, as regras principais já foram criadas. Em seguida, determine como o tráfego será processado dependendo da origem, do destino, da porta e de outros critérios. Para adicionar uma regra (usando a zona pública como exemplo):

firewall-cmd --zone=public rule

Por exemplo, para permitir tráfego de entrada de qualquer origem para a porta 80 (HTTP):

firewall-cmd --zone=public --add-port=80/tcp --permanent

Para remover uma regra:

firewall-cmd --permanent --remove-rule=rule_specification

Onde `rule` é o tipo de regra (por exemplo, porta, serviço, regra avançada, etc.) e `rule_specification` é a especificação da própria regra.

Após fazer alterações na configuração do Firewalld, é necessário salvá-las e aplicá-las. Para salvar as alterações, use o comando:

firewall-cmd --runtime-to-permanent

Para aplicar alterações:

firewall-cmd --reload

Após concluir a configuração, você pode verificar os parâmetros selecionados abrindo a lista de todas as regras:

firewall-cmd --list-all
Regras do firewalld Linux

Caso surja algum problema, verifique os logs do Firewalld com o comando:

journalctl -u firewalld

Observação: abordamos apenas o algoritmo geral para configurar a conexão. A ferramenta possui funcionalidades extensas. Para obter informações completas sobre todas as opções disponíveis, você pode consultar a documentação oficial ou abrir a ajuda:

firewall-cmd --help

Configurando o iptables no Linux

Diferentemente do Firewalld, o iptables é uma ferramenta mais antiga, mas ainda amplamente usada no Linux para gerenciar o firewall. Ele fornece uma abordagem mais direta e flexível para regras de filtragem de pacotes no nível do kernel do Linux. No entanto, o iptables requer conhecimento e experiência mais avançados em comparação ao Firewalld, tornando-o menos acessível para iniciantes. Verifique a versão pré-instalada da ferramenta com o comando:

iptables -V

Se a ferramenta não estiver instalada, ela precisará ser instalada. O comando para instalação no Ubuntu, Debian:

apt install iptables

Para sistemas Red Hat (por exemplo, CentOS, Fedora):

yum install iptables

O comando para ativação após a instalação:

systemctl start iptables

Para adicionar à inicialização, execute:

systemctl enable iptables

Antes de iniciar a configuração do iptables, é importante entender como ele funciona. Isso é ajudado pela sintaxe do programa. Ele se parece com o seguinte:

iptables -t table action chain additional_parameters

Vamos nos aprofundar em cada item.

O Iptables possui quatro tabelas principais: filter, nat, mangle e raw . Cada uma é projetada para processar certos tipos de pacotes e possui suas próprias cadeias de regras:

  1. filtro: Esta é a tabela mais frequentemente usada, contendo regras de filtragem de pacotes. É usada para tomar decisões sobre permitir ou negar pacotes.
  2. nat: Esta tabela é usada para modificar endereços de rede e portas em pacotes. É frequentemente usada para configurar mascaramento (NAT).
  3. mangle: Nesta tabela, você pode modificar cabeçalhos de pacotes. Ela é usada para operações de pacotes especializadas, como marcação.
  4. cru: Esta tabela é usada para configurar regras que se aplicam antes de passarem pelo sistema de rastreamento de conexão. Ela é normalmente usada para configurar regras que não devem ser modificadas pelo sistema de rastreamento, como descartar pacotes de certos endereços.

Cada tabela contém um conjunto de chains. Chains são uma sequência de regras que são verificadas sequencialmente. Há três chains predefinidas:

  1. ENTRADA (entrada). As regras nesta cadeia determinam o que fazer com os pacotes recebidos.
  2. SAÍDA (saída). Essa cadeia se aplica a todos os pacotes que seu computador envia para outros dispositivos ou computadores na rede.
  3. FORWARD (encaminhamento). As regras nesta cadeia especificam o que fazer com os pacotes encaminhados.

Finalmente, cada cadeia possui alguma ação (alvo). Na prática, 5 ações principais são usadas:

  1. ACEITAR: Permitir que o pacote passe pelo firewall.
  2. GOTA: Rejeite o pacote e descarte-o sem nenhuma resposta.
  3. REJEITAR: Rejeite o pacote e envie ao remetente uma mensagem de erro ICMP.
  4. LOG: Registre o pacote no log do sistema e execute outra ação (por exemplo, ACEITAR ou DESCARTAR).
  5. RETORNO: Pare de verificar as regras na cadeia atual e retorne à cadeia de chamada (se aplicável).

Para iniciar a configuração, abra a lista de regras existentes com o comando:

iptables -L
Configurando Firewall no Linux

Como um guia para configurar Iptables, vamos dar uma olhada em exemplos práticos dos comandos mais comumente usados. Para conveniência, dividiremos os exemplos em 3 grupos, dependendo da cadeia específica.

Entrada em cadeia :

  1. Permitir tráfego de entrada via protocolo TCP na porta 80:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT

2. Permitir tráfego de entrada via protocolo UDP na porta 22:

iptables -A INPUT -p udp --dport 22 -j ACCEPT

3. Bloqueie o tráfego de entrada de um endereço IP específico:

iptables -A INPUT -s 192.168.1.100 -j DROP

Saída da cadeia :

  1. Permitir tráfego de saída via protocolo TCP na porta 443:
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT

2. Permitir tráfego de saída via protocolo UDP na porta 80:

iptables -A OUTPUT -p udp --dport 80 -j ACCEPT

3. Bloqueie o tráfego de saída para uma porta específica (por exemplo, 21):

iptables -A OUTPUT -p tcp --dport 21 -j DROP

Corrente para a frente :

  1. Bloqueie o tráfego encaminhado de um intervalo específico de endereços IP:
iptables -A FORWARD -s 172.16.0.0/24 -j DROP

2. Bloqueie o encaminhamento de pacotes de uma interface de rede específica:

iptables -A FORWARD -i eth1 -j DROP

3. Limite o número de conexões simultâneas para uma porta específica (neste exemplo, 10 conexões por minuto na porta 80):

iptables -A INPUT -p tcp --dport 80 -m limit --limit 10/minute -j ACCEPT

Como você pode ver, em cada caso separado, um argumento adicional (comando) é usado. Para obter uma lista completa de argumentos possíveis e suporte geral para a funcionalidade da ferramenta, insira:

iptables -h
lista de comandos de configuração do iptables linux

Para garantir que as configurações estejam corretas, digite novamente o comando para visualizar a lista de regras:

iptables -L
Verificando regras do iptables linux

Para excluir uma regra específica, use o comando:

iptables -D chain rule_number

Por exemplo, se você quiser excluir a regra número 1 da cadeia INPUT, o comando ficará assim:

iptables -D INPUT 1

Para excluir todas as regras com um comando:

iptables -F

Nota importante : as regras do iptables não são salvas automaticamente após a reinicialização do sistema ou serviço. Para salvar as regras, elas precisam ser adicionadas a um arquivo de configuração e restauradas após a reinicialização. Os utilitários iptables-save e iptables-restore podem ajudar com isso. Para salvar as regras, digite o comando:

iptables-save > /etc/iptables/rules.v4

Isso salva as regras atuais do iptables no arquivo rules.v4. Para restaurar após a reinicialização, digite:

iptables-restore < /etc/iptables/rules.v4

Este comando restaura as regras do arquivo rules.v4.

Conclusão

Configurar o Firewall no Linux usando firewalld ou iptables é um aspecto importante para garantir a segurança do servidor. Ambas as ferramentas oferecem meios confiáveis ​​de gerenciar o tráfego de rede e proteger o sistema contra acesso não autorizado e ataques cibernéticos. A escolha entre firewalld e iptables depende das necessidades e preferências específicas do usuário, considerando suas diferentes funcionalidades e pontos fortes.

❮ Artigo anterior Diagnóstico de carga do servidor
Próximo artigo ❯ Usuários Linux: Gerenciamento e Permissões

Pergunte-nos sobre VPS

Estamos sempre prontos para responder suas perguntas a qualquer hora do dia ou da noite.