Como configurar e gerir a Firewall em CentOS 8

um firewall é um método para monitorar e filtrar o tráfego de entrada e saída de rede. Funciona através da definição de um conjunto de regras de segurança que determinam se permitem ou bloqueiam um tráfego específico. Um firewall devidamente configurado é um dos aspectos mais importantes da segurança global do sistema.

CentOS 8 Navios com um servidor de firewall chamado firewalld. É uma solução completa com uma interface D-Bus que lhe permite gerenciar dinamicamente a firewall do sistema.

neste tutorial, vamos falar sobre como configurar e gerenciar o firewall em CentOS 8. Também explicaremos os conceitos básicos do FirewallD.

pré-requisitos #

para configurar o serviço de firewall, você deve estar logado como root ou usuário com privilégios de sudo.

conceitos básicos de Firewalld #

firewallld usa os conceitos de zonas e serviços. Com base nas zonas e serviços que irá configurar, poderá controlar o tráfego permitido ou Bloqueado de e para o sistema.

Firewalld pode ser configurado e gerenciado usando o utilitário firewall-cmd linha de comando.

em CentOS 8, iptables é substituído por nftables como a infra-estrutura de firewall padrão para o servidor firewalld.

zonas Firewalld #

as zonas são conjuntos predefinidos de regras que especificam o nível de confiança das redes a que o seu computador está ligado. Você pode atribuir interfaces de rede e fontes a uma zona.

abaixo estão as zonas fornecidas pelo FirewallD ordenadas de acordo com o nível de confiança da zona de confiança não confiável para Confiável:

  • largar: Todas as ligações recebidas são retiradas sem qualquer notificação. Só são permitidas ligações de saída.Bloco
  • : todas as ligações recebidas são rejeitadas com uma mensagem icmp-host-prohibited para IPv4 e icmp6-adm-prohibited para IPv6n. apenas as ligações enviadas são permitidas.
  • público: para utilização em áreas públicas não fidedignas. Você não confia em outros computadores na rede, mas você pode permitir conexões de entrada selecionadas.
  • external: For use on external networks with NAT masquerading enabled when your system acts as a gateway or router. Só são permitidas as ligações de entrada seleccionadas.
  • interno: para utilização em redes internas quando o seu sistema actua como gateway ou router. Outros sistemas na rede são geralmente confiáveis. Só são permitidas as ligações de entrada seleccionadas.
  • dmz: usado para computadores localizados na sua zona desmilitarizada que têm acesso limitado ao resto da sua rede. Só são permitidas as ligações de entrada seleccionadas.
  • trabalho: utilizado em máquinas de trabalho. Outros computadores na rede são geralmente confiáveis. Só são permitidas as ligações de entrada seleccionadas.
  • home: Usado para máquinas domésticas. Outros computadores na rede são geralmente confiáveis. Só são permitidas as ligações de entrada seleccionadas.
  • confiável: todas as conexões de rede são aceitas. Confie em todos os computadores da rede.

Firewall services #

Firewalld services are predefined rules that apply within a zone and define the necessary settings to allow incoming traffic for a specific service. Os serviços permitem-lhe executar facilmente várias tarefas em um único passo.

por exemplo, o serviço pode conter definições sobre portas de abertura, tráfego de Encaminhamento, e muito mais.

firewalld Runtime and Permanent Settings #

Firewallld uses two separated configuration sets, runtime, and permanent configuration.

a configuração de tempo de execução é a configuração real de execução e não persiste no reboot. Quando o servidor firewalld começa, ele carrega a configuração permanente, que se torna a configuração de tempo de execução.

por padrão, ao fazer alterações na configuração do Firewalld usando o utilitário firewall-cmd, as alterações são aplicadas à configuração do tempo de execução. Para tornar as alterações permanentes adicione a opção --permanent ao comando.

Para aplicar as alterações em ambos os conjuntos de configuração, você pode usar um dos dois métodos a seguir:

  1. Alterar a configuração de tempo de execução e torná-la permanente:

    sudo firewall-cmd <options>sudo firewall-cmd --runtime-to-permanent
  2. a Mudança permanente de configuração e recarregar o firewalld daemon:

    sudo firewall-cmd --permanent <options>sudo firewall-cmd --reload

Permitindo FirewallD #

No CentOS 8, firewalld é instalado e habilitado por padrão. Se, por alguma razão, não estiver instalado no seu sistema, poderá instalar e iniciar o servidor escrevendo:

sudo dnf install firewalldsudo systemctl enable firewalld --now

você pode verificar o estado do serviço de firewall com:

sudo firewall-cmd --state

se a firewall estiver activa, o comando deverá imprimir running. Caso contrário, você verá not running.

zonas Firewalld #

se não o tiver alterado, a zona por omissão está definida para public, e todas as interfaces de rede são atribuídas a esta zona.

a zona padrão é aquela que é usada para tudo o que não é explicitamente atribuído a outra zona.

pode ver a zona predefinida escrevendo:

sudo firewall-cmd --get-default-zone
public

para obter uma lista de todas as zonas disponíveis, escreva:

sudo firewall-cmd --get-zones
block dmz drop external home internal public trusted work

Para ver as zonas ativas e as interfaces de rede atribuídos a eles:

sudo firewall-cmd --get-active-zones

A saída abaixo mostra que as interfaces eth0 e eth1 são atribuídos a public zona:

public interfaces: eth0 eth1

Você pode imprimir as definições de configuração de zona com:

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

a Partir do resultado acima, podemos ver que a zona de público é ativo e utiliza o padrão de destino, que é o REJECT. A saída também mostra que a zona é usada pelas interfaces eth0 e eth1 e permite o tráfego cliente DHCP e SSH.

se quiser verificar as configurações de todos os tipos de zonas disponíveis:

sudo firewall-cmd --list-all-zones

o comando imprime uma lista enorme com as configurações de toda a zona disponível.

mudar o alvo da zona #

o alvo define o comportamento padrão da zona para o tráfego de entrada que não é especificado. Ele pode ser configurado para uma das seguintes opções: default, ACCEPT, REJECT, e DROP.

para definir o alvo da zona, especifique a zona com a opção --zone e o alvo com a opção --set-target.

por exemplo, para mudar o alvo da zona public para DROP :

sudo firewall-cmd --zone=public --set-target=DROP

atribuir uma interface a uma zona diferente #

pode criar conjuntos específicos de regras para diferentes zonas e atribuir-lhes interfaces diferentes. Isto é especialmente útil quando você várias interfaces em sua máquina.

para atribuir uma interface a uma zona diferente, indique a zona com a opção --zone e a interface com a opção --change-interface.Por exemplo, o seguinte comando atribui a interface eth1 à zona work :

sudo firewall-cmd --zone=work --change-interface=eth1

verifique as alterações dactilografando:

sudo firewall-cmd --get-active-zones
work interfaces: eth1public interfaces: eth0

alterando a zona por omissão #

para alterar a zona por Omissão, use a opção --set-default-zone seguida do nome da zona que deseja tornar por omissão.

Por exemplo, para alterar a zona padrão para home, você deve executar o seguinte comando:

sudo firewall-cmd --set-default-zone=home

Verificar as alterações com:

sudo firewall-cmd --get-default-zone
home

a Criação de novas Zonas #

Firewalld também permite que você crie seus próprios horários. Isto é útil quando você quer criar regras por aplicação.

No exemplo a seguir vamos criar uma nova zona de chamado memcached, abra a porta 11211 e permitir o acesso apenas a partir do 192.168.100.30 endereço IP:

  1. Criar a zona:

    sudo firewall-cmd --new-zone=memcached --permanent
  2. Adicionar as regras para a zona:

    sudo firewall-cmd --zone=memcached --add-port=11211/udp --permanentsudo firewall-cmd --zone=memcached --add-port=11211/tcp --permanentsudo firewall-cmd --zone=memcached --add-source=192.168.100.30/32 --permanent
  3. Recarregar o firewalld daemon para ativar as alterações:

    sudo firewall-cmd --reload

Firewalld Serviços #

Com firewalld você pode permitir o tráfego para portas específicas e/ou fontes com base em regras predefinidas chamados de serviços.

para obter uma lista de todos os tipos de serviços disponíveis por omissão:

sudo firewall-cmd --get-services

você pode encontrar mais informações sobre cada serviço, abrindo o associado .ficheiro xml dentro da pasta /usr/lib/firewalld/services. Por exemplo, o serviço HTTP é definido assim:

/usr/lib/firewalld/services/http.xml
<?xml version="1.0" encoding="utf-8"?><service> <short>WWW (HTTP)</short> <description>HTTP is the protocol used to serve Web pages. If you plan to make your Web server publicly available, enable this option. This option is not required for viewing pages locally or developing Web pages.</description> <port protocol="tcp" port="80"/></service>

para permitir o tráfego HTTP de entrada (porto 80) para interfaces na zona pública, apenas para o tipo de sessão actual (configuração do tempo de execução) :

sudo firewall-cmd --zone=public --add-service=http
se estiver a modificar a zona predefinida, poderá deixar de fora a opção --zone.

Para verificar se o serviço foi adicionado com êxito o uso de --list-services opção:

sudo firewall-cmd --zone=public --list-services
ssh dhcpv6-client http

Para manter a porta 80 aberta após uma reinicialização, execute o mesmo comando mais uma vez com o --permanent opção, ou de execução:

sudo firewall-cmd --runtime-to-permanent

Use o --list-services juntamente com a --permanent opção para verificar as alterações:

sudo firewall-cmd --permanent --zone=public --list-services
ssh dhcpv6-client http

A sintaxe para remover o serviço é o mesmo como quando adicionar um. Basta usar --remove-service em vez da bandeira --add-service :

sudo firewall-cmd --zone=public --remove-service=http --permanent

o comando acima remove o serviço http da configuração permanente da zona pública.

Criando um novo serviço FirewallD #

como já mencionamos, os Serviços padrão são armazenados no diretório /usr/lib/firewalld/services. A maneira mais fácil de criar um novo serviço é copiar um arquivo de serviço existente para o diretório /etc/firewalld/services, que é o local para serviços criados pelo Usuário e modificar a configuração do arquivo.Por exemplo, para criar uma definição de Serviço para o servidor de mídia Plex, você pode usar o arquivo de serviço SSH:

sudo cp /usr/lib/firewalld/services/ssh.xml /etc/firewalld/services/plexmediaserver.xml

abra o novo arquivo plexmediaserver.xml e altere o nome curto e descrição para o serviço dentro das tags <short> e <description>. A marca mais importante que precisa de alterar é a marca port, que define o número de porto e o protocolo que deseja abrir.

No exemplo a seguir, estamos abrindo portas 1900 UDP e 32400 TCP.

/etc/firewalld/services/plexmediaserver.xml
<?xml version="1.0" encoding="utf-8"?><service version="1.0"><short>plexmediaserver</short><description>Plex is a streaming media server that brings all your video, music and photo collections together and stream them to your devices at anytime and from anywhere.</description><port protocol="udp" port="1900"/><port protocol="tcp" port="32400"/></service>

gravar o ficheiro e recarregar o serviço FirewallD:

sudo firewall-cmd --reload

você pode agora usar o serviço plexmediaserver em suas zonas, como qualquer outro serviço.

abrir portas e IPs-fonte #

Firewallld também permite que você permita rapidamente todo o tráfego a partir de um endereço IP confiável ou em um porto específico, sem criar uma definição de serviço.

abrir um IP de origem #

para permitir todo o tráfego de entrada a partir de um endereço IP específico (ou Gama), especifique a zona com a opção --zone e o IP de origem com a opção --add-source.

por exemplo, para permitir que todo o tráfego de entrada a partir de 192.168.1.10 na zona public, executar:

sudo firewall-cmd --zone=public --add-source=192.168.1.10

tornar a nova regra persistente:

sudo firewall-cmd --runtime-to-permanent

verifique as alterações usando o seguinte comando:

sudo firewall-cmd --zone=public --list-sources
192.168.1.10

a sintaxe para remover um IP de origem é a mesma que ao adicionar um. Basta usar --remove-source em vez da opção --add-source :

sudo firewall-cmd --zone=public --remove-source=192.168.1.10

abrindo um porto-fonte #

para permitir todo o tráfego de entrada num dado Porto, indique a zona com a opção --zone e o porto e o protocolo com a opção --add-port.

Por exemplo, para abrir a porta 8080, na zona de público para a sessão actual você executar ferida:

sudo firewall-cmd --zone=public --add-port=8080/tcp

O protocolo pode ser tcp, udp, sctp, ou dccp.

Verificar as alterações:

sudo firewall-cmd --zone=public --list-ports
8080

Para manter a porta aberta depois de reiniciar o computador, adicione a regra para as definições permanentes executando o mesmo comando, usando o --permanent bandeira ou pela execução de:

sudo firewall-cmd --runtime-to-permanent

A sintaxe para a remoção de uma porta é o mesmo como quando adicionar uma porta. Basta usar --remove-port em vez da opção --add-port.

sudo firewall-cmd --zone=public --remove-port=8080/tcp

portos de encaminhamento #

para encaminhar o tráfego de um porto para outro porto, primeiro permitir mascarar-se para a zona desejada usando a opção --add-masquerade. Por exemplo, para permitir mascarar para a zona external, tipo:

sudo firewall-cmd --zone=external --add-masquerade

Reencaminhar o tráfego de uma porta para outra no endereço IP #

No exemplo a seguir estamos encaminhando o tráfego da porta 80 à porta 8080 no mesmo servidor:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080

Encaminhar o tráfego para outro endereço IP #

No exemplo a seguir estamos encaminhando o tráfego da porta 80 à porta 80 em um servidor com o IP 10.10.10.2:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toaddr=10.10.10.2

Encaminhar o tráfego para outro servidor em uma porta diferente #

No exemplo a seguir estamos encaminhando o tráfego da porta 80 à porta 8080 em um servidor com IP 10.10.10.2:

sudo firewall-cmd --zone=external --add-forward-port=port=80:proto=tcp:toport=8080:toaddr=10.10.10.2

para tornar a regra da frente persistente, use:

sudo firewall-cmd --runtime-to-permanent

conclusão #

aprendeu a configurar e gerir o serviço de firewalld no seu sistema CentOS 8.

certifique-se de permitir todas as conexões de entrada que são necessárias para o bom funcionamento do seu sistema, limitando ao mesmo tempo todas as conexões desnecessárias.



+