Owncloud mit Fail2Ban sichern

  • Wer mein >>Tut zu SSH umgesetzt und Fail2Ban installiert hat der kann mit ein paar Zeilen auch seine OwnCloud Installation ein wenig sichern.


    Fail2Ban überwacht dann die Anmelde Versuche an Owncloud und blockt nach mehreren Fehleingaben die IP des vermeidlichen Angreifers.


    Los geht's :
    Fail2Ban Installieren wie im >> o.g. Thread.


    Jetzt legen wir eine Regel für Owncloud ( Version 7.0.4 ) an

    Code
    sudo nano /etc/fail2ban/filter.d/owncloud.conf


    dort hinein kommt :

    Code
    #
    #
    #
    [Definition]
    failregex={.*"app":"core","message":"Login failed: '.*' \(Remote IP: '<HOST>', X-Forwarded-For: '.*'\)","level":2,"time":".*"}
    Ignoreregex=


    Jetzt noch Fail2Ban beibringen was er machen soll.
    Das geht in der /etc/fail2ban/jail.conf.
    Dort fügen wir ganz unten ein :
    ( Schaut nach wo eure Installation von owncloud liegt, evtl. muß der Pfad zum log angepasst werden )


    Code
    [owncloud]
    enabled = true
    filter = owncloud
    port = http,https
    action = iptables-multiport[blocktype="REJECT –reject-with icmp-port-unreachable", name="owncloud", port="80,443", protocol="tcp", chain="INPUT"]
    logpath= /var/www/owncloud/data/owncloud.log
    maxretry = 3
    bantime = 180



    Jetzt noch Fail2Ban neu starten und ab sofort werden Anmeldeversuche an Owncloud mit überwacht.

    Code
    sudo /etc/init.d/fail2ban restart

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?


    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • Bei manchen Installationen, seit Version 8, kann es sein, dass die Logdatei nicht korrekt gespeichert wird und fail2ban niemals "anspringt".


    (Pfade anpassen, falls notwendig)


    Da hilft das Editieren folgender Datei:

    Code
    sudo nano /var/www/owncloud/config/config.php


    Ganz ans Ende der Datei aber noch vor dem ");" muss Folgendes angefügt werden:

    Code
    'logtimezone' => 'Europe/Berlin',
    'log_type' => 'owncloud' ,
    'logfile' => '/var/www/owncloud/data/owncloud.log',
    'log_authfailip' => true,


    Nun kann man die Funktionalität von fail2ban folgendermaßen testen:

  • Danke für die tolle Anleitung :)


    Hat sich für Owncloud 8.2.2 irgendwas verändert? Weil bei mir findet er keine Treffer obwohl ich fleißig falsche Kennwörter probiere (von einem anderen PC aus mit anderer IP)

  • Poste mal ein paar Zeilen aus dem Log mit dem falschen Auth.

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?


    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • Danke für deine Antwort :)
    Ich hab es inzwischen damit hinbekommen:

    Code
    [Definition]
    failregex = {"reqId":".*","remoteAddr":".*","app":"core","message":"Login failed: '.*' \(Remote IP: '<HOST>'\)","level":2,"time":".*"}
    ignoreregex =


    Vermutlich hab ich irgendwo ein Zeichen oder eine klammer vergessen :wallbash:

  • Hallo zusammen,


    da ich nach einigen Stunden festgestellt habe, dass für die owncloud.log Rechte für www-data benötigt :denker:
    jedoch werden die falschen Zugriffe auf die Owncloud von fail2ban noch nicht gesperrt.


    OwnCloud 9.0.1 (stable)
    lighttpd Webserver


    vielen Dank im Voraus





    edit: 17.04 11:10 Uhr >> damit hat es funktioniert :cool:

    ich habe mir jetzt die owncloud.config mit der sshd.conf verglichen. Dabei ist mir aufgefallen das ich _daemon = owncloud vergessen hatte



    sudo fail2ban-client status owncloud

    Code
    Status for the jail: owncloud
    |- filter
    |  |- File list:    /var/log/owncloud.log 
    |  |- Currently failed:    1
    |  `- Total failed:    16
    `- action
       |- Currently banned:    1
       |  `- IP list:    192.168.178.21 
       `- Total banned:    2


    sudo nano /etc/fail2ban/filter.d/owncloud.conf


    sudo nano /etc/fail2ban/jail.conf

  • Das Problem mit den Rechten hängt mit der Installation zusammen... Viele Blogs beschreiben es fehlerhaft, wo owncloud als root installiert wird aber anschließend die Besitzer(rechte) nicht oder falsch angepasst werden...


    Der Webserver läuft über einen bestimmten Benutzer: www-data
    Das ist Absicht und Sicherheitsrelevant.
    Normale Benutzer haben kein Recht Dateien oder sogar Verzeichnisse anderer Benutzer zu lesen/öffnen/listen... Hätte man zum Beispiel einen Internet-Server mit mehreren Benutzern wäre es äußerst uncool wenn Benutzer A die Dateien von Benutzer Z lesen oder sogar verändern dürfte.


    In der Offiziellen Installations Anleitung für Command Line (Konsole) wird gleich als erstes beschrieben den Besitzer (owner) der Webdateien auf den HTTP Benutzer zu ändern: www-data
    Was viele falsch machen ist an den Datei-/Verzeichnis-Rechten herum zu pfuschen (chmod) weil sie diesen Teil nicht verstehen (owner). Sowas kann Fatale Auswirkungen haben, von nicht mehr funktionieren von owncloud (da es teilweise die Rechte überprüft) bis hin zu schwerwiegenden Sicherheitslücken.


    fail2ban laufen als root und root darf alles. Man muss hierfür also keine Rechte anpassen.


    fail2ban durchsucht eine Logdatei nach bestimmten Einträgen. Dabei muss man das Muster festlegen welches zutreffen muss, dabei kommt regular expression (regexp) zum Einsatz.


    Das Format der owncloud Logdatei hat sich mit sowohl Version 8 als auch noch mal in Version 9 verändert. Deshalb funktionieren alte fail2ban Rules nicht mehr.


    Siehe dazu am besten in folgenden Threads des owncloud Forums:
    https://forum.owncloud.org/viewtopic.php?f=8&t=28678
    https://forum.owncloud.org/viewtopic.php?t=34240




    BTW: Es ist ebenfalls Absicht das DocumentRoot mittlerweile nicht mehr /var/www/ ist sondern /var/www/html/ ... Das hat ebenfalls Sicherheitsrelevante Gründe, da man zB. sowas wie SSL Zertifikate oder htaccess/htpasswd Dateien nicht direkt im DocumentRoot liegen haben sollte, sondern eine Ebene drüber wo keiner über den Webserver Zugriff drauf hat.
    Leider beschreiben manche Anleitungen die man so findet dies wieder zurück zu ändern und /var/www/html/ zu löschen.. Wer gerne Chaos und unprofessionelle Installationen verwendet folgt blind solchen Anweisungen..