Gerenciando serviços e portas

LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá mais sobre como controlar o tráfego permitido no sistema usando firewalld.

Imagine que o computador seja um prédio. Por padrão, o firewall mantém todas as portas trancadas. Para permitir a entrada de visitantes legítimos, como tráfego da Web ou transferências de arquivos, você precisa destrancar portas específicas. Em redes, essas portas são chamadas de “ports” ou “services”.

Você aprenderá duas formas importantes de alterar essas regras:

  1. Temporária (Runtime): É como escrever uma anotação em um quadro branco. Ela funciona agora, mas desaparece quando o responsável pela limpeza chega, por exemplo, após uma reinicialização ou recarga do sistema.
  2. Permanente: É como gravar uma placa em pedra. Ela permanece após recargas e reinicializações.

Essa separação entre o estado runtime e o estado permanente é um dos conceitos mais importantes do Firewalld. Ela permite que os administradores testem as alterações com segurança antes de decidir mantê-las.

Ao final deste laboratório, você saberá permitir temporariamente o tráfego da Web para testes, abrir permanentemente uma porta personalizada específica e entender como salvar suas alterações.

Permitir um serviço temporariamente

Nesta etapa, você permitirá o tráfego para o serviço HTTP.

Observação sobre o ambiente do laboratório: durante a configuração, definimos a zona padrão como trusted para manter sua conexão com o terminal ativa. Por isso, tecnicamente, todas as portas já estão abertas. Mesmo assim, continuaremos como se estivéssemos em um servidor seguro no qual tudo estivesse bloqueado, para que você aprenda os comandos corretos para abrir portas.

Vamos adicionar a regra http à configuração runtime (temporária).

Essa diferença entre o estado runtime e o estado permanente é um dos recursos de segurança mais úteis do Firewalld. Ela permite testar se uma regra funciona antes de confirmá-la na configuração de longo prazo.

Primeiro, verifique quais serviços estão explicitamente permitidos na zona atual.

sudo firewall-cmd --list-services

Inicialmente, talvez a lista esteja quase vazia. Agora, adicione o serviço http à lista de serviços permitidos.

sudo firewall-cmd --add-service=http

Se o comando for executado com sucesso, o terminal exibirá apenas success.

Confirme que o serviço agora está permitido listando os serviços novamente.

sudo firewall-cmd --list-services

Agora você deverá ver http na lista. Lembre-se: como não informamos ao firewall que essa alteração deveria ser "permanent", a regra funciona como a anotação no quadro branco — ela existe apenas na memória neste momento.

Abrir uma porta permanentemente

Nesta etapa, às vezes você precisa abrir diretamente uma porta específica, em vez de usar um serviço nomeado. Por exemplo, a porta 8080 é usada com frequência para testar servidores Web.

A escolha entre serviço e porta também é importante do ponto de vista conceitual. Um serviço é um conjunto nomeado que geralmente corresponde a uma ou mais portas conhecidas, enquanto uma regra de porta simples é mais literal e está em um nível mais baixo. As duas opções são válidas, mas os nomes de serviços costumam ser mais fáceis de ler e manter.

Neste caso, queremos que a regra continue válida mesmo se o servidor for reiniciado. Para isso, usaremos a opção --permanent.

Execute o comando a seguir para abrir permanentemente a porta TCP 8080.

sudo firewall-cmd --permanent --add-port=8080/tcp

A saída deverá ser success.

Conceito fundamental: ao usar --permanent, você edita o arquivo de configuração — a “placa de pedra” —, mas não altera imediatamente o firewall em execução.

Vamos confirmar isso. Verifique as portas atualmente ativas no estado runtime.

sudo firewall-cmd --list-ports

Você verá que a lista está vazia ou não mostra 8080. O firewall ainda não conhece a nova regra porque não leu o arquivo de configuração atualizado.

Agora, verifique a configuração permanente para confirmar que a regra foi salva com segurança no disco.

sudo firewall-cmd --permanent --list-ports

Aqui, você deverá ver 8080/tcp. Isso confirma que a regra está “na fila” para ser aplicada na próxima vez que o firewall carregar sua configuração.

Recarregar o firewall

Nesta etapa, você tem a seguinte situação:

  • Uma regra temporária permitindo http, criada na etapa 1.
  • Uma regra permanente permitindo 8080, salva, mas ainda não ativa, criada na etapa 2.

Para ativar a regra permanente, você precisa recarregar o firewall. Isso faz com que o Firewalld leia novamente os arquivos de configuração e aplique o conteúdo definido neles.

Na prática, a recarga é o momento em que os estados runtime e permanente se encontram. Ela substitui o conjunto de regras ativo, mantido na memória, pelo conjunto definido no disco. Por isso, os testes temporários desaparecem, a menos que você os tenha salvo como regras permanentes.

Aviso: recarregar o firewall restaura o estado descrito nos arquivos de configuração. Como a regra http era apenas temporária e não estava no arquivo de configuração, ela será perdida.

Execute o comando de recarga.

sudo firewall-cmd --reload

Agora, verifique o resultado. Primeiro, confira se a porta 8080 está ativa.

sudo firewall-cmd --list-ports

Sucesso! Você deverá ver 8080/tcp. A regra permanente foi carregada no sistema em execução.

Agora, verifique o que aconteceu com o serviço http.

sudo firewall-cmd --list-services

O serviço http não estará mais na lista. Isso prova que a recarga remove todas as alterações que existiam apenas no estado runtime. Esse é um erro comum entre iniciantes: lembre-se sempre de tornar permanentes as regras importantes.

Verificar a configuração completa

Nesta etapa, você usará o comando mais útil para o gerenciamento diário do firewall. Em vez de verificar serviços e portas separadamente, você poderá visualizar toda a configuração da zona ativa de uma só vez.

Essa visão geral é importante porque os erros de firewall geralmente acontecem quando alguém se esquece de que vários tipos de regra se combinam para definir o comportamento real do host. Visualizar toda a zona reduz esse risco.

Use a opção --list-all para obter essa visão geral.

sudo firewall-cmd --list-all

A saída fornece um resumo completo da zona ativa, que é trusted na configuração do nosso laboratório:

  • target: ACCEPT.
  • interfaces: A interface de rede ativa, por exemplo, eth0.
  • services: Lista os serviços padrão permitidos. Observe que http está ausente porque foi removido durante a recarga.
  • ports: Lista as portas personalizadas abertas, por exemplo, 8080/tcp.

Esse comando é excelente para solucionar problemas porque mostra exatamente o que o firewall está fazendo neste momento.

Resumo

Neste laboratório, você dominou a diferença entre regras de firewall temporárias e permanentes. Você aprendeu:

  1. Regras Runtime: Como adicionar instantaneamente, mas de forma temporária, um serviço como http.
  2. Regras permanentes: Como usar a opção --permanent para salvar uma regra, como a abertura da porta 8080, para uso futuro.
  3. Recarga: Como aplicar alterações permanentes ao ambiente runtime usando --reload e como efeito colateral as regras temporárias são descartadas.
  4. Verificação: Como usar --list-all para visualizar o estado completo do firewall.

Agora você está desenvolvendo uma base sólida para controlar o acesso à rede com segurança e de forma persistente.