Fortalecimento de um Endpoint Linux com Firewall e Gerenciamento de Serviços

CompTIABeginner
Pratique Agora

Introdução

O endurecimento de endpoints (endpoint hardening) é um processo crítico para proteger qualquer sistema de computador. Ele envolve a redução da "superfície de ataque" do sistema, tornando-o menos vulnerável a ameaças de segurança. Dois aspectos fundamentais do endurecimento de um sistema Linux são o gerenciamento de serviços em execução e a implementação de um firewall.

Neste laboratório, você terá experiência prática com essas práticas de segurança essenciais. Você aprenderá a:

  • Identificar e desabilitar serviços que não são essenciais para a função do sistema.
  • Instalar e configurar o Uncomplicated Firewall (UFW), uma interface amigável para gerenciar regras de filtragem de rede em Linux.

Ao final deste laboratório, você terá uma compreensão prática de como aplicar técnicas básicas de endurecimento a um endpoint Linux.

Identificar e Desabilitar Serviços Desnecessários

Nesta etapa, você aprenderá como identificar serviços ativos em seu sistema Linux e desabilitar aqueles que não são necessários. Reduzir o número de serviços em execução minimiza a superfície de ataque potencial, pois cada serviço pode ter vulnerabilidades.

Primeiro, vamos listar todos os serviços ativos. Em alguns ambientes Linux, especialmente contêineres, o comando systemctl não está disponível. Podemos usar o comando service como alternativa.

Execute o seguinte comando em seu terminal para ver o status de todos os serviços:

service --status-all

Você verá uma lista de serviços. Um [ + ] ao lado do nome de um serviço indica que ele está em execução, enquanto um [ - ] indica que ele está parado.

 [ - ]  acpid
 [ - ]  apparmor
 [ + ]  apache2
 [ - ]  atop
 [ - ]  atopacct
 [ + ]  cron
...

Observe que apache2, um servidor web, está em execução. Para um endpoint de propósito geral que não precisa hospedar um site, este serviço é desnecessário e deve ser desabilitado.

Para parar o serviço apache2, use o comando service com stop. Você precisa de privilégios sudo para gerenciar serviços do sistema.

sudo service apache2 stop

Agora, verifique se o serviço foi parado verificando seu status novamente:

service apache2 status

A saída confirmará que o serviço Apache2 não está mais em execução.

○ apache2.service - The Apache HTTP Server
     Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
     Active: inactive (dead) since Tue 2025-08-05 14:44:53 CST; 2s ago
       Docs: https://httpd.apache.org/docs/2.4/
    Process: 5892 ExecStop=/usr/sbin/apachectl graceful-stop (code=exited, status=0/SUCCESS)
   Main PID: 4800 (code=exited, status=0/SUCCESS)
        CPU: 50ms

Ao desabilitar serviços desnecessários, você deu um passo simples, porém eficaz, para endurecer seu sistema.

Instalar e Configurar o Uncomplicated Firewall (UFW)

Nesta etapa, você instalará o Uncomplicated Firewall (UFW). O UFW é uma interface amigável para o poderoso, mas complexo, firewall iptables. Ele fornece uma maneira simplificada de configurar regras comuns de firewall.

Primeiro, atualize sua lista de pacotes e instale o pacote ufw.

sudo apt-get update && sudo apt-get install -y ufw

Após a conclusão da instalação, o UFW estará instalado, mas ainda não ativo. Você pode verificar seu status com o seguinte comando:

sudo ufw status

A saída mostrará que o firewall está inativo:

Status: inactive

Para ativar o firewall, você precisa habilitá-lo. Este comando iniciará o firewall e o configurará para iniciar automaticamente na inicialização do sistema.

Nota: Ao habilitar um firewall em um servidor remoto, você deve garantir que possui uma regra que permita o acesso SSH. Caso contrário, você pode ser bloqueado. Para este ambiente de laboratório (lab environment), é seguro prosseguir.

Habilite o UFW agora:

sudo ufw enable

Você será solicitado a confirmar a operação. O comando ativará o firewall e poderá interromper as conexões existentes.

Firewall is active and enabled on system startup

Vamos verificar o status novamente, desta vez com a opção verbose para ver mais detalhes, incluindo as políticas padrão.

sudo ufw status verbose

A saída agora mostrará que o firewall está ativo e listará as políticas padrão. Por padrão, o UFW nega todo o tráfego de entrada e permite todo o tráfego de saída, o que é um ponto de partida seguro.

Status: active
Logging: off
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

Como o firewall está agora ativo e bloqueia todas as conexões de entrada por padrão, precisamos permitir o acesso SSH para garantir que possamos continuar gerenciando o sistema remotamente.

Adicione uma regra para permitir conexões SSH:

sudo ufw allow ssh

Você verá a confirmação de que a regra foi adicionada:

Rule added
Rule added (v6)

Isso garante que o acesso SSH permaneça disponível enquanto o firewall estiver ativo.

Criar e Testar Regras Básicas de Firewall

Agora que o UFW está ativo, você aprenderá como criar regras para controlar o tráfego de rede. Adicionaremos regras para permitir serviços específicos e necessários, enquanto bloqueamos todo o resto por padrão.

Primeiro, vamos garantir que nossas políticas padrão estejam configuradas corretamente. É uma boa prática defini-las explicitamente.

sudo ufw default deny incoming
sudo ufw default allow outgoing

Como já configuramos o acesso SSH na etapa anterior, vamos adicionar uma regra para uma aplicação personalizada. Imagine que estamos executando uma aplicação web personalizada na porta 8080. Precisamos criar uma regra para permitir o tráfego para esta porta específica.

sudo ufw allow 8080/tcp

Este comando permite especificamente o tráfego de entrada na porta TCP 8080.

Rule added
Rule added (v6)

Para ver uma lista das regras atuais, você pode usar ufw status com a opção numbered. Isso facilita o gerenciamento ou a exclusão de regras posteriormente.

sudo ufw status numbered

A saída exibirá suas novas regras com um número ao lado de cada uma.

Status: active

     To                         Action      From
     --                         ------      ----
[ 1] 22/tcp                     ALLOW IN    Anywhere
[ 2] 8080/tcp                   ALLOW IN    Anywhere
[ 3] 22/tcp (v6)                ALLOW IN    Anywhere (v6)
[ 4] 8080/tcp (v6)              ALLOW IN    Anywhere (v6)

Você configurou o firewall para permitir apenas o tráfego essencial, melhorando significativamente a segurança do seu sistema.

Revisar Logs do Sistema para Atividade do Firewall

Nesta etapa, você aprenderá como habilitar e revisar o registro de logs (logging) do UFW. Os logs são essenciais para monitorar o tráfego de rede, identificar potenciais ameaças de segurança e solucionar problemas de conectividade.

O registro de logs do UFW não está habilitado por padrão. Você pode ativá-lo com um comando simples.

sudo ufw logging on

Você verá uma confirmação de que o registro de logs foi ativado.

Logging enabled

Os logs do UFW são gravados no arquivo /var/log/ufw.log. Observe que o arquivo de log pode não existir imediatamente após habilitar o registro; ele será criado automaticamente quando a primeira entrada de log for gravada.

Você pode visualizar o arquivo de log em tempo real usando o comando tail com a flag -f (follow). Se o arquivo ainda não existir, o comando esperará que ele seja criado:

sudo tail -f /var/log/ufw.log

Este comando exibirá as últimas linhas do log e esperará por novas entradas. Em um ambiente ativo, você veria as entradas de log aparecerem à medida que o firewall bloqueia ou permite conexões. Como este ambiente de laboratório não tem tráfego externo tentando acessá-lo, você pode não ver novas entradas. Pressione Ctrl+C para parar de seguir o log.

Uma entrada de log típica para um pacote bloqueado se parece com isto:

Sep 10 12:00:00 ubuntu kernel: [UFW BLOCK] IN=eth0 OUT= MAC=01:02:03:04:05:06:07:08:09:0a:0b:0c SRC=192.168.1.10 DST=192.168.1.20 LEN=40 TOS=0x00 PREC=0x00 TTL=64 ID=12345 PROTO=TCP SPT=54321 DPT=23 WINDOW=0 RES=0x00 SYN URGP=0

Aqui está um breve resumo dos campos importantes:

  • [UFW BLOCK]: Indica a ação tomada pelo firewall.
  • SRC: O endereço IP de origem do pacote.
  • DST: O endereço IP de destino.
  • PROTO: O protocolo de rede (ex: TCP, UDP).
  • DPT: A porta de destino.

Você também pode pesquisar no arquivo de log por eventos específicos usando grep. Por exemplo, para encontrar todas as tentativas de conexão bloqueadas, você pode executar:

sudo grep "UFW BLOCK" /var/log/ufw.log

Se o arquivo de log ainda não existir ou estiver vazio, este comando não retornará resultados, o que é normal. Assim que ocorrer atividade do firewall, as entradas de log serão gravadas e você poderá pesquisá-las. Este comando filtrará o log e mostrará apenas as linhas contendo a string "UFW BLOCK", o que é extremamente útil para identificar padrões de atividade suspeita.

Resumo

Parabéns! Você completou com sucesso este laboratório sobre o hardening de um endpoint Linux.

Neste laboratório, você adquiriu experiência prática com tarefas de segurança fundamentais. Você aprendeu a:

  • Identificar serviços em execução em um sistema Linux usando o comando service.
  • Parar e desabilitar serviços desnecessários para reduzir a superfície de ataque do sistema.
  • Instalar, habilitar e configurar o Uncomplicated Firewall (UFW).
  • Criar regras específicas de allow para serviços essenciais como SSH e aplicações personalizadas.
  • Habilitar e revisar os logs do UFW para monitorar a atividade do firewall e detectar ameaças potenciais.

Estas são habilidades fundamentais para qualquer administrador de sistema ou desenvolvedor responsável pela manutenção de ambientes Linux seguros e robustos. Ao aplicar essas técnicas, você pode melhorar significativamente a postura de segurança de seus sistemas.