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.
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 :-)
Je viens également de faire la même manière mais sur mon Ubuntu et j’obtiens le même type d’erreur.
Merci.
Salut,
J’ai opté pour une solution un peu différente au niveau de la regexp utilisée pour les logs OwnCloud. Je me permets de linker mon billet à ce propos, n’hésites pas à le supprimer si celui-ci te dérange :)
http://www.sublimigeek.fr/proteger-services-auto-heberges-fail2ban
Je ne sais pas si cela vous aidera mais dans le doute …
@+
Joël
C’est bien Owncloud 7 que vous avez?
Pour ma part, oui c’est bien Owncloud 7.
Ça fonctionne nickel, merci !
Est-ce-que c’est censé fonctionner avec ownCloud 8 sur Debian 7 ?
Je ne sais pas, j’ai pas testé.
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.
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 »: ».* »}
Il faut ajouter ‘
failregex = {« reqId »: ».* », »remoteAddr »: ».* », »app »: »core », »message »: »Login failed: ‘.*’ \(Remote IP: ‘\) », »level »:2, »time »: ».* », »method »: ».* », »url »: ».* »}
Sorry: mais la variable HOST entouré des est effacé dans le commentaire (donc apres Remote IP: ajouter HOST entouré de