Conjunto modular de ferramentas de produção, scripts de automação, rotinas de contingência GFS, sistemas de detecção de intrusão baseados em host (HIDS) e automação de WAF/Fail2ban para administração de servidores Linux e VPS em alta disponibilidade.
Desenvolvido por Rafael Soje — Administrador de Sistemas Linux e Especialista em Segurança da Informação & DevSecOps.
linux-sysadmin-toolbox/
├── backup/
│ ├── backup-hetzner-gfs.sh # Rotina de backup GFS com hash SHA-256 e sincronização Rclone
│ ├── backup-mysql.sh # Dump seguro de MySQL/MariaDB com gzip e retenção local
│ └── rclone-dedupe.sh # Desduplicação automatizada em remotes Rclone
├── system/
│ ├── create-swap.sh # Alocação de Swap com permissões 0600 e persistência no fstab
│ ├── docker-cleanup.sh # Manutenção e higienização do Docker com truncamento de logs
│ ├── sysinfo.sh # Diagnóstico consolidado de hardware, kernel, carga e rede
│ └── userinfo.sh # Auditoria de contas locais, diretório home, UID/GID e lastlog
├── network/
│ └── tor-proxy-manager.sh # Gerenciador CLI de proxy SOCKS5 (Tor local)
├── security-hardening/
│ ├── config.example.env # Template seguro para credenciais de API e alertas
│ ├── setup-hids.sh # Instalador e inicializador automatizado da suíte HIDS
│ ├── nginx-hardening.conf # Snippet de cabeçalhos e diretivas defensivas para Nginx
│ ├── cloudflare-waf-rules.json # Regras customizadas exportadas do Cloudflare WAF
│ ├── update-abuseipdb-cloudflare.py # Sincronizador diário de reputação AbuseIPDB -> Cloudflare WAF Lists
│ ├── f2b-nginx-cloudflare-block.py # Bloqueio em camada dupla (Nginx RealIP map + Cloudflare Edge WAF)
│ ├── f2b-telegram-notify.py # Alertas forenses via Telegram com análise de probes e força bruta SSH
│ └── hids/
│ ├── chat-telegram.sh # Script universal de alertas via Telegram Bot API
│ ├── monitorar-portas.sh # Monitoramento com diff de portas abertas (críticas vs essenciais)
│ ├── monitorar-pacotes.sh # Auditoria de pacotes instalados/removidos via dpkg
│ ├── arquivos-criticos-fim.sh # File Integrity Monitoring (FIM) com hashes SHA-256 e exclusões
│ └── monitorar-bits-especiais.sh # Detecção de novos binários com bits especiais SUID/SGID
├── systemd/
│ ├── backup-hetzner.service # Unit systemd para rotina de backup
│ ├── backup-hetzner.timer # Agendamento diário do backup (03:00)
│ ├── abuseipdb-sync.service # Unit systemd para sincronização com Cloudflare WAF
│ ├── abuseipdb-sync.timer # Agendamento diário de reputação (04:00)
│ └── rclone-mount.service # Unit para montagem de storage remoto via FUSE
├── LICENSE # Licença MIT
└── README.md # Documentação técnica completa
Rotina de backup automatizada com verificação criptográfica de integridade por hash SHA-256 e política de retenção GFS (Grandfather-Father-Son):
- Integridade Criptográfica: Gera hash SHA-256 local antes do envio e valida diretamente contra a cópia remota no Rclone antes de expurgar arquivos temporários locais.
- Política GFS:
- Diário (Son): Mantido por 7 dias.
- Semanal (Father): Promovido aos domingos, retido por 30 dias.
- Mensal (Grandfather): Promovido no dia 01, retido por 180 dias.
- Anual: Promovido no dia 01 de janeiro, retido por 2 anos.
chmod +x backup/backup-hetzner-gfs.sh
./backup/backup-hetzner-gfs.shDump consistente de bancos MySQL/MariaDB sem credenciais expostas no código:
- Autenticação segura via
~/.my.cnf(permissão0600) ou variáveis de ambiente (MYSQL_USER,MYSQL_PWD,MYSQL_HOST). - Compactação
gzip -9em pipeline sem overhead de arquivos temporários descompactados em disco. - Rotação e expurgo automático de dumps locais com mais de N dias.
Criação automatizada de Swap File no Linux:
- Aloca com
fallocatede alta performance ou fallback automático paradd. - Aplica permissões restritas
0600e formata commkswap. - Registra persistentemente em
/etc/fstabcom prevenção contra entradas duplicadas.
sudo ./system/create-swap.sh 4G /swapfileManutenção e liberação periódica de espaço em disco no Docker:
- Expura containers parados, redes órfãs e imagens sem uso (dangling).
- Limpa cache de compilação (BuildKit cache).
- Trunca logs excessivos de containers (
*-json.log) sem derrubar os serviços ativos.
# Execução padrão (limpeza com truncamento de logs > 50MB):
sudo ./system/docker-cleanup.sh
# Apenas verificar espaço recuperável sem alterar nada:
./system/docker-cleanup.sh --dry-runRelatório instantâneo de diagnóstico do servidor: Kernel, arquitetura, Uptime, Load Average, Cores da CPU, consumo consolidado de RAM/Swap, particionamento e interfaces de rede.
Audita contas locais no sistema para conformidade de privilégios (UID, GID, grupos, espaço em uso na home e último login via lastlog).
Ativação e verificação de conectividade via rede Tor através do túnel SOCKS5 local (127.0.0.1:9050):
# Testar conectividade:
./network/tor-proxy-manager.sh status
# Exportar variáveis para a sessão atual do shell:
source ./network/tor-proxy-manager.sh onMódulo avançado de proteção perimetral, integração de WAF na borda e detecção de intrusão local:
Sincroniza automaticamente a blacklist de reputação global do AbuseIPDB com as listas de regras customizadas do Cloudflare WAF (IP Lists):
- Baixa até 10.000 IPs maliciosos com pontuação de abuso
$\ge 90%$ . - Tratamento automático de rate limits (HTTP 429) com parsing do cabeçalho
X-RateLimit-Reset. - Upload em lote via API v4 do Cloudflare com monitoramento da operação assíncrona.
Integração de resposta ativa do Fail2ban com bloqueio em camada dupla:
- Camada de Borda (Cloudflare WAF): Cria regra de bloqueio direto na API do Cloudflare, impedindo que o tráfego malicioso consuma largura de banda do VPS.
- Camada Local (Nginx RealIP): Mantém um mapa em memória (
blocked.map) alimentado pelo Fail2ban para descartar conexões instantaneamente com HTTP 444.
Notificador de incidentes de segurança com extração forense:
- Analisa logs do Nginx para extrair os exatos payloads/rotas sensíveis sondadas (
.env,.git, AWS, ModSecurity 403). - Analisa o journal do
sshdpara listar quais nomes de usuários foram tentados no ataque de força bruta. - Emite alertas imediatos no Telegram com nível de severidade e tempo de banimento.
Definições exportadas das regras personalizadas de proteção em borda (Cloudflare WAF Custom Rules):
Block by IP Lists: malicious_ips: Bloqueio ativo alimentado dinamicamente pelo scriptupdate-abuseipdb-cloudflare.py.Bots e Crawlers de Ferramentas de Pentest / Scanner: Bloqueio de User-Agents maliciosos (Nikto, Nmap, SQLmap, Acunetix, WPScan, Dirbuster, Scrapy, etc.).Acesso a Arquivos e Diretórios Críticos: Bloqueio perimetral de requisições a.env,.git,.yaml,.sql, backups (.bak,.tar.gz),/actuator,phpmyadmine painéis administrativos.Transversal Path | XSS | SQLi | Wrappers SSRF | Command Injection: Interceptação em camada de borda contra Path Traversal (../, URL encoded%2e%2e%2f), SQL Injection (union select,sleep()), XSS (<script>), PHP stream wrappers (php://,gopher://) e Command Injection (;id,;cat,;bash).
Snippet modular para inclusão em servidores Nginx de produção:
- Ativação de cabeçalhos de segurança: HSTS (
max-age=31536000), X-Frame-Options, X-Content-Type-Options e Permissions-Policy. - Ocultação de versão do Nginx (
server_tokens off). - Bloqueio silencioso (HTTP 444) contra download de arquivos ocultos (
.env,.git) e backups (.sql,.bak,.tar.gz). - Buffers dimensionados para mitigação de ataques de exaustão e Slowloris.
Instalador interativo da suíte HIDS:
- Cria estrutura de diretórios e arquivos de configuração.
- Gera baselines criptográficos iniciais do host em
/home/$USER/.hids/logs/. - Exibe instruções prontas para agendamento no
cronousystemd.
./security-hardening/setup-hids.shmonitorar-portas.sh: Monitoramento contínuo das portas em escuta (ss -tunlp). Emite alerta imediato caso portas críticas (21, 23, 25, 8080) sejam abertas ou portas vitais (22, 443) fiquem indisponíveis.monitorar-pacotes.sh: Auditoria do gerenciador de pacotes (dpkg), alertando sobre instalação ou remoção inadvertida de softwares e binários.arquivos-criticos-fim.sh: File Integrity Monitoring (FIM) baseado em checksums SHA-256 de diretórios sensíveis (/etc/nginx,/etc/ssh, etc.), detectando injeção de web shells, backdoors ou adulterações de configuração.monitorar-bits-especiais.sh: Rastreia binários com permissões especiaisSUID(4000) eSGID(2000), identificando potenciais vetores de escalada de privilégios.
Arquivos de unidade prontos para produção:
backup-hetzner.service/.timer: Executa a rotina GFS diariamente às 03:00.abuseipdb-sync.service/.timer: Atualiza a lista do Cloudflare WAF diariamente às 04:00.rclone-mount.service: Montagem persistente de volumes em nuvem com cache VFS.
# Exemplo de ativação de timer:
sudo cp systemd/abuseipdb-sync.* /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now abuseipdb-sync.timer- Zero Hardcoded Secrets: Nenhuma credencial, token do Telegram ou chave de API reside no código. Todas as configurações utilizam variáveis de ambiente ou arquivos
config.envprotegidos com permissão0600. - POSIX / Bash Safe Mode: Todos os scripts utilizam
set -euo pipefailpara interrupção imediata em caso de falha em pipes ou variáveis não declaradas. - Defesa em Profundidade: Proteção combinando borda (Cloudflare), WAF aplicacional (ModSecurity / Nginx) e monitoramento de integridade do host (HIDS).
Rafael Soje
- Website Oficial: rafaelsoje.com
- GitHub: @rafaelsoje
- Especialidade: Linux System Administration, DevSecOps, Segurança da Informação e Arquitetura Web.