Owncloud Sicherheit durch fail2ban

Mit selbst erstellten Filtern in Fail2ban und deren regulären Ausdrücken lässt sich einiges an Sicherheit im kleinen einfachen, aber dennoch erfolgreichen Rahmen grundlegend für Owncloud definieren.
Erster Teil der Reihe Owncloud Sicherheit

[UPDATE]
Regeln für Owncloud 8 am Ende des Artikels

Internetgrundrauschen

Angriffe mit sanfter oder auch roher Gewalt gehören zu dem Internetgrundrauschen, welches uns wie das bekannte  „White Noise“ umgibt.

Portscans, Wörterbuchattacken und das Austesten von Lücken im Programmcode sind Heute mehr als unisono. Damals noch irgendwie verständlich, dem Spieltrieb geschuldet. Aber Heute geht es nicht mehr um das Testen von Fähigkeiten, dem heimlichen aufsetzen eines BBS oder dem verteilen von GreenCDs.

Botnetze, Spamdistribution und Konsorten brauchen Plattformen.  Das denunzieren durch das Ablegen falscher Daten mit darauf folgender Anzeige ist nicht mehr nur im Schlapphutrepertoire zu finden. Leider wird der Gehörnte hier nicht von mir aus Prestigegründen an die Wand gemalt, das ist mittlerweile auch fast dem Otto Normalbenutzer klar.

Meiner Meinung nach gehört jedem dieser Angreifer die Leviten gelesen. Nicht nur das Verschwenden der Zeit des Serverbetreibers, auch das unnütze Vernichten von Ressourcen ist nicht gerade die feine Art. Teilweise artet das private Dasein im Netz dadurch in Stress aus.

Natürlich betrifft dies leider auch die eigene Owncloudinstanz auf dem Server, wie man immer wieder den Logs seines Webservers entnehmen kann.

Owncloud Sicherheit durch fail2ban

Owncloud kann durch viele Maßnahmen geschützt werden.
Varianten des Schutzes werde auf jeden Fall nach und nach ein Thema in meinem Blog sein.  Mit fail2ban möchte ich einen Anfang machen, da es im Gegensatz zu mod_security und anderen Hilfsmitteln zu 99% mittlerweile auf jedem Server zu der Grundinstallation und dem Grundschutz gehört.

Fail2ban

Fail2ban überwacht Logdateien und erkennt dort bösartige Angriffe und blockt die IPs nach bestimmten Kriterien.

Anhand von Filterlisten mit regulären Ausdrücken wird ein Fehlverhalten in den Logdateien erkannt und nach einem definierten Reglement in einer Datei eine Blockaktion gestartet.

Da dies kein Grundlagenartikel zu fail2ban ist, gehe ich davon aus, dass fail2ban konfiguriert ist und auch fehlerfrei läuft.

Fail2ban und Owncloud

Failb2an kennt leider Owncloud nicht und Owncloud schreibt ab Werk auch keine Logdatei, welches beides für das Blocken von Wörterbuchattacken und das sperren der IPs nötig ist.

Somit ist es nötig einmal das Log in Owncloud einzuschalten, damit es Fail2ban lesen  und einmal fail2ban zu konfigurieren, damit es mit dem gelesenen Log auch arbeiten kann.

Owncloud Grey Logo

Konfiguration des Logs für Owncloud

Damit Owncloud ein Log schreibt ist es nötig die folgende Änderungen in die Datei $OWNCLOUDORDNER/config/config.php vorzunehmen:

  'logtimezone' => 'Europe/Berlin',
  'log_type' => 'syslog' ,
  'log_authfailip' => true,

Natürlich sollte der Wert  logtimezone der eigenen Zeitzone entsprechen.
Mit dieser Konfiguration schreibt Owncloud seine Logdaten in die Datei /var/log/syslog.

Wenn das nicht gewünscht ist, kann in der Datei auch folgende Änderung vorgenommen werden:

  'logtimezone' => 'Europe/Berlin',
  'log_type' => 'owncloud' ,
  'log_authfailip' => true,

Hier werden die Logs in die Datei /var/www/$OWNCLOUDORDNER/data/owncloud.log geschrieben, welches sich später auf jeden Fall in der Konfiguration von Fail2ban wiederspiegeln sollte und muss.

Erstellen der Filterdatei und Konfiguration in Fail2ban

Erstellen der Datei /etc/fail2ban/filter.d/owncloud.conf  mit folgenden Inhalt:

[Definition]
failregex = .*ownCloud.*Login failed:.*, IP:(?P<host>S*)
ignoreregex =

Und in der Datei /etc/fail2ban/jail.conf folgendes hinzufügen:

[owncloud]

enabled = true
port = 80,443
protocol = tcp
filter = owncloud
maxretry = 3
logpath = /var/log/syslog

Erklärung

Die failregex kann man sehr leicht verstehen, wenn man sich eine fehlgeschlagenen Login in der Datei /var/log/syslog einmal anschaut:

Mar 19 21:23:01 got-tty ownCloud[25127]: {core} Login failed: user 'brutalbruteforce' , wrong password, IP:37.45.32.0

Der hinzugefügte Inhalt in die Datei /etc/fail2ban/jail.conf gibt an

  • Das die Regel eingeschaltet ist
  • Welcher Ports genutzt werden
  • Das benutze Protkoll
  • Welcher Filter genutzt wird (unsere Datei /etc/fail2ban/filter.d/owncloud.conf )
  • und in welchem Log nach diesem regulären Ausdruck Ausschau gehalten wird.

Neue Regeln für fail2ban testen

Welches natürlich nur geht, wenn man sich mal falsch anmeldet, sonst kann nichts gefunden werden.

root@got-tty:/# fail2ban-regex /var/log/syslog /etc/fail2ban/filter.d/owncloud.conf

Running tests
=============

Use regex file : /etc/fail2ban/filter.d/owncloud.conf
Use log file   : /var/log/syslog

Results
=======

Failregex
|- Regular expressions:
|  [1] .*ownCloud.*Login failed:.*, IP:(?PS*)
|
`- Number of matches:
   [1] 4 match(es)

Ignoreregex
|- Regular expressions:
|
`- Number of matches:

Summary
=======

Addresses found:
[1]
    37.45.32.0 (Wed Mar 19 21:20:13 2014)
    37.45.32.0 (Wed Mar 19 21:20:40 2014)
    37.45.32.0 (Wed Mar 19 21:21:54 2014)
    37.45.32.0 (Wed Mar 19 21:23:01 2014)

Date template hits:
239 hit(s): MONTH Day Hour:Minute:Second
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second Year
0 hit(s): WEEKDAY MONTH Day Hour:Minute:Second
0 hit(s): Year/Month/Day Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/Month/Year Hour:Minute:Second
0 hit(s): Day/MONTH/Year:Hour:Minute:Second
0 hit(s): Month/Day/Year:Hour:Minute:Second
0 hit(s): Year-Month-Day Hour:Minute:Second
0 hit(s): Year.Month.Day Hour:Minute:Second
0 hit(s): Day-MONTH-Year Hour:Minute:Second[.Millisecond]
0 hit(s): Day-Month-Year Hour:Minute:Second
0 hit(s): TAI64N
0 hit(s): Epoch
0 hit(s): ISO 8601
0 hit(s): Hour:Minute:Second
0 hit(s): 

Success, the total number of match is 4

However, look at the above section 'Running tests' which could contain important
information.

Die Regeln funktionieren. Der Service/Daemon Fail2ban kann neu gestartet werden:

root@got-tty:/# service fail2ban restart

Update

Um Kopierfehler für die beiden Dateien zu vermeiden, habe ich nun ein Gist auf Github erstellt.

Owncloud Sicherheit durch fail2ban Gist

Fazit

Fail2ban ist immer auf einem meiner Server zu finden. Mit selbst erstellten Filtern und deren regulären Ausdrücken lässt sich einiges an Sicherheit im kleinen einfachen, aber dennoch erfolgreichen Rahmen grundlegend definieren.

Fail2ban ist ein Glied in meiner Sicherheitskette für Owncloud und bietet schon einmal eine Hürde für den Angreifer.

30 Kommentare

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.