Proteggi Zimbra OSE dalla forza bruta e dagli attacchi DoS

Zimbra Collaboration Suite Open-Source Edition dispone di diversi potenti strumenti per garantire la sicurezza delle informazioni. Tra loro Postschermo - una soluzione per proteggere un server di posta dagli attacchi di botnet, ClamAV - un antivirus in grado di scansionare file e lettere in arrivo per individuare infezioni da programmi dannosi, nonché SpamAssassin - uno dei migliori filtri antispam oggi. Tuttavia, questi strumenti non sono in grado di proteggere Zimbra OSE dagli attacchi di forza bruta. Non le password più eleganti, ma comunque abbastanza efficaci, per forzare brute utilizzando un dizionario speciale sono irte non solo della probabilità di un hacking di successo con tutte le conseguenze che ne conseguono, ma anche della creazione di un carico significativo sul server, che elabora tutto tentativi falliti di hackerare un server con Zimbra OSE.

Proteggi Zimbra OSE dalla forza bruta e dagli attacchi DoS

In linea di principio, puoi proteggerti dalla forza bruta utilizzando gli strumenti Zimbra OSE standard. Le impostazioni dei criteri di sicurezza della password consentono di impostare il numero di tentativi di immissione della password non riusciti, dopodiché l'account potenzialmente attaccato viene bloccato. Il problema principale di questo approccio è che si verificano situazioni in cui i conti di uno o più dipendenti possono essere bloccati a causa di un attacco di forza bruta a cui non hanno nulla a che fare, e il conseguente tempo di inattività dei dipendenti può comportare ingenti perdite per l'azienda. Ecco perché è meglio non utilizzare questa opzione di protezione contro la forza bruta.

Proteggi Zimbra OSE dalla forza bruta e dagli attacchi DoS

Per proteggersi dalla forza bruta è molto più adatto uno strumento speciale chiamato DoSFilter, integrato in Zimbra OSE e in grado di interrompere automaticamente la connessione a Zimbra OSE tramite HTTP. In altre parole, il principio di funzionamento di DoSFilter è simile al principio di funzionamento di PostScreen, solo che viene utilizzato per un protocollo diverso. Originariamente progettato per limitare il numero di azioni che un singolo utente può eseguire, DoSFilter può anche fornire protezione dalla forza bruta. La sua differenza fondamentale rispetto allo strumento integrato in Zimbra è che dopo un certo numero di tentativi falliti, non blocca l'utente stesso, ma l'indirizzo IP da cui vengono effettuati più tentativi di accedere a un particolare account. Grazie a ciò, un amministratore di sistema non solo può proteggersi dalla forza bruta, ma anche evitare di bloccare i dipendenti dell'azienda semplicemente aggiungendo la rete interna della sua azienda all'elenco degli indirizzi IP e delle sottoreti attendibili.

Il grande vantaggio di DoSFilter è che oltre a numerosi tentativi di accesso a un determinato account, utilizzando questo strumento è possibile bloccare automaticamente quegli aggressori che hanno preso possesso dei dati di autenticazione di un dipendente, quindi sono entrati con successo nel suo account e hanno iniziato a inviare centinaia di richieste al server.

È possibile configurare DoSFilter utilizzando i seguenti comandi della console:

  • zimbraHttpDosFilterMaxRequestsPerSec — Utilizzando questo comando è possibile impostare il numero massimo di connessioni consentite per un utente. Per impostazione predefinita questo valore è 30 connessioni.
  • zimbraHttpDosFilterDelayMillis - Usando questo comando, puoi impostare un ritardo in millisecondi per le connessioni che supereranno il limite specificato dal comando precedente. Oltre ai valori interi, l'amministratore può specificare 0, in modo che non vi sia alcun ritardo, e -1, in modo che tutte le connessioni che superano il limite specificato vengano semplicemente interrotte. Il valore predefinito è -1.
  • zimbraHttpThrottleSafeIPs — Utilizzando questo comando, l'amministratore può specificare indirizzi IP e sottoreti attendibili che non saranno soggetti alle restrizioni sopra elencate. Tieni presente che la sintassi di questo comando può variare a seconda del risultato desiderato. Quindi, ad esempio, inserendo il comando zmprov mcf zimbraHttpThrottleSafeIPs 127.0.0.1, sovrascriverai completamente l'intero elenco e lascerai un solo indirizzo IP al suo interno. Se inserisci il comando zmprov mcf +zimbraHttpThrottleSafeIPs 127.0.0.1, l'indirizzo IP inserito verrà aggiunto alla lista bianca. Allo stesso modo, utilizzando il segno di sottrazione, puoi rimuovere qualsiasi IP dall'elenco consentito.

Tieni presente che DoSFilter può creare una serie di problemi quando si utilizzano le estensioni Zextras Suite Pro. Per evitarli consigliamo di aumentare il numero di connessioni simultanee da 30 a 100 tramite il comando zmprov mcf zimbraHttpDosFilterMaxRequestsPerSec 100. Inoltre, consigliamo di aggiungere la rete interna aziendale all'elenco di quelle consentite. Questo può essere fatto usando il comando zmprov mcf +zimbraHttpThrottleSafeIPs 192.168.0.0/24. Dopo aver apportato eventuali modifiche a DoSFilter, assicurati di riavviare il server di posta utilizzando il comando riavvio zmmailboxdctl.

Lo svantaggio principale di DoSFilter è che funziona a livello di applicazione e quindi può solo limitare la capacità degli aggressori di eseguire varie azioni sul server, senza limitare la possibilità di connettersi al nord. Per questo motivo, le richieste inviate al server per l'autenticazione o l'invio di lettere, anche se ovviamente falliranno, rappresenteranno comunque un buon vecchio attacco DoS, che non può essere fermato a un livello così elevato.

Per proteggere completamente il tuo server aziendale con Zimbra OSE, puoi utilizzare una soluzione come Fail2ban, un framework in grado di monitorare costantemente i registri del sistema informativo per azioni ripetute e bloccare l'intruso modificando le impostazioni del firewall. Il blocco a un livello così basso consente di disabilitare gli aggressori proprio nella fase di connessione IP al server. Pertanto, Fail2Ban può integrare perfettamente la protezione creata utilizzando DoSFilter. Scopriamo come connettere Fail2Ban con Zimbra OSE e aumentare così la sicurezza dell'infrastruttura IT della tua azienda.

Come qualsiasi altra applicazione di classe aziendale, Zimbra Collaboration Suite Open-Source Edition conserva registri dettagliati del suo lavoro. La maggior parte di essi sono archiviati nella cartella /opt/zimbra/log/ sotto forma di file. Eccone solo alcuni:

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

Nel file sono presenti anche i log di Zimbra /var/log/zimbra.log, dove vengono conservati i log di Postfix e Zimbra stesso.

Per proteggere il nostro sistema dalla forza bruta, monitoreremo casella di posta.log, registro di audizione и zimbra.log.

Affinché il tutto funzioni è necessario che sul tuo server siano installati Fail2Ban e iptables con Zimbra OSE. Se stai usando Ubuntu, puoi farlo usando i comandi dpkg -s fail2ban, se usi CentOS, puoi verificarlo utilizzando i comandi elenco yum installato fail2ban. Se Fail2Ban non è installato, installarlo non sarà un problema, poiché questo pacchetto è disponibile in quasi tutti i repository standard.

Una volta installato tutto il software necessario, puoi iniziare a configurare Fail2Ban. Per fare ciò è necessario creare un file di configurazione /etc/fail2ban/filter.d/zimbra.conf, in cui scriveremo espressioni regolari per i log di Zimbra OSE che corrisponderanno ai tentativi di accesso errati e attiveranno i meccanismi Fail2Ban. Ecco un esempio del contenuto di zimbra.conf con una serie di espressioni regolari corrispondenti ai vari errori che Zimbra OSE genera quando un tentativo di autenticazione fallisce:

# 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 compilate le espressioni regolari per Zimbra OSE, è ora di iniziare a modificare la configurazione di Fail2ban stesso. Le impostazioni di questa utilità si trovano nel file /etc/fail2ban/jail.conf. Per ogni evenienza, creiamone una copia di backup utilizzando il comando cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak. Successivamente ridurremo questo file approssimativamente alla seguente forma:

# 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

Anche se questo esempio è piuttosto generico, vale comunque la pena spiegare alcuni dei parametri che potresti voler modificare quando configuri Fail2Ban da solo:

  • Ignoralo — utilizzando questo parametro è possibile specificare un IP o una sottorete specifica da cui Fail2Ban non deve controllare gli indirizzi. Di norma, la rete interna dell'azienda e altri indirizzi attendibili vengono aggiunti all'elenco di quelli ignorati.
  • Bantime - Il tempo durante il quale l'autore del reato sarà interdetto. Misurato in secondi. Un valore di -1 significa un ban permanente.
  • Max riprova — Il numero massimo di volte in cui un indirizzo IP può tentare di accedere al server.
  • Sendmail — Un'impostazione che consente di inviare automaticamente notifiche e-mail quando viene attivato Fail2Ban.
  • Trova il tempo — Un'impostazione che permette di impostare l'intervallo di tempo dopo il quale l'indirizzo IP può tentare nuovamente di accedere al server dopo che è stato esaurito il numero massimo di tentativi falliti (parametro maxretry)

Dopo aver salvato il file con le impostazioni di Fail2Ban, non resta che riavviare questa utility utilizzando il comando riavvio del servizio fail2ban. Dopo il riavvio, i principali log di Zimbra inizieranno ad essere costantemente monitorati per verificarne la conformità con le espressioni regolari. Grazie a ciò, l'amministratore sarà in grado di eliminare virtualmente ogni possibilità che un utente malintenzionato possa penetrare non solo nelle caselle di posta di Zimbra Collaboration Suite Open-Source Edition, ma anche proteggere tutti i servizi in esecuzione all'interno di Zimbra OSE ed essere inoltre a conoscenza di eventuali tentativi di accesso non autorizzato. .

Per tutte le domande relative a Zextras Suite, è possibile contattare il rappresentante di Zextras Ekaterina Triandafilidi via e-mail [email protected]

Fonte: habr.com

Aggiungi un commento