Абарона Zimbra OSE ад брутфорсу і DoS-атак

Zimbra Collaboration Suite Open-Source Edition мае ў сваім арсенале некалькі магутных прылад для гарантавання інфармацыйнай бяспекі. Сярод іх Postscreen – рашэнне для абароны паштовага сервера ад нападаў са боку ботнэтаў, ClamAV – антывірус, здольны правяраць уваходныя файлы і лісты на прадмет заражэння шкоднымі праграмамі, а таксама SpamAssassin - Адзін з лепшых спам-фільтраў на сённяшні дзень. Аднак гэтыя прылады няздольныя забяспечыць абарону Zimbra OSE ад такога выгляду нападу, як брутфорс. Не самы элегантны, але да гэтага часу даволі эфектыўны перабор пароляў па спецыяльным слоўніку багаты не толькі верагоднасцю паспяховага ўзлому з усімі вынікаючымі наступствамі, але і стварэннем значнай нагрузкі на сервер, які апрацоўвае ўсе няўдалыя спробы ўзлому сервера з Zimbra OSE.

Абарона Zimbra OSE ад брутфорсу і DoS-атак

У прынцыпе, абараніцца ад брутфорсу можна стандартнымі сродкамі Zimbra OSE. Налады парольнай палітыкі бяспекі дазваляюць усталяваць лік няўдалых спроб уводу пароля, пасля якіх патэнцыйна атакаваны акаўнт блакуецца. Галоўнай праблемай такога падыходу складаецца ў тым, што ўзнікаюць сітуацыі, пры якіх уліковыя запісы аднаго або некалькіх працаўнікоў могуць апынуцца заблакаванымі з-за брутфорс-напады, да якой яны не маюць ніякага стаўлення, а ўзніклы просты ў працы супрацоўнікаў можа прынесці кампаніі вялікія страты. Менавіта таму такі варыянт абароны ад брутфорсу лепш за ўсё не прымяняць.

Абарона Zimbra OSE ад брутфорсу і DoS-атак

Для абароны ад брутфорсу значна лепш падыдзе адмысловую прыладу пад назовам DoSFilter, які ўбудаваны ў Zimbra OSE і можа аўтаматычна перарываць злучэнне c 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, аўдыт.журнал и 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, [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

Гэты прыклад хоць і з'яўляецца даволі ўніверсальным, усё ж варта растлумачыць некаторыя параметры, якія вы, магчыма, захочаце змяніць пры самастойнай наладзе Fail2Ban:

  • Ignoreip - пры дапамозе гэтага параметру можна паказаць пэўны ip або падсетку, адрасы з якой Fail2Ban не павінен правяраць. Як правіла, у спіс ігнаруемых дадаецца ўнутраная сетка прадпрыемства і іншыя давераныя адрасы.
  • Bantime - Час, на які парушальнік будзе банавацца. Вымяраецца ў секундах. Значэнне -1 азначае бестэрміновы бан.
  • Maxretry — Максімальная колькасць разоў, якую адзін ip-адрас можа спрабаваць атрымаць доступ да сервера.
  • Sendmail - Настройка, якая дазваляе аўтаматычна адпраўляць email-абвесткі аб спрацоўванні Fail2Ban.
  • Findtime - Настройка, якая дазваляе задаць часовы інтэрвал, пасля якога ip-адрас можа зноў паспрабаваць атрымаць доступ да сервера пасля вычарпання максімальнай колькасці няўдалых спроб (параметр maxretry)

Пасля захавання файла з наладамі Fail2Ban, застаецца толькі перазапусціць гэтую ўтыліту пры дапамозе каманды service fail2ban restart. Пасля перазапуску асноўныя логі Zimbra пачнуць стала маніторыцца на адпаведнасць рэгулярным выразам. Дзякуючы гэтаму адміністратар зможа фактычна выключыць любую магчымасць пранікнення зламысніка ў не толькі ў паштовыя скрыні Zimbra Collaboration Suite Open-Source Edition, але і абараніць усе якія працуюць у рамках Zimbra OSE службы, а таксама быць у курсе любых спроб атрымання несанкцыянаванага доступу.

Па ўсіх пытаннях, звязаных з Zextras Suite вы можаце звярнуцца да Прадстаўніка кампаніі «Zextras» Кацярыны Трыяндафілідзі па электроннай пошце. [электронная пошта абаронена]

Крыніца: habr.com

Дадаць каментар