Fail2ban pour Owncloud 7 sur Debian Jessie

Petit guide pour couper court au crackage de vos passwords par le formulaire de login d’Owncloud.

Ajouter dans le fichier /etc/fail2ban/jail.conf :

[owncloud]
enabled = true
port = http,https
filter = owncloud
logpath = /var/log/owncloud.log
maxretry = 3

Modifier le fichier /etc/owncloud/config.php

'loglevel' => '2',
'logtimezone' => 'Europe/Brussels',

Le loglevel ne doit pas être supérieur à 2 pour que les tentatives de login soient enregistrées dans le log !
le logtimezone doit être accordé avec l’heure de votre serveur. Sinon fail2ban pensera toujours que la connexion est ancienne et ne bannira rien.

Créer un fichier /etc/fail2ban/filter.d/owncloud.conf:

[Definition]
failregex = .*"message":"Login failed:.*IP: '<HOST>'.*
ignoreregex =

Relancer le service fail2ban:
# systemctl restart fail2ban

Faites trois mauvaises tentatives de login sur Owncloud pour vérifier !
Pour vérifier le status de fail2ban:

# fail2ban-client status owncloud

Pour débloquer une IP:

# fail2ban-client set owncloud unbanip 192.168.0.13

Cette configuration de Owncloud et Fail2ban devraient être par défaut dans Debian à mon sens.

On peut également se connecter à Owncloud par l’API REST. Je n’ai pas testé si les erreurs de connexion par cette API étaient aussi enregistrées dans le fichier de log, et donc prises en compte par Fail2ban.

12 réactions sur “ Fail2ban pour Owncloud 7 sur Debian Jessie ”

  1. fred

    Salut,
    j’ai testé ta conf sur ma debian 7 et dans les logs de fail2ban j’obtiens:
    fail2ban.filter : ERROR No 'host' group in '.*"message":"Login failed:.*IP: ''.*'
    Une idée ?
    merci :-)

  2. Anonyme

    Je viens également de faire la même manière mais sur mon Ubuntu et j’obtiens le même type d’erreur.

    Merci.

  3. quent1

    Petite précision : avec Owncloud 8 (et 8.1), le format des logs a changé. Ainsi, il faudra remplacer :

    failregex = .* »message »: »Login failed:.*IP:  ».*

    par :

    failregex = {« reqId »: ».* », »remoteAddr »: ».* », »app »: »core », »message »: »Login failed: ‘.*’ \(Remote IP: ‘\) », »level »:2, »time »: ».* »}

    pour que les erreurs de login soient détectées par fail2ban.

  4. 2ruesmi

    Avec owncloud 8.1 et le loglevel=2, la regex qui fonctionne est:
    failregex = {« reqId »: ».* », »remoteAddr »: ».* », »app »: »core », »message »: »Login failed: ‘.*’ \(Remote IP: ‘\) », »level »:2, »time »: ».* », »method »: ».* », »url »: ».* »}

  5. 2ruesmi

    Il faut ajouter ‘

    failregex = {« reqId »: ».* », »remoteAddr »: ».* », »app »: »core », »message »: »Login failed: ‘.*’ \(Remote IP: ‘\) », »level »:2, »time »: ».* », »method »: ».* », »url »: ».* »}

  6. 2ruesmi

    Sorry: mais la variable HOST entouré des est effacé dans le commentaire (donc apres Remote IP: ajouter HOST entouré de

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.