Série RHCSA: Firewall Essentials 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 em uma rede com base em um conjunto de regras predefinidas (como o destino / origem do pacote ou o tipo de tráfego, por exemplo).

RHCSA: Control Network Traffic with FirewallD and Iptables – Part 11

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

A Comparison Between FirewallD and Iptables

No fundo, tanto o firewalld quanto o serviço iptables se comunicam com o framework 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 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 interface de configuração do usuário):

# yum info firewalld firewall-config
Check FirewallD Information

e,

# systemctl status -l firewalld.service
Check FirewallD Status

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

# yum update && yum install iptables-services

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

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

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

Quanto aos arquivos de configuração, o serviço do iptables usa /etc/sysconfig/iptables (que não existirá se o pacote não estiver instalado no seu sistema). Em um RHEL 7 usado como nó de cluster, esse arquivo se parece da seguinte forma:

Iptables Firewall Configuration

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

# ls /usr/lib/firewalld /etc/firewalld
FirewallD Configuration

Vamos examinar 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 com.

# man firewalld.conf
# man firewall-cmd
# man iptables

Além disso, lembre-se de dar uma olhada em Revisando Comandos Essenciais e Documentação do Sistema – Parte 1 da série atual, onde descrevi várias 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 Firewall Iptables – Parte 8 da série Linux Foundation Certified Engineer (LFCE) para relembrar os conceitos internos do iptables antes de prosseguir. Assim, poderemos avançar diretamente para os exemplos.

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

As portas TCP 80 e 443 são as portas padrão usadas pelo servidor web Apache para tratar o tráfego normal (HTTP) e seguro (HTTPS). Você pode permitir tráfego web de entrada e saída por 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

Em alguns casos, pode ser necessário bloquear algum tipo de tráfego originado de uma rede específica, como por exemplo 192.168.1.0/24:

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

irá 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 tráfego de entrada para outro destino

Se você usa seu RHEL 7 box não apenas como um firewall de software, mas também como um firewall baseado em hardware real, de modo que ele fique entre duas redes distintas, a retransmissão de IP deve ter sido ativada em seu sistema. Se não, você precisa editar /etc/sysctl.conf e definir o valor de net.ipv4.ip_forward para 1, da seguinte forma:

net.ipv4.ip_forward = 1

depois salve a alteração, feche o 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 ouvindo na porta 631 (tanto no servidor de impressão quanto no seu firewall). Para encaminhar solicitações de impressão de clientes do outro lado do firewall, você deve adicionar a seguinte regra do 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, então certifique-se de que as políticas padrão ou regras posteriores não substituam aquelas descritas nos exemplos acima.

Começando com o FirewallD

Uma das mudanças introduzidas com o firewalld são as zonas. Esse conceito permite separar as redes em diferentes níveis de confiança que o usuário decidiu colocar 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 ver todas as informações sobre uma zona específica:

# firewall-cmd --zone=public --list-all
List all FirewallD Zones

Já que você pode ler mais sobre zonas no Guia de Segurança RHEL 7, nós vamos apenas listar 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
List All Supported Services

Para permitir tráfego web http e https através do firewall, imediatamente e em 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 code>–zone for omitido, a zona padrão (você pode verificar com firewall-cmd –get-default-zone) é 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 pública:

Check Masquerading Status

Você pode habilitar o mascaramento para pública:

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

ou usar o mascaramento em externa. Aqui está o que faríamos para replicar 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 normalmente usadas por um servidor web e um servidor ftp, e como alterar a regra correspondente quando a porta padrão desses serviços é alterada. Além disso, você pode consultar a wiki do firewalld para obter mais exemplos.

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

Conclusão

Neste artigo, explicamos o que é um firewall, quais são os serviços disponíveis para implementar um no RHEL 7 e fornecemos alguns exemplos que podem ajudá-lo a começar essa tarefa. Se você tiver algum comentário, sugestão ou pergunta, fique à vontade para nos informar usando o formulário abaixo. Obrigado antecipadamente!

Source:
https://www.tecmint.com/firewalld-vs-iptables-and-control-network-traffic-in-firewall/