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

Zimbra Collaboration Suite Open-Source Edition har flera kraftfulla verktyg för att säkerställa informationssäkerhet. Bland dem Postscreen - en lösning för att skydda en e-postserver från attacker från botnät, ClamAV - ett antivirus som kan skanna inkommande filer och brev efter infektion med skadliga program, samt Assassin - ett av de bästa spamfiltren idag. Dessa verktyg kan dock inte skydda Zimbra OSE från brute force-attacker. Inte de mest eleganta, men ändå ganska effektiva, brutalt tvingande lösenorden med hjälp av en speciell ordbok är fylld inte bara av sannolikheten för framgångsrik hackning med alla efterföljande konsekvenser, utan också med skapandet av en betydande belastning på servern, som bearbetar alla misslyckade försök att hacka en server 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 Zimbra OSE-standardverktyg. Inställningarna för lösenordssäkerhetspolicyn låter dig ställa in antalet misslyckade lösenordsinmatningsförsök, varefter det potentiellt attackerade kontot blockeras. Huvudproblemet med detta tillvägagångssätt är att situationer uppstår där konton för en eller flera anställda kan blockeras på grund av en brute force attack som de inte har något att göra med, och den resulterande stilleståndstiden i de anställdas arbete kan medföra stora förluster för företaget. Det är därför det är bäst att inte använda detta alternativ för skydd mot brute force.

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

För att skydda mot brute force lämpar sig ett specialverktyg som heter DoSFilter mycket bättre, som är inbyggt i Zimbra OSE och kan automatiskt avsluta anslutningen till Zimbra OSE via HTTP. Med andra ord, funktionsprincipen för DoSFilter liknar funktionsprincipen för PostScreen, bara den används för ett annat protokoll. Ursprungligen utformad för att begränsa antalet åtgärder en enskild användare kan utföra, kan DoSFilter också ge brute force-skydd. Dess nyckelskillnad från verktyget inbyggt i Zimbra är att efter ett visst antal misslyckade försök blockerar det 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 mot brute force, utan också undvika att blockera företagets anställda genom att helt enkelt lägga till företagets interna nätverk till listan över betrodda IP-adresser och subnät.

Den stora fördelen med DoSFilter är att utöver många försök att logga in på ett visst konto kan du med hjälp av det här verktyget automatiskt blockera de angripare som tog besittning av en anställds autentiseringsdata och sedan lyckades logga in på hans konto och började skicka hundratals förfrågningar till servern.

Du kan konfigurera DoSFilter med följande konsolkommandon:

  • zimbraHttpDosFilterMaxRequestsPerSec — Med det här kommandot kan du ställa in det maximala antalet tillåtna anslutningar 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 specificerats av föregående kommando. Förutom heltalsvärden kan administratören ange 0, så att det inte finns någon fördröjning alls, och -1, så att alla anslutningar som överskrider den angivna gränsen helt enkelt avbryts. Standardvärdet är -1.
  • zimbraHttpThrottleSafeIPs — Med detta kommando kan administratören ange betrodda IP-adresser och subnät som inte kommer att omfattas av begränsningarna som anges ovan. Observera att syntaxen för detta kommando kan variera beroende på önskat resultat. Så till exempel genom att ange kommandot zmprov mcf zimbraHttpThrottleSafeIPs 127.0.0.1, kommer du att helt skriva över hela listan och bara lämna en IP-adress i den. Om du anger kommandot zmprov mcf +zimbraHttpThrottleSafeIPs 127.0.0.1, kommer IP-adressen du angav att läggas till i den vita listan. På samma sätt, med hjälp av subtraktionstecknet, kan du ta bort vilken IP-adress som helst från den tillåtna listan.

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 kommandot zmprov mcf zimbraHttpDosFilterMaxRequestsPerSec 100. Dessutom rekommenderar vi att du lägger till företagets interna nätverk till listan över tillåtna. Detta kan göras med kommandot zmprov mcf +zimbraHttpThrottleSafeIPs 192.168.0.0/24. Efter att ha gjort några ändringar i DoSFilter, se till att starta om din e-postserver med kommandot zmmailboxdctl starta om.

Den största nackdelen med DoSFilter är att det fungerar på applikationsnivå och därför bara kan begränsa möjligheten för angripare att utföra olika åtgärder på servern, utan att begränsa möjligheten att ansluta till norr. På grund av detta kommer förfrågningar som skickas till servern för autentisering eller att skicka brev, även om de uppenbarligen kommer att misslyckas, fortfarande representera en gammal gammal DoS-attack, som inte kan stoppas 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, som är ett ramverk som ständigt kan övervaka informationssystemloggar 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 angripare direkt i skedet av IP-anslutningen till servern. Således kan Fail2Ban perfekt komplettera det skydd som byggts med DoSFilter. Låt oss ta reda på hur du kan koppla Fail2Ban med Zimbra OSE och därigenom öka säkerheten för ditt företags IT-infrastruktur.

Precis som alla andra applikationer i företagsklass, håller Zimbra Collaboration Suite Open-Source Edition detaljerade loggar över sitt arbete. De flesta av dem lagras i mappen /opt/zimbra/log/ i form av filer. Här är bara några av dem:

  • mailbox.log — bryggposttjänstloggar
  • audit.log - autentiseringsloggar
  • clamd.log — antivirusdriftloggar
  • freshclam.log - antivirusuppdateringsloggar
  • convertd.log — loggar för omvandlare för bilagor
  • zimbrastats.csv - serverprestandaloggar

Zimbra-loggar finns också i filen /var/log/zimbra.log, där loggar över Postfix och själva Zimbra förvaras.

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

För att allt ska fungera krävs att Fail2Ban och iptables är installerade på din server med Zimbra OSE. Om du använder Ubuntu kan du göra detta med hjälp av kommandona dpkg -s fail2ban, om du använder CentOS kan du kontrollera detta med hjälp av kommandona yum list installerad fail2ban. Om du inte har Fail2Ban installerat kommer installationen inte att vara något problem, eftersom detta paket är 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 måste 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 felaktiga inloggningsförsök och utlöser Fail2Ban-mekanismer. Här är ett exempel på innehållet i zimbra.conf med en uppsättning reguljära uttryck som motsvarar de olika felen som Zimbra OSE kastar när ett autentiseringsförsök 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 har kompilerats är det dags att börja redigera själva konfigurationen av Fail2ban. Inställningarna för detta verktyg finns i filen /etc/fail2ban/jail.conf. För säkerhets skull, låt oss göra en säkerhetskopia av den med kommandot cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak. Efter det kommer vi att reducera den här filen till ungefär följande form:

# 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, [email protected], [email protected]]
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, [email protected]]
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, [email protected] ]
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, [email protected]]
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, [email protected]]
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, [email protected]]
logpath = /var/log/zimbra.log
bantime = -1
maxretry = 5

Även om det här exemplet är ganska generiskt, är det fortfarande värt att förklara några av parametrarna som du kanske vill ändra när du ställer in Fail2Ban själv:

  • Ignoreraip — med den här parametern kan du ange en specifik ip eller subnät från vilket Fail2Ban inte ska kontrollera adresser. Som regel läggs företagets interna nätverk och andra betrodda adresser till i listan över ignorerade.
  • Bantime — Tiden för vilken gärningsmannen kommer att förbjudas. Mätt i sekunder. Ett värde på -1 betyder ett permanent förbud.
  • 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 skicka e-postmeddelanden automatiskt när Fail2Ban utlöses.
  • Hitta tid — En inställning som låter dig ställa in tidsintervallet efter vilket IP-adressen kan försöka komma åt servern igen efter att det maximala antalet misslyckade försök har förbrukats (maxretry-parametern)

Efter att ha sparat filen med Fail2Ban-inställningarna återstår bara att starta om det här verktyget med kommandot tjänst fail2ban omstart. Efter omstarten kommer Zimbra-loggarna att ständigt övervakas för överensstämmelse med reguljära uttryck. Tack vare detta kommer administratören att praktiskt taget kunna eliminera alla möjligheter för en angripare att penetrera inte bara Zimbra Collaboration Suite Open-Source Edition-postlådor, utan också skydda alla tjänster som körs inom Zimbra OSE, och även vara medveten om alla försök att få obehörig åtkomst .

För alla frågor relaterade till Zextras Suite kan du kontakta representanten för Zextras Ekaterina Triandafilidi via e-post [e-postskyddad]

Källa: will.com

Lägg en kommentar