Zimbra Collaboration Suite Open-Source Edition разполага с няколко мощни инструмента за осигуряване на информационната безопасност. Сред тях — решение за защита на пощенския сървър от атаки от ботнетове, ClamAV — антивирусна програма, способна да проверява входящите файлове и писма за наличие на зловреден софтуер, а също и — един от най-добрите антиспам филтри в днешно време. Обаче, тези инструменти не могат да осигурят защита на Zimbra OSE от атаки чрез брутфорс. Не е най-елегантното, но все още доста ефективно изпитване на пароли чрез специален речник е съпроводено не само с вероятността за успешен пробив с всички произтичащи последствия, но и за генериране на значителна натовареност на сървъра, който обработва всичките неуспешни опити за пробив на сървъра с Zimbra OSE.

В принципе, защита от брутфорс може да се осигури със стандартните средства на Zimbra OSE. Настройките на политиката за сигурност на паролите позволяват да се зададе броят на неуспешните опити за въвеждане на парола, след който потенциално атакуваният акаунт се блокира. Основният проблем на този подход е, че могат да възникнат ситуации, при които акаунтите на един или повече служители да бъдат блокирани поради брутфорс атака, с която те нямат нищо общо, а настъпилото време на простои за служителите може да донесе значителни загуби на компанията. Именно поради това такава форма на защита от брутфорс е най-добре да не се прилага.

За защита от брутфорс е много по-добре да използвате специален инструмент, наречен DoSFilter, който е вграден в Zimbra OSE и автоматично може да прекратява връзките с Zimbra OSE по HTTP. С други думи, принципът на работа на DoSFilter е аналогичен на принципа на работа на PostScreen, само че се използва за друг протокол. Първоначално предназначен да ограничава броя действия, които един потребител може да извърши, DoSFilter също така може да осигури защита от брутфорс. Основната му разлика от вградения инструмент на Zimbra е, че след определен брой неуспешни опити, той блокира не самия потребител, а IP адреса, от който се извършват многократни опити за влизане в даден акаунт. Благодарение на това, системния администратор може не само да се защити от брутфорс, но и да избегне блокирането на служители на предприятието, просто добавяйки вътрешната мрежа на своята компания в списъка с доверени IP адреси и подмрежи.
Голямото предимство на DoSFilter е, че освен многократните опити за влизане в даден акаунт, с помощта на този инструмент може автоматично да блокирате тези злонамерени потребители, които са завладяли автентификационните данни на служителя и след това успешно са влезли в неговия акаунт и започнали да изпращат стотици заявки до сървъра.
Настройването на DoSFilter може да се извърши чрез следните консолен команди:
- zimbraHttpDosFilterMaxRequestsPerSec — С тази команда можете да зададете максималния брой свързвания, допустими за един потребител. По подразбиране това значение е 30 свързвания.
- zimbraHttpDosFilterDelayMillis — С тази команда можете да зададете забавяне в милисекунди за свързвания, които ще надвишават зададения лимит от предишната команда. Освен цели числови стойности, администраторът може да зададе 0, за да няма забавяне, и -1, за да бъдат прекратени всички свързвания, които надвишават зададения лимит. По подразбиране това значение е -1.
- zimbraHttpThrottleSafeIPs — С тази команда администраторът може да зададе доверени IP адреси и подмрежи, на които няма да важат горепосочените ограничения. Отбелязваме, че синтаксисът на тази команда може да се променя в зависимост от желаните резултати. Например, въвеждайки командата zmprov mcf zimbraHttpThrottleSafeIPs 127.0.0.1, ще презапишете целия списък и ще оставите в него само един IP адрес. Ако въведете командата zmprov mcf +zimbraHttpThrottleSafeIPs 127.0.0.1, то введеният от вас IP адрес ще бъде добавен в белия списък. По аналогичен начин, използвайки знака за изваждане, можете да премахнете всякакъв IP от списъка с разрешени.
Важно е да се отбележи, че DoSFilter може да създаде редица проблеми при използването на разширения Zextras Suite Pro. За да ги избягвате, препоръчваме да увеличите броя на едновременните връзки от 30 на 100 с помощта на командата zmprov mcf zimbraHttpDosFilterMaxRequestsPerSec 100. Освен това, препоръчваме да добавите вътрешната мрежа на предприятието в списъка с разрешени. Можете да направите това с помощта на командата zmprov mcf +zimbraHttpThrottleSafeIPs 192.168.0.0/24. След всяка промяна в DoSFilter непременно рестартирайте пощенския сървър с помощта на командата zmmailboxdctl restart.
Основният недостатък на DoSFilter е, че той работи на ниво приложение и следователно може само да ограничи способността на злонамерените лица да извършват различни действия на сървъра, без да ограничава възможността за свързване към сървъра. Поради това заявките за удостоверяване или изпращане на имейли, макар и предварително провалени, все пак представляват стара добра DoS атака, която не може да бъде спряна на толкова високо ниво.
За да осигурите напълно корпоративния си сървър с Zimbra OSE, можете да използвате такова решение като Fail2ban, което представлява рамка, способна постоянно да наблюдава логовете на информационните системи за повтарящи се действия и да блокира нарушителя чрез промяна на настройките на защитната стена. Блокирането на такова ниско ниво позволява да се изключват злонамерени лица още на етапа на IP свързването със сървъра. Така Fail2Ban може чудесно да допълни защитата, изградена с помощта на DoSFilter. Нека да разберем как да свържем Fail2Ban с Zimbra OSE и по този начин да повишим защитата на ИТ инфраструктурата на вашето предприятие.
Както всяко друго приложение от корпоративен клас, Zimbra Collaboration Suite Open-Source Edition поддържа подробни логове на своята работа. По-голямата част от тях се съхраняват в папката /opt/zimbra/log/ като файлове. Ето само няколко от тях:
- mailbox.log — логовете на пощенската служба Jetty
- audit.log — логовете за удостоверяване
- clamd.log — логове на антивируса
- freshclam.log — логове на актуализации на антивируса
- convertd.log — логове на конвертора на вложения
- zimbrastats.csv — логове за производителността на сървъра
Също така логовете на Zimbra могат да бъдат намерени в файла /var/log/zimbra.log, в който се водят логовете за работата на Postfix и самата Zimbra.
За да защитим системата си от брутфорс атаки, ще наблюдаваме mailbox.log, audit.log и zimbra.log.
За да функционира всичко, е необходимо на вашия сървър с Zimbra OSE да са инсталирани Fail2Ban и iptables. Ако използвате Ubuntu, можете да направите това със следните команди dpkg -s fail2ban, ако обаче използвате CentOS, можете да проверите с командите yum list installed fail2ban. В случай, че нямате инсталиран Fail2Ban, инсталирането му не би било проблем, тъй като този пакет се намира почти във всички стандартни хранилища.
След като е инсталирано необходимото софтуерно осигуряване, можем да пристъпим към настройването на Fail2Ban. За целта е необходимо да създадем конфигурационен файл /etc/fail2ban/filter.d/zimbra.conf, в който ще напишем регулярни изрази за логовете на Zimbra OSE, които ще отговарят на неверните опити за вход и ще задействат механизмите на Fail2Ban. Ето пример за съдържанието на zimbra.conf с набор от регулярни изрази, отговарящи на различни грешки, подавани в Zimbra OSE при неуспешен опит за удостоверяване:
# 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 =След като регулярните изрази за Zimbra OSE са съставени, е време да пристъпим към редактиране на конфигурацията на самия Fail2ban. Настройките на тази утилита се намират в файла /etc/fail2ban/jail.conf. За всеки случай да направим резервно копие с команда cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak. След това ще доведем този файл до следния вид:
# 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Този пример, макар и доста универсален, все пак си струва да обясним някои параметри, които може би искате да промените при самостоятелно настройване на Fail2Ban:
- Ignoreip — с този параметър можете да зададете конкретен IP адрес или подсет, адреси, които Fail2Ban не трябва да проверява. Обикновено в списъка с игнорирани се добавят вътрешната мрежа на предприятието и други надеждни адреси.
- Bantime — Времето, за което нарушителят ще бъде блокиран. Измерва се в секунди. Стойността -1 означава безсрочна забрана.
- Maxretry — Максималният брой опити, които един IP адрес може да направи за достъп до сървъра.
- Sendmail Настройка, която автоматично изпраща имейл известия при задействане на Fail2Ban.
- Findtime Настройка, която позволява задаване на времеви интервал, след който IP адресът може отново да се опита да получи достъп до сървъра след изчерпване на максималния брой неуспешни опити (параметър maxretry)
След запазване на файла с настройките на Fail2Ban, остава само да се рестартира тази утилита с помощта на командата service fail2ban restart. След рестартиране основните дневници на Zimbra ще започнат постоянно да се наблюдават за съответствие с регулярни изрази. Благодарение на това администраторът ще може фактически да изключи всяка възможност за пробив от злоумишленици не само в пощенските кутии на Zimbra Collaboration Suite Open-Source Edition, но и да защити всички работаещи в рамките на Zimbra OSE услуги, както и да бъде информиран за всякакви опити за неразрешен достъп.
За всички въпроси, свързани с Zextras Suite, можете да се свържете с представителя на компанията „Zextras“ Екатерина Триандафилиди на имейл katerina@zextras.com
Източник: habr.com
