Protectia Zimbra OSE împotriva atacurilor de tip bruteforce și DoS

Zimbra Collaboration Suite Open-Source Edition dispune de mai multe instrumente puternice pentru asigurarea securității informațiilor. Printre acestea Postscreen — soluția pentru protejarea serverului de mail împotriva atacurilor din partea botnet-urilor, ClamAV — un antivirus capabil să verifice fișierele și mesajele primite pentru infecții cu software malițios, precum și SpamAssassin — unul dintre cele mai bune filtre anti-spam disponibil astăzi. Totuși, aceste instrumente nu pot oferi protecție Zimbra OSE împotriva unui tip de atac, cum ar fi atacul prin forță brută. O abordare nu foarte elegantă, dar totuși destul de eficientă, de ghicire a parolelor folosind un dicționar special este nu doar riscantă prin probabilitatea unei spargeri de succes cu toate consecințele aferente, ci și provoacă o încărcare semnificativă pe server, care prelucrează toate tentativele nereușite de spargere a serverului cu Zimbra OSE.

Protectia Zimbra OSE împotriva atacurilor de tip bruteforce și DoS

În principiu, protecția împotriva atacului prin forță brută poate fi realizată cu instrumente standard Zimbra OSE. Setările politicii de parole de securitate permit stabilirea numărului de încercări nereușite de introducere a parolei, după care contul supus potențial la atac este blocat. Problema principală a acestei abordări este că pot apărea situații în care conturile unui sau mai multor angajați pot fi blocate din cauza unui atac prin forță brută, la care ei nu au nicio legătură, iar timpul de inactivitate al angajaților poate aduce pierderi mari companiei. De aceea, această opțiune de protecție împotriva atacului prin forță brută ar trebui evitată.

Protectia Zimbra OSE împotriva atacurilor de tip bruteforce și DoS

Pentru protecția împotriva atacurilor brute force, un instrument special numit DoSFilter este mult mai potrivit, fiind încorporat în Zimbra OSE și putând întrerupe automat conexiunea cu Zimbra OSE prin HTTP. Cu alte cuvinte, principiul de funcționare al DoSFilter este similar cu cel al PostScreen, dar este folosit pentru un protocol diferit. Destinat inițial limitării numărului de acțiuni pe care un singur utilizator le poate efectua, DoSFilter poate, de asemenea, să ofere protecție împotriva atacurilor brute force. Cea mai importantă diferență față de instrumentul integrat în Zimbra constă în faptul că, după un anumit număr de încercări eșuate, nu blochează utilizatorul, ci adresa IP de la care se fac multiple tentative de autentificare în contul respectiv. Datorită acestui lucru, administratorul de sistem poate nu doar să se protejeze împotriva atacurilor brute force, ci și să evite blocarea angajaților, pur și simplu adăugând în lista de IP-uri de încredere rețeaua internă a companiei.

Un mare avantaj al DoSFilter este că, pe lângă numeroasele încercări de a accesa un cont anume, cu ajutorul acestui instrument se pot bloca automat și acei atacatori care au obținut datele de autentificare ale unui angajat, reușind astfel să acceseze contul acestuia și să înceapă să trimită sute de cereri către server.

Configurarea DoSFilter se poate realiza prin următoarele comenzi în linia de comandă:

  • zimbraHttpDosFilterMaxRequestsPerSec — Prin această comandă se poate seta numărul maxim de conexiuni permis pentru un utilizator. În mod implicit, această valoare este de 30 de conexiuni.
  • zimbraHttpDosFilterDelayMillis — Prin această comandă se poate seta o întârziere în milisecunde pentru conexiunile care vor depăși limita stabilită de comanda anterioară. Pe lângă valorile întregi, administratorul poate specifica 0 pentru a nu avea întârziere deloc sau -1 pentru a întrerupe toate conexiunile care depășesc limita stabilită. În mod implicit, această valoare este de -1.
  • zimbraHttpThrottleSafeIPs — Prin această comandă, administratorul poate specifica adresele IP și subrețelele de încredere, pentru care nu vor fi aplicate restricțiile enumerate mai sus. De asemenea, este important de menționat că sintaxa acestei comenzi poate varia în funcție de rezultatul dorit. De exemplu, introducând comanda zmprov mcf zimbraHttpThrottleSafeIPs 127.0.0.1, ve veți rescrie complet toată lista și veți lăsa în ea doar o singură adresă IP. Dacă introduceți comanda zmprov mcf +zimbraHttpThrottleSafeIPs 127.0.0.1, adresa IP introdusă de dumneavoastră va fi adăugată pe lista albă. În mod similar, folosind semnul minus, puteți elimina orice IP din lista de permisiuni.

Menționăm că DoSFilter poate crea o serie de probleme atunci când se utilizează extensiile Zextras Suite Pro. Pentru a le evita, recomandăm să creșteți numărul de conexiuni simultane de la 30 la 100 prin comanda zmprov mcf zimbraHttpDosFilterMaxRequestsPerSec 100. De asemenea, vă recomandăm să adăugați rețeaua internă a companiei pe lista de permisiuni. Acest lucru se poate face prin comanda zmprov mcf +zimbraHttpThrottleSafeIPs 192.168.0.0/24. După orice modificare a DoSFilter, asigurați-vă că reporniți serverul de mail prin comanda zmmailboxdctl restart.

Principalul dezavantaj al DoSFilter este că funcționează la nivel de aplicație și, prin urmare, poate limita doar capacitatea atacatorilor de a efectua diverse acțiuni pe server, fără a restricționa posibilitatea de a se conecta la server. Din această cauză, cererile trimise către server pentru autentificare sau trimitere de emailuri, deși vor eșua inevitabil, vor rămâne o veche și bună atac DoS, pe care nu o poate preveni la un astfel de nivel.

Pentru a securiza complet serverul dumneavoastră corporativ cu Zimbra OSE, puteți utiliza o soluție precum Fail2ban, care este un framework capabil să monitorizeze constant jurnalele sistemelor informaționale pentru activități repetitive și să blocheze agresorii prin modificarea setărilor firewall-ului. Blocarea la un nivel atât de mic permite deconectarea atacatorilor chiar în etapa de conectare IP la server. Astfel, Fail2Ban poate complementa perfect protecția realizată cu ajutorul DoSFilter. Să vedem cum putem integra Fail2Ban cu Zimbra OSE pentru a îmbunătăți securitatea infrastructurii IT a companiei dumneavoastră.

Ca orice altă aplicație de clasă corporativă, Zimbra Collaboration Suite Open-Source Edition păstrează jurnale detaliate ale activității sale. Cele mai multe dintre acestea sunt stocate în folderul /opt/zimbra/log/ sub formă de fișiere. Iată doar câteva dintre ele:

  • mailbox.log — jurnalele serviciului poștal Jetty
  • audit.log — jurnalele de autentificare
  • clamd.log — jurnalele de funcționare ale antivirusului
  • freshclam.log — jurnalele actualizărilor antivirusului
  • convertd.log — jurnalele converterului de atașamente
  • zimbrastats.csv — jurnalele de performanță ale serverului

De asemenea, jurnalele Zimbra pot fi găsite în fișierul /var/log/zimbra.log, unde sunt înregistrate jurnalele de funcționare ale Postfix și ale Zimbra în sine.

Pentru a ne proteja sistemul de atacurile de tip bruteforce, vom monitoriza mailbox.log, audit.log și zimbra.log.

Pentru ca totul să funcționeze, este necesar ca pe serverul dumneavoastră cu Zimbra OSE să fie instalate Fail2Ban și iptables. În cazul în care utilizați Ubuntu, puteți face acest lucru folosind comenzile dpkg -s fail2ban, iar dacă folosiți CentOS, verificați acest lucru folosind comenzile yum list installed fail2ban. În cazul în care Fail2Ban nu este instalat, instalarea acestuia nu va fi o problemă, deoarece acest pachet se găsește în aproape toate repozitoarele standard.

După ce tot software-ul necesar este instalat, se poate începe configurarea Fail2Ban. Pentru aceasta, trebuie să creați un fișier de configurare /etc/fail2ban/filter.d/zimbra.conf, în care vom specifica expresiile regulate pentru jurnalele Zimbra OSE, care vor corespunde încercărilor nereușite de autentificare și vor activa mecanismele Fail2Ban. Iată un exemplu de conținut al zimbra.conf cu un set de expresii regulate, corespunzătoare diferitelor erori generate în Zimbra OSE în cazul unei încercări nereușite de autentificare:

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

După ce expresiile regulate pentru Zimbra OSE sunt formulate, este timpul să începem editarea configurației Fail2ban. Setările acestei utilități sunt situate în fișierul /etc/fail2ban/jail.conf. De precauție, vom face o copie de rezervă a acestuia folosind comanda cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak. După aceasta, vom aduce acest fișier într-o formă aproximativ similară:

# 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

Acest exemplu, deși destul de universal, merită să clarificăm anumite parametrii pe care poate doriți să îi modificați în timpul configurării autonome a Fail2Ban:

  • Ignoreip — prin intermediul acestui parametru, puteți specifica o anumită adresă IP sau o subrețea, a căror adrese Fail2Ban nu ar trebui să le verifice. De obicei, rețelele interne ale companiei și alte adrese de încredere sunt adăugate în lista de ignore.
  • Bantime — Timpul pentru care un infractor va fi interzis. Este măsurat în secunde. Valoarea -1 înseamnă un ban pe termen nelimitat.
  • Maxretry — Numărul maxim de încercări pe care o adresă IP o poate face pentru a accesa serverul.
  • Sendmail — Setare care permite trimiterea automată de notificări prin email când Fail2Ban este activat.
  • Findtime — Setare care permite stabilirea unui interval de timp după care adresa IP poate încerca din nou accesul la server după epuizarea numărului maxim de încercări nereușite (parametrul maxretry)

După salvarea fișierului cu setările Fail2Ban, rămâne doar să reporniți această utilitate folosind comanda service fail2ban restart. După repornire, jurnalele principale Zimbra vor începe să fie monitorizate constant în conformitate cu expresiile regulate. Datorită acestui lucru, administratorul va putea exclude practic orice posibilitate de infiltrare a atacatorului nu doar în căsuțele poștale ale Zimbra Collaboration Suite Open-Source Edition, ci și să protejeze toate serviciile care funcționează în cadrul Zimbra OSE, precum și să fie la curent cu orice încercări de acces neautorizat.

Pentru orice întrebări legate de Zextras Suite, puteți contacta reprezentanta companiei „Zextras” Ekaterina Triandafylidi la adresa de email katerina@zextras.com

Sursa: habr.com

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster