Restringir o acesso a serviços com o firewalld

LinuxBeginner
Pratique Agora

Introdução

Abrir um serviço de rede é apenas metade da tarefa de administração. Você também deve controlar qual tráfego o firewall do host permite. Em sistemas Red Hat, o firewalld gerencia a política de firewall por meio de zonas, serviços, portas e regras ricas (rich rules).

Neste laboratório, um pequeno serviço HTTP foi preparado para você na porta TCP 8088. Você inspecionará a zona padrão, abrirá a porta em tempo de execução, tornará a regra permanente, substituirá a abertura ampla da porta por uma regra rica com restrição de origem e auditará o estado final do firewall.

Inspecionar o firewall e a linha de base do serviço

Nesta etapa, você inspecionará o estado atual do firewalld e o serviço de rede preparado. O firewall deve estar em execução antes de você alterar as regras.

A configuração inicial preserva permanentemente o acesso SSH e o terminal do navegador LabEx em 3002/tcp na zona public. Mantenha essas regras de gerenciamento ao alterar a política de firewall da aplicação.

Entre no diretório do projeto.

cd /home/labex/project

Verifique se o firewalld está em execução. Neste ambiente, use sudo firewall-cmd para operações de leitura e escrita.

sudo firewall-cmd --state

Exiba a zona padrão.

sudo firewall-cmd --get-default-zone

Inspecione a zona ativa. Observe que o ssh é permitido para que a sessão SSH do LabEx permaneça acessível.

sudo firewall-cmd --list-all

Confirme se o serviço web de prática está em execução e escutando na porta 8088.

systemctl is-active rhcsa-fw-web.service
ss -ltn | grep ':8088'
curl -s http://127.0.0.1:8088/

Verifique se a porta 8088/tcp ainda não está amplamente aberta no firewalld.

sudo firewall-cmd --query-port=8088/tcp || echo "port 8088 is not open in the zone"

Abrir uma porta em tempo de execução

Nesta etapa, você adicionará uma regra de firewall em tempo de execução. As regras de tempo de execução entram em vigor imediatamente, mas desaparecem após o recarregamento do firewalld, a menos que você também as torne permanentes.

Abra a porta TCP 8088 na configuração de tempo de execução atual. Como nenhuma zona é especificada, o firewall-cmd aplica a alteração à zona padrão que você inspecionou anteriormente.

sudo firewall-cmd --add-port=8088/tcp

Consulte a regra de tempo de execução. Um resultado yes significa que o firewall ativo permite a porta no momento.

sudo firewall-cmd --query-port=8088/tcp

Liste as portas em tempo de execução. Isso oferece uma visão compacta das portas abertas manualmente na zona ativa.

sudo firewall-cmd --list-ports

Verifique a configuração permanente. Ela ainda deve retornar no porque a configuração de tempo de execução e a permanente são separadas; uma regra apenas de tempo de execução funciona agora, mas seria perdida quando o firewalld fosse recarregado.

sudo firewall-cmd --permanent --query-port=8088/tcp || echo "port 8088 is not permanent yet"

Tornar a regra de porta permanente

Nesta etapa, você adicionará a mesma porta à configuração permanente e recarregará o firewalld. O recarregamento aplica a configuração permanente ao firewall em tempo de execução.

Adicione a regra de porta permanente. A opção --permanent grava a regra na configuração do firewalld em vez de apenas alterar o firewall em execução.

sudo firewall-cmd --permanent --add-port=8088/tcp

Recarregue o firewalld. O recarregamento reconstrói o firewall em tempo de execução a partir da configuração permanente, e é por isso que esta etapa testa se a sua regra salva pode sobreviver a um recarregamento.

sudo firewall-cmd --reload

Consulte a configuração de tempo de execução e a permanente. O primeiro comando verifica o firewall ativo e o segundo verifica a configuração salva.

sudo firewall-cmd --query-port=8088/tcp
sudo firewall-cmd --permanent --query-port=8088/tcp

Ambos os comandos devem retornar yes.

Substituir a porta aberta por uma regra rica

Nesta etapa, você restringirá o acesso em vez de deixar o serviço aberto para qualquer origem. Uma regra rica (rich rule) pode incluir um endereço de origem e uma porta de destino em uma única regra.

Remova a abertura ampla da porta permanente. Isso prepara o firewall para uma regra mais restritiva; caso contrário, a regra rica estaria presente, mas a regra de porta ampla ainda permitiria todas as origens.

sudo firewall-cmd --permanent --remove-port=8088/tcp

Adicione uma regra rica que permite 8088/tcp apenas a partir da rede de documentação 192.0.2.0/24. As regras ricas são úteis quando uma regra simples de serviço ou porta não é específica o suficiente, como quando são necessárias restrições de endereço de origem.

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.0.2.0/24" port port="8088" protocol="tcp" accept'

Recarregue o firewalld para aplicar a alteração permanente.

sudo firewall-cmd --reload

Confirme se a porta ampla não está mais aberta. O resultado esperado no significa que o serviço não está mais exposto por uma regra de porta geral.

sudo firewall-cmd --query-port=8088/tcp || echo "broad port rule removed"

Liste as regras ricas. A saída da regra rica é a evidência de que a regra mais restritiva baseada em origem substituiu a abertura ampla.

sudo firewall-cmd --list-rich-rules

Auditar o estado final do firewall

Nesta etapa, você auditará o estado final. A verificação final é um hábito administrativo importante: confirme se o serviço está em execução, se o SSH permanece permitido, se a porta ampla está fechada e se a regra restrita existe.

Liste a zona ativa.

sudo firewall-cmd --list-all

Liste as regras ricas permanentes.

sudo firewall-cmd --permanent --list-rich-rules

Confirme se o SSH ainda é permitido.

sudo firewall-cmd --query-service=ssh

Confirme se o próprio serviço ainda responde localmente. O acesso via loopback local verifica o processo do serviço; o firewalld controla o tráfego de zona de entrada separadamente.

curl -s http://127.0.0.1:8088/

Resumo

Você praticou a administração do firewall do host com o firewalld. Você inspecionou a zona padrão, confirmou que um serviço de rede estava em execução, adicionou uma regra de porta em tempo de execução, tornou uma regra permanente, recarregou o firewalld, substituiu uma abertura ampla por uma regra rica com restrição de origem e auditou o estado final do firewall.