Instalar o CrowdSec
Instalação do agente e bouncer no Ubuntu:
# Adicionar repositório oficial:
curl -s https://packagecloud.io/install/repositories/crowdsec/crowdsec/script.deb.sh \
| sudo bash
# Instalar CrowdSec e bouncer para firewall:
sudo apt install -y crowdsec crowdsec-firewall-bouncer-iptables
# Verificar instalação:
sudo cscli version
sudo systemctl status crowdsec
# Ver cenários instalados (padrão: ssh, web attacks, etc.):
sudo cscli collections list
# Ver decisões de ban ativas:
sudo cscli decisions list
# Ver alertas detectados:
sudo cscli alerts list
# Métricas em tempo real:
sudo cscli metricsConfigurar coleções para Nginx e outros serviços
Instalar parsers e cenários para os serviços em execução:
# Instalar coleções populares:
sudo cscli collections install crowdsecurity/nginx
sudo cscli collections install crowdsecurity/linux
sudo cscli collections install crowdsecurity/sshd
sudo cscli collections install crowdsecurity/http-cve # CVEs web conhecidas
sudo cscli collections install crowdsecurity/wordpress # ataques WordPress
# Ver coleções disponíveis:
sudo cscli hub list
# Configurar datasources — /etc/crowdsec/acquis.yaml:
# Adicionar logs do Nginx:
cat >> /etc/crowdsec/acquis.yaml << 'EOF'
---
filenames:
- /var/log/nginx/access.log
- /var/log/nginx/error.log
labels:
type: nginx
EOF
# Reiniciar após mudanças:
sudo systemctl reload crowdsec
# Verificar se os logs estão sendo lidos:
sudo cscli metrics | grep nginxInstalar o bouncer do Nginx (mais eficiente)
Bloqueio diretamente no Nginx em vez de firewall iptables:
# Bouncer para Nginx — bloqueia na camada HTTP (retorna 403):
sudo apt install -y crowdsec-nginx-bouncer
# Configurar /etc/crowdsec/bouncers/nginx.conf:
# (gerado automaticamente, apenas verificar)
cat /etc/crowdsec/bouncers/nginx.conf
# Adicionar ao nginx.conf principal:
# /etc/nginx/conf.d/crowdsec.conf:
lua_package_path '/usr/lib/crowdsec/lua/nginx/?.lua;;';
lua_shared_dict crowdsec_cache 50m;
init_by_lua_block {
cs = require "crowdsec"
local ok, err = cs.init("/etc/crowdsec/bouncers/crowdsec-nginx-bouncer.conf")
if ok == nil then
error(err)
end
}
access_by_lua_block {
local ok, err = cs.allow(ngx.var.remote_addr)
if ok == nil then
error(err)
end
}
# Testar config e reiniciar nginx:
sudo nginx -t && sudo systemctl reload nginxGerenciar IPs: whitelist, blacklist e decisões manuais
Controle manual sobre a lista de IPs banidos:
# Ver todas as decisões ativas:
sudo cscli decisions list
# Banir IP manualmente (por 24h):
sudo cscli decisions add --ip 192.168.1.100 --duration 24h --reason "teste manual"
# Banir range de IPs (CIDR):
sudo cscli decisions add --range 185.220.101.0/24 --duration 72h --reason "tor exit node"
# Banimento permanente:
sudo cscli decisions add --ip 1.2.3.4 --duration 8760h --reason "atacante recorrente"
# Remover ban de IP:
sudo cscli decisions delete --ip 1.2.3.4
# Whitelist — nunca banir esses IPs:
sudo cscli whitelists add --scope ip --value 177.10.0.1 --reason "meu IP fixo"
# Ver whitelist:
sudo cscli whitelists list
# Exportar lista de IPs banidos:
sudo cscli decisions list --output json | jq '.[].value' | sort -uDashboard e integração com a comunidade CrowdSec
Conectar ao CrowdSec Central API e usar listas de bloqueio comunitárias:
# Registrar a instância no CrowdSec (gratuito):
sudo cscli console enroll CHAVE_DO_DASHBOARD
# O CrowdSec Central API fornece:
# - Blocklists comunitárias (IPs atacando outras instâncias)
# - Dashboard web para visualizar ataques
# - Relatórios de segurança
# Instalar blocklist premium (gratuita para self-hosted):
sudo cscli bouncers add nome-do-bouncer
sudo cscli hub upgrade
# Ver estatísticas de bloqueio:
sudo cscli metrics show acquisition
sudo cscli metrics show parsers
sudo cscli metrics show scenarios
# Logs do CrowdSec:
sudo journalctl -u crowdsec -f
# Modo debug para troubleshooting:
sudo cscli explain --log "Jun 07 10:00:00 srv sshd: Failed password for root from 1.2.3.4" --type sshd