Entretenir et sécuriser Roundcube avec logrotate et fail2ban
Roundcube entrepose certaines informations dans le dossier logs/ à la racine de l'installation. Le fichier 'errors' contiendra par exemple la trace des tentatives d'accès avec mot de passe erroné.
Pour éviter que ce fichier ne grossisse trop sans surveillance, nous allons : - mettre en place une rotation des logs avec logrotate - surveiller le log avec fail2ban pour bannir toute IP qui tenterait de forcer le passage en multipliant les essais de nom d'utilisateur et de mot de passe.
La rotation des logs
Dans /etc/logrotate.d/roundcube, on placera le paramétrage (assez explicite) suivant :
/var/www/roundcube/logs/errors { weekly missingok rotate 8 compress notifempty create 640 www-data www-data }
et le tour est joué.
On pourra appliquer la même rotation au fichier /var/www/roundcube/logs/sendmail si la volumétrie de votre webmail le nécessite !
Surveillance avec fail2ban
Nous allons créer un nouveau filtre dans /etc/fail2ban/filter.d/roundcube.conf :
[Definition] failregex = Login failed for .*. from <HOST>
ou, si l'on est placé derrière un Proxy qui transmet la "vraie" adresse d'origine dans le champ X-Forwarded-For :
[Definition] failregex = Login failed for .*. from .*.(X-Forwarded-For: <HOST>)
et une nouvelle règle :
[roundcube] enabled = true port = http,https filter = roundcube action = iptables46-multiport[name=apache, port="http,https", protocol=tcp] logpath = /var/www/roundcube/logs/errors maxretry = 6
(attention, la règle d'action iptables46 correspond à une astuce temporaire pour ajouter le support de l'IPv6 à Fail2ban comme décrit ici)
et désormais, toute tentative d'accès répétée conduira à l'exclusion de l'IP douteuse !