owncloud mit fail2ban und email alerts per ssmtp absichern

Alles rund um sicherheitsrelevante Fragen und Probleme.
Antworten
user171819
Beiträge: 3
Registriert: 27.01.2016 09:14:24

owncloud mit fail2ban und email alerts per ssmtp absichern

Beitrag von user171819 » 27.01.2016 14:38:43

Hallo zusammen,

zunächst mal, ich bin neu hier, benutze seit Jahren debian und ubuntu auf verschiedenen Rechnern und profitiere wie viele davon, dass man für fast alle Probleme eine Lösung in den wikis, foren, howtos usw. findet

ich möchte etwas beschreiben, was mich doch einige Suche gekostet hat, vielleicht, damit andere es schneller finden, vielleicht hat auch jemand eine einfachere Lösung:

Bei mir läuft ein Server - Debian Jessie - mit owncloud (aktuell 8.2), Zugang auf den Server von remote über ssh (keys) und https-Zugang zu der owncloud, d.h. für das web-ui, owncloud-clients und webdav
owncloud für lokalen und remote zugriff ist das einzige, wozu der Server da ist (außer Sicherungen von /home Verzeichnissen anderer lokaler Rechner über ssh)
ich wollte den https-Zugang gegen brute force attacks absichern und habe fail2ban installiert, und für die Versendung von E-Mail Benachrichtigungen ssmtp
[fragt mich nicht warum ssmtp, ich bin da aus anderen Gründen drauf gekommen]

der Eintrag in der /etc/fail2ban/jail.local dazu lautet

Code: Alles auswählen

[owncloud]

enabled  = true
filter   = owncloud
port     = https
logpath  = /var/www/owncloud/data/owncloud.log
bantime  = 3600
maxretry = 1
d.h. fail2ban sperrt die IP, von der ein misslungener login-Versuch kommt, für 1 Stunde.
owncloud muss entsprechend eingestellt werden, damit das log in dieser Datei richtig geführt wird, also in der config.php (bei mir /var/www/owncloud/config/config.php)

Code: Alles auswählen

'logfile' => '/var/www/owncloud/data/owncloud.log',
'loglevel' => 1,
'log_authfailip' => true,
Problem war, dass ich auch wissen wollte, wenn tatsächlich jemand falsche Benutzerdaten ausprobiert, ohne dauernd das log anzuschauen
dazu habe ich ssmtp installiert (alle Befehle als root)

Code: Alles auswählen

apt-get install ssmtp
(dabei wird exim deinstalliert)
die /etc/ssmtp/ssmtp.conf so geändert:

Code: Alles auswählen

#
# Config file for sSMTP sendmail
#
# The person who gets all mail for userids < 1000
# Make this empty to disable rewriting.
root=empfaenger@adresse.de

# The place where the mail goes. The actual machine name is required no
# MX records are consulted. Commonly mailhosts are named mail.domain.com
UseTLS=YES
UseSTARTTLS=YES
mailhub=smtp-server:587

# Where will the mail seem to come from?
rewriteDomain=sender-domain

# The full hostname
hostname=sender-alias

# Are users allowed to set their own From: address?
# YES - Allow the user to specify their own From: address
# NO - Use the system generated From: address
FromLineOverride=YES

AuthMethod=LOGIN
AuthUser=senderalias@senderdomain
AuthPass=Passwort

dabei ist empfaenger@adresse.de die Email-Adresse die die alerts bekommen soll, senderalias@senderdomain die Adresse, über deren smtp Server die Mail verschickt wird, smtp-server die Adresse des smtp-Servers (ist bei mir der des ISP), mit den Einstellungen darüber ist port 587 zu wählen; bei AuthUser und AuthPass sind natürlich Benutzername und Passwort des E-Mail-Accounts senderalias@senderdomain gemeint
in der /etc/ssmtp/revaliases steht

Code: Alles auswählen

# sSMTP aliases
#
# Format:       local_account:outgoing_address:mailhub
#
# Example: root:your_login@your.domain:mailhub.your.domain[:port]
# where [:port] is an optional port number that defaults to 25.
root:senderalias@senderdomain:smtp-server.de:587
d.h. root verschickt unter der Email-Adresse senderalias@senderdomain über den Server smtp-server.de port 587 die Emails mit den in der ssmtp.conf gespeicherten Zugangsdaten.
die /etc/ssmtp/ssmtp.conf hat bei mir den Besitzer root:root
zur Absicherung des E-Mail Zugangspasswortes habe ich die Rechte geändert

Code: Alles auswählen

chmod 640 /etc/ssmtp/ssmtp.conf
jetzt kann man mit mail [-Optionen] mails verschicken
Wenn man möchte, dass der Mail-Absender nicht root heißt sondern etwas spezifischer, kann man mit

Code: Alles auswählen

chfn -f 'irgendein Name' root
etwas besseres eingeben
damit fail2ban mails verschickt, muss die /etc/fail2ban/jail.local angepasst werden:

Code: Alles auswählen

# Destination email address used solely for the interpolations in
# jail.{conf,local} configuration files.
destemail = empfaenger@adresse.de

# Name of the sender for mta actions
sendername = Fail2Ban

# Email address of the sender
sender = senderalias@senderdomain
und

Code: Alles auswählen

# email action. Since 0.8.1 upstream fail2ban uses sendmail
# MTA for the mailing. Change mta configuration parameter to mail
# if you want to revert to conventional 'mail'.
mta = mail
und

Code: Alles auswählen

# Choose default action.  To change, just override value of 'action' with the
# interpolation to the chosen action shortcut (e.g.  action_mw, action_mwl, etc$
# globally (section [DEFAULT]) or per specific section
action = %(action_mwl)s
leider reicht das noch nicht ganz. Fail2ban schickt erst Mails, wenn im Ordner /etc/fail2ban/action.d/
die Dateien mail-buffered.conf, mail.conf, mail-whois.conf, mail-whois-lines.conf der Eintrag dest auf

Code: Alles auswählen

dest = empfaenger@adresse.de
gesetzt ist. Fail2ban schickt jetzt eine Mail pro konfiguriertem jail beim Starten und beenden und eine Mail mit Informationen, wenn eine IP geblockt wird.
Warum es nur genau so funktioniert, ist mir nicht ganz klar, weil es wie erwähnt schlecht dokumentiert ist (bei ssmtp und fail2ban).
Ich finde das insgesamt für meine Zwecke eine schön schlanke Lösung und hoffe, es hilft, falls jemand mal ein ähnliches Problem hat.
u.a. Debian Jessie Owncloud Server KVM / Ubuntu Wordpress Server VB / Bananapi Raspian Jessie / Raspberrypi Raspian Jessie

Benutzeravatar
mistersixt
Beiträge: 6601
Registriert: 24.09.2003 14:33:25
Lizenz eigener Beiträge: GNU Free Documentation License

Re: owncloud mit fail2ban und email alerts per ssmtp absiche

Beitrag von mistersixt » 27.01.2016 17:00:01

Willkommen im DebianForum, und danke für die tolle Beschreibung!

Eine Frage habe ich gleich noch, wie sieht die Datei /etc/fail2ban/filter.d/owncloud.conf aus?

Gruss, mistersixt.
--
System: Debian Bookworm, 6.11.x.-x-amd64, ext4, AMD Ryzen 7 3700X, 8 x 3.8 Ghz., Radeon RX 5700 XT, 32 GB Ram, XFCE

user171819
Beiträge: 3
Registriert: 27.01.2016 09:14:24

Re: owncloud mit fail2ban und email alerts per ssmtp absiche

Beitrag von user171819 » 27.01.2016 17:33:17

ja sorry, das hat natürlich gefehlt, die /etc/fail2ban/filter.d/owncloud.conf:

Code: Alles auswählen

[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":".*"}
          {"reqId":".*","remoteAddr":"<HOST>","app":"core","message":"Login failed: .*","level":2,"time":".*"}
das ist schon ein bisschen her.
Ich fand damals die Einrichtung von fail2ban nicht problematisch
Streng genommen habe ich nur logins auf dem web-ui getestet und bin davon ausgegangen, dass falsche Passwörter über webdav und owncloud-clients in der Logdatei auch Einträge erzeugen, auf die fail2ban reagiert (bisher nicht darüber nachgedacht, ob das auch stimmt)

Gruß zurück
u.a. Debian Jessie Owncloud Server KVM / Ubuntu Wordpress Server VB / Bananapi Raspian Jessie / Raspberrypi Raspian Jessie

user171819
Beiträge: 3
Registriert: 27.01.2016 09:14:24

Re: owncloud mit fail2ban und email alerts per ssmtp absiche

Beitrag von user171819 » 27.01.2016 18:12:29

gerade getestet, falsches Passwort bei webdav-Verbindung erzeugt den output
..."message":"Login failed: ....
im log
fail2ban blockiert jetzt nicht nur https, sondern auch ssh
(das war mir auch nicht so ganz klar, dass für die ip nicht nur der https port zugemacht wird)
wieder was gelernt
von remote mit dem Filter spielen und dann per ssh den zugang wieder herstellen geht also nicht von der selben ip aus

Edit 20.7.2016:
mit regex

Code: Alles auswählen

[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":".*"}
          {"reqId":".*","remoteAddr":"<HOST>","app":"core","message":"Login failed: .*","level":2,"time":".*"}
          {"reqId":".*","remoteAddr":".*","app":"core","message":"Login failed: '.*' \(Remote IP: '<HOST>'\)","level":2,"time":".*"}
          {"reqId":".*","remoteAddr":".*","app":"core","message":"Login failed: '.*' (Remote IP: '.*')","level":2,"time":".*"}
funktioniert das weiterhin auch unter owncloud 9.0.1, blockiert wird nach fehlerhaften Passworteingaben auf dem web-ui, per webdav und per owncloud-client
u.a. Debian Jessie Owncloud Server KVM / Ubuntu Wordpress Server VB / Bananapi Raspian Jessie / Raspberrypi Raspian Jessie

Antworten