Android

Como configurar um firewall com firewalld no centos 7

Настройка firewall в CentOS 7 (firewalld)

Настройка firewall в CentOS 7 (firewalld)

Índice:

Anonim

Um firewall configurado corretamente é um dos aspectos mais importantes da segurança geral do sistema.

O FirewallD é uma solução completa de firewall que gerencia as regras de tabelas de ip do sistema e fornece uma interface D-Bus para operar com elas. A partir do CentOS 7, o FirewallD substitui o iptables como a ferramenta de gerenciamento de firewall padrão.

Neste tutorial, mostramos como configurar um firewall com o FirewallD no sistema CentOS 7 e explicamos os conceitos básicos do FirewallD.

Pré-requisitos

Antes de começar com este tutorial, verifique se você está conectado ao servidor com uma conta de usuário com privilégios de sudo ou com o usuário root. A melhor prática é executar comandos administrativos como um usuário sudo em vez de root. Se você não possui um usuário sudo no seu sistema CentOS, pode criar um seguindo estas instruções.

Conceitos básicos do firewalld

O FirewallD usa os conceitos de zonas e serviços, em vez da cadeia e regras do iptables. Com base nas zonas e serviços que você configurará, você pode controlar qual tráfego é permitido ou não de e para o sistema.

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

Zonas de firewall

As zonas são conjuntos de regras predefinidos que especificam qual tráfego deve ser permitido com base no nível de confiança nas 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.

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 real em execução e não é persistente nas reinicializações. Quando o serviço 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, você precisa usar a opção --permanent .

Instalando e habilitando o FirewallD

  1. O Firewalld é instalado por padrão no CentOS 7, mas se não estiver instalado no seu sistema, você pode instalar o pacote digitando:

    sudo yum install firewalld

    O serviço Firewalld está desativado por padrão. Você pode verificar o status do firewall com:

    sudo firewall-cmd --state

    Para iniciar o serviço FirewallD e habilitá-lo no tipo de inicialização:

    sudo systemctl start firewalld sudo systemctl enable firewalld

Trabalhando com regiões do Firewalld

Depois de ativar o serviço FirewallD pela primeira vez, a zona public é definida como uma zona padrão. 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

Por padrão, todas as interfaces de rede recebem a zona padrão. Para verificar quais zonas são usadas pelas suas interfaces de rede, digite:

sudo firewall-cmd --get-active-zones

public interfaces: eth0 eth1

A saída acima nos diz que as interfaces eth0 e eth1 estão atribuídas à zona pública.

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 definida como padrão, usada pelas interfaces eth0 e eth1 . Além disso, as conexões relacionadas ao cliente DHCP e SSH são permitidas.

sudo firewall-cmd --list-all-zones

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

Alterando a zona de uma interface

Você pode alterar facilmente a Zona de Interface usando a opção --zone em combinação com a opção --change-interface . O comando a seguir atribuirá a interface eth1 à zona de trabalho:

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

Abrindo uma porta ou serviço

Com o FirewallD, você pode permitir o tráfego para portas 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

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

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 serviço. Basta usar --remove-service vez da opção --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.

E se você estiver executando um aplicativo como o Plex Media Server para o qual não há serviço adequado disponível?

Em situações como essas, você tem duas opções. Você pode abrir as portas apropriadas ou definir um novo serviço FirewallD.

Por exemplo, o Plex Server escuta na porta 32400 e usa TCP, para abrir a porta na zona pública da sessão atual, use a opção --add-port= :

sudo firewall-cmd --zone=public --add-port=32400/tcp Os protocolos podem ser tcp ou udp .

Para verificar se a porta foi adicionada com sucesso, use a opção --list-ports :

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

32400/tcp

Para manter a porta 32400 aberta após uma reinicialização, adicione a regra às configurações permanentes executando o mesmo comando usando a opção --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=32400/tcp

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, podemos 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.

Porta de encaminhamento com o Firewalld

Para encaminhar o tráfego de uma porta para outra porta ou endereço, primeiro habilite o mascaramento para a zona desejada usando o switch --add-masquerade . Por exemplo, para ativar o mascaramento para external tipo de zona external :

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

  • Encaminhar tráfego de uma porta para outra no mesmo servidor

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 servidor

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

Criando um conjunto de regras com o FirewallD

No exemplo a seguir, mostraremos como configurar seu firewall se você estava executando um servidor web. Supomos que seu servidor tenha apenas uma interface eth0 e você deseja permitir o tráfego de entrada apenas nas portas SSH, HTTP e

  1. Mude a zona padrão para dmz

    Usaremos a zona dmz (desmilitarizada) porque, por padrão, ela permite apenas o tráfego SSH. Para alterar a zona padrão para dmz e atribuí-la à interface eth0 , execute os seguintes comandos:

    sudo firewall-cmd --set-default-zone=dmz sudo firewall-cmd --zone=dmz --add-interface=eth0

    Portas HTTP e HTTPS abertas:

    Para abrir portas HTTP e HTTPS, adicione regras de serviço permanentes à zona dmz:

    sudo firewall-cmd --permanent --zone=dmz --add-service=http sudo firewall-cmd --permanent --zone=dmz --add-service=https

    Efetue as alterações imediatamente, recarregando o firewall:

    sudo firewall-cmd --reload

    Verifique as alterações

    Para verificar as configurações da zona dmz, digite:

    sudo firewall-cmd --zone=dmz --list-all

    dmz (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: ssh http https ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:

    A saída acima nos diz que o dmz é a zona padrão, é aplicada à interface eth0 e as portas ssh (22) http (80) e https (443) estão abertas.

Conclusão

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

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 iptables centos segurança