Zimbra Collaboration Suite Open-Source Edition beschikt over diverse krachtige tools om de informatiebeveiliging te waarborgen. Onder hen — een oplossing voor het beschermen van een mailserver tegen botnet-aanvallen, ClamAV — een antivirusprogramma dat binnenkomende bestanden en e-mails kan scannen op malware, en — een van de beste spamfilters van dit moment. Deze tools bieden Zimbra OSE echter geen bescherming tegen aanvallen zoals brute force. Het is niet de meest elegante, maar toch behoorlijk effectieve brute-force-aanval op wachtwoorden met behulp van een speciaal woordenboek. Deze aanval brengt niet alleen een grote kans op een succesvolle hack met alle gevolgen van dien met zich mee, maar creëert ook een aanzienlijke belasting op de server die alle mislukte pogingen om de server met Zimbra OSE te hacken verwerkt.

In principe kunt u zich tegen brute force-aanvallen beschermen met standaard Zimbra OSE-hulpmiddelen. Met de instellingen voor het wachtwoordbeveiligingsbeleid kunt u instellen hoe vaak een wachtwoord moet worden ingevoerd voordat een mogelijk aangevallen account wordt geblokkeerd. Het grootste probleem met deze aanpak is dat er situaties ontstaan waarin de accounts van een of meer werknemers worden geblokkeerd als gevolg van een brute-force-aanval waar ze niets mee te maken hebben. De daaruit voortvloeiende uitvaltijd voor werknemers kan aanzienlijke verliezen voor het bedrijf tot gevolg hebben. Daarom is het beter om dit type brute-force-beveiliging niet te gebruiken.

Voor brute force-beveiliging is een speciale tool genaamd DoSFilter een veel betere optie. Deze is ingebouwd in Zimbra OSE en kan automatisch de verbinding met Zimbra OSE via HTTP beëindigen. Met andere woorden: het principe van DoSFilter is vergelijkbaar met het principe van PostScreen. Het wordt alleen voor een ander protocol gebruikt. DoSFilter is oorspronkelijk ontworpen om het aantal acties dat een enkele gebruiker kan uitvoeren te beperken, maar biedt ook bescherming tegen brute force-aanvallen. Het belangrijkste verschil met de ingebouwde tool van Zimbra is dat na een aantal mislukte pogingen niet de gebruiker zelf wordt geblokkeerd, maar het IP-adres van waaruit meerdere keren is geprobeerd in te loggen op een specifiek account. Hiermee kan een systeembeheerder zich niet alleen beschermen tegen brute force-aanvallen, maar ook voorkomen dat werknemers van het bedrijf worden geblokkeerd door het interne netwerk van het bedrijf toe te voegen aan de lijst met vertrouwde IP-adressen en subnetten.
Een groot voordeel van DoSFilter is dat deze tool, naast de talrijke pogingen om in te loggen op een specifiek account, ook automatisch indringers kan blokkeren die de authenticatiegegevens van een medewerker in handen hebben gekregen, en vervolgens succesvol zijn ingelogd op zijn account en honderden verzoeken naar de server zijn gaan sturen.
U kunt DoSFilter configureren met behulp van de volgende consoleopdrachten:
- zimbraHttpDosFilterMaxAanvragenPerSec — Met deze opdracht kunt u het maximale aantal verbindingen instellen dat één gebruiker mag maken. Standaard bedraagt deze waarde 30 verbindingen.
- zimbraHttpDosFilterDelayMillis — Met deze opdracht kunt u een vertraging in milliseconden instellen voor verbindingen die de limiet overschrijden die met de vorige opdracht is ingesteld. Naast gehele getallen kan de beheerder ook 0 opgeven om helemaal geen vertraging te hebben en -1 om alle verbindingen te beëindigen die de opgegeven limiet overschrijden. Standaard is deze waarde -1.
- zimbraHttpThrottleSafeIPs — Met deze opdracht kan de beheerder vertrouwde IP-adressen en subnetten opgeven die niet aan de bovenstaande beperkingen onderhevig zijn. Houd er rekening mee dat de syntaxis van deze opdracht kan variëren, afhankelijk van het gewenste resultaat. Door bijvoorbeeld de opdracht in te voeren zmprov mcf zimbraHttpThrottleSafeIPs 127.0.0.1, dan herschrijft u de hele lijst volledig en laat u er slechts één IP-adres in staan. Als u de opdracht invoert zmprov mcf +zimbraHttpThrottleSafeIPs 127.0.0.1, dan wordt het door u ingevoerde IP-adres toegevoegd aan de witte lijst. Op dezelfde manier kunt u met behulp van het aftrekteken elk IP-adres uit de toegestane lijst verwijderen.
Houd er rekening mee dat DoSFilter een aantal problemen kan veroorzaken bij het gebruik van Zextras Suite Pro-extensies. Om ze te vermijden, raden we aan het aantal gelijktijdige verbindingen te verhogen van 30 naar 100 met behulp van de opdracht zmprov mcf zimbraHttpDosFilterMaxAanvragenPerSec 100. Daarnaast adviseren wij u om het interne netwerk van uw bedrijf toe te voegen aan de lijst met toegestane netwerken. Dit kan gedaan worden met behulp van het commando zmprov mcf +zimbraHttpThrottleSafeIPs 192.168.0.0/24. Nadat u wijzigingen in DoSFilter hebt aangebracht, moet u de mailserver opnieuw opstarten met de opdracht zmmailboxdctl opnieuw opstarten.
Het grootste nadeel van DoSFilter is dat het op applicatieniveau werkt en daarom alleen de mogelijkheden van aanvallers om verschillende acties op de server uit te voeren beperkt, zonder de mogelijkheid om verbinding te maken met de server te beperken. Daarom zullen verzoeken voor authenticatie aan de server of het versturen van brieven, hoewel deze uiteraard zullen mislukken, nog steeds een ouderwetse DoS-aanval vormen, die op zo'n hoog niveau onmogelijk te stoppen is.
Om uw bedrijfsserver volledig te beveiligen met Zimbra OSE, kunt u een oplossing als Fail2ban gebruiken. Dit is een raamwerk dat voortdurend de logs van informatiesystemen controleert op herhaalde acties en indringers blokkeert door de firewallinstellingen te wijzigen. Door blokkering op zo'n laag niveau aan te brengen, kunt u indringers uitschakelen zodra u via uw IP-adres verbinding maakt met de server. Fail2Ban vormt daarmee een perfecte aanvulling op de bescherming die met DoSFilter is opgebouwd. Ontdek hoe u Fail2Ban en Zimbra OSE kunt gebruiken en zo de veiligheid van de IT-infrastructuur van uw bedrijf kunt vergroten.
Net als elke andere applicatie voor ondernemingen, houdt Zimbra Collaboration Suite Open-Source Edition gedetailleerde logboeken bij van de werking ervan. De meeste worden in een map opgeslagen /opt/zimbra/log/ in de vorm van bestanden. Hier zijn er een paar:
- mailbox.log — Logboeken van Jetty-maildiensten
- audit.log — authenticatielogboeken
- clamd.log — antivirus-bewerkingslogboeken
- freshclam.log — antivirus-updatelogboeken
- convertd.log — bijlage converter logs
- zimbrastats.csv — serverprestatielogboeken
Ook Zimbra-logs zijn te vinden in het bestand /var/log/zimbra.log, waar de logs van Postfix en Zimbra zelf worden bewaard.
Om ons systeem te beschermen tegen brute force, zullen we toezicht houden mailbox.log, audit.log и zimbra.log.
Om alles te laten werken, moeten Fail2Ban en iptables op uw server met Zimbra OSE geïnstalleerd zijn. Als u Ubuntu gebruikt, kunt u dit doen met de opdrachten dpkg -s fail2banAls u CentOS gebruikt, kunt u dit controleren met behulp van de opdrachten yum lijst geïnstalleerd fail2ban. Als u Fail2Ban niet hebt geïnstalleerd, is de installatie ervan geen enkel probleem. Het pakket is namelijk in bijna alle standaard repositories beschikbaar.
Zodra alle benodigde software is geïnstalleerd, kunt u beginnen met het configureren van Fail2Ban. Hiervoor moet u een configuratiebestand maken. /etc/fail2ban/filter.d/zimbra.confwaarin we reguliere expressies voor Zimbra OSE-logs schrijven die ongeldige inlogpogingen matchen en Fail2Ban-mechanismen activeren. Hier ziet u een voorbeeld van zimbra.conf-inhoud met een set reguliere expressies die overeenkomen met verschillende fouten die door Zimbra OSE worden geretourneerd wanneer de authenticatie mislukt:
# 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 =Nadat de reguliere expressies voor Zimbra OSE zijn geschreven, is het tijd om de Fail2ban-configuratie zelf te bewerken. De instellingen voor dit hulpprogramma bevinden zich in het bestand /etc/fail2ban/jail.conf. Voor de zekerheid maken we er een back-up van met behulp van de opdracht cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak. Hierna brengen we dit bestand ongeveer in de volgende vorm:
# 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 = 5Hoewel dit voorbeeld vrij algemeen is, is het de moeite waard om enkele instellingen te verduidelijken die u mogelijk wilt wijzigen wanneer u Fail2Ban zelf configureert:
- Negeren — met deze parameter kunt u een specifiek IP-adres of subnetadres opgeven, waarvan Fail2Ban geen controles mag uitvoeren. Normaal gesproken worden het interne netwerk van het bedrijf en andere vertrouwde adressen toegevoegd aan de negeerlijst.
- Bantime — De tijd gedurende welke de overtreder een schorsing krijgt. Gemeten in seconden. Een waarde van -1 betekent een permanente ban.
- Maxretry — Het maximale aantal keren dat één IP-adres kan proberen toegang te krijgen tot de server.
- Sendmail — Een instelling waarmee u automatisch e-mailmeldingen kunt verzenden over het activeren van Fail2Ban.
- Vind tijd — Een instelling waarmee u een tijdsinterval kunt opgeven waarna een IP-adres opnieuw kan proberen toegang te krijgen tot de server nadat het maximale aantal mislukte pogingen is bereikt (de parameter maxretry)
Nadat u het bestand met de Fail2Ban-instellingen hebt opgeslagen, hoeft u dit hulpprogramma alleen nog maar opnieuw te starten met de opdracht service fail2ban opnieuw opstarten. Na het opnieuw opstarten worden de hoofdlogboeken van Zimbra voortdurend gecontroleerd op overeenkomsten met reguliere expressies. Hiermee kan de beheerder vrijwel elke mogelijkheid uitsluiten dat een indringer niet alleen zijn Zimbra Collaboration Suite Open-Source Edition-mailboxen binnendringt, maar ook alle services die binnen Zimbra OSE worden uitgevoerd, beschermen en op de hoogte blijven van pogingen om ongeautoriseerde toegang te verkrijgen.
Voor alle vragen met betrekking tot Zextras Suite kunt u contact opnemen met Zextras-vertegenwoordiger Ekaterina Triandafilidi via e-mail katerina@zextras.com
Bron: www.habr.com
