Da die Grundinstallation von ownCloud in meinen Augen intransparent hinsichtlich Sicherheit ist, kam mir der Gedanke, fail2ban hierfür einzusetzen. Bei der Recherche habe ich mehrere Lösungsansätze gefunden, die aber nicht so richtig funktionieren wollten.
Ziel soll es sein, Brute-Force Attacken zu verhindern. Hierzu sei dank des Hinweises von Lutz Donnerhacke zu erwähnen, dass diese Lösung eine Brute-Force Attacke nicht in Gänze verhindert, sonder lediglich als Präventionsmaßnahme dient.
Damit es auswertbare Log-Dateien gibt, muss dies in ownCloud zunächst aktiviert werden:
/config/config.conf:
'logtimezone' => 'Europe/Berlin', 'logfile' => '/var/log/owncloud.log', 'loglevel' => '2', 'log_authfailip' => true,
Logdatei anlegen und Berechtigungen anpassen:
touch /var/log/owncloud.log chown www-data:www-data /var/log/owncloud.log
Als Filter werden zwei reguläre Ausdrücke verwendet, da ab ownCloud-Version 7.0.2 der Zusatz „X-Forwarded-For: ‚.*'“ protokolliert:
/etc/fail2ban/filter.d/owncloud.conf
[Definition] failregex={"app":"core","message":"Login failed: user '.*' , wrong password, IP:<HOST>","level":2,"time":".*"} {"app":"core","message":"Login failed: '.*' \(Remote IP: '<HOST>', X-Forwarded-For: '.*'\)","level":2,"time":".*"}
Der Filter wird in der jail.conf aktiviert:
/etc/fail2ban/jail.conf
[owncloud] enabled = true port = 80,443 protocol = tcp filter = owncloud maxretry = 3 logpath = /var/log/owncloud.log
Abschließend noch fail2ban neustarten und ownCloud ist gegen Brute-Force Attacken abgesichert. Das Logrotate für /var/log/owncloud.log nicht vergessen.
8 Gedanken zu „Absicherung von ownCloud mit Hilfe von fail2ban“
Hallo Thomas,
klasse Anleitung, gut geschrieben. Ich foffe Du kannst mir weterhelfen, da ich vor einem kleinen Problem stehe.
Mein ownCloud protokolliert unter /var/log/owncloud.log grundsätzlich garnichts.
Hab versuchsweise das Loglevel auf „Debug = 0“ gsetzt. Keinerlei Auswirkung. Das Log ist und bleibt leer.
VG Markus
Hi Markus,
danke für das Feedback, freut mich! Probier mal mit Loglevel von 2:
‚logfile‘ => ‚/var/log/owncloud.log‘,
‚loglevel‘ => ‚2‘,
Hoffe das hilft, sonst einfach nochmal melden.
Hallo Thomas,
danke für die schnelle Antwort.
Leider keinerlei Veränderung. Log bleibt leer. Es ist ja nicht so, daß ich schnell Aufgebe, aber für so bisschen Protokollierung sitze ich jetzt bereits 5 Stunden davor
‚installed‘ => true,
‚logtimezone‘ => ‚Europe/Berlin‘,
‚logfile‘ => ‚/var/log/owncloud.log‘,
‚loglevel‘ => ‚2‘,
‚log_authfailip‘ => true,
So sieht derzeit der entscheidende Block aus
Ohne Protokoll natürlich auch kein fail2ban….
Gruß Markus
Sehr merkwürdig. Mit den Berechtigungen ist auch alles Ok? Der Apache-Benutzer (www-data) kann auch das Logfile schreiben? Ist in der Administrations-Oberfläche ein Logeintrag? Ist log_errors = On in der php.ini aktiviert?
Hi Thomas,
ich habs geschafft, Ich habe meine ownCloud-Instanz endgültig zerschossen.
Wenn ich darf, dann werde ich mich die Tage wegen dem Problem nochmal bei Dir melden.
Gruß Markus
Hallo Thomas,
ich war gründlich. Ich habe nicht nur ownCloud geschrottet, gleich den ganzen vServer mit. Aber ein Restore aus dem Backup funktioniert. Hab ownCloud trotzdem neu installiert.
Leider mit dem gleichen Ergebnis. Die Logdatei gehört www-data.
Im Log von ownCloud finde ich aberf olgendes:
chmod(): open_basedir restriction in effect. File(/var/log/owncloud.log) is not within the allowed path(s): (/var/www/vhosts/km20112-05.keymachine.de/:/tmp/) at /var/www/vhosts/km20112-05.keymachine.de/httpdocs/cloud/lib/private/log/owncloud.php#92
Kannst Du damit was anfangen?
Gruß Markus
Japp. Der Benutzer www-data darf in /var/log die Datei nicht anlegen. Entweder die Berechtigung von /var/log anpassen, oder dort den Unterordnet apache verwenden. Dann aber auch bei fail2ban anpassen.
Hallo Thomas,
dnake für die schnelle Antwort.
Die Datei woncloud.log existiert schon (habe ich selbst angelegt) und der User www-data hat rwx auf die Datei. Zumindest wenn man WinSCP Glauben schenken darf.
Ich steh grad auf dem Schlauch…
Kannst Du mir noch ein wenig unter die Arme greifen. Linux ist noch nicht mein Spezialgebiet… 🙂
Gruß Markus