Zimbra Collaboration Suite Open-Source Edition har flere kraftfulde værktøjer til at sikre informationssikkerhed. Blandt dem — en løsning til at beskytte mailserveren mod angreb fra botnets, ClamAV — en antivirus, der kan scanne indkommende filer og mails for infektion med malware, samt — en af de bedste spamfiltre i dag. Men disse værktøjer kan ikke beskytte Zimbra OSE mod en type angreb som brute force. En ikke så elegant, men stadig ret effektiv metode til at knække adgangskoder via en specialiseret ordbog indebærer ikke kun en risiko for succesfuld hacking med alle de deraf følgende konsekvenser, men også en betydelig belastning af serveren, som håndterer alle mislykkedes angreb på serveren med Zimbra OSE.

I princippet kan man beskytte sig mod brute force med de standardmæssige midler i Zimbra OSE. Indstillingerne for sikkerhedspolitikken for adgangskoder giver mulighed for at fastsætte antallet af mislykkedes adgangskodeforsøg, efter hvilke en potentielt angrebet konto låses. Hovedproblemet med denne tilgang er, at der kan opstå situationer, hvor konti for en eller flere arbejdstagere kan blive låst på grund af en brute force-angreb, som de ikke har nogen forbindelse til, og den hindring i arbejdet, der opstår for medarbejderne, kan medføre store tab for virksomheden. Derfor er denne beskyttelsesmetode mod brute force bedst at undgå.

For protection against brute force attacks, a specialized tool called DoSFilter is much better suited. This tool is integrated into Zimbra OSE and can automatically terminate the connection to Zimbra OSE via HTTP. In other words, the principle of operation for DoSFilter is similar to that of PostScreen, but it is used for a different protocol. Initially designed to limit the number of actions a single user can perform, DoSFilter can also provide protection against brute force attacks. Its key distinction from the built-in Zimbra tool is that after a certain number of failed attempts, it blocks not the user themselves, but the IP address from which multiple login attempts are made. This way, a system administrator can not only protect against brute force attacks but also avoid blocking enterprise employees by simply adding the internal network of their enterprise to the list of trusted IP addresses and subnets.
A significant advantage of DoSFilter is that, in addition to numerous login attempts to any account, this tool can automatically block those attackers who have obtained a legitimate employee's authentication data and then successfully logged into their account and started sending hundreds of requests to the server.
You can configure DoSFilter using the following console commands:
- zimbraHttpDosFilterMaxRequestsPerSec — This command allows you to set the maximum number of connections permitted for a single user. By default, this value is set to 30 connections.
- zimbraHttpDosFilterDelayMillis — This command allows you to set a delay in milliseconds for connections that exceed the limit set by the previous command. In addition to integer values, the administrator can specify 0 for no delay at all, and -1 for all connections exceeding the specified limit to be simply terminated. By default, this value is set to -1.
- zimbraHttpThrottleSafeIPs — This command allows the administrator to specify trusted IP addresses and subnets that will not be subject to the above restrictions. Note that the syntax of this command may change depending on the desired outcome. For example, entering the command zmprov mcf zimbraHttpThrottleSafeIPs 127.0.0.1, vil du fuldt overskrive hele listen og efterlade kun én IP-adresse. Hvis du indtaster kommandoen zmprov mcf +zimbraHttpThrottleSafeIPs 127.0.0.1, vil den IP-adresse, du angav, blive føjet til hvidlisten. På tilsvarende måde kan du med minus-tegnet fjerne en IP fra den tilladte liste.
Vi bemærker, at DoSFilter kan skabe en række problemer, når man bruger Zextras Suite Pro-udvidelser. For at undgå disse anbefaler vi at øge antallet af samtidige forbindelser fra 30 til 100 ved hjælp af kommandoen zmprov mcf zimbraHttpDosFilterMaxRequestsPerSec 100. Desuden anbefaler vi at tilføje virksomhedens interne netværk til den tilladte liste. Dette kan gøres ved hjælp af kommandoen zmprov mcf +zimbraHttpThrottleSafeIPs 192.168.0.0/24. Efter ændringer i DoSFilter skal du altid genstarte mailserveren med kommandoen zmmailboxdctl restart.
Den største ulempe ved DoSFilter er, at det arbejder på anvendelsesniveau og derfor kun kan begrænse, hvad angribere kan gøre på serveren uden at begrænse forbindelsen til serveren. Derfor vil de anmodninger, der sendes til serveren for autentifikation eller for at sende e-mails, selvom de fejler, stadig være en gammel god DoS-angreb, som ikke kan stoppes på et så højt niveau.
For at fuldt ud sikre din virksomhedserver med Zimbra OSE, kan du overveje løsningen Fail2ban, som er et framework, der konstant kan overvåge logfiler i informationssystemerne for gentagne handlinger og blokere overtræderen ved at ændre firewall-indstillingerne. Blokeringen på så lavt niveau gør det muligt at afbryde angribere allerede ved IP-forbindelsen til serveren. På denne måde kan Fail2Ban være et glimrende supplement til beskyttelsen opbygget med DoSFilter. Lad os finde ud af, hvordan vi kan integrere Fail2Ban med Zimbra OSE og derved øge sikkerheden af din virksomheds IT-infrastruktur.
Som med enhver anden applikation af virksomhedsklasse fører Zimbra Collaboration Suite Open-Source Edition detaljerede logfiler over sit arbejde. De fleste af dem opbevares i mappen /opt/zimbra/log/ som filer. Her er blot nogle af dem:
- mailbox.log — logs over mailtjenesten Jetty
- audit.log — logs over autentifikation
- clamd.log — logfiler for antivirus
- freshclam.log — logfiler for antivirus updates
- convertd.log — logfiler for attachment converter
- zimbrastats.csv — logfiler for server performance
Logfilerne for Zimbra kan også findes i filen /var/log/zimbra.log, hvor logfiler for Postfix og selve Zimbra opbevares.
For at beskytte vores system mod brute force angreb vil vi overvåge mailbox.log, audit.log og zimbra.log.
For at alt fungerer, er det nødvendigt, at Fail2Ban og iptables er installeret på din server med Zimbra OSE. Hvis du bruger Ubuntu, kan du gøre dette med kommandoerne dpkg -s fail2ban, hvis du derimod bruger CentOS, kan du kontrollere dette med kommandoerne yum list installed fail2ban. Hvis du ikke har Fail2Ban installeret, vil installationen ikke være et problem, da denne pakke er tilgængelig i næsten alle standard-repositorier.
Når alt det nødvendige software er installeret, kan vi begynde at konfigurere Fail2Ban. For dette skal vi oprette en konfigurationsfil /etc/fail2ban/filter.d/zimbra.conf, hvor vi vil skrive regulære udtryk for logfilerne til Zimbra OSE, som passer til forkerte loginforsøg og aktiverer Fail2Ban-mekanismerne. Her er et eksempel på indholdet af zimbra.conf med et sæt regulære udtryk, der svarer til forskellige fejl genereret i Zimbra OSE ved mislykkede autentificeringsforsøg:
# 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 =Når de regulære udtryk for Zimbra OSE er udarbejdet, er det tid til at redigere konfigurationen af selve Fail2ban. Indstillingerne for dette værktøj findes i filen /etc/fail2ban/jail.conf. For en sikkerheds skyld laver vi en sikkerhedskopi ved hjælp af kommandoen cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak. Derefter bringer vi denne fil til omtrent følgende udgave:
# 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 = 5Dette eksempel er selvom det er ret universelt, værd at præcisere nogle parametre, som du måske vil ændre ved din egen konfiguration af Fail2Ban:
- Ignoreip — med denne parameter kan du angive en bestemt IP eller subnet, adresser som Fail2Ban ikke skal kontrollere. Som regel tilføjes virksomhedens interne netværk og andre betroede adresser til den ignorerede liste.
- Bantime — Den tid, en overtræder vil blive bandlyst. Måles i sekunder. Værdien -1 betyder livstidsbanning.
- Maxretry — Det maksimale antal gange, som en IP-adresse kan forsøge at få adgang til serveren.
- Sendmail — En indstilling, der automatisk sender e-mail-notifikationer om aktivering af Fail2Ban.
- Findtime — En indstilling, der angiver et tidsinterval, hvorefter IP-adressen kan forsøge at få adgang til serveren igen efter at have nået det maksimale antal mislykkede forsøg (parameter maxretry)
Efter at have gemt filen med indstillingerne for Fail2Ban, er det kun nødvendigt at genstarte dette værktøj ved hjælp af kommandoen service fail2ban restart. Efter genstart vil hovedlogfilerne fra Zimbra konstant blive overvåget for overholdelse af regulære udtryk. Dette gør det muligt for administratoren at udelukke enhver mulighed for indtrængen fra en angriber, ikke kun i Zimbra Collaboration Suite Open-Source Edition's postkasser, men også beskytte alle tjenester, der kører under Zimbra OSE, samt holde sig ajour med enhver forsøg på uautoriseret adgang.
Hvis du har spørgsmål vedrørende Zextras Suite, kan du kontakte virksomhedens repræsentant "Zextras", Ekaterina Triandafiliidi, på e-mail katerina@zextras.com
Kilde: habr.com
