Auditoria Básica de Segurança em Servidores Linux: Guia Completo

guia completo de auditoria básica de segurança em servidores Linux, incluindo verificação de serviços, usuários, permissões, logs e pacotes. Ele é pensado para fornecer um ponto de partida sólido sem ser intrusivo, ideal para hardening inicial e detecção de problemas óbvios.


Auditoria Básica de Segurança em Linux

1. Informações do Sistema

Antes de qualquer auditoria, verifique detalhes do sistema:

uname -a                 # Kernel e arquitetura
cat /etc/os-release      # Distribuição Linux
uptime                   # Tempo de atividade
df -h                    # Espaço em disco
free -h                  # Memória

Essas informações ajudam a contextualizar vulnerabilidades conhecidas do kernel ou pacotes.


2. Usuários e Grupos

Listar usuários ativos

cat /etc/passwd

Verifique usuários desconhecidos ou com UID 0 (root):

awk -F: '($3 == 0) {print $1}' /etc/passwd

Usuários com login permitido

cat /etc/shadow

Procure senhas em branco ou hashes suspeitos.

Grupos sensíveis

getent group sudo
getent group wheel

Verifique membros de grupos com privilégios elevados.


3. Serviços Ativos e Portas

Listar serviços ativos

systemctl list-units --type=service --state=running

Ver portas abertas

ss -tulnp

Ou:

netstat -tulnp  # se instalado

⚠️ Dica: Serviços desnecessários aumentam a superfície de ataque. Ex.: FTP, Telnet, SNMP público.


4. Pacotes e Atualizações

Verificar atualizações pendentes

  • Debian/Ubuntu:
apt update && apt list --upgradable
  • RHEL/CentOS:
yum check-update

Verificar pacotes suspeitos

rpm -qa | grep -i "backdoor\|suspicious"
dpkg -l | grep -i "backdoor\|suspicious"

5. Logs do Sistema

Logs críticos

# Autenticação
cat /var/log/auth.log   # Debian/Ubuntu
cat /var/log/secure     # RHEL/CentOS

# Mensagens do sistema
cat /var/log/syslog
cat /var/log/messages

# Últimos logins
last
lastb

⚠️ Busque falhas de login repetidas, contas bloqueadas ou acessos estranhos.


6. Permissões e Arquivos Críticos

Permissões de arquivos importantes

ls -l /etc/passwd /etc/shadow /etc/sudoers

Apenas root deve ter acesso a arquivos sensíveis.

Arquivos SUID/SGID suspeitos

find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \;

Arquivos SUID/SGID podem ser vetor de escalonamento de privilégios.


7. Kernel e Hardening

Configurações básicas

# Proteção contra IP spoofing
sysctl net.ipv4.conf.all.rp_filter

# Proteção contra ICMP broadcast
sysctl net.ipv4.icmp_echo_ignore_broadcasts

SELinux/AppArmor

  • Debian/Ubuntu: sudo aa-status
  • RHEL/CentOS: sestatus

⚠️ Devem estar ativos e aplicando políticas.


8. Cron Jobs e Scripts Automáticos

crontab -l             # para usuário atual
sudo crontab -l -u root
ls -l /etc/cron*       # para ver tarefas do sistema

Procure scripts desconhecidos que podem ser backdoors.


9. Auditoria de SSH

Configurações importantes

cat /etc/ssh/sshd_config | grep -i "PermitRootLogin\|PasswordAuthentication\|Port"
  • PermitRootLogin no
  • PasswordAuthentication no (usar chave)
  • Alterar porta padrão 22

10. Ferramentas de Auditoria Automática

  • lynis — Auditoria de segurança completa:
sudo apt install lynis
sudo lynis audit system
  • chkrootkit — Detecta rootkits:
sudo apt install chkrootkit
sudo chkrootkit
  • rkhunter — Rootkit Hunter:
sudo apt install rkhunter
sudo rkhunter --check

✅ Resumo das Ações Imediatas

  1. Remover serviços desnecessários.
  2. Atualizar kernel e pacotes.
  3. Revisar usuários e grupos.
  4. Fortalecer SSH.
  5. Monitorar logs críticos.
  6. Verificar arquivos SUID/SGID.
  7. Ativar SELinux/AppArmor.
  8. Executar auditoria com lynis.

Script para auditoria básica.

Copie o script para nano auditoria_basica.sh
chmod +x auditoria_basica.sh
./auditoria_basica.sh

#!/bin/bash
# Auditoria Básica de Segurança - Bash
# Uso: sudo ./auditoria_basica.sh

echo "========================================"
echo "      AUDITORIA BÁSICA DE SEGURANÇA     "
echo "========================================"
echo ""

# 1. Informações do Sistema
echo ">> Informações do Sistema"
uname -a
cat /etc/os-release
uptime
df -h
free -h
echo ""

# 2. Usuários e Grupos
echo ">> Usuários com UID 0 (root)"
awk -F: '($3 == 0) {print $1}' /etc/passwd
echo ""
echo ">> Grupos com privilégios elevados"
getent group sudo
getent group wheel
echo ""

# 3. Serviços e Portas
echo ">> Serviços ativos"
systemctl list-units --type=service --state=running | awk '{print $1}'
echo ""
echo ">> Portas abertas"
ss -tulnp
echo ""

# 4. Pacotes e Atualizações
echo ">> Atualizações pendentes"
if command -v apt >/dev/null 2>&1; then
    apt list --upgradable 2>/dev/null
elif command -v yum >/dev/null 2>&1; then
    yum check-update 2>/dev/null
fi
echo ""

# 5. Logs críticos (últimos 20 registros)
echo ">> Últimos logs de autenticação"
if [ -f /var/log/auth.log ]; then
    tail -n 20 /var/log/auth.log
elif [ -f /var/log/secure ]; then
    tail -n 20 /var/log/secure
fi
echo ""
echo ">> Últimos logins"
last -n 10
echo ""

# 6. Permissões e Arquivos Críticos
echo ">> Permissões de arquivos críticos"
ls -l /etc/passwd /etc/shadow /etc/sudoers
echo ""
echo ">> Arquivos SUID/SGID"
find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -l {} \; 2>/dev/null
echo ""

# 7. Cron Jobs
echo ">> Tarefas agendadas"
crontab -l 2>/dev/null
sudo crontab -l -u root 2>/dev/null
ls -l /etc/cron* 2>/dev/null
echo ""

# 8. Auditoria SSH
echo ">> Configuração SSH"
if [ -f /etc/ssh/sshd_config ]; then
    grep -Ei "PermitRootLogin|PasswordAuthentication|Port" /etc/ssh/sshd_config
fi
echo ""

# 9. SELinux/AppArmor
echo ">> Status SELinux/AppArmor"
if command -v sestatus >/dev/null 2>&1; then
    sestatus
elif command -v aa-status >/dev/null 2>&1; then
    aa-status
fi
echo ""

# 10. Rootkits e Auditoria Rápida
echo ">> Verificando rootkits (chkrootkit/rkhunter se instalados)"
if command -v chkrootkit >/dev/null 2>&1; then
    chkrootkit
fi
if command -v rkhunter >/dev/null 2>&1; then
    rkhunter --check --sk
fi
echo ""

echo "========================================"
echo "         AUDITORIA CONCLUÍDA             "
echo "========================================"

FAQ – Auditoria Básica de Segurança em Servidores Linux

O que é uma auditoria básica de segurança?

Uma auditoria básica de segurança é um processo de verificação do servidor Linux para identificar usuários, serviços, permissões, logs e configurações vulneráveis. Ela ajuda a prevenir acessos não autorizados e ataques simples sem alterar o funcionamento do sistema.

Por que devo realizar uma auditoria básica de segurança?

Realizar auditorias regularmente reduz riscos de intrusão, escalonamento de privilégios e compromete a disponibilidade do servidor. É essencial para manter servidores seguros, confiáveis e compatíveis com boas práticas de TI.

Quais itens são verificados em uma auditoria básica?

Os principais pontos incluem:
Usuários e grupos suspeitos ou com privilégios indevidos
Serviços e portas abertas
Pacotes desatualizados
Logs de autenticação e sistema
Permissões de arquivos críticos (como /etc/passwd e /etc/shadow)
Tarefas cron agendadas
Configuração de SSH
Status de SELinux ou AppArmor
Verificação de rootkits e malwares

Qual a diferença entre auditoria básica e avançada?

Básica: Verifica os principais itens de segurança, gera relatórios e sugere melhorias. Não altera o sistema.
Avançada: Inclui testes de penetração, monitoramento contínuo, análise detalhada de logs, scanners de vulnerabilidade e correção automática de problemas.

Posso executar a auditoria em qualquer distribuição Linux?

Sim, mas alguns comandos podem variar:
Debian/Ubuntu: apt, /var/log/auth.log
RHEL/CentOS: yum, /var/log/secure
O restante, como verificação de usuários, permissões e SSH, é universal.

O script de auditoria altera o sistema?

Não. O script coleta informações, verifica configurações e gera relatórios de segurança. Ele não instala pacotes, não altera permissões nem modifica serviços.

Com que frequência devo realizar auditorias?

Recomenda-se:
Auditoria básica: mensal ou após atualizações importantes
Auditoria avançada: trimestral ou semestral, dependendo da criticidade do servidor

Como posso interpretar os resultados do script?

Avisos de usuários desconhecidos ou UID 0 → podem indicar contas suspeitas
Serviços desnecessários ativos → aumentam a superfície de ataque
Portas abertas não utilizadas → devem ser fechadas
Arquivos SUID/SGID estranhos → podem ser vetor de escalonamento de privilégios
Falhas em SSH, SELinux ou AppArmor → devem ser corrigidas imediatamente

Ferramentas recomendadas para auditoria automática

Lynis: Auditoria completa de segurança (sudo lynis audit system)
chkrootkit: Detecta rootkits (chkrootkit)
rkhunter: Rootkit Hunter (rkhunter --check)

O que fazer após a auditoria?

Atualizar pacotes e kernel
Desativar serviços desnecessários
Corrigir permissões de arquivos críticos
Ajustar configurações de SSH, SELinux/AppArmor
Monitorar logs e padrões suspeitos
Agendar auditorias periódicas