Introdução ao comando firewalld e firewall-cmd no Linux
- 4092
- 601
- Enrique Crist
Objetivo
Aprenda os conceitos básicos por trás do firewalld e como interagir com ele usando o utilitário firewall-cmd
Requisitos
- Permissões de raiz
Dificuldade
FÁCIL
Convenções
- # - requer que os comandos Linux sejam executados com privilégios de raiz também
diretamente como usuário root ou por uso desudo
comando - $ - Requer que os comandos do Linux sejam executados como um usuário não privilegiado regular
Introdução
Desde a versão 7 de Rhel e Centos e a versão 18 do Fedora, o firewalld é o sistema de firewall padrão. Uma de suas características mais distintas é sua modularidade: funciona sobre o conceito de conexão zonas
. Neste tutorial, aprenderemos mais sobre isso e como interagir com ele usando o Firewall-CMD
Utilitário.
Um firewall baseado em zonas
O Firewalld é um firewall baseado em zona: cada zona pode ser configurada para aceitar ou negar alguns serviços ou portos e, portanto, com um nível diferente de segurança. As zonas podem ser associadas a uma ou mais interfaces de rede. Geralmente o firewalld vem com um conjunto de zonas pré -configuradas: para listar essas zonas e, de maneira mais geral, interagir com o firewall, usaremos o Firewall-CMD
Utilitário. Estou executando um sistema Fedora 27, vamos verificar quais são as zonas disponíveis:
$ firewall-cmd-get-zones fedoraserver fedoraworkstation bloco dmz soltar casa externa interna trabalho confiável trabalho
Como você pode ver, o comando acima retorna uma lista de todas as interfaces disponíveis no meu sistema. O nome deles é bastante indicativo de seu propósito, mas precisamos saber quais serviços e portos estão disponíveis por eles: a regra padrão geral é que todo serviço ou porto é negado. Cada interface é então configurada com algumas exceções, dependendo dos serviços que devem ser permitidos. Se quisermos ter uma lista de todos os serviços associados a uma zona, podemos executar Firewall-CMD
com o --Get-Services
opção. Se uma zona não for passada explicitamente para o comando, a zona padrão será consultada:
# Firewall-CMD-List-All Public (ativo) Alvo: ICMP-Inversão ICMP: Sem interfaces: ENS5F5 Fontes: Serviços: SSH MDNS DHCPV6-CLIENT PORTS: Protocols: Mascarerade: Sem portos: Fonte-portos: Fonte: Fonte: Fonte: Fonte: Fonte: Fonte: Fonte: Fonte: Fonte: Fonte: Fonte: ICMP-Blocks: Rich Regras:
O comando retornou um resumo do estado da zona (neste caso o padrão, "público"). Entre as outras coisas, você pode ver claramente quais interfaces de rede estão associadas a essa zona (ENS5F5 neste caso) e quais serviços são permitidos (SSH, MDNS, DHCPV6-Client). Se quisermos recuperar informações sobre uma zona específica e sem defesa, devemos passar o nome da zona como um argumento para o --zona
opção. Por exemplo, para recuperar informações sobre o externo
Zona, nós correríamos:
# firewall-cmd-zone = externo--list-alvo externo: padrão ICMP-Block-Inversão: Sem interfaces: Fontes: Serviços: SSH Portas: Protocols: Masquerade: Sim Portações Avançadoras: Fonte-PORTS: ICMP-Blocks : Regras ricas:
Manipulação de zonas
Como dito antes, ao usar o Firewall-CMD
ferramenta, se nenhuma zona for especificada, a padrão será referenciada. Podemos querer mudar qual é a zona padrão. Diga, por exemplo, queremos definir a zona externa como o padrão:
# firewall-cmd--defesa-default = externo
Preaty fácil, não é?. Agora vamos ver como podemos adicionar ou remover serviços ou portas a uma zona específica. Em primeiro lugar Serviços
são um conjunto pré -configurado de portas associadas a um protocolo específico. Por exemplo: o ssh
Serviço incluirá o Porta TCP 22
, enquanto o samba
Serviço compreenderá o conjunto de portas 139 e 445 TCP
e 137 e 138 UDP
. Usando serviços, podemos evitar ter que lembrar de portas específicas a cada vez. Digamos que queremos adicionar o samba
Serviço para a zona externa, tudo o que fomos é:
# Firwall-CMD-Zone = Externo --add-Service = Samba Sucesso
O Firewalld
Daemon respondeu com sucesso
, Isso significa que a execução foi bem -sucedida. Para verificar, vamos verificar os serviços da zona:
$ sudo firewall-cmd-zone = externo-list-services ssh samba
Como você pode ver, usamos o --Serviços de lista
opção para o propósito. O resultado do comando significa claramente que o samba
O serviço foi adicionado à zona. No entanto, as modificações feitas dessa maneira são temporárias e não sobreviverão a uma reinicialização do Firewalld
Daemon. Vamos verificar isso. Primeiro, recarregamos o serviço:
# Firewall-CMD--Reload
Então verificamos novamente os serviços permitidos no externo
zona:
# firewall-cmd-zone = externo-list-services ssh
Como você pode ver, o único serviço permitido no externo
zona é ssh
. Para fazer uma modificação persistente em uma zona, devemos usar o --permanente
opção:
# firewall-cmd --permanent-zone = externo --add-service = samba
Modificações permanentes precisarão de uma recarga do firewall para se tornarem eficazes.
Se quisermos fazer a operação reversa e, assim, remover um serviço de uma zona, executaríamos:
# firewall-cmd --permanent-zone = externo--remove-sesert = samba
A sintaxe é muito intuitiva e não precisa de mais explicações. Mas e se quisermos adicionar uma porta específica em vez de serviço? A sintaxe mudaria ligeiramente:
# firewall-cmd --permanent-zone = externo --add-port = 139/tcp
Para verificar se a porta foi adicionada à zona:
# firewall-cmd-zone = externo-list-ports 139/tcp
A operação foi bem -sucedida. Da mesma maneira, para remover uma porta que faríamos:
# firewall-cmd --permanente-zone = externo--remove-port = 139/tcp
Criando uma zona personalizada
Até agora, só vimos como modificar as zonas existentes. Também é possível criar alguns novos, e é tão fácil. Vamos supor que queremos criar uma zona personalizada chamada LinuxConfig
:
# firewall-cmd --permanent-new-zone = linuxconfig
Uma nova zona vazia foi criada: por padrão, nenhum serviço ou portas é permitido nela. Também é possível criar uma zona carregando um arquivo de configuração:
# firewall-cmd --permanent--new-zone-from-file = arquivo--name = linuxconfig
Onde arquivo
é o caminho para o arquivo que contém a definição de zona. Observe que ao criar ou excluir uma zona, o --permanente
a opção é obrigatória: um erro será levantado se não for fornecido.
Associar uma zona a uma interface
Criar uma zona é apenas o primeiro passo: agora devemos associá -la a uma interface de rede. Digamos que queremos usar nossa nova zona criada, associando -a à interface ENS5F5 Ethernet: aqui está o comando que vamos realizar a tarefa:
# firewall-cmd --permanent-zone = linuxconfig --add-interface = Ens5f5
Se consultarmos a zona das interfaces atribuídas a ela, devemos ver:
# firewall-cmd-zone = linuxconfig-list-interfaces Ens5f5
Remover a interface da zona é tão fácil quanto:
# firewall-cmd--remove-interface = Ens5f5 --Zone = LinuxConfig
Regras ricas
Em determinadas situações, podemos precisar criar uma regra mais complexa, e não apenas permitir algumas portas ou serviços em uma zona. Por exemplo, podemos querer criar uma regra para bloquear algum tipo de tráfego de uma máquina específica. Isso é o que regras ricas
são para. Uma regra consiste basicamente em duas partes: no primeiro, especificamos as condições que devem ser atendidas para que a regra seja aplicada e, no segundo, a ação a ser executada: aceitar
, derrubar
, ou rejeitar
.
Digamos que queremos bloquear o tráfego da máquina com IP 192.168.0.37
Na rede local: aqui está como comporíamos nossa regra:
# firewall-cmd-zone = linuxconfig --add-rich-rule = "regra \ família =" ipv4 "\ endereço de origem = 192.168.0.37 \ nome de serviço = ssh \ rejeit \
Para adicionar uma regra rica, usamos o --add-rico-regra
opção, descrevendo a regra como seu argumento. A regra começa com regra
palavra -chave. Com família
especificamos que a regra é aplicada apenas a IPv4
pacotes: se essa palavra -chave não for fornecida, a regra é aplicada a IPv4
e IPv6
. Em seguida, fornecemos o endereço de origem que os pacotes devem ter para que a regra seja acionada Endereço de Origem
. Com serviço
Especificamos o tipo de serviço para a regra, neste caso ssh
. Por fim, fornecemos a ação a ser executada se um pacote corresponder à regra, neste caso rejeitar
. Se agora tentarmos estabelecer uma conexão SSH da máquina com o 192.168.0.37
IP, recebemos:
SSH 192.168.0.35 SSH: Conecte -se ao Host 192.168.0.35 Porta 22: conexão recusada
O acima é realmente simples, mas uma regra pode se tornar realmente complexa. Você deve verificar a documentação do firewalld para ver toda a gama de configurações e opções disponíveis.
O modo de pânico
O modo de pânico é um modo que deve ser usado apenas em situações em que existem problemas realmente sérios com o ambiente de rede. Quando esse modo está ativo, todas as conexões existentes são descartadas e todos os pacotes de entrada e saída são descartados. Pode ser ativado em execução:
# Firewall-CMD-Panic-On
Para sair do modo de pânico, o comando é:
# Firewall-CMD-Panic-off
É até possível consultar o modo de pânico
status, em execução:
# firewall-cmd-QQUERY-PANIC
Essas opções são válidas apenas em tempo de execução
e não pode ser usado com --permanente
.
Tutoriais do Linux relacionados:
- Coisas para instalar no Ubuntu 20.04
- Uma introdução à automação, ferramentas e técnicas do Linux
- Como definir uma zona de firewalld personalizada
- Coisas para fazer depois de instalar o Ubuntu 20.04 fossa focal linux
- Download do Linux
- Mint 20: Melhor que o Ubuntu e o Microsoft Windows?
- Mastering Bash Script Loops
- Ubuntu 20.04 truques e coisas que você pode não saber
- Comandos Linux: os 20 comandos mais importantes que você precisa para…
- Arquivos de configuração do Linux: os 30 primeiros mais importantes
- « Como instalar e verificar a carteira Electrum Bitcoin no Linux
- Como obter informações sobre bateria de laptop e estado de carregamento no Linux »