Android

Como configurar e gerenciar o firewall no centos 8

#28 - Firewall on Linux CentOS 8

#28 - Firewall on Linux CentOS 8

Índice:

Anonim

Um firewall é um método para monitorar e filtrar o tráfego de rede de entrada e saída. Ele funciona definindo um conjunto de regras de segurança que determinam se é permitido ou bloqueado o tráfego específico. Um firewall configurado corretamente é um dos aspectos mais importantes da segurança geral do sistema.

O CentOS 8 é enviado com um daemon de firewall chamado firewalld. É uma solução completa com uma interface D-Bus que permite gerenciar dinamicamente o firewall do sistema.

Neste tutorial, falaremos sobre como configurar e gerenciar o firewall no 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 do firewalld

O firewalld usa os conceitos de zonas e serviços. Com base nas zonas e serviços que você configurará, você pode controlar qual tráfego é permitido ou bloqueado de e para o sistema.

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

No CentOS 8, o iptables é substituído por nftables como o back-end padrão do firewall para o daemon firewalld.

Zonas de firewall

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

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

  • drop: Todas as conexões de entrada são descartadas sem qualquer notificação. Somente conexões de saída são permitidas. bloco: Todas as conexões de entrada são rejeitadas com uma mensagem icmp-host-prohibited para IPv4 e icmp6-adm-prohibited allowed para IPv6n. Somente conexões de saída são permitidas. público: Para uso em áreas públicas não confiáveis. Você não confia em outros computadores na rede, mas pode permitir conexões de entrada selecionadas. externo: Para uso em redes externas com o mascaramento de NAT ativado quando o sistema atua como gateway ou roteador. Somente conexões de entrada selecionadas são permitidas. internal: Para uso em redes internas quando o sistema atua como gateway ou roteador. Outros sistemas na rede geralmente são confiáveis. Somente conexões de entrada selecionadas são permitidas. dmz: Usado para computadores localizados na sua zona desmilitarizada que têm acesso limitado ao restante da sua rede. Somente conexões de entrada selecionadas são permitidas. trabalho: Usado para máquinas de trabalho. Outros computadores na rede geralmente são confiáveis. Somente conexões de entrada selecionadas são permitidas. home: usado para máquinas domésticas. Outros computadores na rede geralmente são confiáveis. Somente conexões de entrada selecionadas são permitidas. confiável: todas as conexões de rede são aceitas. Confie em todos os computadores da rede.

Serviços de firewall

Os serviços do firewall são regras predefinidas que se aplicam a uma zona e definem as configurações necessárias para permitir o tráfego de entrada para um serviço específico. Os serviços permitem que você execute facilmente várias tarefas em uma única etapa.

Por exemplo, o serviço pode conter definições sobre como abrir portas, encaminhar tráfego e muito mais.

Tempo de execução do Firewall e configurações permanentes

O Firewalld usa dois conjuntos de configurações separados, tempo de execução e configuração permanente.

A configuração de tempo de execução é a configuração em execução real e não persiste na reinicialização. Quando o daemon firewalld é iniciado, 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, anexe a opção --permanent ao comando.

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

  1. Altere a configuração do tempo de execução e torne-a permanente:

    sudo firewall-cmd sudo firewall-cmd --runtime-to-permanent

    Altere a configuração permanente e recarregue o daemon firewalld:

    sudo firewall-cmd --permanent sudo firewall-cmd --reload

Ativando o FirewallD

No CentOS 8, o firewalld é instalado e ativado por padrão. Se, por algum motivo, ele não estiver instalado no seu sistema, você poderá instalar e iniciar o daemon digitando:

sudo dnf install firewalld sudo systemctl enable firewalld --now

Você pode verificar o status do serviço de firewall com:

sudo firewall-cmd --state

Se o firewall estiver ativado, o comando deverá ser impresso em running . Caso contrário, você verá not running .

Zonas de firewall

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

Você pode ver a zona padrão digitando:

sudo firewall-cmd --get-default-zone

public

Para obter uma lista de todas as zonas disponíveis, digite:

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ídas a elas:

sudo firewall-cmd --get-active-zones

A saída abaixo mostra que as interfaces eth0 e eth1 estão atribuídas à zona public :

public interfaces: eth0 eth1

Você pode imprimir as configurações da 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 da saída acima, podemos ver que a zona pública está ativa e usa o destino padrão, que é REJECT . A saída também mostra que a zona é usada pelas interfaces eth0 e eth1 e permite tráfego de cliente DHCP e SSH.

sudo firewall-cmd --list-all-zones

O comando imprime uma lista enorme com as configurações de todas as zonas disponíveis.

Alterando o alvo da zona

O destino define o comportamento padrão da zona para o tráfego recebido que não está especificado. Pode ser definido como uma das seguintes opções: default , ACCEPT , REJECT e DROP .

Para definir o destino da região, especifique a zona com a opção --zone e o destino com a opção --set-target .

Por exemplo, para alterar o destino da zona public para DROP você deve executar:

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

Atribuindo uma interface a uma zona diferente

Você pode criar conjuntos específicos de regras para diferentes zonas e atribuir interfaces diferentes a elas. Isso é especialmente útil quando você faz várias interfaces na sua máquina.

Para atribuir uma interface a uma zona diferente, especifique 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 de work :

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

Verifique as alterações digitando:

sudo firewall-cmd --get-active-zones

work interfaces: eth1 public interfaces: eth0

Alterando a zona padrão

Para alterar a zona padrão, use a opção --set-default-zone seguida do nome da zona que você deseja tornar padrão.

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

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

Verifique as alterações com:

sudo firewall-cmd --get-default-zone

home

Criando novas zonas

O Firewalld também permite que você crie suas próprias zonas. Isso é útil quando você deseja criar regras por aplicativo.

No exemplo a seguir, criaremos uma nova zona denominada memcached , memcached a porta 11211 e permitiremos o acesso apenas a partir do endereço IP 192.168.100.30 :

  1. Crie a zona:

    sudo firewall-cmd --new-zone=memcached --permanent

    Adicione as regras à zona:

    sudo firewall-cmd --zone=memcached --add-port=11211/udp --permanent sudo firewall-cmd --zone=memcached --add-port=11211/tcp --permanent sudo firewall-cmd --zone=memcached --add-source=192.168.100.30/32 --permanent

    Recarregue o daemon firewalld para ativar as alterações:

    sudo firewall-cmd --reload

Serviços de firewall

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

Para obter uma lista de todos os serviços disponíveis padrão, digite:

sudo firewall-cmd --get-services

Você pode encontrar mais informações sobre cada serviço, abrindo o arquivo.xml associado no /usr/lib/firewalld/services . Por exemplo, o serviço HTTP é definido assim:

/usr/lib/firewalld/services/http.xml

WWW (HTTP) 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. WWW (HTTP) 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.

Para permitir o tráfego HTTP de entrada (porta 80) para interfaces na zona pública, apenas para a sessão atual (configuração de tempo de execução):

sudo firewall-cmd --zone=public --add-service=http Se você estiver modificando a zona padrão, poderá deixar de fora a opção --zone .

Para verificar se o serviço foi adicionado com sucesso, use a opção --list-services :

sudo firewall-cmd --zone=public --list-services

ssh dhcpv6-client

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

sudo firewall-cmd --runtime-to-permanent

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

sudo firewall-cmd --permanent --zone=public --list-services

ssh dhcpv6-client

A sintaxe para remover o serviço é a mesma que ao adicionar um. Basta usar --remove-service vez do sinalizador --remove-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 /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 as configurações do arquivo.

Por exemplo, para criar uma definição de serviço para o Plex Media Server, você pode usar o arquivo de serviço SSH:

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

Abra o arquivo plexmediaserver.xml recém-criado e altere o nome abreviado e a descrição do serviço dentro do plexmediaserver.xml e Tag. A tag mais importante que você precisa alterar é a tag port , que define o número da porta e o protocolo que você deseja abrir.

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

/etc/firewalld/services/plexmediaserver.xml

plexmediaserver 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. plexmediaserver 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.

Salve o arquivo e recarregue o serviço FirewallD:

sudo firewall-cmd --reload

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

Abrindo portas e IPs de origem

O Firewalld também permite ativar rapidamente todo o tráfego de um endereço IP confiável ou de uma porta específica, sem criar uma definição de serviço.

Abrindo um IP de origem

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

Por exemplo, para permitir todo o tráfego recebido de 192.168.1.10 na zona public , execute:

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

Torne 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 vez da opção --remove-source :

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

Abrindo uma porta de origem

Para permitir todo o tráfego de entrada em uma determinada porta, especifique a zona com a opção --zone e a porta e o protocolo com a opção --add-port .

Por exemplo, para abrir a porta 8080 na zona pública da sessão atual, você executa a execução:

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

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

Verifique as alterações:

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

8080

Para manter a porta aberta após uma reinicialização, adicione a regra às configurações permanentes executando o mesmo comando usando o sinalizador --permanent ou executando:

sudo firewall-cmd --runtime-to-permanent

A sintaxe para remover uma porta é a mesma que ao adicionar uma porta. Basta usar --remove-port vez da opção --remove-port .

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

Portas de encaminhamento

Para encaminhar o tráfego de uma porta para outra, ative primeiro o mascaramento da zona desejada usando a opção --add-masquerade . Por exemplo, para ativar o mascaramento para a zona external , digite:

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

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

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

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

Encaminhar tráfego para outro endereço IP

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

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

Encaminhar tráfego para outro servidor em uma porta diferente

No exemplo a seguir, estamos encaminhando o tráfego da porta 80 para a 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 de encaminhamento persistente, use:

sudo firewall-cmd --runtime-to-permanent

Conclusão

Você aprendeu como configurar e gerenciar o serviço firewalld no seu sistema CentOS 8.

Certifique-se de permitir todas as conexões de entrada necessárias para o bom funcionamento do seu sistema, enquanto limita todas as conexões desnecessárias.

firewalld firewall centos segurança