A Zimbra OSE védelme brute force és DoS támadások ellen

A Zimbra Collaboration Suite Open-Source Edition számos hatékony eszközt tartalmaz az információbiztonság biztosítására. Ezek között Postscreen — egy megoldás a levelezőszerver védelmére a botnetek által indított támadásokkal szemben, a ClamAV pedig egy víruskereső, amely képes ellenőrizni a bejövő fájlokat és e-maileket a kártevők jelenlétére, valamint SpamAssassin — napjaink egyik legjobb spam szűrője. Azonban ezek az eszközök nem képesek megvédeni a Zimbra OSE-t a brute force típusú támadásokkal szemben. Nem a legelgondolkodtatóbb megoldás, de még mindig meglehetősen hatékony jelszóval való kísérletezés egy speciális szótár alapján nemcsak a sikeres hackelés lehetőségét hordozza magában, hanem jelentős terhet is jelent a szerver számára, amely kezeli az összes sikertelen hackelési próbálkozást a Zimbra OSE-vel.

A Zimbra OSE védelme brute force és DoS támadások ellen

Alapvetően a Zimbra OSE védelme brute force támadásokkal szemben standard eszközökkel is megoldható. A jelszópolitikai beállítások lehetővé teszik, hogy meghatározzuk a sikertelen jelszóbejelentkezések számát, amelyek után a potenciálisan támadott fiók letiltásra kerül. Ennek a megközelítésnek a legnagyobb problémája az, hogy olyan helyzetek léphetnek fel, amikor egy vagy több dolgozó fiókját letiltják egy brute force támadás miatt, amelyhez semmi közük, és a dolgozók munkaszünetei jelentős veszteségeket okozhatnak a cégnek. Ezért ez a brute force elleni védelem az esetek túlnyomó többségében nem javasolt.

A Zimbra OSE védelme brute force és DoS támadások ellen

A brute-force attack can be better protected with a special tool called DoSFilter, which is integrated into Zimbra OSE and can automatically terminate the connection to Zimbra OSE via HTTP. In other words, the principle of how DoSFilter works is similar to that of PostScreen, but it is used for a different protocol. Originally 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 the IP address from which multiple login attempts are being made instead of blocking the user. This allows the system administrator to not only defend against brute-force attacks but also to avoid blocking enterprise employees by simply adding their internal network's trusted IP addresses and subnets.

A significant advantage of DoSFilter is that, in addition to limiting numerous login attempts for any account, this tool can automatically block those attackers who have obtained a staff member's authentication data, successfully logged into their account, and started sending hundreds of requests to the server.

The DoSFilter can be configured 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 lets you set a delay in milliseconds for connections that exceed the limit defined by the previous command. In addition to integer values, the administrator can specify 0 to have no delay at all, or -1 to terminate all connections that exceed the defined limit. By default, this value is set to -1.
  • zimbraHttpThrottleSafeIPs — With this command, the administrator can specify trusted IP addresses and subnets to which the above-mentioned limitations will not apply. Note that the syntax of this command may change depending on the desired outcome. For example, by entering the command zmprov mcf zimbraHttpThrottleSafeIPs 127.0.0.1, teljesen felülírja a teljes listát, és csak egy IP-címet hagy benne. Ha beírja a parancsot zmprov mcf +zimbraHttpThrottleSafeIPs 127.0.0.1, a megadott IP-cím hozzáadódik a fehérlistához. Hasonlóan, a mínusz jel használatával egy IP cím eltávolítható a megengedett listából.

Megjegyezzük, hogy a DoSFilter számos problémát okozhat a Zextras Suite Pro bővítmények használata során. Javasoljuk, hogy a párhuzamos kapcsolatok számát 30-ról 100-ra növelje a következő parancs segítségével zmprov mcf zimbraHttpDosFilterMaxRequestsPerSec 100. Ezen kívül ajánlott a vállalat belső hálózatát felvenni a megengedett listára. Ezt a következő parancs segítségével teheti meg zmprov mcf +zimbraHttpThrottleSafeIPs 192.168.0.0/24. Bármilyen módosítás után a DoSFilter-ben kötelező újraindítani a levelezőszervert a következő parancs használatával zmmailboxdctl restart.

A DoSFilter legnagyobb hátránya, hogy alkalmazás szinten működik, így csak korlátozni tudja a támadók képességét, hogy különböző műveleteket hajtsanak végre a szerveren, anélkül, hogy korlátozná a kapcsolódást a szerverhez. Ennek következtében a szerverhez küldött hitelesítési vagy levélküldési kérelmek, bár biztosan sikertelenek, továbbra is a régi jó DoS támadást jelentik, amelyet ilyen magas szinten megállítani lehetetlen.

A Zimbra OSE vállalati szerver teljes biztonságának érdekében használhatja a Fail2ban nevű megoldást, amely egy keretrendszer, ami folyamatosan figyeli az információs rendszerek naplóit ismétlődő tevékenységek után, és blokkolja a támadót a tűzfal beállításainak módosításával. Az ily módon alacsony szinten történő blokkolás lehetővé teszi a támadók kikapcsolását közvetlenül a szerverhez való IP-kapcsolat szakaszában. Így a Fail2Ban tökéletesen kiegészíti a DoSFilter által nyújtott védelmet. Nézzük meg, hogyan lehet a Fail2Ban-t összehangolni a Zimbra OSE-vel, és ezáltal fokozni a vállalat IT-infrastruktúrájának biztonságát.

Mint minden más vállalati osztályú alkalmazás, a Zimbra Collaboration Suite Open-Source Edition részletes naplókat vezet a működéséről. Ezek többsége a következő könyvtárban található /opt/zimbra/log/ fájlok formájában. Íme néhány közülük:

  • mailbox.log — a Jetty levelezőszolgáltatás naplói
  • audit.log — a hitelesítési naplók
  • clamd.log — az antivírus naplófájlja
  • freshclam.log — az antivírus frissítési naplója
  • convertd.log — a mellékletek konverterének naplója
  • zimbrastats.csv — a szerver teljesítménynaplója

A Zimbra naplókat a következő fájlban is megtalálhatja /var/log/zimbra.log, ahol a Postfix és a Zimbra maga is naplózza a munkáját.

A brute force támadások megakadályozása érdekében figyelnünk kell a mailbox.log, audit.log és zimbra.log.

Ahhoz, hogy minden rendben működjön, a Zimbra OSE-vel rendelkező szerverén telepítenie kell a Fail2Ban-t és az iptables-t. Ha Ubuntu-t használ, ezt megteheti a következő parancsok segítségével dpkg -s fail2ban, ha pedig CentOS-t használ, akkor ezt a következő parancsokkal ellenőrizheti yum list installed fail2ban. Ha a Fail2Ban nincs telepítve, akkor az installálása nem jelent problémát, mivel ez a csomag szinte minden standard tárolóban elérhető.

Miután minden szükséges szoftver telepítve van, kezdheti a Fail2Ban beállítását. Ehhez létre kell hoznia egy konfigurációs fájlt /etc/fail2ban/filter.d/zimbra.conf, amelyben megadjuk a Zimbra OSE naplóinak megfelelő reguláris kifejezéseket, amelyek a sikertelen belépési kísérletekkel összefüggésben aktiválják a Fail2Ban mechanizmusait. Íme egy példa a zimbra.conf tartalmára, amely különböző hibákhoz tartozó reguláris kifejezéseket tartalmaz, amelyeket a Zimbra OSE a sikertelen hitelesítési kísérletek során ad ki:

# 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 =

Miután a Zimbra OSE-hez tartozó reguláris kifejezéseket összeállítottuk, eljött az ideje, hogy a Fail2Ban konfigurációjának szerkesztéséhez kezdjünk. Ennek az eszköznek a beállításai a következő fájlban találhatók /etc/fail2ban/jail.conf. Minden esetre készítsünk biztonsági másolatot róla a következő parancs segítségével cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak. Ezt követően a fájlt a következő formára kell hozni:

# 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

Ez a példa bár elég univerzális, érdemes néhány paramétert tisztázni, amelyet esetleg meg szeretne változtatni a Fail2Ban saját beállításánál:

  • Ignoreip — ezzel a paraméterrel megadhat egy konkrét IP-t vagy alhálózatot, amelyet a Fail2Ban nem ellenőriz. Általában a belső vállalati hálózat és más megbízható címek kerülnek az ignorált listára.
  • Bantime — Az idő, ameddig a támadó blokkolva lesz. Másodpercekben mérik. Az -1 érték határozatlan idejű blokkolást jelent.
  • Maxretry — A maximális számú alkalom, amikor egy IP-cím megpróbálhat hozzáférni a szerverhez.
  • Sendmail — Olyan beállítás, amely automatikusan e-mail értesítéseket küld a Fail2Ban aktiválásáról.
  • Findtime — Olyan beállítás, amely lehetővé teszi a különböző időintervallum megadását, amely után az IP-cím újra megpróbálhatja elérni a szervert a maximális sikertelen próbálkozások (maxretry) kimerülése után.

A Fail2Ban-beállítások fájl mentése után csak újra kell indítani ezt az eszközt a következő parancs segítségével: service fail2ban restart. Az újraindítás után a Zimbra fő naplói folyamatosan figyelni fogják a reguláris kifejezések egybeesését. Ennek köszönhetően az adminisztrátor lényegében kizárhatja a támadó behatolásának lehetőségét nemcsak a Zimbra Collaboration Suite Open-Source Edition postafiókjaiba, hanem védelmet biztosíthat az összes, a Zimbra OSE keretein belül működő szolgáltatás számára, és folyamatosan tájékozódhat a jogosulatlan hozzáférés megkísérléséről.

Bármilyen kérdése van a Zextras Suitere vonatkozóan, a Zextras cég képviselőjéhez, Trianda Katerinához fordulhat a katerina@zextras.com e-mail címen.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster