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

  • duf - ein hübsches Kommandozeilen Tool

    Linux
    1
    0 Stimmen
    1 Beiträge
    125 Aufrufe
    Niemand hat geantwortet
  • Debian Bookworm 12 - Test

    Linux
    6
    0 Stimmen
    6 Beiträge
    383 Aufrufe
    FrankMF

    Es scheint sich was zu tuen. Ein paar Probleme, gehören der Vergangenheit an. Bitte beachten, ich nutze fast ausschließlich Wayland!

    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!

    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!

    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.

    Link Preview Image It's Final: Fedora 40 to Offer Plasma 6, Drops X11 Entirely

    FESCo members voted 6+1 to include KDE Plasma 6 with Wayland as the only desktop mode available in Fedora 40. Here's more on that!

    favicon

    Linuxiac (linuxiac.com)

  • Debian 11 Bullseye released!

    Linux
    4
    0 Stimmen
    4 Beiträge
    283 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!?!?!?

    Bildschirmfoto vom 2021-08-17 18-07-25.png

    Irgendwas ist da durcheinander im Bullseye 😳

  • 0 Stimmen
    1 Beiträge
    532 Aufrufe
    Niemand hat geantwortet
  • 0 Stimmen
    1 Beiträge
    358 Aufrufe
    Niemand hat geantwortet
  • Wenn dir der Redis-Server flöten geht....

    Verschoben Redis
    3
    0 Stimmen
    3 Beiträge
    525 Aufrufe
    FrankMF

    So, nach einer kleinen Pause und ein wenig nachdenken ist mir doch noch was eingefallen 😉

    Backports! Man so einfach!

    nano /etc/apt/sources.list

    Das folgende eintragen.

    # backports deb http://deb.debian.org/debian stretch-backports main

    Danach ein

    apt update

    Und dann schauen wir uns mal die Version an....

    apt -t stretch-backports search redis-server Sorting... Done Full Text Search... Done golang-github-stvp-tempredis-dev/stretch-backports 0.0~git20160122.0.83f7aae-1~bpo9+1 all Go package to start and stop temporary redis-server processes libtest-redisserver-perl/oldstable,oldstable 0.20-1 all redis-server runner for tests python-hiredis/oldstable,oldstable 0.2.0-1+b2 amd64 redis protocol reader for Python 2.X using hiredis python3-hiredis/oldstable,oldstable 0.2.0-1+b2 amd64 redis protocol reader for Python using hiredis redis/stretch-backports 5:5.0.3-3~bpo9+2 all Persistent key-value database with network interface (metapackage) redis-server/stretch-backports 5:5.0.3-3~bpo9+2 amd64 [residual-config] Persistent key-value database with network interface

    Und die habe ich gestern Abend gebaut.

    127.0.0.1:6379> INFO # Server redis_version:5.0.5

    Ok, das schmerzt jetzt 😛

  • NGINX

    Verschoben NGINX
    1
    0 Stimmen
    1 Beiträge
    535 Aufrufe
    Niemand hat geantwortet
  • 0 Stimmen
    1 Beiträge
    781 Aufrufe
    Niemand hat geantwortet