CrowdSec: proteção colaborativa contra IPs maliciosos

    CrowdSec é a evolução do Fail2ban — analisa logs como ele, mas compartilha inteligência de ameaças com uma rede colaborativa global. Se um IP atacar outro servidor CrowdSec em qualquer lugar do mundo, seu servidor já fica protegido antes mesmo de ser atacado. Listas de IPs maliciosos atualizadas em tempo real, sem custo.

    Instalar o CrowdSec

    Instalação do agente e bouncer no Ubuntu:

    bash
    # 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 metrics

    Configurar coleções para Nginx e outros serviços

    Instalar parsers e cenários para os serviços em execução:

    bash
    # 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 nginx

    Instalar o bouncer do Nginx (mais eficiente)

    Bloqueio diretamente no Nginx em vez de firewall iptables:

    bash
    # 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 nginx

    Gerenciar IPs: whitelist, blacklist e decisões manuais

    Controle manual sobre a lista de IPs banidos:

    bash
    # 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 -u

    Dashboard e integração com a comunidade CrowdSec

    Conectar ao CrowdSec Central API e usar listas de bloqueio comunitárias:

    bash
    # 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

    $ 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.

    Perguntas frequentes