Die Zimbra Collaboration Suite Open-Source Edition bietet eine Vielzahl leistungsstarker Werkzeuge zur Gewährleistung der Informationssicherheit. Dazu gehören — eine Lösung zum Schutz des Mailservers vor Botnetzangriffen, ClamAV — ein Antivirenprogramm, das eingehende Dateien und E-Mails auf Malware überprüft, sowie — einer der besten Spam-Filter, die es derzeit gibt. Diese Werkzeuge können jedoch den Zimbra OSE nicht vor Angriffen wie Brute Force schützen. Obwohl nicht die eleganteste Methode, ist das Passwort-Cracking mittels eines speziellen Wörterbuchs nach wie vor recht effektiv und birgt nicht nur das Risiko eines erfolgreichen Hacks mit allen damit verbundenen Konsequenzen, sondern verursacht auch eine erhebliche Belastung für den Server, der alle fehlgeschlagenen Zugriffsversuche auf den Zimbra OSE verarbeitet.

Im Grunde lässt sich das Risiko von Brute-Force-Angriffen mit den Standardmitteln von Zimbra OSE minimieren. Die Einstellungen für die Passwortsicherheitsrichtlinie ermöglichen es, die Anzahl der fehlgeschlagenen Anmeldeversuche festzulegen, nach denen das betroffene Konto gesperrt wird. Das Hauptproblem bei diesem Ansatz ist, dass es Situationen geben kann, in denen die Konten eines oder mehrerer Mitarbeiter aufgrund eines Brute-Force-Angriffs gesperrt werden, an dem sie nicht beteiligt sind. Dies kann zu Arbeitsausfällen führen, die für das Unternehmen erhebliche Verluste bedeuten können. Aus diesem Grund ist es besser, eine solche Variante des Brute-Force-Schutzes zu vermeiden.

Für den Schutz gegen Brute-Force-Angriffe eignet sich ein spezielles Tool namens DoSFilter, das in Zimbra OSE integriert ist und die HTTP-Verbindung zu Zimbra OSE automatisch unterbrechen kann. Mit anderen Worten, das Funktionsprinzip von DoSFilter ähnelt dem von PostScreen, wird jedoch für ein anderes Protokoll verwendet. Ursprünglich entwickelt, um die Anzahl der Aktionen, die ein Benutzer durchführen kann, zu begrenzen, bietet DoSFilter auch Schutz vor Brute-Force-Angriffen. Der entscheidende Unterschied zu dem in Zimbra integrierten Tool besteht darin, dass es nach einer bestimmten Anzahl von Fehlversuchen nicht den Benutzer selbst blockiert, sondern die IP-Adresse, von der aus multiple Anmeldeversuche unternommen werden. Auf diese Weise kann der Systemadministrator nicht nur Brute-Force-Angriffe abwehren, sondern auch die Sperrung von Mitarbeitern des Unternehmens vermeiden, indem er einfach das interne Netzwerk mit seinen vertrauenswürdigen IP-Adressen und Subnetzen in die Ausnahmeliste aufnimmt.
Ein großer Vorteil von DoSFilter ist, dass neben den zahlreichen Versuchen, auf verschiedene Konten zuzugreifen, mit diesem Tool automatisch die Angreifer blockiert werden können, die sich Zugang zu den Authentifizierungsdaten eines Mitarbeiters verschafft haben, dann erfolgreich in dessen Konto eingeloggt sind und hunderte Anfragen an den Server senden.
DoSFilter kann mit den folgenden Konsolenbefehlen konfiguriert werden:
- zimbraHttpDosFilterMaxRequestsPerSec — Mit diesem Befehl kann die maximale Anzahl von Verbindungen festgelegt werden, die für einen einzelnen Benutzer zulässig sind. Standardmäßig beträgt dieser Wert 30 Verbindungen.
- zimbraHttpDosFilterDelayMillis — Mit diesem Befehl kann eine Verzögerung in Millisekunden für Verbindungen festgelegt werden, die den vorher festgelegten Limit überschreiten. Neben ganzzahligen Werten kann der Administrator 0 angeben, um keine Verzögerung zu haben, sowie -1, um alle Verbindungen, die das festgelegte Limit überschreiten, einfach abzubrechen. Standardmäßig beträgt dieser Wert -1.
- zimbraHttpThrottleSafeIPs — Mit diesem Befehl kann der Administrator vertrauenswürdige IP-Adressen und Subnetze angeben, für die die oben genannten Beschränkungen nicht gelten. Es ist zu beachten, dass die Syntax dieses Befehls je nach gewünschtem Ergebnis variieren kann. So können Sie beispielsweise, indem Sie den Befehl zmprov mcf zimbraHttpThrottleSafeIPs 127.0.0.1, die gesamte Liste vollständig überschreiben und nur eine IP-Adresse darin belassen. Geben Sie jedoch den Befehl zmprov mcf +zimbraHttpThrottleSafeIPs 127.0.0.1, ein, wird die von Ihnen eingegebene IP-Adresse zur Whitelist hinzugefügt. In ähnlicher Weise können Sie mit dem Minuszeichen eine beliebige IP aus der Liste der erlaubten Adressen entfernen.
Es ist zu beachten, dass der DoSFilter eine Reihe von Problemen bei der Verwendung von Zextras Suite Pro verursachen kann. Um diese zu vermeiden, empfehlen wir, die Anzahl der gleichzeitigen Verbindungen von 30 auf 100 mit dem Befehl zmprov mcf zimbraHttpDosFilterMaxRequestsPerSec 100zu erhöhen. Außerdem empfehlen wir, das interne Unternehmensnetzwerk zur Liste der erlaubten Adressen hinzuzufügen. Dies kann mit dem Befehl zmprov mcf +zimbraHttpThrottleSafeIPs 192.168.0.0/24erreicht werden. Nach Änderungen am DoSFilter sollten Sie unbedingt den Mailserver mit dem Befehl zmmailboxdctl restart.
Der größte Nachteil von DoSFilter besteht darin, dass er auf Anwendungsebene arbeitet und somit nur die Möglichkeiten der Angreifer einschränken kann, verschiedene Aktionen auf dem Server durchzuführen, ohne dabei die Möglichkeit, sich mit dem Server zu verbinden, zu begrenzen. Daher werden die an den Server gesendeten Anfragen zur Authentifizierung oder zum Versand von E-Mails, auch wenn sie von vornherein fehlerhaft sind, nach wie vor als klassische DoS-Angriffe erscheinen, die auf einem so hohen Niveau nicht gestoppt werden können.
Um Ihren Unternehmensserver mit Zimbra OSE umfassend zu sichern, können Sie eine Lösung wie Fail2ban nutzen. Dieses Framework überwacht kontinuierlich die Protokolle von Informationssystemen auf wiederholte Aktivitäten und blockiert Angreifer durch Anpassung der Firewall-Einstellungen. Die Blockierung auf dieser niedrigen Ebene ermöglicht es, böswillige Akteure bereits beim IP-Verbindungsaufbau mit dem Server zu deaktivieren. Auf diese Weise kann Fail2Ban hervorragend zum Schutz beitragen, der durch DoSFilter aufgebaut wurde. Lassen Sie uns sehen, wie man Fail2Ban mit Zimbra OSE integriert, um die Sicherheit der IT-Infrastruktur Ihres Unternehmens zu erhöhen.
Wie jede andere Unternehmensanwendung führt auch die Zimbra Collaboration Suite Open-Source Edition detaillierte Protokolle ihrer Aktivitäten. Die meisten von ihnen werden im Ordner /opt/zimbra/log/ als Dateien gespeichert. Hier sind einige davon:
- mailbox.log — Protokolle des Jetty-Maildienstes
- audit.log — Protokolle der Authentifizierung
- clamd.log — Protokolle der Antivirenarbeit
- freshclam.log — Protokolle der Antivirenupdates
- convertd.log — Protokolle des Anhangs-Konverters
- zimbrastats.csv — Protokolle zur Serverleistung
Außerdem finden Sie die Zimbra-Protokolle in der Datei /var/log/zimbra.log, wo die Protokolle von Postfix und Zimbra selbst gespeichert werden.
Um unser System vor Brute-Force-Angriffen zu schützen, werden wir überwachen mailbox.log, audit.log und zimbra.log.
Damit alles funktioniert, müssen Fail2Ban und iptables auf Ihrem Server mit Zimbra OSE installiert sein. Falls Sie Ubuntu verwenden, können Sie dies mit den Befehlen dpkg -s fail2ban, wenn Sie jedoch CentOS verwenden, können Sie dies mit den Befehlen überprüfen yum list installed fail2ban. Sollten Sie Fail2Ban nicht installiert haben, wird die Installation kein Problem sein, da dieses Paket in praktisch allen Standard-Repositories verfügbar ist.
Nachdem alle notwendigen Softwareinstallationen erfolgt sind, können Sie mit der Konfiguration von Fail2Ban beginnen. Dazu müssen Sie eine Konfigurationsdatei erstellen /etc/fail2ban/filter.d/zimbra.conf, in der wir reguläre Ausdrücke für die Protokolle von Zimbra OSE angeben, die mit falschen Anmeldeversuchen übereinstimmen und die Mechanismen von Fail2Ban aktivieren. Hier ist ein Beispiel für den Inhalt von zimbra.conf mit einer Reihe regulärer Ausdrücke, die verschiedenen Fehlern entsprechen, die in Zimbra OSE bei fehlgeschlagenen Authentifizierungsversuchen ausgegeben werden:
# 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 =Nachdem die regulären Ausdrücke für Zimbra OSE erstellt wurden, ist es an der Zeit, die Konfiguration von Fail2Ban zu bearbeiten. Die Einstellungen dieses Tools befinden sich in der Datei /etc/fail2ban/jail.conf. Zur Sicherheit erstellen wir eine Sicherungskopie mit dem Befehl cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak. Danach gestalten wir diese Datei ungefähr wie folgt:
# 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 = 5Dieses Beispiel ist zwar recht allgemein gehalten, dennoch sollten einige Parameter erklärt werden, die Sie möglicherweise bei der eigenständigen Konfiguration von Fail2Ban ändern möchten:
- Ignoreip — Mit diesem Parameter können Sie eine bestimmte IP oder ein Subnetz angeben, deren Adressen Fail2Ban nicht überprüfen soll. In der Regel wird die interne Netzwerkinfrastruktur des Unternehmens und andere vertrauenswürdige Adressen in die Liste der Ausnahmen aufgenommen.
- Bantime — Die Zeit, für die ein Übeltäter gesperrt wird. Sie wird in Sekunden gemessen. Der Wert -1 bedeutet eine dauerhafte Sperrung.
- Maxretry — Die maximale Anzahl an Versuchen, die eine IP-Adresse haben darf, um auf den Server zuzugreifen.
- Sendmail — Eine Einstellung, die es ermöglicht, automatisch E-Mail-Benachrichtigungen über die Auslösung von Fail2Ban zu senden.
- Findtime — Eine Einstellung, die es ermöglicht, ein Zeitintervall festzulegen, nach dem die IP-Adresse erneut versuchen kann, auf den Server zuzugreifen, nachdem die maximale Anzahl an fehlgeschlagenen Versuchen (Parameter maxretry) erreicht wurde.
Nachdem Sie die Konfigurationsdatei von Fail2Ban gespeichert haben, müssen Sie nur noch dieses Tool mit dem Befehl neu starten. service fail2ban restart. Nach dem Neustart werden die Hauptprotokolle von Zimbra kontinuierlich auf Übereinstimmungen mit regulären Ausdrücken überwacht. Dadurch kann der Administrator praktisch jede Möglichkeit eines unbefugten Zugriffs nicht nur auf die Postfächer der Zimbra Collaboration Suite Open-Source Edition ausschließen, sondern auch alle in Zimbra OSE laufenden Dienste schützen und über jegliche Versuche des unbefugten Zugriffs auf dem Laufenden bleiben.
Bei Fragen zu Zextras Suite können Sie sich an die Unternehmensvertreterin von «Zextras», Ekaterina Triandafiliidi, unter der E-Mail-Adresse katerina@zextras.com wenden.
Quelle: habr.com
