Skip to content

Crowdsec - Ein fail2ban Ersatz?

Linux
  • Ich spiele ja die letzte Zeit ein wenig mit Ansible, Semaphore und hcloud herum. Dabei habe ich angefangen einen Server so einzurichten, wie ich das benötige. Eines der Standardtools ist fail2ban.

    Beim Testen fiel mir dann auf, das der Service nicht startet. Alles findet auf einem Debian Bookworm 12 statt, das up to Date ist. Alle Pakete aktuell, neuer Kernel und durchgestartet.

    × fail2ban.service - Fail2Ban Service
         Loaded: loaded (/lib/systemd/system/fail2ban.service; enabled; preset: enabled)
         Active: failed (Result: exit-code) since Sun 2023-08-27 11:31:16 UTC; 2min 7s ago
       Duration: 360ms
           Docs: man:fail2ban(1)
        Process: 4830 ExecStart=/usr/bin/fail2ban-server -xf start (code=exited, status=255/EXCEPTION)
       Main PID: 4830 (code=exited, status=255/EXCEPTION)
            CPU: 174ms
    
    Aug 27 11:31:16 test-server systemd[1]: Started fail2ban.service - Fail2Ban Service.
    Aug 27 11:31:16 test-server fail2ban-server[4830]: 2023-08-27 11:31:16,796 fail2ban.configreader   [4830]: WARNING 'allowipv6' not defined in 'Definition'. Using default one: 'auto'
    Aug 27 11:31:16 test-server fail2ban-server[4830]: 2023-08-27 11:31:16,846 fail2ban                [4830]: ERROR   Failed during configuration: Have not found any log file for sshd jail
    Aug 27 11:31:16 test-server fail2ban-server[4830]: 2023-08-27 11:31:16,855 fail2ban                [4830]: ERROR   Async configuration of server failed
    Aug 27 11:31:16 test-server systemd[1]: fail2ban.service: Main process exited, code=exited, status=255/EXCEPTION
    Aug 27 11:31:16 test-server systemd[1]: fail2ban.service: Failed with result 'exit-code'.
    

    Ich hatte dann den Fehler versucht, mit Hilfe des Internets zu fixen. Keine Chance - nix vernünftiges gefunden. Interessanterweise funktionieren alle meinen Server, wo fail2ban drauf war. Naja, wofür kennt man Systemadministratoren 🙂 Mal kurz nachgefragt, kommt CrowdSec als Antwort.

    Und ich stand im Regen, weil es doch ein sehr mächtiges Tool ist, aber es geht - wenn man weiß wie.

    Installation

    Ok, ist in Debian drin

    apt install crowdsec
    

    Am Anfang getestet, aber es bannt nicht!? Doku lesen und dann verstehen, das man Firewall Bouncer installieren muss, damit das klappt.

    apt install crowdsec-firewall-bouncer
    

    Ok, danach bannt er auch. Sieht dann z.B. so aus

    /etc/crowdsec# cscli decisions list
    ╭───────┬──────────┬───────────────────┬──────────────────────┬────────┬─────────┬────┬────────┬────────────────────┬──────────╮
    │  ID   │  Source  │    Scope:Value    │        Reason        │ Action │ Country │ AS │ Events │     expiration     │ Alert ID │
    ├───────┼──────────┼───────────────────┼──────────────────────┼────────┼─────────┼────┼────────┼────────────────────┼──────────┤
    │ 15006 │ crowdsec │ Ip:185.186.129.12 │ crowdsecurity/ssh-bf │ ban    │         │    │ 6      │ 3h55m46.005175855s │ 7        │
    │ 15005 │ crowdsec │ Ip:154.93.3.90    │ crowdsecurity/ssh-bf │ ban    │         │    │ 6      │ 3h32m15.506170007s │ 6        │
    │ 15003 │ crowdsec │ Ip:156.224.22.119 │ crowdsecurity/ssh-bf │ ban    │         │    │ 6      │ 3h3m52.255275177s  │ 4        │
    ╰───────┴──────────┴───────────────────┴──────────────────────┴────────┴─────────┴────┴────────┴────────────────────┴──────────╯
    

    Jetzt weiß man ja auch von fail2ban, das die Loggs dazu geparst werden und an Hand dieser Eintröge, die IPs gebannt werden. Ok, wie funktioniert das bei CrowdSec?

    Nach der Installation auf meinem Vaultwarden-Server, sieht das so aus.

    :/etc/crowdsec# ls collections/
    apache2.yaml  base-http-scenarios.yaml  http-cve.yaml  linux.yaml  nginx.yaml  sshd.yaml
    

    Das sind die Dienste die überwacht werden. Ok, jetzt läuft da drauf aber ein Vaultwarden. Wie sichert man das jetzt ab? Man installiert folgendes

    cscli scenarios install Dominic-Wagner/vaultwarden-bf
    

    Das ist ein Scenario, das alleine bannt aber nicht. Dazu braucht man auch noch den Parser, der die Logs durchsucht.

    cscli parsers install Dominic-Wagner/vaultwarden-logs
    

    cscli ist dabei das Konsolen Tool womit man CrowdSec administriert.

    :/etc/crowdsec# cscli -h
    cscli is the main command to interact with your crowdsec service, scenarios & db.
    It is meant to allow you to manage bans, parsers/scenarios/etc, api and generally manage you crowdsec setup.
    

    Ok, danach bannt er auch bei Attacken auf Vaultwarden.

    :/etc/crowdsec# cscli decisions list
    ╭───────┬──────────┬────────────────────────────────────────┬───────────────────────────────┬────────┬─────────┬────┬────────┬────────────────────┬──────────╮
    │  ID   │  Source  │              Scope:Value               │            Reason             │ Action │ Country │ AS │ Events │     expiration     │ Alert ID │
    ├───────┼──────────┼────────────────────────────────────────┼───────────────────────────────┼────────┼─────────┼────┼────────┼────────────────────┼──────────┤
    │ 15004 │ crowdsec │ Ip:2a00:20:50:4d97:772c:223d:xxxx:xxxx │ Dominic-Wagner/vaultwarden-bf │ ban    │         │    │ 6      │ 3h59m39.152802204s │ 5        │
    │ 15003 │ crowdsec │ Ip:156.224.22.119                      │ crowdsecurity/ssh-bf          │ ban    │         │    │ 6      │ 3h55m56.024683977s │ 4        │
    ╰───────┴──────────┴────────────────────────────────────────┴───────────────────────────────┴────────┴─────────┴────┴────────┴────────────────────┴──────────╯
    

    Kurzer Hinweis. Ich habe ja für Vaultwarden das Logging umgeswitcht, damit das besser mit fail2ban zusammen arbeiten konnte. Das habe ich heute wieder auf die Standardeinstellungen zurückgestellt, damit der Parser auch was findet. Standardpfad ist jetzt wieder /var/log

    Hier noch kurz der Befehl, wie man einen Ban wieder entfernen kann. Standard bleibt der Ban 4 Stunden erhalten.

    cscli decisions delete --id 15004
    

    CrowdSec kann noch viel mehr, da kann man noch ganz viel mit Spielen 🙂 Auf diesem Bild sieht man das Konzept von CrowdSec.

    crowdsec_ecosystem.png
    Bildquelle: https://docs.crowdsec.net/docs/intro

    Die Dokumentation von CrowdSec findet man hier

    Viel Spaß!

    Und wenn jemand Erfahrungen damit hat, würde ich mich über Kommentare freuen.

  • Ich kann jetzt hier von meiner ersten Erfahrung berichten und wie CrowdSec mich gebannt hat 🙂

    Was war passiert? Ich war gestern sehr intensiv mit der Konfiguration von Nextcloud <-> Collabora Online beschäftigt. Nachdem ich irgendwie nicht weiterkam habe ich mich der Erstellung eines Dokumentes gewidmet. Nach einiger Zeit war die Nextcloud nicht mehr erreichbar.

    Ok, hatte ich bei der Konfiguration auch schon mal, den Server einmal neugestartet und fertig. Doch jetzt kam es, Server neugestartet - hilft nicht. Gut, schauen wir mal nach, Der SSH Login ging auch nicht 😞

    Jetzt war guter Rat gefragt. Zu diesem Zeitpunkt ging ich noch davon aus, das auf diesem Server kein CrowdSec installiert war, sondern fail2ban. Und fail2ban hatte eine sehr kurze Bantime vom 10M.

    Also blieb wohl nur noch das Rescue System von Hetzner.

    488866bc-3dcf-4abc-9e98-6107d65aa4c7-grafik.png

    Da hatte ich ja so gut wie gar keine Erfahrung mit. Also mal kurz den Nico angetriggert und es kam folgender Link.

    Das Laufwerk war schnell bestimmt und schnell nach /tmp gemountet. Danach musste man sich noch mit chroot in diese Umgebung anmelden.

    chroot-prepare /mnt
    chroot /mnt
    

    Nachdem das klappte, habe ich eben fail2ban disabled.

    sysmctl disable fail2ban
    

    Danach das Rescue beendet. Der Server startete wieder und ich kam wieder per SSH drauf. Puuh.
    Bei meiner ersten Kontrolle fiel mir was auf

    root@:~# pstree
    systemd─┬─2*[agetty]
            ├─atd
            ├─cron
            ├─crowdsec─┬─journalctl
            │          └─8*[{crowdsec}]
            ├─crowdsec-firewa───9*[{crowdsec-firewa}]
    

    Wie? Da läuft CrowdSec? Da ich dabei bin die Server auf CrowdSec umzustellen, war das wohl hier schon gemacht, aber leider nicht vernünftig. fail2ban hätte mindestens disabled werden müssen und in meiner Dokumentation war das auch nicht enthalten. 6 setzen!

    CrowdSec besteht ja aus zwei Diensten, CrowdSec und dem Firewall-Bouncer. Der CrowdSec Dienst lief aber nicht, der war irgendwie failed. Ok, starten wir ihn und schauen was passiert. Nachdem er gestarte war mal die Banliste angeschaut.

    cscli decisions list
    

    ergab diesen Eintrag.

    2551501 │ crowdsec │ Ip:5.146.xxx.xxx   │ crowdsecurity/http-crawl-non_statics │ ban    │         │    │ 53     │ 1h5m55.391864693s  │ 1671
    

    Meine IP war gebannt. Dann wissen wir ja , woher die Probleme kamen.

    cscli decisions delete --id 2551501
    

    Nach Eingabe war der Ban entfernt. Na gut, aber da ich aktuell immer noch an der richtigen Konfiguration von NC <-> CODE bastel, könnte das ja wieder passieren. Was machen? Kurz gegoogelt. Es gibt eine Whitelist. Aha!

    /etc/crowdsec/parsers/s02-enrich/whitelists.yaml

    name: crowdsecurity/whitelists
    description: "Whitelist events from private ipv4 addresses"
    whitelist:
      reason: "private ipv4/ipv6 ip/ranges"
      ip: 
        - "127.0.0.1"
        - "::1"
        - "5.146.XXX.XXX"
      cidr:
        - "192.168.0.0/16"
        - "10.0.0.0/8"
        - "172.16.0.0/12"
      # expression:
      #   - "'foo.com' in evt.Meta.source_ip.reverse"
    

    Danach den Dienst neustarten. Jetzt hoffen wir mal, das es hilft.

    Zum Schluss noch was, was mir aufgefallen war und was mich auch sehr verwirrt hatte. CrowdSec hatte wegen einem crowdsecurity/http-crawl-non_statics gebannt. Dadurch konnte ich meine
    subdomain.<DOMAIN> nicht erreichen. Ok, logisch, wenn der Ban von da ausgeht. Ich konnte aber gleichzeitig eine andere subdomain mit derselben <DOMAIN> auch nicht erreichen. Komplett verwirrte es mich dann, als ich eine andere <DOMAIN> auf dem selben Server erreichen konnte. Und zum Schluss ging auch der SSH nicht.

    Also, wieder viel gelernt.. 🤓

  • FrankMF FrankM hat auf dieses Thema verwiesen
  • Restic feiert 10. Geburtstag

    Restic restic linux
    1
    1
    0 Stimmen
    1 Beiträge
    160 Aufrufe
    Niemand hat geantwortet
  • NAS 2023 - Thema Datensicherung

    Verschoben Linux proxmox linux
    2
    2
    0 Stimmen
    2 Beiträge
    186 Aufrufe
    FrankMF
    Bleibt noch etwas wichtiges. Die ganzen Konfigurationsdateien vom Proxmox Host. Sinnvoll, das man sich das sichert. #!/bin/bash # Script um mit Restic Daten automatisiert zu sichern! # Dient zum Sichern des Ordners /etc/pve! # Was soll gesichert werden? backup_pfad=/etc/pve # Programm Start restic --password-file /root/passwd -r /mnt/pve/Restic_Backups/pve backup $backup_pfad > backup_pve_001.log restic --password-file /root/passwd -r /mnt/pve/Restic_Backups/pve forget --keep-last 3 --keep-monthly 3 --prune >> backup_pve_002.log # Testen restic --password-file /root/passwd -r /mnt/pve/Restic_Backups/pve check --read-data >> backup_pve_003.log Crontab eingerichtet - fertig!
  • Debian Bookworm 12 - Test

    Linux debian bookworm linux
    6
    4
    0 Stimmen
    6 Beiträge
    589 Aufrufe
    FrankMF
    Es scheint sich was zu tuen. Ein paar Probleme, gehören der Vergangenheit an. Bitte beachten, ich nutze fast ausschließlich Wayland! [image: 1699092052949-e0c00b53-8f25-4b52-97a3-6fd49a2c5638-grafik.png] Problem VLC Ich nutze zum TV schauen gerne die Listen der Fritzbox. Damit kann man einfach im VLC TV schauen und umschalten usw. Problem war, das sehr oft, das Umschalten nicht korrekt funktionierte. Das scheint mittlerweile gefixt zu sein. DANKE! [image: 1699092017630-56648116-4bbb-461c-b7fd-4a344cc12749-grafik.png] Problem KDE Desktop Der KDE Desktop konnte sich die Positionen der Icons nicht "merken". Ich sortiere die gerne, so das ich die TV-Listen z.B. immer unten rechts vorfinde. Das ging leider lange nicht. Mittlerweile scheint das nervige Problem gefixt zu sein. Ich habe eben sogar extra dafür neugestartet um zu sehen, das die Positionen erhalten bleiben. DANKE! [image: 1699091862623-63f71f34-c208-4b98-b0e9-54c94f3d19f2-grafik.png] Fazit Somit bleibt aktuell noch ein Problem, das wäre OBS. Dafür muss ich aktuell noch immer auf eine X11 Session umschalten. Bitte fixen! Es sieht auch so aus, das am KDE Plasma Desktop recht aktiv gearbeitet wird. Da kommen sehr oft, sehr viele neue Pakete rein. Nein, ich benutze kein Testing, ich bin aktuell auf dem Stable Zweig. So langsam wird der KDE Plasma Desktop - unter Wayland - rund! Bitte beachten, die Wayland Erfahrung hängt extrem von der GPU ab. Unter NVidia wird das auch heute keinen Spaß machen. Mit eingebauter AMD GPU und Intel GPU solltet ihr sehr wenige Probleme haben. Das dürfte auch der Grund sein, warum immer mehr Distributionen ankündigen, in Zukunft nur noch auf Wayland zus setzen. https://linuxiac.com/fedora-40-to-offer-plasma-6-drops-x11-entirely/
  • Proxmox - Backup Server WakeOnLan

    Proxmox proxmox linux wakeonlan
    1
    2
    0 Stimmen
    1 Beiträge
    760 Aufrufe
    Niemand hat geantwortet
  • Debian 11 Bullseye released!

    Linux debian linux
    4
    0 Stimmen
    4 Beiträge
    353 Aufrufe
    FrankMF
    Mein Systemadmin auf der Arbeit meinte heute, angesprochen auf das Problem, läuft der Network-Manager? Ok, gute Frage...... Schauen wir mal. Ich bin mir leider nicht 100% sicher, ob er vor meinem Eingreifen lief, ich denke aber schon. Warum ich unsicher bin? root@debian:~# systemctl enable systemd-networkd.service Created symlink /etc/systemd/system/dbus-org.freedesktop.network1.service → /lib/systemd/system/systemd-networkd.service. Created symlink /etc/systemd/system/multi-user.target.wants/systemd-networkd.service → /lib/systemd/system/systemd-networkd.service. Created symlink /etc/systemd/system/sockets.target.wants/systemd-networkd.socket → /lib/systemd/system/systemd-networkd.socket. Created symlink /etc/systemd/system/network-online.target.wants/systemd-networkd-wait-online.service → /lib/systemd/system/systemd-networkd-wait-online.service. Ok, danach root@debian:~# systemctl start systemd-networkd.service root@debian:~# systemctl status systemd-networkd.service ● systemd-networkd.service - Network Service Loaded: loaded (/lib/systemd/system/systemd-networkd.service; enabled; ven> Active: active (running) since Tue 2021-08-17 17:36:38 CEST; 6s ago TriggeredBy: ● systemd-networkd.socket Docs: man:systemd-networkd.service(8) Main PID: 1288 (systemd-network) Status: "Processing requests..." Tasks: 1 (limit: 19087) Memory: 3.9M CPU: 39ms CGroup: /system.slice/systemd-networkd.service └─1288 /lib/systemd/systemd-networkd Aug 17 17:36:38 debian systemd[1]: Starting Network Service... Aug 17 17:36:38 debian systemd-networkd[1288]: enp25s0: Gained IPv6LL Aug 17 17:36:38 debian systemd-networkd[1288]: Enumeration completed Aug 17 17:36:38 debian systemd[1]: Started Network Service. Danach ging immer noch nix. root@debian:/etc/network# ^C root@debian:/etc/network# nmcli device show GENERAL.DEVICE: wlx7cdd907cbec2 GENERAL.TYPE: wifi GENERAL.HWADDR: BA:59:C0:76:C7:F5 GENERAL.MTU: 1500 GENERAL.STATE: 20 (nicht verfügbar) GENERAL.CONNECTION: -- GENERAL.CON-PATH: -- GENERAL.DEVICE: enp25s0 GENERAL.TYPE: ethernet GENERAL.HWADDR: 30:9C:23:60:C6:8E GENERAL.MTU: 1500 GENERAL.STATE: 10 (nicht verwaltet) GENERAL.CONNECTION: -- GENERAL.CON-PATH: -- WIRED-PROPERTIES.CARRIER: an IP4.ADDRESS[1]: 192.168.3.169/24 IP4.GATEWAY: 192.168.3.1 IP4.ROUTE[1]: dst = 192.168.3.0/24, nh = 0.0.0.0, mt = 0 IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.3.1, mt = 0 IP6.ADDRESS[1]: 2a02:908:1260:13bc:329c:23ff:xxxx:xxxx/64 IP6.ADDRESS[2]: fd8a:6ff:2880:0:329c:23ff:fe60:c68e/64 IP6.ADDRESS[3]: fe80::329c:23ff:fe60:c68e/64 IP6.GATEWAY: fe80::e4d3:f0ff:fe8f:2354 IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 256 IP6.ROUTE[2]: dst = ::/0, nh = fe80::e4d3:f0ff:fe8f:2354, mt = 1024 IP6.ROUTE[3]: dst = 2a02:908:xxxx:xxxx::/64, nh = ::, mt = 256 IP6.ROUTE[4]: dst = fd8a:6ff:2880::/64, nh = ::, mt = 256 Jetzt hatte ich das erste Mal einen Ansatz, wonach ich suchen musste. GENERAL.STATE: 10 (nicht verwaltet) Etwas Suche im Netz und dann das nano /etc/NetworkManager/NetworkManager.conf Inhalt der Datei [main] plugins=ifupdown,keyfile [ifupdown] managed=false Das false in true geändert. Danach ein systemctl restart NetworkManager und ich konnte den Network-Manager auf dem Desktop benutzen!?!?!? [image: 1629216580219-bildschirmfoto-vom-2021-08-17-18-07-25.png] Irgendwas ist da durcheinander im Bullseye
  • checkmk - Agent auf einem Debian Buster Server installieren

    Verschoben checkmk checkmk linux
    1
    2
    0 Stimmen
    1 Beiträge
    706 Aufrufe
    Niemand hat geantwortet
  • pdo Abfrage funktioniert nicht

    Linux linux
    2
    0 Stimmen
    2 Beiträge
    574 Aufrufe
    FrankMF
    Wichtig ist natürlich auch, das folgendes php Paket installiert ist! sudo apt install php7.0-mysql Je nachdem welche PHP Version installiert ist, muss der Befehl angepasst werden. Mit php -v könnt ihr nachschauen welche Version installiert ist.
  • NVMe Firmware - Daten werden benötigt

    Linux linux
    1
    0 Stimmen
    1 Beiträge
    734 Aufrufe
    Niemand hat geantwortet