Protection de Zimbra OSE contre la force brute et les attaques DoS

Zimbra Collaboration Suite Open-Source Edition possède dans son arsenal plusieurs outils puissants pour assurer la sécurité des informations. Parmi eux, Postscreen est une solution pour protéger le serveur de messagerie contre les attaques de botnets, ClamAV est un antivirus qui peut analyser les fichiers et les lettres entrants pour détecter les infections de logiciels malveillants, et SpamAssassin est l'un des meilleurs filtres anti-spam à ce jour. Cependant, ces outils ne sont pas en mesure de protéger le Zimbra OSE contre une forme d'attaque telle que la force brute. L'énumération des mots de passe la plus élégante, mais toujours assez efficace dans un dictionnaire spécial est lourde non seulement de la probabilité d'un piratage réussi avec toutes les conséquences qui en découlent, mais aussi de la création d'une charge importante sur le serveur, qui traite toutes les tentatives infructueuses de pirater le serveur avec Zimbra OSE.

image

En principe, vous pouvez vous protéger de la force brute à l'aide des outils Zimbra OSE standard. Les paramètres de stratégie de sécurité par mot de passe vous permettent de définir le nombre de tentatives de mot de passe ayant échoué, après quoi le compte potentiellement attaqué est bloqué. Le principal problème avec cette approche est que des situations surviennent dans lesquelles les comptes d'un ou plusieurs employés peuvent être bloqués en raison d'une attaque par force brute, à laquelle ils n'ont rien à faire, et le simple travail qui en résulte pour les employés peut entraîner de grandes pertes pour l'entreprise. C'est pourquoi cette option de protection contre la force brute est préférable de ne pas s'appliquer.



Pour se protéger contre la force brute, un outil spécial appelé DoSFilter est bien meilleur, qui est intégré à Zimbra OSE et peut se déconnecter automatiquement de Zimbra OSE via HTTP. En d'autres termes, le principe de fonctionnement de DoSFilter est similaire au principe de fonctionnement de PostScreen, uniquement utilisé pour un autre protocole. Conçu à l'origine pour limiter le nombre d'actions qu'un seul utilisateur peut effectuer, DoSFilter peut également fournir une protection contre la force brute. Sa principale différence avec l'outil intégré de Zimbra est qu'après un certain nombre de tentatives infructueuses, il bloque non pas l'utilisateur lui-même, mais l'adresse IP à partir de laquelle plusieurs tentatives sont faites pour se connecter à l'un ou l'autre compte. Grâce à cela, l'administrateur système peut non seulement se protéger de la force brute, mais aussi éviter de bloquer les employés de l'entreprise en ajoutant simplement le réseau interne de son entreprise à la liste des adresses IP et des sous-réseaux de confiance.

Le gros avantage de DoSFilter est qu'en plus de nombreuses tentatives de connexion à l'un ou l'autre compte, cet outil vous permet de bloquer automatiquement les cybercriminels qui ont pris possession des données d'authentification de l'employé, puis se sont connectés avec succès à son compte et ont commencé à envoyer des centaines de demandes au serveur.

Vous pouvez configurer DoSFilter à l'aide des commandes de console suivantes:

  • zimbraHttpDosFilterMaxRequestsPerSec - Avec cette commande, vous pouvez définir le nombre maximal de connexions autorisées pour un utilisateur. Par défaut, cette valeur est de 30 connexions.
  • zimbraHttpDosFilterDelayMillis - En utilisant cette commande, vous pouvez définir le 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 également -1 pour que toutes les connexions qui dépassent la limite spécifiée soient simplement interrompues. Par défaut, cette valeur est -1.
  • zimbraHttpThrottleSafeIPs - En utilisant cette commande, l'administrateur peut spécifier des adresses IP et des sous-réseaux approuvés qui ne seront pas affectés par les restrictions ci-dessus. Notez que la syntaxe de cette commande peut varier en fonction du résultat souhaité. Ainsi, par exemple, en entrant la commande zmprov mcf zimbraHttpThrottleSafeIPs 127.0.0.1 , vous réécrivez complètement la liste entière et ne laissez qu'une seule adresse IP dedans. Si vous entrez la commande zmprov mcf + zimbraHttpThrottleSafeIPs 127.0.0.1 , l'adresse IP que vous avez entrée sera ajoutée à la liste blanche. De même, en utilisant un signe de soustraction, vous pouvez supprimer n'importe quelle adresse IP de la liste des autorisés.

Notez que DoSFilter peut provoquer un certain nombre de problèmes lors de l'utilisation des extensions Zextras Suite Pro. Afin de les éviter, nous vous recommandons d'augmenter le nombre de connexions simultanées de 30 à 100 à l'aide de la commande zmprov mcf zimbraHttpDosFilterMaxRequestsPerSec 100 . De plus, nous recommandons d'ajouter le réseau interne de l'entreprise à la liste des autorisés. Cela peut être fait en utilisant la commande zmprov mcf + zimbraHttpThrottleSafeIPs 192.168.0.0/24 . Après avoir apporté des modifications à DoSFilter, assurez-vous de redémarrer le serveur de messagerie à l'aide de la commande de redémarrage zmmailboxdctl .

Le principal inconvénient de DoSFilter est qu'il fonctionne au niveau de l'application et ne peut donc que limiter la capacité des attaquants à effectuer diverses actions sur le serveur, sans limiter la possibilité de se connecter au nord. Pour cette raison, les demandes d'authentification ou d'envoi de lettres envoyées au serveur, bien qu'il s'agisse manifestement d'échecs, resteront une bonne vieille attaque DoS, qui ne peut pas être arrêtée à un niveau aussi élevé.

Afin de sécuriser complètement votre serveur d'entreprise avec Zimbra OSE, vous pouvez utiliser une solution telle que Fail2ban, qui est un cadre qui peut constamment surveiller les journaux du système d'information pour les actions répétées et bloquer l'intrus en modifiant les paramètres du pare-feu. Le blocage à un niveau aussi bas vous permet de désactiver les attaquants au stade de la connexion IP au serveur. Ainsi, Fail2Ban peut parfaitement compléter la protection construite avec DoSFilter. Voyons comment vous pouvez devenir ami avec Fail2Ban avec Zimbra OSE et ainsi augmenter la sécurité de l'infrastructure informatique de votre entreprise.

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

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

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

Afin de protéger notre système contre la force brute, nous surveillerons 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 en utilisant les commandes dpkg -s fail2ban , mais si vous utilisez CentOS, vous pouvez le vérifier en utilisant les commandes fail2ban installées par yum list . Si vous ne disposez pas de Fail2Ban, son installation ne sera pas un problème, car ce package se trouve dans presque tous les référentiels standard.

Une fois tous les logiciels nécessaires installés, vous pouvez procéder à la configuration de Fail2Ban. Pour ce faire, créez un fichier de configuration /etc/fail2ban/filter.d/zimbra.conf , dans lequel nous écrivons des expressions régulières pour les journaux Zimbra OSE qui correspondront à des tentatives de connexion incorrectes et déclencheront des mécanismes Fail2Ban. Voici un exemple du contenu de zimbra.conf avec un ensemble d'expressions régulières correspondant à diverses erreurs générées par Zimbra OSE lorsqu'une tentative d'authentification échoue:

# 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 les expressions régulières de Zimbra OSE compilées, il est temps de commencer à modifier la configuration de Fail2ban lui-même. Les paramètres de cet utilitaire se trouvent dans le fichier /etc/fail2ban/jail.conf . Juste au cas où, nous allons le sauvegarder en utilisant la commande cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak . Après cela, apportons ce fichier au format suivant:

 # 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 

Bien que cet exemple soit assez universel, il convient d'expliquer certains paramètres que vous souhaiterez peut-être modifier lors de la configuration de Fail2Ban vous-même:

  • Ignoreip - avec ce paramètre, vous pouvez spécifier une adresse IP ou un sous-réseau spécifique, l'adresse à partir de laquelle Fail2Ban ne doit pas vérifier. En règle générale, le réseau interne de l'entreprise et d'autres adresses approuvées sont ajoutés à la liste ignorée.
  • Bantime - Le temps pendant lequel l'intrus va interdire. Mesuré en quelques secondes. Une valeur de -1 signifie une interdiction illimitée.
  • Maxretry - Le nombre maximum de fois qu'une adresse IP peut essayer d'accéder au serveur.
  • Sendmail - Un paramètre qui vous permet d'envoyer automatiquement des alertes par e-mail sur le fonctionnement de Fail2Ban.
  • Findtime - Un paramètre qui vous permet de définir l'intervalle de temps après lequel l'adresse IP peut à nouveau essayer d'accéder au serveur après que le nombre maximum de tentatives infructueuses a été épuisé (paramètre maxretry)

Après avoir enregistré le fichier avec les paramètres Fail2Ban, il ne reste plus qu'à redémarrer cet utilitaire à l'aide de la commande service fail2ban restart . Après le redémarrage, les principaux journaux Zimbra commenceront à être constamment surveillés pour vérifier leur conformité avec les expressions régulières. Grâce à cela, l'administrateur sera en mesure d'éliminer virtuellement toute possibilité qu'un intrus pénètre non seulement dans les boîtes aux lettres Zimbra Collaboration Suite Open-Source Edition, mais également de protéger tous les services exécutés dans Zimbra OSE, ainsi que d'être au courant de toute tentative d'accès non autorisé.

Pour toutes questions relatives à la Suite Zextras, vous pouvez contacter la représentante de Zextras, Ekaterina Triandafilidi, par e-mail katerina@zextras.com

Source: https://habr.com/ru/post/fr476640/


All Articles