Como configurar o Firewalld no RHEL/CentOS/Rocky 8|7
Sou uma pessoa louca por segurança. Ver várias camadas de segurança sendo contornadas em uma rede vai contra os motivos pelos quais sou sempre centrado na segurança. Alguns administradores de sistema não conseguem dedicar alguns minutos do seu tempo para fechar a porta da frente, e isso sempre impacta negativamente nos sistemas de rede.
Neste guia, veremos a defesa em profundidade, abrangendo tanto a segurança das portas quanto o uso de firewalls para proteger servidores Linux. Como não podemos cobrir tudo neste tutorial, nos concentraremos nos fundamentos do firewalld e nas demonstrações de várias configurações.
O que é Firewalld?
Firewalld é um serviço de firewall dinâmico que gerencia o subsistema netfilter do kernel Linux usando iptables,ip6tables e ebtables de baixo nível. comandos. Firewalld é o serviço de firewall padrão usado na família Red Hat Enterprise Linux 7 (RHEL) de distribuições Linux. Possui suporte para configurações de firewall IPv4 e IPv6.
O serviço de firewall fornecido pelo firewalld é dinâmico e não estático porque as alterações feitas na configuração são implementadas imediatamente, não há necessidade de aplicar ou salvar as alterações. Isto é uma vantagem, uma vez que não pode ocorrer interrupção não intencional das conexões de rede existentes.
O Firewalld separa todo o tráfego de entrada em zonas, e cada zona tem seu próprio conjunto de regras.
Lógica do Firewalld usada para conexão de entrada
O Firewalld precisa determinar a zona a ser usada para uma conexão de entrada. Para isso, segue-se a seguinte ordem, vence a primeira regra que corresponder:
- Se o endereço de origem de um pacote recebido corresponder a uma configuração de regra de origem para uma zona, esse pacote será roteado através da zona.
- Se uma interface de entrada de um pacote corresponder a uma configuração de filtro para uma zona, essa zona será usada.
- Caso contrário, a zona padrão será usada.
Nota: A zona padrão para qualquer nova interface de rede será definida como a zona pública.
Onde estão os arquivos de configuração?
Os arquivos de configuração do firewalld são armazenados em vários arquivos XML nos diretórios /usr/lib/firewalld/ e /etc/firewalld/. Esses arquivos podem ser editados, gravados, copiados e usados como modelos para outras instalações.
Se um arquivo de configuração com o mesmo nome for armazenado em ambos os locais, a versão de /etc/firewalld/ será usada, isso significa que os administradores podem substituir zonas e configurações padrão.
Como gerenciar o firewalld?
Como forma de fazer alterações no serviço de firewall, três maneiras estão disponíveis:
- Usando o cliente de linha de comando, firewall-cmd. Ele é usado para fazer alterações permanentes e em tempo de execução. Um usuário root ou qualquer membro do grupo wheel pode executar o comando firewall-cmd, o mecanismo polkit é usado para autorizar o comando.
- Usando a ferramenta gráfica firewall-config
- Usando os arquivos de configuração em /etc/firewalld/
NOTA:
Os serviços firewalld.service e iptables.service,ip6tables.service e ebtables.service entram em conflito entre si. É uma boa prática mascarar os outros serviços antes de executar o firewalld service . Isso pode ser feito com os comandos abaixo:
for SERVICE in iptables ip6tables ebtables; do
systemctl mask ${SERVICE}.service
done
}
Como o firewalld é diferente do iptables?
- O Firewalld armazena seus arquivos de configuração em vários arquivos XML em /usr/lib/firewalld/ e /etc/firewalld/ enquanto o serviço iptables os armazena em /etc/sysconfig/iptables. O arquivo /etc/sysconfig/iptables não existe no RHEL 7, pois vem com firewalld por padrão.
- Com o serviço iptables, as regras antigas devem ser eliminadas quando cada alteração é feita, as regras devem ser relidas em /etc/sysconfig/iptables. Com o firewalld apenas as diferenças são aplicadas e as configurações podem ser alteradas durante o tempo de execução sem perder as conexões existentes.
Diagrama de trabalho do Firewalld vs IPtables
Definindo configurações de firewall com firewall-cmd
firewall-cmd é instalado como parte do pacote principal firewalld. Quase todos os comandos funcionarão na configuração runtime, a menos que a opção --permanent
seja especificada. A zona onde as regras são aplicadas é especificada usando a opção --zone=
. A zona padrão é usada se --zone
for omitido.
As alterações serão ativadas com firewall-cmd --reload
se forem aplicadas à configuração --permanent
permanent.
A tabela a seguir mostra vários comandos firewall-cmd usados com frequência, juntamente com uma explicação:
Compreendendo as zonas de rede
Os firewalls podem separar redes em zonas diferentes com base no nível de confiança que o usuário decidiu depositar. Várias zonas predefinidas são fornecidas com o firewalld e cada uma tem seu uso pretendido. A tabela abaixo explica mais:
Usando exemplos de firewall-cmd
Considere os exemplos abaixo para ajudá-lo a fortalecer seu conhecimento sobre como o firewall-cmd é usado. Primeiro verifique se o firewalld está ativado e em execução no seu sistema.
systemctl status firewalld.service
Se não estiver em execução, você pode iniciá-lo e ativá-lo usando:
systemctl start firewalld
systemctl enable firewalld
1.
Defina a zona padrão como dmz.
firewall-cmd --set-default-zone=dmz
firewall-cmd --get-default-zone
2.
Atribua todo o tráfego proveniente da rede 192.168.100.0/24 à zona confiável e verifique.
firewall-cmd --permanent --zone=trusted --add-source=192.168.100.0/24
firewall-cmd --reload
firewall-cmd --list-all --zone=trusted
firewall-cmd --get-active-zones
3.
Abra o tráfego http e https para a zona interna.
firewall-cmd --permanent --add-service={http,https} --zone=internal
firewall-cmd --reload
firewall-cmd --list-services --zone=internal
Para remover o serviço permanente de uma zona:
firewall-cmd --permanent [--zone=<zone>] --remove-service=<service>
4.
Faça a transição da interface eth0 para a zona “interna” da sessão atual:
firewall-cmd --zone=internal --change-interface=eth0
5.
Adicione a interface eth1 à zona home:
firewall-cmd --zone=home --add-interface=eth1
Outras opções para gerenciamento de interface:
Consulte se uma interface está em uma zona:
firewall-cmd [--zone=<zone>] --query-interface=<interface>
Remova uma interface de uma zona:
firewall-cmd [--zone=<zone>] --remove-interface=<interface>
6.
Ativar o mascaramento em uma zona inicial
firewall-cmd --zone=home --add-masquerade
Desabilitar o mascaramento em uma zona
firewall-cmd [--zone=<zone>] --remove-masquerade
Consulta mascarada em uma zona
firewall-cmd [--zone=<zone>] --query-masquerade
Desabilitar permanentemente o mascaramento em uma zona
firewall-cmd --permanent [--zone=<zone>] --remove-masquerade
7.
Habilite a porta 3306/tcp para mysql permanentemente na zona inicial
firewall-cmd --permanent --zone=home --add-port=3306/tcp
Desabilitar permanentemente uma combinação de porta e protocolo em uma zona
firewall-cmd --permanent [--zone=<zone>] --remove-port=<port>[-<port>]/<protocol>
8.
Bloqueie mensagens de resposta de eco na zona pública
firewall-cmd --zone=public --add-icmp-block=echo-reply
9.
Encaminhar ssh para o host 192.168.10.5 na zona interna
firewall-cmd --zone=home --add-forward-port=port=22:proto=tcp:toaddr=192.168.10.5
Referências
- Páginas de manual:
man firewall-cmd
man firewalld
man firewalld.zones
man firewall.zone
man firewall-config
Mais artigos:
- Melhores livros de certificação CompTIA Security + (SY0-601)
- Instale e use WPScan – scanner de segurança WordPress
- Melhores livros sobre segurança cibernética para ler