Série RHCSA: Noções Essenciais sobre Firewall e Controle de Tráfego de Rede Usando o FirewallD e Iptables – Parte 11

Em palavras simples, uma 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/fonte 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 demónio de firewall dinâmico padrão em 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 em RHEL 7.

A Comparison Between FirewallD and Iptables

por trás dos panos, ambos o firewalld e 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, em contraste com o serviço iptables, o firewalld pode alterar as configurações durante a operação normal do sistema sem perda de conexões existentes.

Firewalld deve estar instalado por padrão no 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 de interface de 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 está incluído por padrão, mas pode ser instalado através.

# yum update && yum install iptables-services

Ambos os demónios podem ser iniciados e habilitados para iniciar na inicialização com os comandos de systemd padrão:

# 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 às configurações de arquivo, o serviço iptables usa /etc/sysconfig/iptables (que não existirá se o pacote não estiver instalado no seu sistema). Em um box RHEL 7 usado como nó de cluster, este arquivo se parece com o seguinte:

Iptables Firewall Configuration

Enquanto o firewalld armazena sua configuração em duas pastas, /usr/lib/firewalld e /etc/firewalld:

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

Nós examinaremos estes arquivos de configuração mais adiante neste artigo, depois de adicionarmos algumas regras aqui e ali. Por enquanto, é suficiente lembrar que você pode sempre encontrar informações adicionais sobre ambas as ferramentas com.

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

Além disso, lembre-se de olhar para Revisando Comandos Essenciais & System Documentation – Parte 1 da série atual, onde eu descrevi várias fontes onde você pode obter informações sobre os pacotes instalados em seu RHEL 7 sistema.

Usando Iptables para Controlar Tráfego de Rede

Você pode referir-se à Configurar Firewall Iptables – Parte 8 do conjunto de Engenheiro Certificado pela Fundação Linux (LFCE) para refazer sua memória sobre os iptables internos antes de avançar. Portanto, conseguiremos saltar diretamente para os exemplos.

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

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

Há momentos em que você precisará bloquear todas (ou algumas) formas de tráfego originadas de uma rede específica, digamos por exemplo a 192.168.1.0/24:

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

irá descartar todos os pacotes vindos da rede 192.168.1.0/24, enquanto que,

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

só permitirá tráfego de entrada através da porta 22 de entrada.

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

Se você estiver usando sua caixa RHEL 7 não apenas como um firewall de software, mas também como um firewall baseado em hardware real, de modo que ele esteja entre duas redes distintas, o encaminhamento de IP deve ter sido habilitado em seu sistema. Caso contrário, 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

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 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 iptables:

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

Por favor, 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 firewalld são as zonas. Este conceito permite separar as redes em diferentes níveis de confiança que o usuário decidiu colocar nos dispositivos e 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
List all FirewallD Zones

Para saber mais sobre zonas leia o Guia de Segurança do RHEL 7, por isso, apenas listaremos alguns exemplos específicos aqui.

Exemplo 4: Permitir serviços pelo firewall

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

# firewall-cmd --get-services
List All Supported Services

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

# 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 firewall-cmd –get-default-zone é omitido, a zona padrão (que você pode verificar com) é usada.

Para remover a regra, substitua a palavra add pela palavra remove nas instruções acima.

Exemplo 5: Encaminhamento 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 mascaramento está habilitado para a zona externa, mas não para pública:

Check Masquerading Status

Você pode habilitar o mascaramento para publica:

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

ou usar o mascaramento em externa. Aqui é o que nós fizemos 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 esqueça de recarregar o firewall.

Você pode encontrar exemplos adicionais em Parte 9 da série RHCSA, onde explicamos como permitir ou desabilitar as portas usualmente usadas por um servidor web e um servidor FTP, e como alterar a regra correspondente quando a porta padrão para esses serviços for alterada. Além disso, você pode referir-se à wiki do firewalld para obter exemplos adicionais.

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 implementá-lo no RHEL 7, e fornecemos alguns exemplos que podem ajudá-lo a começar com esta tarefa. Se você tiver comentários, sugestões ou perguntas, não hesite em nos informar usando o formulário abaixo. Obrigado à avanço!

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