Protection Zimbra OSE contre les attaques par force brute et DoS

La version Open-Source de Zimbra Collaboration Suite dispose de plusieurs outils puissants pour garantir la sécurité de l'information. Parmi eux Postscreen — une solution pour protéger le serveur de messagerie contre les attaques des botnets, ClamAV — un antivirus capable de vérifier les fichiers entrants et les courriers pour détecter toute infection par des logiciels malveillants, ainsi que SpamAssassin — l'un des meilleurs filtres anti-spam à ce jour. Cependant, ces outils ne peuvent pas protéger Zimbra OSE contre les attaques de type bruteforce. Bien que ce ne soit pas la méthode la plus élégante, l'attaque par un dictionnaire reste assez efficace et engendre non seulement la possibilité d'une violation réussie avec toutes les conséquences qui en découlent, mais aussi une charge significative sur le serveur, qui gère toutes les tentatives de connexion échouées au serveur Zimbra OSE.

Protection Zimbra OSE contre les attaques par force brute et DoS

En principe, il est possible de se protéger contre le bruteforce grâce aux outils standards de Zimbra OSE. Les paramètres de la politique de sécurité des mots de passe permettent d'établir le nombre de tentatives de connexion échouées après lequel un compte potentiellement attaqué est bloqué. Le principal problème de cette approche est qu'il peut arriver que les comptes de plusieurs employés soient bloqués en raison d'une attaque par bruteforce à laquelle ils n'ont rien à voir, ce qui peut entraîner des temps d'arrêt pour les employés et causer de grandes pertes pour l'entreprise. C'est pourquoi cette méthode de protection contre le bruteforce est préférable à éviter.

Protection Zimbra OSE contre les attaques par force brute et DoS

Pour se protéger contre les attaques par force brute, il est préférable d'utiliser un outil spécial appelé DoSFilter, qui est intégré à Zimbra OSE et peut automatiquement interrompre la connexion avec Zimbra OSE via HTTP. En d'autres termes, le principe de fonctionnement de DoSFilter est similaire à celui de PostScreen, mais il est utilisé pour un autre protocole. Initialement conçu pour limiter le nombre d'actions qu'un utilisateur peut effectuer, DoSFilter peut également garantir une protection contre la force brute. Sa principale différence par rapport à l'outil intégré de Zimbra est que, après un certain nombre de tentatives infructueuses, il bloque non pas l'utilisateur lui-même, mais l'adresse IP à partir de laquelle de multiples tentatives de connexion à un compte sont effectuées. Grâce à cela, l'administrateur système peut non seulement se protéger contre la force brute, mais également éviter le blocage des employés de l'entreprise en ajoutant simplement à la liste des adresses IP et sous-réseaux de confiance le réseau interne de son entreprise.

Un grand avantage de DoSFilter est que, en plus des nombreuses tentatives de connexion à un compte, cet outil peut automatiquement bloquer les attaquants qui ont obtenu les données d'authentification d'un employé, puis se sont connectés avec succès à son compte et ont commencé à envoyer des centaines de requêtes au serveur.

DoSFilter peut être configuré à l'aide des commandes de console suivantes :

  • zimbraHttpDosFilterMaxRequestsPerSec — Cette commande permet de définir le nombre maximal de connexions autorisées pour un seul utilisateur. Par défaut, cette valeur est de 30 connexions.
  • zimbraHttpDosFilterDelayMillis — Cette commande permet de définir un délai en millisecondes pour les connexions qui dépassent la limite définie par la commande précédente. En plus des valeurs entières, l'administrateur peut spécifier 0 pour qu'il n'y ait aucun délai, et -1 pour que toutes les connexions dépassant la limite définie soient simplement interrompues. Par défaut, cette valeur est de -1.
  • zimbraHttpThrottleSafeIPs — Avec cette commande, l'administrateur peut spécifier les adresses IP et sous-réseaux de confiance sur lesquels les limitations mentionnées ci-dessus ne s'appliqueront pas. Il est à noter que la syntaxe de cette commande peut varier en fonction du résultat souhaité. Par exemple, en entrant la commande zmprov mcf zimbraHttpThrottleSafeIPs 127.0.0.1, vous écraserez complètement la liste entière et n'y laisserez qu'une seule adresse IP. Si vous entrez la commande zmprov mcf +zimbraHttpThrottleSafeIPs 127.0.0.1, l'adresse IP que vous avez saisie sera ajoutée à la liste blanche. De la même manière, en utilisant le signe moins, vous pouvez retirer une adresse IP de la liste autorisée.

Notons que DoSFilter peut causer divers problèmes lors de l'utilisation des extensions Zextras Suite Pro. Pour éviter cela, nous vous recommandons d'augmenter le nombre de connexions simultanées de 30 à 100 en utilisant la commande zmprov mcf zimbraHttpDosFilterMaxRequestsPerSec 100. De plus, nous vous conseillons d'ajouter le réseau interne de l'entreprise à la liste autorisée. Vous pouvez le faire à l'aide de la commande zmprov mcf +zimbraHttpThrottleSafeIPs 192.168.0.0/24. Après avoir apporté des modifications à DoSFilter, redémarrez toujours le serveur de messagerie en utilisant la commande zmmailboxdctl restart.

Le principal inconvénient de DoSFilter est qu'il fonctionne au niveau de l'application et peut donc seulement limiter la capacité des attaquants à effectuer diverses actions sur le serveur, sans restreindre leur capacité à se connecter au serveur. En raison de cela, les requêtes d'authentification ou d'envoi de mails envoyées au serveur, bien qu'elles échouent par défaut, constitueront toujours une véritable attaque par déni de service, qu'il est impossible d'arrêter à un niveau aussi élevé.

Pour sécuriser complètement votre serveur d'entreprise avec Zimbra OSE, vous pouvez utiliser une solution telle que Fail2ban, qui est un cadre capable de surveiller en permanence les journaux des systèmes d'information à la recherche d'actions répétées et de bloquer les intrus en modifiant les règles du pare-feu. Le blocage à un niveau aussi bas permet de déconnecter les attaquants dès l'étape de connexion IP au serveur. Ainsi, Fail2Ban peut compléter efficacement la protection mise en place par DoSFilter. Voyons comment intégrer Fail2Ban avec Zimbra OSE afin d'améliorer la sécurité de l'infrastructure informatique de votre entreprise.

Comme toute autre application de classe entreprise, Zimbra Collaboration Suite Open-Source Edition maintient des journaux détaillés de son activité. La plupart d'entre eux sont stockés dans le dossier /opt/zimbra/log/ sous forme de fichiers. Voici quelques-uns d'entre eux :

  • mailbox.log — journaux du service de messagerie Jetty
  • audit.log — journaux d'authentification
  • clamd.log — journaux de fonctionnement de l'antivirus
  • freshclam.log — journaux de mise à jour de l'antivirus
  • convertd.log — journaux du convertisseur de pièces jointes
  • zimbrastats.csv — journaux de performance du serveur

Les journaux de Zimbra peuvent également être trouvés dans le fichier /var/log/zimbra.log, où sont enregistrés les journaux de fonctionnement de Postfix et de Zimbra lui-même.

Pour protéger notre système contre les attaques par force brute, nous allons surveiller mailbox.log, audit.log et zimbra.log.

Pour que tout fonctionne, il est nécessaire que Fail2Ban et iptables soient installés sur votre serveur avec Zimbra OSE. Si vous utilisez Ubuntu, vous pouvez le faire avec les commandes dpkg -s fail2ban, si vous utilisez CentOS, vous pouvez le vérifier avec les commandes yum list installed fail2ban. Si Fail2Ban n'est pas installé, son installation ne posera pas de problème, car ce package se trouve dans presque tous les dépôts standard.

Après que tout le logiciel nécessaire soit installé, vous pouvez commencer à configurer Fail2Ban. Pour cela, il faut créer un fichier de configuration /etc/fail2ban/filter.d/zimbra.conf, dans lequel nous allons inscrire des expressions régulières pour les journaux de Zimbra OSE, qui correspondront aux tentatives de connexion infructueuses et déclencheront les mécanismes de Fail2Ban. Voici un exemple de contenu de zimbra.conf avec un ensemble d'expressions régulières correspondant à différents messages d'erreur générés dans Zimbra OSE lors d'une tentative d'authentification échouée :

# Fail2Ban configuration file
 
[Definition]
failregex = [ip=<HOST>;] account - authentication failed for .* (no such account)$
                        [ip=<HOST>;] security - cmd=Auth; .* error=authentication failed for .*, invalid password;$
                        ;oip=<HOST>;.* security - cmd=Auth; .* protocol=soap; error=authentication failed for .* invalid password;$
                        ;oip=<HOST>;.* security - cmd=Auth; .* protocol=imap; error=authentication failed for .* invalid password;$
                        [oip=<HOST>;.* SoapEngine - handler exception: authentication failed for .*, account not found$
                        WARN .*;ip=<HOST>;ua=ZimbraWebClient .* security - cmd=AdminAuth; .* error=authentication failed for .*;$

ignoreregex =

Une fois que les expressions régulières pour Zimbra OSE sont rédigées, il est temps de commencer à éditer la configuration de Fail2ban. Les paramètres de cet outil se trouvent dans le fichier /etc/fail2ban/jail.conf. Pour plus de prudence, faisons-en une sauvegarde avec la commande cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak. Ensuite, nous allons modifier ce fichier pour qu'il ressemble à peu près à ceci :

# Fail2Ban configuration file
 
[DEFAULT]
ignoreip = 192.168.0.1/24
bantime = 600
findtime = 600
maxretry = 5
backend = auto
 
[ssh-iptables]
enabled = false
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, dest=admin@company.ru, sender=fail2ban@company.ru]
logpath = /var/log/messages
maxretry = 5
 
[sasl-iptables]
enabled = false
filter = sasl
backend = polling
action = iptables[name=sasl, port=smtp, protocol=tcp]
sendmail-whois[name=sasl, dest=support@company.ru]
logpath = /var/log/zimbra.log
 
[ssh-tcpwrapper]
enabled = false
filter = sshd
action = hostsdeny
sendmail-whois[name=SSH, dest=support@ company.ru]
ignoreregex = for myuser from
logpath = /var/log/messages
 
[zimbra-account]
enabled = true
filter = zimbra
action = iptables-allports[name=zimbra-account]
sendmail[name=zimbra-account, dest=support@company.ru ]
logpath = /opt/zimbra/log/mailbox.log
bantime = 600
maxretry = 5
 
[zimbra-audit]
enabled = true
filter = zimbra
action = iptables-allports[name=zimbra-audit]
sendmail[name=Zimbra-audit, dest=support@company.ru]
logpath = /opt/zimbra/log/audit.log
bantime = 600
maxretry = 5
 
[zimbra-recipient]
enabled = true
filter = zimbra
action = iptables-allports[name=zimbra-recipient]
sendmail[name=Zimbra-recipient, dest=support@company.ru]
logpath = /var/log/zimbra.log
bantime = 172800
maxretry = 5
 
[postfix]
enabled = true
filter = postfix
action = iptables-multiport[name=postfix, port=smtp, protocol=tcp]
sendmail-buffered[name=Postfix, dest=support@company.ru]
logpath = /var/log/zimbra.log
bantime = -1
maxretry = 5

Cet exemple, bien qu'il soit assez universel, mérite quelques clarifications sur certains paramètres que vous souhaiterez peut-être modifier lors de la configuration autonome de Fail2Ban :

  • Ignoreip — avec ce paramètre, vous pouvez spécifier une adresse IP ou un sous-réseau que Fail2Ban ne doit pas vérifier. En général, l'adresse interne de l'entreprise et d'autres adresses de confiance sont ajoutées à la liste des ignorés.
  • Bantime — Durée pendant laquelle l'intrus sera banni. Mesurée en secondes. La valeur -1 signifie un bannissement indéfini.
  • Maxretry — Nombre maximal de fois qu'une adresse IP peut tenter d'accéder au serveur.
  • Sendmail — Configuration permettant l'envoi automatique d'e-mails d'alerte lors de l'activation de Fail2Ban.
  • Findtime — Configuration permettant de définir un intervalle de temps après lequel l'adresse IP peut à nouveau essayer d'accéder au serveur après avoir atteint le nombre maximal de tentatives échouées (paramètre maxretry)

Après avoir enregistré le fichier de configuration de Fail2Ban, il ne reste plus qu'à redémarrer cet utilitaire avec la commande service fail2ban restart. Après le redémarrage, les journaux principaux de Zimbra commenceront à être surveillés en permanence pour vérifier la conformité avec les expressions régulières. Grâce à cela, l'administrateur pourra pratiquement exclure toute possibilité d'intrusion dans les boîtes aux lettres de Zimbra Collaboration Suite Open-Source Edition, ainsi que protéger tous les services fonctionnant dans le cadre de Zimbra OSE, tout en étant informé de toute tentative d'accès non autorisé.

Pour toute question concernant Zextras Suite, vous pouvez contacter la représentante de la société « Zextras », Ekaterina Triandaphilidi, par e-mail à katerina@zextras.com.

Source : habr.com

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster