Tutorial

Como configurar um firewall usando o firewalld no CentOS 8

Published on May 12, 2020
Português
Como configurar um firewall usando o firewalld no CentOS 8

Introdução

O firewalld é um software de gerenciamento de firewall disponível para muitas distribuições do Linux. Ele atua como um front-end para os sistemas de filtragem de pacotes dentro do kernel do Linux nftables ou iptables.

Neste guia, mostraremos a você como configurar um firewall do firewalld para seu servidor CentOS 8 e abordaremos as noções básicas sobre o gerenciamento de firewall com a ferramenta administrativa firewall-cmd.

Pré-requisitos

Para completar este tutorial, você precisará de um servidor executando em CentOS 8. Presumiremos que você está conectado a esse servidor como um non-root user com privilégios sudo habilitado. Para configurar isso, consulte nosso Guia de configuração inicial de servidor para o CentOS 8.

Conceitos básicos no firewalld

Antes de começarmos a falar sobre como de fato usar o utilitário firewall-cmd para gerenciar sua configuração de firewall, precisamos nos familiarizar com alguns conceitos que a ferramenta introduz.

Zonas

O daemon do firewalld gerencia grupos de regras usando entidades chamadas de zonas. As zonas são conjuntos de regras que ditam qual tráfego deve ser permitido, dependendo do nível de confiança que você tem na rede. As interfaces de rede são atribuídas a uma zona para ditar o comportamento que o firewall deve permitir.

Para computadores que possam se mover frequentemente entre redes (como notebooks), esse tipo de flexibilidade fornece um bom método para alterar suas regras, a depender do seu ambiente. Pode ser que você tenha regras rigorosas em funcionamento, proibindo a maioria do tráfego ao operar em uma rede Wi-Fi pública, ao mesmo tempo que permite restrições mais brandas ao se conectar à sua rede local. Para um servidor, essas zonas geralmente não são tão importantes, pois o ambiente de rede raramente muda - se é que muda em algum momento.

Independentemente do quão dinâmico possa ser seu ambiente de rede, ainda é útil se familiarizar com a ideia geral por trás de cada uma das zonas pré-definidas para o firewalld. As zonas pré-definidas dentro do firewalld são ordenadas das menos confiáveis para as mais confiáveis:

  • drop: o nível de confiança mais baixo. Todas as conexões de entrada são interrompidas sem resposta e apenas são possíveis conexões de saída.
  • block: parecido com a anterior, mas, em vez de simplesmente interromper as conexões, as solicitações de entrada são rejeitadas com uma mensagem de icmp-host-prohibited ou icmp6-adm-prohibited.
  • public: representa redes públicas e não confiáveis. Você não confia em outros computadores, mas pode permitir conexões de entrada, selecionadas caso de caso.
  • external: redes externas, no caso de você estar usando o firewall como seu gateway. Ela está configurada para o mascaramento de NAT, para que sua rede interna permaneça privada, mas acessível.
  • internal: o outro lado da zona externa, usada para a porção interna de um gateway. Os computadores são relativamente confiáveis e alguns serviços adicionais estão disponíveis.
  • dmz: usada para computadores localizados em uma DMZ (computadores isolados que não terão acesso ao resto de sua rede). Só são permitidas certas conexões de entrada.
  • work: usada para máquinas de trabalho. Confia na maioria dos computadores na rede. Podem ser permitidos alguns serviços adicionais.
  • home: um ambiente local. Geralmente, isso significa que você confia na maioria dos outros computadores e que alguns outros serviços serão aceitos.
  • trusted: confia em todas as máquinas na rede. A mais aberta das opções disponíveis e deve ser usada com moderação.

Para usar o firewall, podemos criar regras e alterar as propriedades de nossas zonas. Em seguida, atribuímos nossas interfaces de rede às zonas que sejam mais apropriadas.

Permanência de regras

No firewalld, as regras podem ser aplicadas ao conjunto de regras tempo de execução atual, ou definidas como permanentes. Quando uma regra é adicionada ou modificada, por padrão, apenas o firewall atualmente em execução é modificado. Após a próxima reinicialização – ou quando o serviço do firewalld é recarregado – apenas as regras permanentes permanecerão.

A maioria das operações do firewall-cmd pode usar um sinalizador --permanent para indicar que as alterações devem ser aplicadas na configuração permanente. Além disso, o firewall atualmente em execução pode ser salvo na configuração permanente com o comando firewall-cmd --runtime-to-permanent.

Essa separação das configurações do tempo de execução vs permanentes significa que você pode testar as regras com segurança em seu firewall ativo e, em seguida, recarregar para começar novamente, caso haja problemas.

Instalando e habilitando o firewalld

O firewalld vem instalado por padrão em algumas distribuições do Linux, incluindo muitas imagens do CentOS 8. No entanto, pode ser que precise instalar o firewalld por conta própria:

  1. sudo dnf install firewalld

Após instalar o firewalld, você pode habilitar o serviço e reinicializar o seu servidor. Lembre-se de que, habilitar o firewalld fará com que o serviço seja iniciado durante a inicialização. É uma prática recomendada criar suas regras de firewall e aproveitar a oportunidade para testá-las antes de configurar esse comportamento, para evitar possíveis problemas.

  1. sudo systemctl enable firewalld
  2. sudo systemctl start firewalld

Quando o servidor for reinicializado, seu firewall deve ser iniciado, suas interfaces de rede devem ser colocadas nas zonas que você configurou (ou retornarem para a zona padrão configurada) e as regras associadas à(s) zona(s) será(ão) aplicada(s) à(s) interface(s) associada(s).

Podemos verificar se o serviço está em execução e acessível, digitando:

  1. sudo firewall-cmd --state
Output
running

Isso indica que nosso firewall está em funcionamento com a configuração padrão.

Familiarizando-se com as regras do firewall em vigor

Antes de começar a fazer alterações, precisamos nos familiarizar com o ambiente e as regras padrão fornecidos pelo firewalld.

Explorando os padrões

Podemos ver qual zona está atualmente selecionada como padrão, digitando:

  1. firewall-cmd --get-default-zone
Output
public

Uma vez que não demos ao firewalld nenhum comando para se desviar da zona padrão e nenhuma das nossas interfaces foi configurada para se vincular a outra zona, tal zona também será a única zona ativa (ou seja, a zona que está controlando o tráfego para nossas interfaces). Podemos verificar isso, digitando:

  1. firewall-cmd --get-active-zones
Output
public interfaces: eth0 eth1

Aqui, podemos ver que nosso servidor de exemplo tem duas interfaces de rede sendo controladas pelo firewall (eth0 eth1). Ambas estão sendo gerenciadas de acordo com as regras definidas para a zona pública.

No entanto, como fazemos para saber quais regras estão associadas à zona pública? Podemos imprimir a configuração da zona padrão, digitando:

  1. sudo firewall-cmd --list-all
Output
public (active) target: default icmp-block-inversion: no interfaces: eth0 eth1 sources: services: cockpit dhcpv6-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

Vendo o resultado, podemos dizer que essa zona é a padrão e que está ativa, bem como que as interfaces eth0 e eth1 estão associadas a essa zona (já sabíamos tudo isso pelas nossas consultas anteriores). No entanto, podemos ver também que essa zona permite o tráfego para um cliente DHCP (para atribuição de endereço IP), SSH (para administração remota) e Cockpit (um console baseado em Web).

Explorando zonas alternativas

Agora, temos uma boa noção sobre a configuração da zona padrão e da zona ativa. Também somos capazes de encontrar informações sobre outras zonas.

Para obter uma lista das zonas disponíveis, digite:

  1. firewall-cmd --get-zones
Output
block dmz drop external home internal public trusted work

Podemos ver a configuração específica associada a uma zona, incluindo o parâmetro --zone= em nosso comando --list-all:

  1. sudo firewall-cmd --zone=home --list-all
Output
home target: default icmp-block-inversion: no interfaces: sources: services: cockpit dhcpv6-client mdns samba-client ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

Você pode gerar como resultado todas as definições de zona, usando a opção --list-all-zones. Provavelmente, você irá querer canalizar o resultado para um pager para facilitar a visualização:

  1. sudo firewall-cmd --list-all-zones | less

Em seguida, vamos aprender sobre como atribuir zonas às interfaces de rede.

Selecionando zonas para suas interfaces

A menos que tenha configurado suas interfaces de rede de outra forma, cada interface será colocada na zona padrão quando o firewall for iniciado.

Alterando a zona de uma interface

É possível mover uma interface entre zonas durante uma sessão, usando o parâmetro --zone= em combinação com o parâmetro --change-interface=. Assim como acontece com todos os comandos que modificam o firewall, você precisará usar o sudo.

Por exemplo, podemos mover nossa interface eth0 para a zona local, digitando o seguinte:

  1. sudo firewall-cmd --zone=home --change-interface=eth0
Output
success

Nota: sempre que estiver movendo uma interface para uma nova zona, saiba que você provavelmente está modificando os serviços que ficarão operacionais. Por exemplo, aqui estamos movendo a interface para a zona home (inicial), que tem o SSH disponível. Isso significa que nossa conexão não deve ser interrompida. Algumas outras zonas não têm o SSH habilitado por padrão. A mudança para uma dessas zonas pode fazer com que sua conexão seja interrompida, impedindo que você torne a fazer login no seu servidor.

Podemos verificar se isso foi bem-sucedido, pedindo pelas zonas ativas novamente:

  1. firewall-cmd --get-active-zones
Output
home interfaces: eth0 public interfaces: eth1

Ajustando a zona padrão

Se todas as suas interfaces puderem ser bem gerenciadas por uma única zona, provavelmente, o mais fácil seja, simplesmente, designar a melhor zona como sendo a padrão e, em seguida, usá-la para a sua configuração.

Você pode alterar a zona padrão com o parâmetro --set-default-zone=. Isso mudará de imediato qualquer interface que esteja usando a zona padrão:

  1. sudo firewall-cmd --set-default-zone=home
Output
success

Definindo regras para seus aplicativos

Vamos examinar a maneira básica de definir exceções de firewall para os serviços que deseja disponibilizar.

Adicionando um serviço às suas zonas

O método mais simples é adicionar os serviços ou portas que você precisa às zonas que está usando. Você pode obter uma lista das definições de serviço disponíveis com a opção --get-services:

  1. firewall-cmd --get-services
Output
RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server finger freeipa-4 freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git grafana gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kdeconnect kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns memcache minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy prometheus proxy-dhcp ptp pulseaudio puppetmaster quassel radius rdp redis redis-sentinel rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync spotify-sync squid ssdp ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tentacle tftp tftp-client tile38 tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server

Nota: você pode obter mais detalhes sobre cada um desses serviços, examinando o arquivo .xml associado dentro do diretório /usr/lib/firewalld/services. Por exemplo, o serviço SSH é definido desta forma:

/usr/lib/firewalld/services/ssh.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SSH</short>
  <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
  <port protocol="tcp" port="22"/>
</service>

Você pode habilitar um serviço para uma zona usando o parâmetro --add-service=. A operação terá como alvo a zona padrão ou a zona que estiver especificada pelo parâmetro --zone=. Por padrão, isso ajustará apenas a sessão atual do firewall. Você pode ajustar a configuração permanente do firewall, incluindo o sinalizador --permanent.

Se estivermos executando um servidor Web que atende o tráfego HTTP convencional, por exemplo, podemos temporariamente permitir esse tráfego para interfaces em nossa zona pública, digitando:

  1. sudo firewall-cmd --zone=public --add-service=http

Você pode deixar o sinalizador --zone= de fora caso deseje modificar a zona padrão. Podemos verificar se a operação foi bem-sucedida, usando as operações --list-all ou --list-services:

  1. sudo firewall-cmd --zone=public --list-services
Output
cockpit dhcpv6-client http ssh

Assim que tiver testado se tudo está funcionando como deveria, você provavelmente vai querer modificar as regras permanentes do firewall, de modo que seu serviço ainda esteja disponível após uma reinicialização. Podemos tornar a nossa mudança anterior permanente, digitando-a novamente e adicionando o sinalizador --permanent:

  1. sudo firewall-cmd --zone=public --add-service=http --permanent
Output
success

De maneira alternativa, você poderia usar o sinalizador --runtime-to-permanent para salvar a configuração de firewall atualmente em execução na configuração permanente:

  1. sudo firewall-cmd --runtime-to-permanent

Tome cuidado com isso, já que todas as alterações feitas no firewall em execução serão instauradas de maneira permanente.

Independentemente do método que você escolher, você poderá verificar se ele foi bem-sucedido, adicionando o sinalizador --permanent na operação --list-services. Você precisa usar o sudo para toda operação --permanent:

  1. sudo firewall-cmd --zone=public --list-services --permanent
Output
cockpit dhcpv6-client http ssh

Sua zona pública agora permitirá o tráfego Web HTTP na porta 80. Caso seu servidor Web estiver configurado para usar SSL/TLS, você também vai querer adicionar o serviço https. Podemos adicionar isso à sessão atual e ao conjunto de regras permanentes, digitando:

  1. sudo firewall-cmd --zone=public --add-service=https
  2. sudo firewall-cmd --zone=public --add-service=https --permanent

E se nenhum serviço apropriado estiver disponível?

Os serviços incluídos na instalação do firewalld representam muitos dos aplicativos mais comuns para os quais você pode querer permitir o acesso. No entanto, é provável que haja cenários onde esses serviços não se encaixem em seus requisitos.

Nessa situação, você tem duas opções.

Abrir uma porta para suas zonas

A maneira mais fácil de adicionar suporte para seu aplicativo específico é abrir as portas que ele utiliza na(s) zona(s) apropriada(s). Isto é feito pela especificação da porta ou da faixa de portas, além do protocolo associado (TCP ou UDP) para as portas.

Por exemplo, caso nosso aplicativo seja executado na porta 5000 e utilize TCP, poderíamos adicionar isso temporariamente à zona pública usando o parâmetro --add-port=. Os protocolos podem ser designados como tcp ou udp:

  1. sudo firewall-cmd --zone=public --add-port=5000/tcp
Output
success

Podemos verificar se isso foi bem-sucedido usando a operação --list-ports:

  1. sudo firewall-cmd --zone=public --list-ports
Output
5000/tcp

Também é possível especificar uma faixa sequencial de portas, separando a porta inicial e final na faixa com um traço. Por exemplo, caso nosso aplicativo utilize as portas UDP de 4990 a 4999, poderíamos abri-las na zona pública, digitando:

  1. sudo firewall-cmd --zone=public --add-port=4990-4999/udp

Após os testes, provavelmente vamos querer adicioná-las ao firewall permanente. Use sudo firewall-cmd --runtime-to-permanent para fazer isso, ou execute novamente os comandos com o sinalizador --permanent:

  1. sudo firewall-cmd --zone=public --permanent --add-port=5000/tcp
  2. sudo firewall-cmd --zone=public --permanent --add-port=4990-4999/udp
  3. sudo firewall-cmd --zone=public --permanent --list-ports
Output
success success 5000/tcp 4990-4999/udp

Definir um serviço

Abrir portas para suas zonas é uma solução simples, mas pode ser difícil monitorar a finalidade de cada uma delas. Caso encerre um serviço em seu servidor, você pode ter dificuldades para lembrar quais das portas que foram abertas ainda são necessárias. Para evitar essa situação, é possível definir um novo serviço.

Os serviços são coleções de portas com um nome e descrição associados. Usar serviços é mais fácil de administrar do que portas, mas exige um pouco de trabalho inicial. A maneira mais fácil de começar é copiar um script existente (encontrado em /usr/lib/firewalld/services) para o diretório /etc/firewalld/services, onde o firewall busca por definições não padrão.

Por exemplo, poderíamos copiar desta forma a definição de serviço SSH para usar para nossa definição de serviço exemplo. O nome do arquivo menos o sufixo .xml determinará o nome do serviço dentro da lista de serviços do firewall:

  1. sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/example.xml

Agora, você pode ajustar a definição encontrada no arquivo que copiou. Primeiro, abra-o em seu editor de texto favorito. Usaremos o vi aqui:

  1. sudo vi /etc/firewalld/services/example.xml

Para começar, o arquivo possuirá a definição SSH que você copiou:

/etc/firewalld/services/example.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>SSH</short>
  <description>Secure Shell (SSH) is a protocol for logging into and executing commands on remote machines. It provides secure encrypted communications. If you plan on accessing your machine remotely via SSH over a firewalled interface, enable this option. You need the openssh-server package installed for this option to be useful.</description>
  <port protocol="tcp" port="22"/>
</service>

A maior parte dessa definição, na verdade, consiste em metadados. Você vai querer alterar o nome curto para o serviço dentro de tags <short>. Esse é um nome legível para seu serviço. Você também deve adicionar uma descrição, para que tenha mais informações caso precise auditar o serviço. A única configuração que precisa fazer que afetará de fato a funcionalidade do serviço, provavelmente será a definição da porta onde você identifica o número de porta e o protocolo que deseja abrir. Várias tags <port/> podem ser especificadas.

Em nosso serviço exemplo, imagine que precisamos abrir a porta 7777 para o TCP e 8888 para o UDP. Podemos modificar a definição existente com algo parecido com isto:

/etc/firewalld/services/example.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
  <short>Example Service</short>
  <description>This is just an example service. It probably shouldn't be used on a real system.</description>
  <port protocol="tcp" port="7777"/>
  <port protocol="udp" port="8888"/>
</service>

Salve e feche o arquivo.

Recarregue seu firewall para obter acesso ao seu novo serviço:

  1. sudo firewall-cmd --reload

Você pode ver que ele está agora entre a lista de serviços disponíveis:

  1. firewall-cmd --get-services
Output
RH-Satellite-6 amanda-client amanda-k5-client amqp amqps apcupsd audit bacula bacula-client bb bgp bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc bittorrent-lsd ceph ceph-mon cfengine cockpit condor-collector ctdb dhcp dhcpv6 dhcpv6-client distcc dns dns-over-tls docker-registry docker-swarm dropbox-lansync elasticsearch etcd-client etcd-server example finger freeipa-4 freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master git grafana gre high-availability http https imap imaps ipp ipp-client ipsec irc ircs iscsi-target isns jenkins kadmin kdeconnect kerberos kibana klogin kpasswd kprop kshell ldap ldaps libvirt libvirt-tls lightning-network llmnr managesieve matrix mdns memcache minidlna mongodb mosh mountd mqtt mqtt-tls ms-wbt mssql murmur mysql nfs nfs3 nmea-0183 nrpe ntp nut openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole plex pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy prometheus proxy-dhcp ptp pulseaudio puppetmaster quassel radius rdp redis redis-sentinel rpc-bind rsh rsyncd rtsp salt-master samba samba-client samba-dc sane sip sips slp smtp smtp-submission smtps snmp snmptrap spideroak-lansync spotify-sync squid ssdp ssh steam-streaming svdrp svn syncthing syncthing-gui synergy syslog syslog-tls telnet tentacle tftp tftp-client tile38 tinc tor-socks transmission-client upnp-client vdsm vnc-server wbem-http wbem-https wsman wsmans xdmcp xmpp-bosh xmpp-client xmpp-local xmpp-server zabbix-agent zabbix-server

Agora, você pode utilizar esse serviço em suas zonas, como normalmente faria.

Criando suas próprias zonas

Embora as zonas pré-definidas sejam mais que suficientes para a maioria dos usuários, pode ser útil definir suas próprias zonas, que sejam mais descritivas em relação às suas funções.

Por exemplo, você pode querer criar uma zona para seu servidor Web, chamada publicweb. No entanto, pode querer ter outra zona configurada para o serviço DNS que você provisiona em sua rede privada. Você pode querer uma zona chamada “privateDNS” para isso.

Ao adicionar uma zona, você deve adicioná-la à configuração permanente do firewall. Depois disso, você pode recarregar para trazer a configuração para sua sessão em execução. Por exemplo, poderíamos criar as duas zonas discutidas acima, digitando:

  1. sudo firewall-cmd --permanent --new-zone=publicweb
  2. sudo firewall-cmd --permanent --new-zone=privateDNS

Você pode verificar se elas estão presentes em sua configuração permanente, digitando:

  1. sudo firewall-cmd --permanent --get-zones
Output
block dmz drop external home internal privateDNS public publicweb trusted work

Como dito anteriormente, essas zonas ainda não estarão disponíveis no firewall de tempo de execução:

  1. firewall-cmd --get-zones
Output
block dmz drop external home internal public trusted work

Recarregue o firewall para trazer essas novas zonas para a configuração ativa de tempo de execução:

  1. sudo firewall-cmd --reload
  2. firewall-cmd --get-zones
Output
block dmz drop external home internal privateDNS public publicweb trusted work

Agora, você pode começar a atribuir os serviços e portas apropriados para suas zonas. Normalmente, é uma boa ideia ajustar o firewall de tempo de execução e, em seguida, salvar essas alterações na configuração permanente após realizar testes. Por exemplo, para a zona publicweb, você pode querer adicionar os serviços SSH, HTTP e HTTPS:

  1. sudo firewall-cmd --zone=publicweb --add-service=ssh
  2. sudo firewall-cmd --zone=publicweb --add-service=http
  3. sudo firewall-cmd --zone=publicweb --add-service=https
  4. sudo firewall-cmd --zone=publicweb --list-all
Output
publicweb target: default icmp-block-inversion: no interfaces: sources: services: http https ssh ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

De maneira semelhante, podemos adicionar o serviço DNS à nossa zona privateDNS:

  1. sudo firewall-cmd --zone=privateDNS --add-service=dns
  2. sudo firewall-cmd --zone=privateDNS --list-all
Output
privateDNS target: default icmp-block-inversion: no interfaces: sources: services: dns ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

Depois disso, poderíamos mudar nossas interfaces para essas novas zonas, para testá-las:

  1. sudo firewall-cmd --zone=publicweb --change-interface=eth0
  2. sudo firewall-cmd --zone=privateDNS --change-interface=eth1

Neste ponto, você tem a oportunidade de testar sua configuração. Se esses valores funcionarem, você vai querer adicionar essas regras à configuração permanente. Você poderia fazer isso, executando todos os comandos novamente com o sinalizador --permanent acrescentado a eles. Neste caso, porém, usaremos o sinalizador --runtime-to-permanent para salvar nossa configuração de tempo de execução inteira permanentemente:

  1. sudo firewall-cmd --runtime-to-permanent

Após aplicar permanentemente essas regras, recarregue o firewall para testar se as mudanças permanecem:

  1. sudo firewall-cmd --reload

Confirme se as zonas corretas foram atribuídas:

  1. firewall-cmd --get-active-zones
Output
privateDNS interfaces: eth1 publicweb interfaces: eth0

E confirme se os serviços apropriados estão disponíveis para ambas as zonas:

  1. sudo firewall-cmd --zone=publicweb --list-services
Output
http https ssh
  1. sudo firewall-cmd --zone=privateDNS --list-services
Output
dns

Você configurou suas próprias zonas com sucesso! Se quiser transformar uma dessas zonas o padrão para outras interfaces, lembre-se de configurar esse comportamento com o parâmetro --set-default-zone=:

  1. sudo firewall-cmd --set-default-zone=publicweb

Conclusão

Agora, você já deve ter uma compreensão bem abrangente de como administrar o serviço firewalld em seu sistema CentOS para o uso do dia a dia.

O serviço firewalld permite que você configure regras e conjuntos de regras que podem ser mantidas e que levam em consideração seu ambiente de rede. Ele permite que você escolha sem dificuldades diferentes políticas de firewall com o uso de zonas. Além disso, oferece aos administradores a capacidade de abstrair a gestão de portas em definições de serviço mais amigáveis. Obter um conhecimento prático desse sistema permitirá que você aproveite a flexibilidade e o poder que essa ferramenta propicia.

Para obter mais informações sobre o firewalld, consulte a documentação oficial do firewalld.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about our products

About the authors

Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Featured on Community

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more