Configure firewall settings using firewall-config, firewall-cmd, or iptables:

A partir do RHEL7 , a gestão da Firewall do sistema passou a ser gerida pelo firewalld, esta inovação, apesar de por trás tomar recurso do seu antecessor “iptables”, permite uma mais inteligente gestão deste mecanismo de segurança, devido à inteligente delimitação de Zonas e gestão de Serviços representantes de conjunto de regras.

Note-se que quando falamos de Firewalls estamos a falar de ferramentas muito versáteis e expansíveis que permitem a gestão e controlo de tráfego de qualquer tipo de rede TCP/IP e por esse mesmo motivo é importante frisar que neste tópico vamos apenas perceber como é que o firewalld funciona e trabalha com as suas Zonas, e como podemos criar\modificar\eliminar Serviços, de forma a mais facilmente gerirmos conjuntos de regras. Como sempre serão facultados links de recursos que permitam ser mais vasta-mente explorados estes temas.

Podemos começar por perceber que o firewalld, funciona através de um daemon com o mesmo nome, sendo que com recurso ao systemctl, podemos manipular e ver o estado do mesmo:

# systemctl status firewalld
    ● firewalld.service - firewalld - dynamic firewall daemon
     Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2019-01-22 11:45:51 WET; 3h 16min ago
     Docs: man:firewalld(1)
     Main PID: 833 (firewalld)
     Tasks: 2 (limit: 4915)
     Memory: 39.4M
     CGroup: /system.slice/firewalld.service
      └─833 /usr/bin/python3 -Es /usr/sbin/firewalld --nofork --nopid

Contudo para melhor gerirmos este daemon também podemos usar alguns utilitários existentes no sistema que permitem gerir este serviço, sendo o principal o firewall-cmd. Com este utilitário é que iremos fazer a maior parte das nossas necessárias configurações no sistema, por exemplo para verificarmos o estado atual da nossa Firewall usamos:

# firewall-cmd --state
    running

Antes de começarmos a entrar nas regras de encaminhamento e manipulação de tráfego de rede, temos de perceber um conceito essencial dentro do firewalld, o já brevemente referido conceito de Zonas.

Todas as placas de rede do sistema podem estar alocadas à mesma zona ou a diferentes zonas pendente o nível de segurança definidas em cada uma. Esta segmentação de zonas vai-nos permitir mais tarde restringir o tráfego entre estas zonas tomando a lógica de Zona de Origem e Zona de Destino.

Dentro do firewalld, por default existem logo as seguintes zonas:

  • Drop Zone: permite conexões de saída, contudo conexões de entrada são descartadas;

  • Block Zone: permite conexões de saída de ssh/dhcp, mas conexões de entrada são rejeitadas;

  • Public Zone: permite ambas as conexões de entrada\saída de ssh;

  • DMZ Zone: permite ambas as conexões de entrada\saída de ssh e permite conexões de saída;

  • Trusted Zone: permite ambas as conexões de saída\entrada;

  • Home: Conexões dhcp, ipp, e ssh de entrada são aceites, juntamente com todas as conexões de saída;

  • Internal: Todas as conexões de saída são aceites juntamente com as regras impostas na Zona Home.

No sistema podemos verificar mais informações sobre as zonas, sendo que abaixo ficam alguns dos exemplos mais frequentes:

  • Para listarmos todas as zonas a serem usadas juntamente com algumas informações sobre as mesmas:

# firewall-cmd --list-all

  • Ver qual é a Zona default:

# firewall-cmd --get-default-zone

  • Para alterarmos a Zona default:

# firewall-cmd --set-default-zone=[Zona]

  • Ver a listagem de zonas onde temos interfaces associados ás mesmas:

# firewall-cmd --get-active-zones

  • Se quisermos ver todas as zona que podemos manipular usamos:

# firewall-cmd --get-zones

  • Para criarmos uma nova zona:

# firewall-cmd --permanent --new-zone=[Nome]

  • Para adicionarmos permanentemente uma placa de rede a uma zona:

# firewall-cmd --permanent --zone=[Zona] --change-interface=[Placa_Rede]

Outra configuração que podemos fazer, é adicionar conjuntos de IP’s como fontes aceites para cada Zona, deste modo podemos negar por exemplo todos os acessos numa determinada zona, contudo permitimos qualquer acesso feito por um determinado grupo de IP’s.

  • Para adicionarmos um [IP] como uma fonte a uma determinada Zona usamos o seguinte comando:

# firewall-cmd --permanent --zone=[Zona] --add-source=[IP]
# firewall-cmd --reload

(Aqui e em muitos outros comandos relacionados com o firewalld o “--reload” é essencial para que o daemon saiba com que novas regras trabalhar)

Fora as zonas, outra grande vantagem inerente ao firewalld é a sua capacidade de definir em diferentes ficheiros de configuração diferentes Serviços, sendo mais fácil a associação de um conjunto de regras a um único nome de um serviço.

Podemos listar todos os serviços que estão ativos na nossa zona ativa através do comando:

# firewall-cmd --list-services

Todos estes serviços são na realidade ficheiros guardados nas diretorias usr/lib/firewalld/services e /etc/firewalld/services, sendo que na primeira são os serviços standard e na segunda diretoria são os serviços criados pelo Administrador do sistema.

Devido à complexidade da estrutura destes ficheiros e dado não ser o foco deste tópico este tema, deixo um link que irá permitir uma mais fácil exploração deste tópico. Contudo abaixo deixo alguns comandos que serão usados frequentemente para trabalhar com estes serviços:

  • Para adicionarmos \ removermos permanentemente um serviço:

 # firewall-cmd --permanent --add-service=[Nome]
 # firewall-cmd --permanent --remove-service=[Nome]
  • Para listarmos todos os serviços que o firewalld deteta, usamos:

# firewall-cmd --get-services

  • Para criarmos um serviço, contudo completamente em branco usamos o seguinte comando:

# firewall-cmd --permanent --new-service=[Nome]

Semelhante-mente aos serviços podemos gerir as Portas que estão associadas a diferentes zonas, bastando seguir a lógica de sintaxe de comandos indicada acima. Contudo abaixo ficaram alguns exemplos:

  • Listar todas as portas abertas:

# firewall-cmd --list-ports

  • Abrir uma determinada porta numa determinada Zona:

# firewall-cmd --permanent --add-port=[Porta]

Last updated

Was this helpful?