CrowdSec HAProxy Bouncer: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „CrowdSec läuft als IDS/IPS und kommuniziert über den SPOE-Mechanismus direkt mit HAProxy. Blockentscheidungen werden auf Proxy-Ebene getroffen, bevor der Req…“)
 
 
Zeile 1: Zeile 1:
 +
===Was ist das?===
 
CrowdSec läuft als IDS/IPS und kommuniziert über den SPOE-Mechanismus direkt mit HAProxy. Blockentscheidungen werden auf Proxy-Ebene getroffen, bevor der Request das Backend erreicht.
 
CrowdSec läuft als IDS/IPS und kommuniziert über den SPOE-Mechanismus direkt mit HAProxy. Blockentscheidungen werden auf Proxy-Ebene getroffen, bevor der Request das Backend erreicht.
  

Aktuelle Version vom 23. Mai 2026, 13:35 Uhr

Was ist das?

CrowdSec läuft als IDS/IPS und kommuniziert über den SPOE-Mechanismus direkt mit HAProxy. Blockentscheidungen werden auf Proxy-Ebene getroffen, bevor der Request das Backend erreicht.

Voraussetzung
CrowdSec ist installiert und läuft (siehe CrowdSec)

Installation

  • apt install crowdsec-haproxy-bouncer

SPOE-Konfiguration

Der Bouncer legt automatisch eine SPOE-Konfigurationsdatei an:

/etc/haproxy/spoe-crowdsec.conf

Inhalt prüfen:

  • cat /etc/haproxy/spoe-crowdsec.conf
[config]
  spoe-agent crowdsec
    messages    check-client-ip
    option      var-prefix      crowdsec
    timeout     hello           100ms
    timeout     idle            30s
    timeout     processing      50ms
    use-backend crowdsec_backend

  spoe-message check-client-ip
    args src
    event on-client-session

HAProxy Konfiguration erweitern

  • nano /etc/haproxy/haproxy.cfg

Im global-Block ergänzen:

global
    # ... bestehende Einträge ...
    lua-prepend-path /usr/lib/crowdsec/lua/haproxy/?.lua
    lua-load /usr/lib/crowdsec/lua/haproxy/crowdsec.lua
    setenv CROWDSEC_API_KEY <DEIN_BOUNCER_KEY>
    setenv CROWDSEC_API_URL http://127.0.0.1:8080

Im frontend ft_https ergänzen:

frontend ft_https
    # ... bestehende Einträge ...
    filter spoe engine crowdsec config /etc/haproxy/spoe-crowdsec.conf
    http-request lua.crowdsec_allow
    http-request deny deny_status 403 if { var(txn.crowdsec.action) -m str "ban" }

Backend für den CrowdSec-Agent hinzufügen:

backend crowdsec_backend
    server crowdsec 127.0.0.1:7422

Bouncer-Key generieren

  • cscli bouncers add haproxy-bouncer

Den ausgegebenen Key in die HAProxy-Konfiguration unter CROWDSEC_API_KEY eintragen.

Konfiguration testen und neu laden

  • haproxy -c -f /etc/haproxy/haproxy.cfg
  • systemctl reload haproxy

Test

CrowdSec-Entscheidungen anzeigen:

  • cscli decisions list

Eine Test-IP manuell bannen:

  • cscli decisions add --ip 10.88.2XX.99 --duration 5m --reason "Test"

Vom gebannten Client aus sollte ein HTTP 403 zurückkommen. Ban wieder entfernen:

  • cscli decisions delete --ip 10.88.2XX.99

Logs beobachten:

  • journalctl -fu haproxy
  • journalctl -fu crowdsec