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

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

За защита от брутфорс атаки е много по-подходящо да се използва специален инструмент, наречен DoSFilter, който е интегриран в Zimbra OSE и може автоматично да прекъсва HTTP връзките с Zimbra OSE. С други думи, принципът на работа на 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
