Pesquisa de site

Série RHCSA: Princípios básicos de firewall e controle de tráfego de rede usando FirewallD e Iptables - Parte 11


Em palavras simples, um firewall é um sistema de segurança que controla o tráfego de entrada e saída de uma rede com base em um conjunto de regras predefinidas (como destino/origem do pacote ou tipo de tráfego, por exemplo). .

Neste artigo revisaremos os fundamentos do firewalld, o daemon de firewall dinâmico padrão no Red Hat Enterprise Linux 7, e do serviço iptables, o legado serviço de firewall para Linux, com o qual a maioria dos administradores de sistemas e redes estão bem familiarizados, e que também está disponível no RHEL 7.

Uma comparação entre FirewallD e Iptables

Nos bastidores, tanto o serviço firewalld quanto o iptables se comunicam com a estrutura netfilter no kernel através da mesma interface, não surpreendentemente, o comando iptables . No entanto, ao contrário do serviço iptables, o firewalld pode alterar as configurações durante a operação normal do sistema sem que as conexões existentes sejam perdidas.

Firewalld deve ser instalado por padrão em seu sistema RHEL, embora possa não estar em execução. Você pode verificar com os seguintes comandos (firewall-config é a ferramenta de configuração da interface do usuário):


yum info firewalld firewall-config

e,


systemctl status -l firewalld.service

Por outro lado, o serviço iptables não está incluído por padrão, mas pode ser instalado através dele.


yum update && yum install iptables-services

Ambos os daemons podem ser iniciados e habilitados para inicialização com os comandos usuais do systemd:


systemctl start firewalld.service | iptables-service.service
systemctl enable firewalld.service | iptables-service.service

Leia também: Comandos úteis para gerenciar serviços Systemd

Quanto aos arquivos de configuração, o serviço iptables usa /etc/sysconfig/iptables (que não existirá se o pacote não estiver instalado em seu sistema). Em uma caixa RHEL 7 usada como nó de cluster, este arquivo tem a seguinte aparência:

Enquanto o firewalld armazena sua configuração em dois diretórios, /usr/lib/firewalld e /etc/firewalld:


ls /usr/lib/firewalld /etc/firewalld

Examinaremos esses arquivos de configuração mais adiante neste artigo, depois de adicionarmos algumas regras aqui e ali. Por enquanto basta lembrar que você sempre pode encontrar mais informações sobre ambas as ferramentas.


man firewalld.conf
man firewall-cmd
man iptables

Fora isso, lembre-se de dar uma olhada em Reviewing Essential Commands & System Documentation – Part 1 da série atual, onde descrevi diversas fontes onde você pode obter informações sobre os pacotes instalados em seu sistema RHEL 7 .

Usando Iptables para controlar o tráfego de rede

Você pode consultar Configurar o Firewall Iptables – Parte 8 da série Linux Foundation Certified Engineer (LFCE) para refrescar sua memória sobre os componentes internos do iptables antes de prosseguir. Assim, poderemos pular direto para os exemplos.

Exemplo 1: Permitir tráfego de entrada e saída da web

As portas TCP 80 e 443 são as portas padrão usadas pelo servidor web Apache para lidar com normal (HTTP) e seguro (HTTPS<) tráfego da web. Você pode permitir o tráfego de entrada e saída da web através de ambas as portas na interface enp0s3 da seguinte forma:


iptables -A INPUT -i enp0s3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i enp0s3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
Exemplo 2: bloquear todas (ou algumas) conexões de entrada de uma rede específica

Pode haver momentos em que você precise bloquear todo (ou algum) tipo de tráfego originado de uma rede específica, digamos 192.168.1.0/24 por exemplo:


iptables -I INPUT -s 192.168.1.0/24 -j DROP

descartará todos os pacotes provenientes da rede 192.168.1.0/24, enquanto,


iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT

permitirá apenas tráfego de entrada pela porta 22.

Exemplo 3: Redirecionar o tráfego de entrada para outro destino

Se você usar sua caixa RHEL 7 não apenas como um firewall de software, mas também como um firewall real baseado em hardware, de modo que fique entre duas redes distintas, o encaminhamento de IP já deve estar habilitado em seu sistema . Caso contrário, você precisa editar /etc/sysctl.conf e definir o valor de net.ipv4.ip_forward como 1, como segue:


net.ipv4.ip_forward = 1

em seguida, salve a alteração, feche seu editor de texto e finalmente execute o seguinte comando para aplicar a alteração:


sysctl -p /etc/sysctl.conf

Por exemplo, você pode ter uma impressora instalada em uma caixa interna com IP 192.168.0.10, com o serviço CUPS escutando na porta 631 (ambos no servidor de impressão e no seu firewall). Para encaminhar solicitações de impressão de clientes do outro lado do firewall, você deve adicionar a seguinte regra iptables:


iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 631 -j DNAT --to 192.168.0.10:631

Tenha em mente que o iptables lê suas regras sequencialmente, portanto certifique-se de que as políticas padrão ou regras posteriores não substituam aquelas descritas nos exemplos acima.

Introdução ao FirewallD

Uma das mudanças introduzidas com o firewalld são as zonas. Este conceito permite separar as redes em diferentes zonas do nível de confiança que o usuário decidiu depositar nos dispositivos e no tráfego dentro dessa rede.

Para listar as zonas ativas:


firewall-cmd --get-active-zones

No exemplo abaixo, a zona pública está ativa e a interface enp0s3 foi atribuída a ela automaticamente. Para visualizar todas as informações sobre uma zona específica:


firewall-cmd --zone=public --list-all

Como você pode ler mais sobre zonas no guia RHEL 7 Security, listaremos apenas alguns exemplos específicos aqui.

Exemplo 4: Permitindo serviços através do firewall

Para obter uma lista dos serviços suportados, use.


firewall-cmd --get-services

Para permitir o tráfego da web http e https através do firewall, com efeito imediato e nas inicializações subsequentes:


firewall-cmd --zone=MyZone --add-service=http
firewall-cmd --zone=MyZone --permanent --add-service=http
firewall-cmd --zone=MyZone --add-service=https
firewall-cmd --zone=MyZone --permanent --add-service=https
firewall-cmd --reload

Se–zone for omitido, a zona padrão (você pode verificar com firewall-cmd –get-default-zone) será usada.

Para remover a regra, substitua a palavra add por remove nos comandos acima.

Exemplo 5: encaminhamento de IP/porta

Primeiro, você precisa descobrir se o mascaramento está habilitado para a zona desejada:


firewall-cmd --zone=MyZone --query-masquerade

Na imagem abaixo podemos ver que o mascaramento está habilitado para a zona externa, mas não para o público:

Você pode ativar o mascaramento para público:


firewall-cmd --zone=public --add-masquerade

ou use mascaramento em externo. Aqui está o que faríamos para replicar o Exemplo 3 com firewalld:


firewall-cmd --zone=external --add-forward-port=port=631:proto=tcp:toport=631:toaddr=192.168.0.10

E não se esqueça de recarregar o firewall.

Você pode encontrar mais exemplos na Parte 9 da série RHCSA, onde explicamos como permitir ou desabilitar as portas que normalmente são usadas por um servidor web e um servidor ftp, e como alterar a regra correspondente quando a porta padrão para esses serviços são alterados. Além disso, você pode consultar o wiki do firewalld para obter mais exemplos.

Leia também: Exemplos úteis de FirewallD para configurar firewall no RHEL 7

Conclusão

Neste artigo explicamos o que é um firewall, quais são os serviços disponíveis para implementá-lo no RHEL 7 e fornecemos alguns exemplos que podem ajudá-lo a começar com isso. tarefa. Se você tiver algum comentário, sugestão ou dúvida, sinta-se à vontade para nos informar através do formulário abaixo. Agradeço antecipadamente!