Перейти к содержимому

CrowdSec

Это содержимое пока не доступно на вашем языке.

O motor de segurança: decisões ativas e de onde elas vêm, alertas, bouncers que pararam de buscar, linhas de log lidas e as que nenhum analisador reconheceu, e se a Local API responde.

O DumbMonit lê as métricas Prometheus do CrowdSec (porta 6060) e verifica /health da Local API (porta 8080). Com uma chave de bouncer opcional, ele também pede à Local API as decisões sobre 192.0.2.1, um endereço de documentação: a resposta é sempre vazia, e prova que a autenticação e o banco de dados respondem. Ele nunca cria ou exclui uma decisão e nunca baixa a lista de banimento.

A falha que vale a pena observar é um bouncer que parou de buscar. O firewall ou proxy reverso continua rodando com a lista que tinha, novos atacantes passam, e nada reclama. O CrowdSec não publica quando um bouncer buscou por último; o DumbMonit lê isso a partir do contador de requisições do bouncer, que para de se mover. A segunda é uma aquisição que quebrou (um arquivo de log renomeado, um contêiner recriado): o CrowdSec não lê nada, não vê nenhum ataque, e permanece verde.

Todas as métricas têm o prefixo dumbmonit_crowdsec_. Os totais são contadores: gráficos e regras os transformam em taxas.

MétricaO que éRótulos
version_infovalor 1version
lapi_up1 quando a Local API responde /health
lapi_decisions_okcom uma chave de bouncer: 1 quando a Local API respondeu à consulta de decisão
decisionsdecisões ativas, incluindo blocklists da comunidade
decisions_by_originorigin: crowdsec, cscli, CAPI, lists…
alertsalertas mantidos pela Local API, excluindo os da comunidade
bouncers_seenbouncers que chamaram a Local API desde que o CrowdSec iniciou
bouncer_requests_totalrequisições de cada bouncer; quando para de se mover, o bouncer parou de buscarbouncer
machine_requests_totalrequisições de cada agente (máquina)machine
lapi_requests_totaltodas as requisições à Local API
scenario_overflows_totalcenários disparados pelo agente local: cada um é um alerta
lines_read_total, lines_parsed_total, lines_unparsed_totallinhas de log lidas pelo agente, e as analisadas ou não
source_lines_total, source_lines_unparsed_totalo mesmo por fonte de logsource
bucketsbuckets de cenário atualmente abertos
alerts_recentcom um login de máquina: alertas locais das últimas 24 horas lidos da Local API
alerts_by_countrycom um login de máquina: esses alertas por país de origem (source.cn)country

As famílias da Local API aparecem onde a Local API roda, as famílias de log onde um agente lê logs; a imagem oficial e uma instalação padrão rodam ambos.

As regras integradas que se aplicam: CrowdSec Local API down, CrowdSec bouncer stopped pulling, CrowdSec reads no logs, além de Monitor unreachable.

O painel acima dos gráficos lê o que a sondagem armazenou; abrir a página nunca consulta o CrowdSec. Ele diz o que está errado em uma frase (Local API, bouncers, leitura de log e a parcela de linhas que nenhum analisador reconheceu), depois as decisões ativas, alertas mantidos, cenários disparados nas últimas 24 horas e linhas lidas por segundo, depois o tempo desde que cada bouncer buscou por último, as decisões por origem e a parcela não analisada de cada fonte de log.

Com um login de máquina, aparece um mapa de ameaças: os alertas das últimas 24 horas, coloridos por país. As mesmas contagens alimentam o mapa de ameaças da página Segurança, ao lado dos bloqueios dos firewalls e das ameaças do Cloudflare.

  1. O CrowdSec publica suas métricas em 127.0.0.1:6060 por padrão. Defina listen_addr na seção prometheus de /etc/crowdsec/config.yaml para um endereço que o DumbMonit possa alcançar, depois reinicie o CrowdSec. A imagem Docker oficial já escuta em toda interface.

    sudo sed -i 's/listen_addr: 127.0.0.1/listen_addr: 0.0.0.0/' /etc/crowdsec/config.yaml
    sudo systemctl restart crowdsec
  2. As métricas não precisam de credencial: elas contêm contagens, nomes de bouncer e máquina e caminhos de arquivo de log, nunca um endereço IP. Filtre a porta 6060 para que só o host DumbMonit a alcance, e verifique que ela responde.

    curl -s http://crowdsec.lan:6060/metrics | grep cs_info
  3. O DumbMonit também verifica /health da Local API, na porta 8080 do mesmo host: listen_uri na seção api.server precisa então estar acessível também. Desmarque Verificar a Local API para um host que só roda um agente.

  4. Opcional: crie uma chave de bouncer para o DumbMonit e cole-a como Chave de API de bouncer abaixo. Uma chave de bouncer só pode ler decisões. O DumbMonit pede as decisões sobre 192.0.2.1, um endereço de documentação, então a resposta é sempre vazia e a lista de banimento nunca é baixada.

    sudo cscli bouncers add dumbmonit
  5. Ou, para o mapa de ameaças da página Segurança: crie um login de máquina e escolha Login de máquina abaixo. Só o país de cada alerta é guardado.

    sudo cscli machines add dumbmonit --password 'a-long-password'
  6. No DumbMonit, informe o host CrowdSec, por exemplo “crowdsec.lan”. Onde a Local API e os agentes rodam em hosts diferentes, adicione cada host: decisões, alertas e bouncers são contados onde a Local API roda, linhas de log onde cada agente as lê.

Um bouncer excluído com cscli bouncers delete mantém seu contador até o CrowdSec reiniciar, e é reportado como parado até então. Um bouncer que só chama a Local API quando atende uma requisição (um bouncer de proxy reverso em modo live) pode ficar quieto por meia hora em uma noite calma; mude-o para o modo stream, ou aumente a janela da regra.

CredencialCampos
Apenas métricasNada: lê /metrics, e /health da Local API.
Chave de API de bouncerA chave impressa por cscli bouncers add dumbmonit, enviada como X-Api-Key à Local API.
Login de máquinaO nome e a senha dados a cscli machines add. O DumbMonit faz login (/v1/watchers/login) e lê os alertas locais das últimas 24 horas (/v1/alerts, sem os da comunidade), guardando só o país de cada um: nenhum endereço é armazenado.

Endereço: um nome de host ou IP (crowdsec.lan), host:porta para as métricas, ou uma URL completa. Opções: protocolo (HTTP por padrão), porta das métricas (6060), Verificar a Local API (ativado), porta da Local API (8080), verificação de certificado e tempo limite da requisição (10 s). Itens do Hub (analisadores, cenários, coleções) que estão corrompidos ou desatualizados não são visíveis através das métricas, apenas com cscli hub list no host.