LINUX HARDENING - SUPREME GUIDE
LINUX HARDENING - SUPREME GUIDE
MATEUS CELESTINO PRO X/LINUX HARDENING - SUPREME GUIDE

LINUX HARDENING - SUPREME GUIDE

Categoria
Criado em
May 7, 2025 02:26 PM GMT+0
Última edição
May 7, 2025 03:19 PM GMT+0
A segurança de um servidor VPS (Virtual Private Server) é fundamental para proteger dados, aplicações e a integridade do sistema contra acessos não autorizados e ameaças potenciais. Sem medidas de segurança adequadas, seu VPS pode ser comprometido e utilizado para atividades maliciosas, como envio de spam, hospedagem de sites de phishing, mineração de criptomoedas ou até mesmo ataques de ransomware.
Este guia fornece um passo a passo detalhado para fortalecer a segurança de um VPS rodando Ubuntu 24.04, abordando desde a configuração inicial até práticas avançadas de hardening.

notion image

1. Atualização do Sistema

Antes de qualquer configuração, é essencial garantir que o sistema esteja atualizado com os últimos patches de segurança e melhorias.
bash CopiarEditar sudo apt update && sudo apt upgrade -y sudo reboot
  • sudo apt update: Atualiza a lista de pacotes disponíveis.
  • sudo apt upgrade -y: Instala as atualizações disponíveis automaticamente.
  • sudo reboot: Reinicia o sistema para aplicar as atualizações, especialmente se houver atualizações do kernel.OTLand

2. Configuração de Acesso SSH com Chave Pública

Utilizar autenticação por chave SSH em vez de senhas aumenta significativamente a segurança do servidor.

2.1. Geração da Chave SSH

No seu computador local, gere um par de chaves SSH:
bash CopiarEditar ssh-keygen -t ed25519 -C "vps" -f ~/.ssh/id_ed25519-vps
  • t ed25519: Especifica o tipo de chave (Ed25519 é mais seguro e rápido).
  • C "vps": Comentário para identificar a chave.
notion image

2.2. Copiando a Chave Pública para o Servidor

Transfira a chave pública para o servidor VPS:
bash CopiarEditar rsync -avR ~/.ssh/id_ed25519-vps.pub usuario@ip_do_vps:~/.ssh/authorized_keys
  • rsync -avR: Sincroniza arquivos preservando permissões e estrutura de diretórios.
  • ~/.ssh/id_ed25519-vps.pub: Arquivo da chave pública gerada.
  • usuario@ip_do_vps: Substitua pelo usuário e IP do seu VPS.
  • ~/.ssh/authorized_keys: Arquivo no servidor que armazena chaves autorizadas.

3. Criação de Novo Usuário com Privilégios de Sudo

Evite utilizar o usuário padrão (como "ubuntu") para tarefas administrativas. Crie um novo usuário com permissões de sudo:
bash CopiarEditar sudo adduser vpsu sudo usermod -aG sudo vpsu sudo rsync --archive --chown=vpsu:vpsu ~/.ssh /home/vpsu
  • sudo adduser vpsu: Cria um novo usuário chamado "vpsu".
  • sudo usermod -aG sudo vpsu: Adiciona o usuário ao grupo sudo, concedendo privilégios administrativos.
  • sudo rsync --archive --chown=vpsu:vpsu ~/.ssh /home/vpsu: Copia as chaves SSH para o novo usuário, ajustando as permissões.

4. Configuração Avançada do SSH

Ajuste as configurações do SSH para aumentar a segurança:
bash CopiarEditar sudo nano /etc/ssh/sshd_config
Modifique ou adicione as seguintes linhas:
bash CopiarEditar Port 1327 PermitRootLogin no PasswordAuthentication no AllowUsers vpsu
  • Port 1327: Altera a porta padrão do SSH para 1327 (escolha uma porta alta e não utilizada).
  • PermitRootLogin no: Desativa o login direto como root.
  • PasswordAuthentication no: Desativa a autenticação por senha, permitindo apenas chaves SSH.
Salve e feche o arquivo. Em seguida, reinicie o serviço SSH:
 
notion image
bash CopiarEditar sudo systemctl restart ssh
No seu computador local, atualize o arquivo de configuração SSH para refletir as mudanças:
bash CopiarEditar nano ~/.ssh/config
Adicione:
bash CopiarEditar Host vps HostName ip_do_vps User vpsu Port 1327 IdentityFile ~/.ssh/id_ed25519-vps IdentitiesOnly yes
  • Host vps: Alias para o servidor.
  • HostName ip_do_vps: Endereço IP do seu VPS.
  • User vpsu: Usuário para conexão SSH.
  • Port 1327: Porta configurada para o SSH.
  • IdentityFile: Caminho para a chave privada.
  • IdentitiesOnly yes: Garante que apenas a chave especificada seja usada.
Agora, você pode se conectar ao VPS usando:
bash CopiarEditar ssh vps
notion image

1. Configuração de Firewall com UFW (Uncomplicated Firewall)

1.1. Ativando o UFW

O UFW é um wrapper para iptables, simplificando a configuração do firewall no Ubuntu.
bash CopiarEditar sudo ufw allow 1327/tcp sudo ufw allow OpenSSH sudo ufw enable
  • allow 1327/tcp: permite acesso à porta SSH personalizada configurada anteriormente.
  • allow OpenSSH: útil como fallback, caso a porta personalizada falhe.
  • enable: ativa o firewall de forma permanente.

1.2. Políticas padrão

Defina regras padrão de segurança restritiva:
bash CopiarEditar sudo ufw default deny incoming sudo ufw default allow outgoing
  • deny incoming: bloqueia por padrão qualquer tentativa de conexão externa.
  • allow outgoing: permite ao servidor se comunicar com o exterior.

1.3. Verificando o status

bash CopiarEditar sudo ufw status verbose

2. Fail2Ban – Proteção contra Força Bruta

Fail2Ban monitora logs em busca de padrões de ataques (como tentativas de login) e automaticamente bloqueia IPs maliciosos via firewall.

2.1. Instalação

bash CopiarEditar sudo apt install fail2ban -y

2.2. Criação de arquivo de configuração local

bash CopiarEditar sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local sudo nano /etc/fail2ban/jail.local
Altere ou adicione:
ini CopiarEditar [DEFAULT] bantime = 24h findtime = 10m maxretry = 3 backend = systemd destemail = root@localhost sender = fail2ban@localhost mta = sendmail action = %(action_mwl)s [sshd] enabled = true port = 1327 logpath = %(sshd_log)s
  • bantime: tempo de bloqueio (24h).
  • findtime: janela para identificar tentativas maliciosas.
  • maxretry: número de falhas antes do banimento.
  • action_mwl: envia alerta com whois + log + email.
notion image

2.3. Reiniciar o serviço

bash CopiarEditar sudo systemctl restart fail2ban sudo systemctl enable fail2ban

2.4. Verificação em tempo real

bash CopiarEditar sudo fail2ban-client status sshd

3. DNS Seguro: Integração com DNS-over-HTTPS (DoH)

Prevenir que consultas DNS sejam interceptadas é vital para proteção contra MITM (man-in-the-middle) e espionagem.

3.1. Instalar o cloudflared

Cloudflared é o binário da Cloudflare que permite usar DoH.
bash CopiarEditar wget -O cloudflared.deb https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb sudo dpkg -i cloudflared.deb

3.2. Configurar serviço de DNS local

bash CopiarEditar sudo cloudflared service install
Crie o arquivo:
bash CopiarEditar sudo nano /etc/systemd/system/cloudflared.service
Conteúdo:
ini CopiarEditar [Unit] Description=Cloudflared DNS over HTTPS proxy After=network.target [Service] ExecStart=/usr/bin/cloudflared proxy-dns --port 5053 --upstream https://1.1.1.1/dns-query Restart=on-failure User=nobody CapabilityBoundingSet=CAP_NET_BIND_SERVICE [Install] WantedBy=multi-user.target
Ativar o serviço:
bash CopiarEditar sudo systemctl daemon-reexec sudo systemctl enable cloudflared sudo systemctl start cloudflared

3.3. Redirecionar consultas DNS

Edite o resolv.conf do systemd:
bash CopiarEditar sudo nano /etc/systemd/resolved.conf
notion image
Adicione:
ini CopiarEditar DNS=127.0.0.1:5053 FallbackDNS=1.1.1.1 1.0.0.1 DNSStubListener=no
Reinicie:
bash CopiarEditar sudo systemctl restart systemd-resolved
Verifique:
bash CopiarEditar dig @127.0.0.1 -p 5053 google.com

4. Hardening de Kernel e Parâmetros de Rede (sysctl)

4.1. Editando parâmetros críticos

Abra o arquivo de configuração:
bash CopiarEditar sudo nano /etc/sysctl.d/99-hardening.conf
Cole o seguinte conteúdo:
bash CopiarEditar # Protege contra IP spoofing net.ipv4.conf.all.rp_filter = 1 net.ipv4.conf.default.rp_filter = 1 # Desativa pacotes ICMP redirect net.ipv4.conf.all.accept_redirects = 0 net.ipv6.conf.all.accept_redirects = 0 # Ignora pacotes ICMP de broadcast net.ipv4.icmp_echo_ignore_broadcasts = 1 # Protege contra ataques SYN flood net.ipv4.tcp_syncookies = 1 # Evita rastreamento de IP net.ipv4.conf.all.accept_source_route = 0 net.ipv6.conf.all.accept_source_route = 0 # Desabilita encaminhamento de IP (caso não esteja roteando tráfego) net.ipv4.ip_forward = 0 net.ipv6.conf.all.forwarding = 0

4.2. Aplicar as configurações

bash CopiarEditar sudo sysctl --system
Verifique se os parâmetros foram aplicados:
bash CopiarEditar sysctl -a | grep rp_filter

5. Desabilitar Serviços Inúteis

Identifique e desative qualquer serviço que não esteja sendo usado:
bash CopiarEditar sudo systemctl list-unit-files --type=service | grep enabled
Para desabilitar:
bash CopiarEditar sudo systemctl disable nome-do-serviço sudo systemctl stop nome-do-serviço
Exemplo:
bash CopiarEditar sudo systemctl disable avahi-daemon

notion image

6. Monitoramento de Conexões e Portas Abertas

Monitorar quais portas estão expostas é uma prática essencial:
bash CopiarEditar sudo ss -tuln
  • t: TCP
  • u: UDP
  • l: apenas serviços em escuta
  • n: exibe números de porta em vez de nomes

7. Ativar Logs Persistentes

Por padrão, logs do journalctl podem não ser persistentes após reboot. Para ativar:
bash CopiarEditar sudo mkdir -p /var/log/journal sudo systemd-tmpfiles --create --prefix /var/log/journal sudo systemctl restart systemd-journald
 
 

1. Desativando o Usuário Root

Evitar o uso direto do usuário root é um dos pilares da segurança operacional. Mesmo com o SSH já bloqueado para root, desativar o login direto local ou por sudo explícito eleva o nível de proteção.

1.1. Bloquear login de root

bash CopiarEditar sudo passwd -l root
  • l: bloqueia o login do usuário root, mesmo localmente.

1.2. Verificar status

bash CopiarEditar sudo passwd -S root
Resultado esperado: L (locked)

2. Backup Offsite Criptografado com Restic

Restic é um utilitário moderno de backup que suporta criptografia de ponta a ponta, deduplicação automática e envio para destinos como S3, Backblaze, SSH, entre outros.

2.1. Instalar Restic

bash CopiarEditar sudo apt install restic -y

2.2. Inicializar repositório criptografado

bash CopiarEditar export RESTIC_PASSWORD="senha-forte" restic init --repo /mnt/backup
  • Repositório pode estar em disco externo, volume montado via SSHFS, ou ponto remoto.

2.3. Executar backup manual

bash CopiarEditar restic -r /mnt/backup backup /etc /home /var/www

2.4. Backup via cron com log

bash CopiarEditar sudo nano /etc/cron.daily/restic-backup
bash CopiarEditar #!/bin/bash export RESTIC_PASSWORD="senha-forte" restic -r /mnt/backup backup /etc /home /var/www >> /var/log/restic.log 2>&1
bash CopiarEditar sudo chmod +x /etc/cron.daily/restic-backup

3. Verificação de Integridade com AIDE (Advanced Intrusion Detection Environment)

AIDE cria um banco de dados com hashes criptográficos dos arquivos mais críticos do sistema, detectando alterações suspeitas.
notion image

3.1. Instalar AIDE

bash CopiarEditar sudo apt install aide -y

3.2. Inicializar banco de dados

bash CopiarEditar sudo aideinit
Banco gerado será armazenado como /var/lib/aide/aide.db.new
Substituir banco:
bash CopiarEditar sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db

3.3. Verificar integridade

bash CopiarEditar sudo aide --check

3.4. Agendar verificação automática

bash CopiarEditar sudo nano /etc/cron.daily/aide-check
bash CopiarEditar #!/bin/bash /usr/bin/aide --check | mail -s "Relatório de Integridade do Servidor" root
bash CopiarEditar sudo chmod +x /etc/cron.daily/aide-check

4. Proteção de Arquivos Críticos (Immutable + chattr)

Arquivos de configuração sensíveis podem ser "congelados" com o atributo immutable, o que impede alterações mesmo por root.
notion image

4.1. Aplicar atributo

bash CopiarEditar sudo chattr +i /etc/passwd /etc/shadow /etc/gshadow /etc/group
  • +i: torna o arquivo imutável.

4.2. Remover atributo (caso precise editar no futuro)

bash CopiarEditar sudo chattr -i /etc/passwd

5. Monitoramento de Processos em Tempo Real

Para detectar processos suspeitos ou backdoors em execução:
bash CopiarEditar sudo apt install htop lsof -y htop
  • htop: interface interativa de processos.
  • lsof -i: lista de conexões de rede em tempo real.
bash CopiarEditar sudo lsof -iTCP -sTCP:LISTEN -P -n

6. Endurecendo a Segurança Física Virtual: Kernel Lockdown Mode

O Ubuntu 24.04 suporta o modo lockdown do kernel, bloqueando interações potencialmente perigosas com o hardware ou memória.

6.1. Ativar via GRUB

Edite:
bash CopiarEditar sudo nano /etc/default/grub
Encontre:
bash CopiarEditar GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
Altere para:
bash CopiarEditar GRUB_CMDLINE_LINUX_DEFAULT="quiet splash lockdown=integrity"
Aplicar:
bash CopiarEditar sudo update-grub sudo reboot

7. Restrições de Compilação de Código em Produção

Evite que o servidor compile código localmente (tática comum de atacantes):

7.1. Remover ferramentas de build

bash CopiarEditar sudo apt purge build-essential gcc g++ make -y

8. Auditar Logs com GoAccess (Web e SSH)

GoAccess é uma ferramenta de visualização de logs em tempo real com saída em terminal ou HTML.

8.1. Instalar

bash CopiarEditar sudo apt install goaccess -y

8.2. Usar com logs SSH

bash CopiarEditar sudo goaccess /var/log/auth.log --log-format=COMBINED

9. Práticas Finais de Segurança para Operação Profissional

  • Use TOTP (Two-Factor Auth) para painéis e dashboards.
  • Implemente bloqueio geográfico com ipset + iptables se seu público for regional.
  • Sincronize horário com NTP segurosystemd-timesyncd.
  • Restrinja comandos com sudoers.d e sudo visudo.
  • Realize auditorias mensais com lynis audit system.
  • Escaneie portas regularmente com nmap de outro servidor seguro.
  • Desative IPv6 se não for usado:
    • bash CopiarEditar sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1

10. Salvaguarda: Snapshot e Imagem de Backup Total

Utilize snapshot completo via:
  • Provedores (DigitalOcean, Vultr, Hetzner)
  • LVM snapshot + Restic
  • QEMU/KVM image export (qcow2 ou .img)

Este conjunto de práticas, cuidadosamente implementado, configura um VPS Ubuntu 24.04 pronto para operação em ambientes profissionais, inclusive em setores que exigem compliance de alto nível, como:
  • Fintechs
  • Infraestrutura de automação
  • Sistemas que manipulam dados sensíveis
  • Plataformas SaaS autogeridas
 
 
 

Autor do artigo

Sou formado em Marketing Digital por uma das principais faculdades do Brasil, com carreira construída unindo tecnologia, automação e estratégia digital.
 
notion image
Apaixonado por inovação, me especializei em T.I. e automação de marketing com inteligência artificial, criando soluções que ajudam empresas a vender mais, automatizar processos e crescer com eficiência.
Atuo como empreendedor digital, desenvolvendo sistemas completos com foco em automação de vendas, atendimento inteligente via WhatsApp e integração de ferramentas modernas com IA.
Minha missão é transformar ideias em sistemas inteligentes que funcionam de forma autônoma, liberando tempo e energia para que você possa focar no que realmente importa: o crescimento do seu negócio.
AGENDE AGORA !AGENDE AGORA !