Protezione Zimbra OSE da attacchi brute force e DoS

La Zimbra Collaboration Suite Open-Source Edition offre diversi strumenti potenti per garantire la sicurezza delle informazioni. Tra questi Postscreen — una soluzione per proteggere il server email da attacchi provenienti da botnet, ClamAV — un antivirus in grado di scansionare file e email in entrata per rilevare eventuali malware, e anche SpamAssassin — uno dei migliori filtri anti-spam disponibili oggi. Tuttavia, questi strumenti non sono in grado di proteggere Zimbra OSE da attacchi di tipo brute force. Sebbene non sia la soluzione più elegante, un attacco di brute force utilizzando un dizionario specifico comporta non solo la possibilità di un accesso riuscito con tutte le conseguenze del caso, ma anche la creazione di un carico notevole sul server che gestisce i tentativi di accesso falliti al server con Zimbra OSE.

Protezione Zimbra OSE da attacchi brute force e DoS

In linea di massima, proteggersi dagli attacchi brute force può essere fatto utilizzando le funzionalità standard di Zimbra OSE. Le impostazioni della politica di sicurezza delle password consentono di stabilire il numero di tentativi di accesso non riusciti dopo i quali un account potenzialmente vulnerabile viene bloccato. Il problema principale di questo approccio è che possono verificarsi situazioni in cui gli account di uno o più dipendenti possono essere bloccati a causa di un attacco brute force al quale non hanno alcuna connessione, e il conseguente downtime dei dipendenti può provocare grandi perdite per l'azienda. Per questo motivo, questa opzione di protezione dagli attacchi brute force è meglio evitare.

Protezione Zimbra OSE da attacchi brute force e DoS

Per proteggersi dagli attacchi brute force, uno strumento speciale chiamato DoSFilter è sicuramente più adatto. Questo strumento è integrato in Zimbra OSE e può interrompere automaticamente la connessione a Zimbra OSE via HTTP. In altre parole, il principio di funzionamento di DoSFilter è simile a quello di PostScreen, ma è utilizzato per un protocollo diverso. Inizialmente progettato per limitare il numero di azioni che un singolo utente può eseguire, DoSFilter può anche fornire una protezione efficace dagli attacchi brute force. La sua principale differenza rispetto allo strumento integrato in Zimbra è che, dopo un certo numero di tentativi falliti, blocca non l'utente ma l'indirizzo IP da cui provengono i molteplici tentativi di accesso. In questo modo, l'amministratore di sistema può non solo proteggersi dagli attacchi brute force, ma anche evitare il blocco dei dipendenti dell'azienda, semplicemente aggiungendo la rete interna dell'azienda all'elenco degli indirizzi IP e delle subnet autorizzate.

Un grande vantaggio di DoSFilter è che, oltre a limitare numerosi tentativi di accesso a un certo account, questo strumento può automaticamente bloccare i malintenzionati che hanno ottenuto i dati di autenticazione di un dipendente, per poi accedere con successo al suo account e iniziare a inviare centinaia di richieste al server.

È possibile configurare DoSFilter utilizzando i seguenti comandi da console:

  • zimbraHttpDosFilterMaxRequestsPerSec — Con questo comando è possibile specificare il numero massimo di connessioni consentite per un singolo utente. Di default, questo valore è impostato su 30 connessioni.
  • zimbraHttpDosFilterDelayMillis — Con questo comando è possibile impostare un ritardo in millisecondi per le connessioni che superano il limite stabilito dal comando precedente. Oltre ai valori interi, l'amministratore può specificare 0 per non avere ritardi e -1 affinché tutte le connessioni che superano il limite stabilito vengano semplicemente interrotte. Di default, questo valore è impostato su -1.
  • zimbraHttpThrottleSafeIPs — Con questo comando, l'amministratore può specificare indirizzi IP e subnet di fiducia a cui non si applicheranno i limiti sopra elencati. Va notato che la sintassi di questo comando può variare a seconda del risultato desiderato. Ad esempio, inserendo il comando zmprov mcf zimbraHttpThrottleSafeIPs 127.0.0.1, l'intero elenco verrà sovrascritto e conterrà solo un indirizzo IP. Se invece si inserisce il comando zmprov mcf +zimbraHttpThrottleSafeIPs 127.0.0.1, l'indirizzo IP inserito sarà aggiunto alla lista bianca. Allo stesso modo, utilizzando il segno meno è possibile rimuovere un indirizzo IP dalla lista di quelli autorizzati.

Va notato che DoSFilter può creare alcuni problemi quando si utilizzano le estensioni Zextras Suite Pro. Per evitarli, si consiglia di aumentare il numero di connessioni simultanee da 30 a 100 utilizzando il comando zmprov mcf zimbraHttpDosFilterMaxRequestsPerSec 100. Inoltre, si consiglia di aggiungere la rete interna dell'azienda alla lista autorizzata. Questo può essere fatto utilizzando il comando zmprov mcf +zimbraHttpThrottleSafeIPs 192.168.0.0/24. Dopo aver apportato modifiche a DoSFilter, è necessario riavviare il server di posta utilizzando il comando zmmailboxdctl restart.

Il principale svantaggio di DoSFilter è che opera a livello di applicazione e pertanto può solo limitare la capacità degli attaccanti di eseguire diverse azioni sul server, senza impedire la connessione al server stesso. Di conseguenza, anche se le richieste di autenticazione o di invio di email inviate al server falliranno, rappresenteranno comunque un attacco DoS tradizionale, che non può essere fermato a un livello così elevato.

Per assicurare completamente il proprio server aziendale con Zimbra OSE, si può utilizzare una soluzione come Fail2ban, un framework in grado di monitorare costantemente i log dei sistemi informativi per azioni ripetute e di bloccare l'aggressore modificando le impostazioni del firewall. Il blocco a questo livello consente di disattivare gli attaccanti proprio nel momento in cui si connettono al server. In questo modo, Fail2Ban può integrare perfettamente la protezione fornita da DoSFilter. Vediamo come integrare Fail2Ban con Zimbra OSE per migliorare la sicurezza dell'infrastruttura IT della vostra azienda.

Come qualsiasi altra applicazione aziendale, la Zimbra Collaboration Suite Open-Source Edition tiene registri dettagliati delle proprie operazioni. La maggior parte di essi è conservata nella cartella /opt/zimbra/log/ in forma di file. Ecco solo alcuni di essi:

  • mailbox.log — log del servizio di posta Jetty
  • audit.log — log di autenticazione
  • clamd.log — log del funzionamento dell'antivirus
  • freshclam.log — log degli aggiornamenti dell'antivirus
  • convertd.log — log del convertitore di allegati
  • zimbrastats.csv — log delle prestazioni del server

I log di Zimbra possono essere trovati anche nel file /var/log/zimbra.log, dove sono registrati i log di funzionamento di Postfix e Zimbra stessa.

Per proteggere il nostro sistema dagli attacchi di forza bruta, monitoreremo mailbox.log, audit.log e zimbra.log.

Per garantire il corretto funzionamento, è necessario che sul server con Zimbra OSE siano installati Fail2Ban e iptables. Se utilizzate Ubuntu, potete farlo utilizzando il comando dpkg -s fail2ban, mentre se state usando CentOS, potete verificarlo con il comando yum list installed fail2ban. Se Fail2Ban non è installato, l'installazione non rappresenterà un problema, poiché questo pacchetto è disponibile nella maggior parte dei repository standard.

Una volta che tutto il software necessario è installato, è possibile procedere alla configurazione di Fail2Ban. Per fare ciò, è necessario creare un file di configurazione /etc/fail2ban/filter.d/zimbra.conf, in cui specificheremo le espressioni regolari per i log di Zimbra OSE, che corrisponderanno a tentativi di accesso errati e attiveranno i meccanismi di Fail2Ban. Ecco un esempio del contenuto di zimbra.conf con un insieme di espressioni regolari relative a vari errori restituiti da Zimbra OSE durante un tentativo di autenticazione fallito:

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

Una volta compile le espressioni regolari per Zimbra OSE, è il momento di modificare la configurazione stessa di Fail2ban. Le impostazioni di questo strumento si trovano nel file /etc/fail2ban/jail.conf. Per precauzione, creiamo un backup di questo file utilizzando il comando cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak. Dopo di che, modificheremo questo file in modo simile al seguente:

# 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

Questo esempio, sebbene piuttosto universale, necessita di alcune spiegazioni su alcuni parametri che potreste voler modificare durante la configurazione di Fail2Ban:

  • Ignoreip — con questo parametro è possibile specificare un IP specifico o una sottorete, gli indirizzi che Fail2Ban non deve controllare. Di solito, vengono aggiunte alla lista degli indirizzi ignorati la rete interna dell'azienda e altri indirizzi fidati.
  • Bantime — Il tempo per cui un aggressore sarà bannato. Viene misurato in secondi. Un valore di -1 significa bannimento a tempo indeterminato.
  • Maxretry — Il numero massimo di tentativi che un singolo indirizzo IP può fare per accedere al server.
  • Sendmail — Impostazione che permette di inviare automaticamente notifiche email sull'attivazione di Fail2Ban.
  • Findtime — Impostazione che consente di definire un intervallo di tempo dopo il quale un indirizzo IP può tentare nuovamente di accedere al server dopo aver raggiunto il numero massimo di tentativi falliti (parametro maxretry)

Dopo aver salvato il file delle impostazioni di Fail2Ban, non resta che riavviare questa utility con il comando service fail2ban restart. Dopo il riavvio, i log principali di Zimbra inizieranno a essere monitorati continuamente per verificarne la corrispondenza con le espressioni regolari. Grazie a ciò, l'amministratore potrà praticamente escludere qualsiasi possibilità di intrusione da parte di malintenzionati non solo negli account di Zimbra Collaboration Suite Open-Source Edition, ma anche proteggere tutti i servizi in esecuzione all'interno di Zimbra OSE, rimanendo inoltre aggiornato su qualsiasi tentativo di accesso non autorizzato.

Per qualsiasi domanda relativa a Zextras Suite, puoi contattare il rappresentante dell'azienda «Zextras», Ekaterina Triandafili, via email all'indirizzo katerina@zextras.com.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS 🔥 Acquista hosting affidabile per siti web con protezione DDoS, server VPS VDS | ProHoster