🔧 Manutenção do Webserver DMZ
Guia de manutenção, logs, troubleshooting e updates
📋 Índice
📋 Logs
Nginx Logs
# Access logs por vhost
sudo tail -f /var/log/nginx/fsociety_access.log
sudo tail -f /var/log/nginx/nextcloud_proxy_access.log
sudo tail -f /var/log/nginx/tickets_proxy_access.log
sudo tail -f /var/log/nginx/mail_proxy_access.log
# Error logs
sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/nginx/fsociety_error.log
# Todos os access logs
sudo tail -f /var/log/nginx/*_access.log
Estatísticas de Logs
# Top 10 IPs
sudo awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
# Top 10 URLs
sudo awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -10
# Status codes
sudo awk '{print $9}' /var/log/nginx/access.log | sort | uniq -c | sort -rn
# Erros 5xx
sudo grep " 5[0-9][0-9] " /var/log/nginx/access.log | tail -20
# Rate limiting (429)
sudo grep " 429 " /var/log/nginx/access.log | tail -20
CrowdSec Logs
# CrowdSec agent
sudo tail -f /var/log/crowdsec.log
# Firewall bouncer
sudo tail -f /var/log/crowdsec-firewall-bouncer.log
# Ver decisões
sudo cscli decisions list
# Ver alertas
sudo cscli alerts list | head -20
📊 Monitorização
Verificar Serviços
# Nginx
sudo systemctl status nginx
# CrowdSec
sudo systemctl status crowdsec
sudo systemctl status crowdsec-firewall-bouncer
sudo systemctl status crowdsec-cloudflare-bouncer
# UFW
sudo ufw status verbose
Performance Nginx
# Processos
ps aux | grep nginx
# Conexões ativas
sudo netstat -an | grep :80 | wc -l
sudo netstat -an | grep :443 | wc -l
# Workers
sudo nginx -V 2>&1 | grep worker
Espaço em Disco
# Disco geral
df -h
# Logs
du -sh /var/log/nginx/
du -sh /var/log/
# Limpar logs antigos
sudo find /var/log/nginx/ -name "*.gz" -mtime +30 -delete
Memória e CPU
# Uso geral
free -h
htop
# Por processo
ps aux --sort=-%mem | head -10
ps aux --sort=-%cpu | head -10
💾 Backup
Script de Backup
sudo nano /usr/local/bin/backup-webserver.sh
#!/bin/bash
BACKUP_DIR="/var/backups/webserver"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
# Nginx configs
tar -czf $BACKUP_DIR/nginx_config_$DATE.tar.gz /etc/nginx/
# Site files
tar -czf $BACKUP_DIR/site_files_$DATE.tar.gz /var/www/
# SSL certificates
tar -czf $BACKUP_DIR/ssl_certs_$DATE.tar.gz /etc/letsencrypt/
# CrowdSec config
tar -czf $BACKUP_DIR/crowdsec_config_$DATE.tar.gz /etc/crowdsec/
# Limpar backups > 7 dias
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
echo "[$(date)] Backup concluído"
sudo chmod +x /usr/local/bin/backup-webserver.sh
# Cron diário
sudo crontab -e
# 0 4 * * * /usr/local/bin/backup-webserver.sh >> /var/log/backup-webserver.log 2>&1
🔄 Updates
Update Sistema
sudo apt update
sudo apt upgrade -y
sudo apt dist-upgrade -y
Update Nginx
# Atualizar Nginx
sudo apt install nginx --only-upgrade
# Verificar versão
nginx -v
# Testar config
sudo nginx -t
# Recarregar
sudo systemctl reload nginx
Update CrowdSec
# Update hub
sudo cscli hub update
# Upgrade collections/scenarios
sudo cscli hub upgrade
# Update agent
sudo apt install crowdsec --only-upgrade
# Reiniciar
sudo systemctl restart crowdsec
Renovar SSL
# Renovar certificados
sudo certbot renew
# Forçar renovação (se próximo da expiração)
sudo certbot renew --force-renewal
# Recarregar Nginx
sudo systemctl reload nginx
# Verificar expiração
sudo certbot certificates
🚨 Troubleshooting
Nginx Não Inicia
# Ver erro
sudo nginx -t
# Ver logs
sudo journalctl -u nginx -xe
# Verificar portas em uso
sudo netstat -tlnp | grep -E ':80|:443'
# Matar processos antigos
sudo pkill -9 nginx
sudo systemctl start nginx
SSL Errors
# Verificar certificados
ls -la /etc/letsencrypt/live/fsociety.pt/
# Permissões
sudo chown -R root:root /etc/letsencrypt
sudo chmod -R 755 /etc/letsencrypt
# Testar SSL
openssl s_client -connect fsociety.pt:443 -servername fsociety.pt
Rate Limiting Issues
# Ver zona de rate limit
sudo nginx -T | grep limit_req_zone
# Aumentar limites temporariamente (editar nginx.conf)
limit_req_zone ... rate=20r/s; # Era 10r/s
sudo nginx -t
sudo systemctl reload nginx
CrowdSec Ban Incorreto
# Ver decisões
sudo cscli decisions list
# Remover ban
sudo cscli decisions delete --ip 1.2.3.4
# Adicionar a whitelist
sudo nano /etc/crowdsec/parsers/s02-enrich/whitelist.yaml
# Recarregar
sudo systemctl reload crowdsec
🛠️ Comandos Úteis
Nginx
# Testar configuração
sudo nginx -t
# Recarregar (sem downtime)
sudo systemctl reload nginx
# Reiniciar
sudo systemctl restart nginx
# Ver config completa
sudo nginx -T
# Ver módulos carregados
nginx -V
CrowdSec
# Status
sudo cscli metrics
sudo cscli hub list
# Bouncers
sudo cscli bouncers list
# Decisões
sudo cscli decisions list
# Alertas
sudo cscli alerts list
# Ban manual
sudo cscli decisions add --ip 1.2.3.4 --duration 24h
# Unban
sudo cscli decisions delete --ip 1.2.3.4
Logs
# Limpar logs antigos
sudo find /var/log/nginx -name "*.gz" -delete
sudo journalctl --vacuum-time=7d
# Rodar logs manualmente
sudo logrotate -f /etc/logrotate.d/nginx
📝 Checklist de Manutenção Mensal
- Verificar espaço em disco
- Verificar logs por erros
- Atualizar sistema e Nginx
- Renovar SSL (se necessário)
- Verificar decisões CrowdSec
- Limpar logs antigos (>30 dias)
- Testar acesso a todos os vhosts
- Verificar backups
- Verificar rate limiting
- Update CrowdSec hub
📖 Referências
**[⬅️ Voltar: CrowdSec](/fsociety-infrastructure/06-webserver/09-crowdsec.html)** | **[Voltar ao README ⬆️](/fsociety-infrastructure/06-webserver/)**
Última atualização: Dezembro 2025