Monitoramento de segurança na VPS
Hardening reduz a superfície de ataque, mas não elimina a necessidade de monitoramento. Você precisa saber quando alguém fez login no servidor, quando um serviço caiu, quando o disco está chegando ao limite. Com scripts simples e ferramentas como Logwatch e auditd, configure alertas por e-mail sem custo adicional.
Alertas de login SSH por e-mail
Receba um e-mail imediatamente quando alguém fizer login no servidor:
# Instalar mailutils para envio de e-mail
apt install mailutils
# Adicionar ao /etc/pam.d/sshd para notificar no login
# (ou criar script em /etc/ssh/sshrc)
cat > /etc/ssh/sshrc << 'EOF'
#!/bin/bash
# Executado quando usuário faz login SSH
IP=$(echo $SSH_CONNECTION | awk '{print $1}')
USER=$(whoami)
HOSTNAME=$(hostname)
DATE=$(date)
echo "Login SSH detectado:
Usuário: $USER
IP de origem: $IP
Servidor: $HOSTNAME
Data/hora: $DATE" | mail -s "ALERTA: Login SSH em $HOSTNAME" admin@seuemail.com
EOF
chmod +x /etc/ssh/sshrcLogwatch: relatório diário de atividade
Logwatch analisa os logs do sistema e envia um resumo por e-mail:
# Instalar Logwatch
apt install logwatch
# Configuração
cat > /etc/logwatch/conf/logwatch.conf << 'EOF'
Output = mail
MailTo = admin@seuemail.com
MailFrom = logwatch@$(hostname)
Detail = Med
Service = All
Range = yesterday
Format = text
EOF
# Testar envio imediato
logwatch --output mail --mailto admin@seuemail.com --detail High --range today
# Logwatch roda automaticamente via cron diário
# /etc/cron.daily/00logwatch
# Para verificar:
cat /etc/cron.daily/00logwatchauditd: rastrear operações sensíveis
auditd registra operações de segurança do kernel — acesso a arquivos, comandos executados como root, mudanças de permissão:
# Instalar auditd
apt install auditd audispd-plugins
# Regras de auditoria
cat >> /etc/audit/rules.d/security.rules << 'EOF'
# Monitorar logins
-w /var/log/lastlog -p wa -k logins
-w /var/run/faillock/ -p wa -k logins
# Monitorar mudanças no sistema
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/sudoers -p wa -k sudoers
-w /etc/ssh/sshd_config -p wa -k ssh_config
# Comandos críticos
-a always,exit -F arch=b64 -S execve -F euid=0 -k root_commands
# Mudanças de rede
-w /etc/network/ -p wa -k network
EOF
systemctl enable --now auditd
# Pesquisar eventos
ausearch -k logins -ts today
ausearch -k root_commands -ts today | head -20Monitorar uso de recursos e alertas de disco
Scripts simples para alertar quando disco, memória ou CPU estão críticos:
#!/bin/bash
# /opt/scripts/check-resources.sh — adicionar ao cron
ALERT_EMAIL="admin@seuemail.com"
HOSTNAME=$(hostname)
# Verificar uso do disco
DISK_USAGE=$(df / | tail -1 | awk '{print $5}' | tr -d '%')
if [ "$DISK_USAGE" -gt 85 ]; then
echo "ALERTA: Disco em $DISK_USAGE% em $HOSTNAME" | \
mail -s "ALERTA DISCO: $HOSTNAME" "$ALERT_EMAIL"
fi
# Verificar carga do sistema (load average)
LOAD=$(cat /proc/loadavg | awk '{print $1}' | cut -d. -f1)
CPUS=$(nproc)
if [ "$LOAD" -gt "$((CPUS * 2))" ]; then
echo "ALERTA: Load average $LOAD em $HOSTNAME ($CPUS CPUs)" | \
mail -s "ALERTA CARGA: $HOSTNAME" "$ALERT_EMAIL"
fi
# Verificar memória disponível
FREE_MEM=$(free -m | awk '/^Mem:/{print $4}')
if [ "$FREE_MEM" -lt 200 ]; then
echo "ALERTA: Apenas ${FREE_MEM}MB de RAM livre em $HOSTNAME" | \
mail -s "ALERTA MEMÓRIA: $HOSTNAME" "$ALERT_EMAIL"
fiCentralizar logs com journald + filtros
journald centraliza todos os logs do sistema. Configure persistência e filtros úteis:
# /etc/systemd/journald.conf — persistir logs entre reinicializações
[Journal]
Storage=persistent
Compress=yes
SystemMaxUse=500M # máximo 500MB de logs
SystemKeepFree=100M
systemctl restart systemd-journald
# Queries úteis de segurança
# Falhas de autenticação nas últimas 24h
journalctl --since "24 hours ago" | grep -i "authentication failure|failed password"
# Todos os sudo usados hoje
journalctl --since today -u sudo
# Logs do Docker nas últimas 2h
journalctl --since "2 hours ago" -u docker
# Exportar logs para arquivo (backup ou análise offline)
journalctl --since "$(date +%Y-%m-01)" --until "$(date +%Y-%m-%d)" \
-o json-pretty > /opt/backup/logs/system-$(date +%Y-%m).json$ runstack deploy --plan starter
Não quer configurar manualmente?
Não quer configurar manualmente? Implante o VPS em menos de 3 minutos com a Runstack. Infraestrutura da OPEN DATACENTER, com servidores no Brasil.