// Como proteger seu servidor Linux como um Hacker. - Parte 02.

Aprenda o passo a passo definitivo para endurecer a segurança do seu servidor Linux Debian like a boss.

// Como proteger seu servidor Linux como um Hacker. - Parte 02.

Aprenda o passo a passo definitivo para endurecer a segurança de um servidor Linux Debian like a boss.

Após trocar a senha do usuário root para uma senha matematicamente impossível, adicionar um usuário administrador local, configurar as atualizações de segurança de forma automática e blindar o SSH com chaves Ed25519, que tal agora blindarmos nosso servidor como um especialista sênior? ;)

Por que escolher o CrowdSec?

Eu sei eu sei... alguns leitores vão se questionar:

"O Fail2Ban já resolve meu problema com brute force"...

Pode até ser verdade. O Fail2Ban foi o padrão ouro por uma década, mas sua arquitetura baseada em regex em Python e logs locais simplesmente não escala contra botnets distribuídas modernas.

Usar o CrowdSec resolve as principais limitações do Fail2Ban:

  • Performance: Motor de detecção desenvolvido em Go com parsing estruturado (sem dependência de regex pesada).
  • Inteligência Coletiva: Blocklist global atualizada em tempo real pela comunidade de segurança.
  • Arquitetura Modular: Separação limpa entre detecção (agent) e aplicação (bouncer).

Visão Geral: O CrowdSec inclui o motor de detecção e o bouncer (responsável pelo bloqueio ativo no firewall, Cloudflare, Nginx, etc.).

Nota importante: Instalar o CrowdSec sem um bouncer não protege nada. O agente apenas observa; o bouncer é quem barra o atacante.

Instalando e configurando o CrowdSec

Vamos instalar o repositório oficial do CrowdSec e o bouncer para o iptables (ou nftables) no Debian.

  1. Adicionar o repositório oficial do CrowdSec e instalar o agent/bouncer:
# Instalar dependências iniciais
sudo apt update && sudo apt install curl gnupg lsb-release -y

# Adicionar a chave GPG e o repositório do CrowdSec
curl -s https://install.crowdsec.net | sudo sh

# Instalar o CrowdSec Agent
sudo apt install crowdsec -y
  1. Instalando o bouncer
sudo apt install crowdsec-firewall-bouncer-iptables -y
  1. Adicionando "scenarios"

    O CrowdSec vem com vários cenários ativos por padrão. Em servidores de produção, você pode querer personalizar o que é bloqueado para evitar falsos positivos ou focar em ameaças específicas.

    Para listar os cenários disponíveis;
sudo cscli scenarios list
  1. Configure a "lista de IPs seguros"

    Este é o maior ponto de falha, onde muitos administradores pulam a etapa essencial que é adicionar o IP fixo do seu escritório/casa na lista de IPs seguros antes de qualquer coisa. O famoso "break-glass access":
# Crie sua regra de break-glass

sudo nano /etc/crowdsec/parsers/s01-parse/ip-break-glass.yaml

# Cole o conteúdo abaixo, adaptando para seu IP ou rede;

name: local/ip-break-glass
description: "Tutorial do Blog do Francisco Monteiro para regra de break glass."
whitelist:
  reason: "Meu IP de acesso seguro"
  ip:
    - "159.112.180.18"
    - "2603:c021:c004:2f7e:4aa9:dd7a:b632:e156"
    - "192.168.1.0/24"

  # Reinciie o serviço do crowdsec

  sudo systemctl restart crowdsec

Pronto! O CrowdSec já está rodando de forma autônoma, analisando logs de autenticação do sistema e bloqueando ameaças globais automaticamente.

Você pode verificar o status e as decisões ativas rodando sudo cscli metrics ou sudo cscli decisions list.

Implementando Autenticação de Dois Fatores (2FA) no SSH

Agora que o seu servidor está realmente protegido contra ameaças automatizadas e IPs maliciosos com o CrowdSec, vamos elevar o nível da porta de entrada exigindo um código TOTP (tipo Google Authenticator) além da sua chave SSH?

Isso garante que, mesmo na remota hipótese de sua chave privada vazar, um invasor ainda precisará do seu celular para conseguir acessar o servidor.

  1. Instalar o plugin PAM do Google Authenticator
sudo apt install libpam-google-authenticator -y
  1. Configurar o 2FA para o seu usuário local
Atenção: Execute este comando como o seu usuário local (nunca como o usuário root), pois o segredo será gravado na home da sua conta
google-authenticator

O terminal fará algumas perguntas interativas. Para obter o comportamento mais seguro, responda da seguinte forma:

    1. Authentication tokens time-based (y/n):
      (Sim, para usar tokens baseados em tempo).
    2. O terminal exibirá um QR Code gigante na tela e a sua chave secreta (secret key). Use seu aplicativo autenticador favorito (1Password, Bitwarden, Google Authenticator, etc.) para salvar o TOTP.
    3. Do you want me to update your "/home/franciscomonteiro/.google_authenticator" file?
      (Sim, para começar a utilizar o método de TOTP para o usuário atual)
    4. Do you want to disallow multiple uses of the same authentication token?
      (Sim, para previnir ataques de repetição, impedindo que um código seja usado duas vezes).
    5. By default, tokens are 30 seconds... Do you want to enable rate-limiting? (Sim, para restringir tentativas excessivas de login, bloqueando ataques de força bruta no 2FA).
Dica de ouro: O terminal também exibirá códigos de recuperação de emergência (emergency scratch codes).

Anote-os e guarde-os em um gerenciador de senhas. Se você perder o seu celular, eles serão a sua única salvação para não ficar trancado fora do servidor.
  1. Configurar o SSH e o PAM para exigir o fator duplo

    Primeiro, edite o arquivo de configuração do PAM para o SSH:
sudo nano /etc/pam.d/sshd

# Adicione no final da linha:

auth required pam_google_authenticator.so
  1. Configurando o daemon do SSH para permitir logon interativo
sudo nano /etc/ssh/sshd_config

# Adicione ou remova o "#" caso a linha já exista;

KbdInteractiveAuthentication yes

# Adicione a regra de método de autenticação para exigir a chave criptográfica seguida do código de verificação:

AuthenticationMethods publickey,keyboard-interactive
  1. Reiniciar o serviço SSH
systemctl restart ssh

Observação: Não feche a sua sessão atual do terminal antes de abrir uma nova aba e testar o acesso!

Certifique-se de que consegue logar usando sua chave e o código 2FA com sucesso. Se algo der errado, sua sessão atual ainda estará aberta para corrigir o arquivo de configuração.

Conclusão

Com o CrowdSec blindando as portas contra ataques de força bruta do mundo e o Google Authenticator adicionando uma camada intransponível no SSH, seu servidor Debian alcança um nível de segurança de infraestrutura corporativa like a boss.

Lembre-se: em administração de sistemas, a segurança não é um destino, mas um estado constante de atenção.

"Os especialistas em segurança costumam dizer que a segurança não é um produto, mas um processo... É mais sobre sua mentalidade e gestão do que sobre software e hardware."
Mitnick, Kevin.

Subscribe to Blog do Francisco Monteiro

Don’t miss out on the latest issues. Sign up now to get access to the library of members-only issues.
joao.silva@exemplo.com
Inscreva-se