Debian – Firewall

Firewall e Controle de Rede

O Debian 12 utiliza o nftables como sucessor oficial do iptables. Ele oferece uma estrutura unificada e maior performance através de atualizações atômicas de regras.

Estrutura do nftables

O nftables organiza as regras em tabelas e cadeias que não existem por padrão. Para um servidor de produção, utilizaremos a família "inet” que processa tanto IPv4 quanto IPv6 em um único conjunto de regras.

Configuração prática

Edite o arquivo:

sudo nano /etc/nftables.conf

Implementar uma política de “Default Deny” (negação padrão).

Snippet de código:

#!/usr/sbin/nft -f
flush ruleset

table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;
        
        # Permitir interface de loopback (serviços internos)
        # Muitas aplicações locais (como bancos de dados ou serviços em containers)
        # Bloquear isso causaria falhas em serviços internos que não expõem portas externamente.
        iif "lo" accept
        
        # Permitir tráfego estabelecido (essencial para apt-get, etc.)
        # Esta é a regra de "estado".
        # Sem isso, o servidor fica isolado de iniciar qualquer comunicação externa.
        ct state established,related accept
                
        # Descartar pacotes inválidos
        # Uma medida de segurança essencial.
        # Descarta pacotes que não seguem a conformidade do protocolo TCP/IP ou que não pertencem a nenhuma sessão conhecida.
        # Isso ajuda a mitigar ataques de escaneamento furtivo e manipulação de pacotes.
        ct state invalid drop
        
        # Permitir ICMP (ping) - opcional para monitoramento
        # Além do ping, o ICMP é vital para o MTU Path Discovery e para mensagens de erro de rede.
        ip protocol icmp accept
        # No IPv6, o ICMPv6 é obrigatório para funções básicas como a descoberta de vizinhos
        ip6 nexthdr icmpv6 accept
        
        # Permitir SSH na porta customizada
        tcp dport 2222 accept
        
        # Rate Limiting contra SSH brute force
        # parâmetro: ct state new: Aplica-se apenas a novas tentativas de conexão.
        # parâmetro: limit rate 3/minute: Permite uma média de 3 novas conexões por minuto.
        # burst 3: Permite um "fôlego" inicial de 3 conexões rápidas antes de começar a aplicar o limite restrito.
        # Se um atacante tentar um brute force, ele será bloqueado pela cota de tempo.
        tcp dport 2222 ct state new limit rate 3/minute burst 3 packets accept

        # Aceita HTTP/HTTPS se for um servidor web
        # Deve ser ativada apenas se o servidor estiver rodando um serviço como Nginx ou Apache.
        # tcp dport { 80, 443 } accept

        # Log de pacotes descartados (opcional)
        # Esta regra é excelente para depuração.
        # Se colocada ao final de uma chain de entrada (input), ela registrará no dmesg ou /var/log/syslog
        # todos os pacotes que não foram aceitos por nenhuma regra anterior antes de descartá-los.
        # log prefix "NFT_DROP: " drop
    }
    chain forward {
        type filter hook forward priority 0; policy drop;
    }
    chain output {
        type filter hook output priority 0; policy accept;
    }
}

Ative e persista as regras:

sudo systemctl enable nftables sudo nft -f /etc/nftables.conf

Servidor de E-mail para Disparar Alertas

Para que seu servidor Debian possa enviar e-mails de alerta, precisamos de um Mail Transfer Agent (MTA) configurado. Vamos usar o Postfix, que é poderoso e relativamente fácil de configurar para o envio de e-mails.

Atualizar o Sistema:

sudo apt update
sudo apt upgrade -y

Instalar o Postfix:

sudo apt install postfix mailutils -y

Durante a instalação do Postfix, o configurador interativo aparecerá:

  • General type of mail configuration: Escolha Internet Site.
  • System mail name: Insira o nome de domínio do seu servidor (ex: meuservidor.exemplo.com). Isso será usado como o nome de host nos e-mails. Se não tiver um domínio, use o hostname do servidor.
  • Root and postmaster mail recipient: Deixe em branco ou coloque root. Você configurará um alias depois.
  • Other destinations to accept mail for: Deixe o padrão (seu hostname e localhost.localdomain, localhost).
  • Force synchronous updates on mail queue?: Escolha No.
  • Local networks: Deixe o padrão.
  • Mailbox size limit (bytes): 0 (sem limite).
  • Local address extension character: +.
  • Internet protocols to use: all.

Após a instalação, o serviço Postfix deve iniciar automaticamente:

sudo systemctl status postfix

Para a autenticação SASL (Simple Authentication and Security Layer) com o servidor SMTP remoto é necessário instalar o pacote libsasl2-modules:

sudo apt install libsasl2-modules -y

O arquivo de credenciais armazenará o usuário e senha do seu serviço SMTP externo. Proteja-o bem.

sudo nano /etc/postfix/sasl_passwd

Adicione a seguinte linha (substitua pelos seus dados):

[smtp.gmail.com]:587 [email protected]:sua_senha_de_aplicativo_gmail

Substituia:

  • [email protected]: Seu endereço de e-mail do Gmail.
  • sua_senha_de_aplicativo_gmail: Importante: Para o Gmail, você não pode usar sua senha normal. Você deve gerar uma Senha de Aplicativo (App Password) nas configurações de segurança da sua conta Google.
    • Vá para sua Conta Google -> Segurança -> Como fazer login no Google -> Verificação em duas etapas -> Senhas de app. Se você tiver verificação em duas etapas ativada, poderá gerar uma senha de 16 dígitos.

Este arquivo contém credenciais sensíveis e deve ser legível apenas pelo root.

sudo chmod 600 /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sasl_passwd

Configurar o main.cf (arquivo de configuração principal) do Postfix:

sudo nano /etc/postfix/main.cf

Adicione ou modifique as seguintes linhas no final do arquivo:

Configuração para retransmissão via SMTP externo

# Especifica o servidor SMTP de retransmissão e a porta (587 é a porta TLS padrão para submissão).
relayhost = [smtp.gmail.com]:587
# Habilita a autenticação SASL para o cliente SMTP (Postfix).
smtp_sasl_auth_enable = yes
# Aponta para o arquivo de credenciais que criamos.
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
# Impede a autenticação anônima.
smtp_sasl_security_options = noanonymous
# Força o uso de TLS para criptografia da conexão.
smtp_tls_security_level = encrypt
# Garante que o Postfix confie nos certificados das autoridades de certificação.
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

Reinicie o Postfix para que as novas configurações sejam aplicadas:

sudo systemctl restart postfix

Teste o Envio de E-mail:

echo "Este e-mail é um teste de alerta do seu servidor Debian." | mail -s "Alerta de Teste do Servidor Debian" [email protected]

O log principal do Postfix é /var/log/mail.log (ou /var/log/syslog em algumas configurações). Procure por mensagens de erro após tentar enviar um e-mail:

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

Ilustrações

SVG REPO
Disponível em: https://www.svgrepo.com/svg/354912/debian
Acesso em: 04 abr. 2026.

Referências

CUBEPATH.COM – Linux Server Hardening: Complete Guide
Disponível em: https://cubepath.com/docs/server-security/linux-server-hardening-complete-guide
Acesso em: 04 abr. 2026.

Rolar para cima