Skydda Zimbra OSE från brute force och DoS-attacker

Zimbra Collaboration Suite Open-Source Edition har flera kraftfulla verktyg i sin arsenal för att säkerställa informationssäkerhet. Bland dem Efterskärm — en lösning för att skydda en e-postserver från botnätattacker, ClamAV — ett antivirusprogram som kan skanna inkommande filer och e-postmeddelanden efter skadlig programvara, och Assassin — ett av de bästa spamfiltren idag. Dessa verktyg kan dock inte skydda Zimbra OSE mot sådana typer av attacker som brute force. Inte den mest eleganta, men ändå ganska effektiva, lösenordsbrote-force-attacken med en speciell ordbok är fylld inte bara med sannolikheten för ett lyckat hack med alla efterföljande konsekvenser, utan också med skapandet av en betydande belastning på servern som bearbetar alla misslyckade försök att hacka servern med Zimbra OSE.

Skydda Zimbra OSE från brute force och DoS-attacker

I princip kan du skydda dig mot brute force med hjälp av vanliga Zimbra OSE-verktyg. Med inställningar för lösenordssäkerhetspolicyer kan du ställa in antalet misslyckade lösenordsförsök efter vilka ett potentiellt attackerat konto blockeras. Det största problemet med denna metod är att den skapar situationer där konton för en eller flera anställda kan blockeras på grund av en brute-force-attack som de inte hade något att göra med, och den resulterande driftstoppen för anställda kan orsaka betydande förluster för företaget. Det är därför det är bäst att inte använda den här typen av brute force-skydd.

Skydda Zimbra OSE från brute force och DoS-attacker

För brute force-skydd är ett mycket bättre alternativ ett specialverktyg som heter DoSFilter, vilket är inbyggt i Zimbra OSE och automatiskt kan avsluta anslutningen till Zimbra OSE via HTTP. Med andra ord, principen för DoSFilter liknar principen för PostScreen, bara att den används för ett annat protokoll. DoSFilter, som ursprungligen utformades för att begränsa antalet åtgärder en enskild användare kan utföra, kan också ge skydd mot brute force-attacker. Dess viktigaste skillnad från verktyget som är inbyggt i Zimbra är att det efter ett visst antal misslyckade försök blockerar inte användaren själv, utan IP-adressen från vilken flera försök görs att logga in på ett visst konto. Tack vare detta kan en systemadministratör inte bara skydda sig mot brute force, utan också undvika att blockera företagets anställda genom att helt enkelt lägga till företagets interna nätverk i listan över betrodda IP-adresser och subnät.

En stor fördel med DoSFilter är att förutom många försök att logga in på ett visst konto, kan detta verktyg automatiskt blockera de inkräktare som har tagit besittning av en anställds autentiseringsdata och sedan framgångsrikt loggat in på hans konto och börjat skicka hundratals förfrågningar till servern.

Du kan konfigurera DoSFilter med följande konsolkommandon:

  • zimbraHttpDosFilterMaxRequestsPerSec — Med det här kommandot kan du ange det maximala antalet anslutningar som tillåts för en användare. Som standard är detta värde 30 anslutningar.
  • zimbraHttpDosFilterDelayMillis — Med det här kommandot kan du ställa in en fördröjning i millisekunder för anslutningar som överskrider gränsen som angetts av föregående kommando. Förutom heltal kan administratören ange 0 för att inte ha någon fördröjning alls och -1 för att helt enkelt avsluta alla anslutningar som överskrider den angivna gränsen. Som standard är detta värde -1.
  • zimbraHttpThrottleSafeIP:er — Med hjälp av det här kommandot kan administratören ange betrodda IP-adresser och delnät som inte omfattas av ovanstående begränsningar. Observera att syntaxen för det här kommandot kan variera beroende på önskat resultat. Till exempel genom att ange kommandot zmprov mcf zimbraHttpThrottleSafeIPs 127.0.0.1, kommer du att skriva om hela listan helt och bara lämna en IP-adress i den. Om du anger kommandot zmprov mcf +zimbraHttpThrottleSafeIPs 127.0.0.1, då läggs IP-adressen du angav till i den vita listan. På samma sätt kan du med hjälp av subtraktionstecknet ta bort vilken IP-adress som helst från listan över tillåtna.

Observera att DoSFilter kan skapa ett antal problem när du använder Zextras Suite Pro-tillägg. För att undvika dem rekommenderar vi att öka antalet samtidiga anslutningar från 30 till 100 med hjälp av kommandot zmprov mcf zimbraHttpDosFilterMaxRequestsPerSec 100. Dessutom rekommenderar vi att du lägger till företagets interna nätverk i listan över tillåtna. Detta kan göras med hjälp av kommandot zmprov mcf +zimbraHttpThrottleSafeIP:er 192.168.0.0/24. Efter att du har gjort några ändringar i DoSFilter, se till att starta om e-postservern med kommandot omstart av zmmailboxdctl.

Den största nackdelen med DoSFilter är att det fungerar på applikationsnivå och därför bara kan begränsa angriparnas förmåga att utföra olika åtgärder på servern, utan att begränsa möjligheten att ansluta till servern. På grund av detta kommer förfrågningar som skickas till servern för autentisering eller för att skicka brev, även om de uppenbarligen kommer att misslyckas, fortfarande att representera en hederlig DoS-attack, som är omöjlig att stoppa på en så hög nivå.

För att helt säkra din företagsserver med Zimbra OSE kan du använda en lösning som Fail2ban, ett ramverk som ständigt kan övervaka informationssystemens loggar för upprepade åtgärder och blockera inkräktaren genom att ändra brandväggsinställningarna. Blockering på en så låg nivå gör att du kan inaktivera inkräktare direkt i IP-anslutningsstadiet till servern. Således kan Fail2Ban perfekt komplettera skyddet som byggs med DoSFilter. Låt oss ta reda på hur du kan bli vän med Fail2Ban och Zimbra OSE och därmed öka säkerheten för ditt företags IT-infrastruktur.

Precis som alla andra företagsapplikationer upprätthåller Zimbra Collaboration Suite Open-Source Edition detaljerade loggar över sin drift. De flesta av dem är lagrade i en mapp /opt/zimbra/log/ i form av filer. Här är bara några av dem:

  • mailbox.log — Jetty e-posttjänstloggar
  • audit.log — autentiseringsloggar
  • clamd.log — antivirusdriftsloggar
  • freshclam.log — antivirusuppdateringsloggar
  • convertd.log — loggar för konvertering av bilagor
  • zimbrastats.csv — prestandaloggar för servern

Även Zimbra-loggar finns i filen /var/log/zimbra.log, där loggarna för Postfix och Zimbra själva förvaras.

För att skydda vårt system från brute force kommer vi att övervaka mailbox.log, audit.log и zimbra.log.

Для того чтобы всё работало, необходимо чтобы на вашем сервере с Zimbra OSE были установлены Fail2Ban и iptables. В том случае, если вы используете Ubuntu, сделать это вы можете с помощью команд dpkg -s fail2ban, если же вы используете CentOS, то проверить это можно с помощью команд yum-lista installerad fail2ban. Om du inte har Fail2Ban installerat kommer det inte vara ett problem att installera det, eftersom det här paketet finns tillgängligt i nästan alla standardförråd.

När all nödvändig programvara är installerad kan du börja konfigurera Fail2Ban. För att göra detta behöver du skapa en konfigurationsfil. /etc/fail2ban/filter.d/zimbra.conf, där vi kommer att skriva reguljära uttryck för Zimbra OSE-loggar som matchar ogiltiga inloggningsförsök och utlöser Fail2Ban-mekanismer. Här är ett exempel på zimbra.conf-innehåll med en uppsättning reguljära uttryck som matchar olika fel som returneras av Zimbra OSE när autentiseringen misslyckas:

# 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 reguljära uttrycken för Zimbra OSE är skrivna är det dags att börja redigera själva Fail2ban-konfigurationen. Inställningarna för det här verktyget finns i filen /etc/fail2ban/jail.conf. För säkerhets skull, låt oss göra en säkerhetskopia av det med kommandot cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak. Efter detta kommer vi att få filen att se ungefär ut i följande format:

# 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

Även om det här exemplet är ganska generiskt är det värt att förtydliga några inställningar som du kanske vill ändra när du konfigurerar Fail2Ban själv:

  • Ignorera — med den här parametern kan du ange en specifik IP-adress eller ett subnät, adresser från vilka Fail2Ban inte ska kontrollera. Vanligtvis läggs företagets interna nätverk och andra betrodda adresser till i ignoreringslistan.
  • Bantime — Den tid under vilken gärningsmannen kommer att vara avstängd. Mätt i sekunder. Värdet -1 innebär en permanent avstängning.
  • Maxretry — Det maximala antalet gånger en IP-adress kan försöka komma åt servern.
  • Skicka brev — En inställning som låter dig automatiskt skicka e-postmeddelanden om Fail2Ban-utlösning.
  • Hitta tid — En inställning som låter dig ange ett tidsintervall efter vilket en IP-adress kan försöka komma åt servern igen efter att det maximala antalet misslyckade försök har förbrukats (parametern maxretry)

Efter att du har sparat filen med Fail2Ban-inställningarna är allt som återstår att starta om verktyget med kommandot omstart av tjänsten fail2ban. Efter omstart kommer Zimbras huvudloggar kontinuerligt att övervakas för matchningar av reguljära uttryck. Detta gör det möjligt för administratören att praktiskt taget eliminera alla möjligheter för en inkräktare att tränga in, inte bara i Zimbra Collaboration Suite Open-Source Edition-postlådor, utan också att skydda alla tjänster som körs inom Zimbra OSE, och att vara medveten om eventuella försök att få obehörig åtkomst.

För alla frågor relaterade till Zextras Suite kan du kontakta Zextras representant Ekaterina Triandafilidi via e-post katerina@zextras.com

Källa: will.com

Köp pålitlig hosting för webbplatser med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster