Pesquisa de site

Como realizar filtragem de pacotes, tradução de endereços de rede e definir parâmetros de tempo de execução do kernel - Parte 2


Conforme prometido na Parte 1 (“Configurar o roteamento de rede estática”), neste artigo (Parte 2 da série RHCE) começaremos apresentando os princípios de filtragem de pacotes e tradução de endereços de rede (NAT) no Red Hat Enterprise Linux 7, antes de mergulhar na configuração dos parâmetros do kernel em tempo de execução para modificar o comportamento de um kernel em execução se certas condições mudarem ou surgirem necessidades.

Filtragem de pacotes de rede no RHEL 7

Quando falamos em filtragem de pacotes, nos referimos a um processo realizado por um firewall no qual ele lê o cabeçalho de cada pacote de dados que tenta passar por ele. Em seguida, ele filtra o pacote executando as ações necessárias com base nas regras previamente definidas pelo administrador do sistema.

Como você provavelmente sabe, começando com o RHEL 7, o serviço padrão que gerencia regras de firewall é o firewalld. Assim como o iptables, ele se comunica com o módulo netfilter no kernel do Linux para examinar e manipular pacotes de rede. Ao contrário do iptables, as atualizações podem entrar em vigor imediatamente, sem interromper as conexões ativas – você nem precisa reiniciar o serviço.

Outra vantagem do firewalld é que ele nos permite definir regras com base em nomes de serviços pré-configurados (mais sobre isso em um minuto).

Na Parte 1, usamos o seguinte cenário:

Entretanto, você deve se lembrar que desabilitamos o firewall no roteador #2 para simplificar o exemplo, já que ainda não havíamos abordado a filtragem de pacotes. Vamos ver agora como podemos habilitar pacotes recebidos destinados a um serviço ou porta específico no destino.

Primeiro, vamos adicionar uma regra permanente para permitir o tráfego de entrada em enp0s3 (192.168.0.19) a enp0s8 (10.0.0.18):

firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -i enp0s3 -o enp0s8 -j ACCEPT

O comando acima salvará a regra em /etc/firewalld/direct.xml:

cat /etc/firewalld/direct.xml

Em seguida, ative a regra para que ela entre em vigor imediatamente:

firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -i enp0s3 -o enp0s8 -j ACCEPT

Agora você pode fazer telnet para o servidor web a partir da caixa do RHEL 7 e executar o tcpdump novamente para monitorar o tráfego TCP entre as duas máquinas, desta vez com o firewall no roteador #2 habilitado.

telnet 10.0.0.20 80
tcpdump -qnnvvv -i enp0s3 host 10.0.0.20

E se você quiser permitir apenas conexões de entrada para o servidor web (porta 80) de 192.168.0.18 e bloquear conexões de outras fontes no 192.168.0.0/ 24 rede?

No firewall do servidor web, adicione as seguintes regras:

firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.18/24" service name="http" accept'
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.18/24" service name="http" accept' --permanent
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" drop'
firewall-cmd --add-rich-rule 'rule family="ipv4" source address="192.168.0.0/24" service name="http" drop' --permanent

Agora você pode fazer solicitações HTTP para o servidor web, de 192.168.0.18 e de alguma outra máquina em 192.168.0.0/24. No primeiro caso, a conexão deverá ser concluída com êxito, enquanto no segundo, eventualmente, o tempo limite será atingido.

Para fazer isso, qualquer um dos seguintes comandos resolverá o problema:

telnet 10.0.0.20 80
wget 10.0.0.20

Eu recomendo fortemente que você verifique a documentação do Firewalld Rich Language no Wiki do Projeto Fedora para obter mais detalhes sobre regras ricas.

Tradução de endereços de rede no RHEL 7

Tradução de endereço de rede (NAT) é o processo em que um grupo de computadores (também pode ser apenas um deles) em uma rede privada recebe um endereço IP público exclusivo. Como resultado, eles ainda são identificados exclusivamente por seu próprio endereço IP privado dentro da rede, mas para o exterior todos “parecem” iguais.