Tips & Tricks: Procedure di aggiornamento del sistema operativo

E’ di fondamentale importanza installare gli aggiornamenti del sistema operativo e della sicurezza man mano che vengono rilasciati.

Si deve verificare se le patch relative alla sicurezza per Zimbra sono state rilasciate tramite https://wiki.zimbra.com/wiki/Security_Center e definire il tempo per l’installazione di una patch in base al CVSS Score o Zimbra Rating. Per esempio:

Valutazione Zimbra È ora di installare Osservazioni
Basso Finestra di manutenzione programmata mensile
medio Fine della settimana lavorativa
Alto Immediato o alla fine della giornata lavorativa A seconda se la mitigazione è possibile fino all’installazione della patch
  • Assicurarsi di eseguire una versione del sistema operativo supportata
  • Assicurarsi di eseguire una versione Zimbra supportata

Zimbra non distingue tra aggiornamenti delle funzionalità e aggiornamenti della sicurezza, quindi si deve controllare la nota di rilascio di ogni patch per scoprire se ci sono correzioni relative alla sicurezza.

Riavvia il server dopo l’installazione del nuovo kernel

Installa il pacchetto del sistema operativo pax

Tutti gli amministratori Zimbra devono assicurarsi che il pacchetto pax sia installato sul proprio server Zimbra. Pax è necessario ad Amavis per estrarre il contenuto degli allegati compressi per la scansione antivirus.

Se il pacchetto pax non è installato, Amavis ripiegherà sull’utilizzo di cpio, sfortunatamente il fallback è implementato male (da Amavis) e consentirà a un utente malintenzionato non autenticato di creare e sovrascrivere file sul server Zimbra, inclusa la webroot Zimbra.

Per la maggior parte dei server Ubuntu il pacchetto pax dovrebbe essere già installato poiché è una dipendenza di Zimbra. A causa di una modifica del pacchetto in CentOS, c’è un’alta probabilità che pax non sia installato.

Dovresti convalidare e installare pax su tutti i tuoi sistemi come segue:

#Ubuntu
apt installa pax

#CentOS 7 e derivati
yum installa pax

#CentOS 8 e derivati
dnf installa spax

Riavvia Zimbra usando:

sudo su zimbra -
riavvio zmcontrol
Installa un firewall host

Firewall consigliato: iptables. Sconsigliato: firewalld (firewalld può fallire lasciando il sistema con porte aperte, in quanto non ha fail-safe).

Ulteriori letture: system-config-firewall https://oracle-base.com/articles/linux/linux-firewall

Esempi di impostazioni del firewall:

[root@zimbra1 ~]# cat /etc/sysconfig/iptables
# Configurazione del firewall scritta da system-config-firewall
# La personalizzazione manuale di questo file non è consigliata.
*filtro
:INPUT DROP [0:0]
:AVANTI ACCETTA [0:0]
:OUTPUT ACCETTA [0:0]

#blocca i pacchetti nulli
-A INPUT -p tcp --tcp-flags ALL NONE -j DROP

#block syn flood
-A INPUT -p tcp ! --syn -m state --state NEW -j DROP

#blocca i pacchetti di NATALE
-A INPUT -p tcp --tcp-flags ALL ALL -j DROP

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCETTA
-A INPUT -p icmp -j ACCETTA
-A INPUT -i lo -j ACCETTA
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
# se ti stai connettendo da IP noti puoi commentare sopra e usare questo:
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -s [aggiungi ip sorgente qui]

### configurazione di iptables per zimbra ###

# abilita smtp
-A INPUT -m state --state NEW -m tcp -p tcp --dport 25 -j ACCEPT

# disabilitato http non crittografato
#-A INPUT -m state --state NUOVO -m tcp -p tcp --dport 80 -j ACCETTA
# disabilitato pop3
#-A INPUT -m state --state NUOVO -m tcp -p tcp --dport 110 -j ACCETTA
# imap disabilitato
#-A INPUT -m state --state NUOVO -m tcp -p tcp --dport 143 -j ACCETTA
# ldap disabilitato
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 389 -j ACCEPT -s [aggiungi ip sorgente qui]

#attiva https
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
# disabilita smtp su porta ssl
#-A INPUT -m state --state NUOVO -m tcp -p tcp --dport 587 -j ACCETTA
# disabilita imap sulla porta ssl
#-A INPUT -m state --state NUOVO -m tcp -p tcp --dport 993 -j ACCETTA
# disabilita pop3 sulla porta ssl
#-A INPUT -m state --state NUOVO -m tcp -p tcp --dport 995 -j ACCETTA

#disable interfaccia di amministrazione
#usalo solo se non puoi usare un tunnel ssh
#-A INPUT -m state --state NEW -m tcp -p tcp --dport 9071 -j ACCEPT -s [aggiungi ip sorgente qui]

-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMETTERE

[root@zimbra1 ~]# servizio iptables riavviato
Installa un firewall host su ipv6

Se hai ipv6 abilitato sul tuo host, configura iptables6 anche per quello, come sopra.

Installa fail2ban

Gli attacchi di forza bruta che utilizzano l’autenticazione SMTP sono comuni, considera l’installazione di fail2ban

https://wiki.zimbra.com/wiki/Configure_Fail2Ban_for_Zimbra_Server_with_route_instead_of_iptables_to_block_IPs

Accesso all’interfaccia utente dell’amministratore tramite un tunnel sicuro

Cerca di evitare di aprire le porte dell’interfaccia utente di amministrazione (7071,9071) su Internet pubblico. Se puoi usare un tunnel SSH come questo:

ssh -L 7071:localhost:7071 user_with_low_privilege@zimbra.example.com

Quindi indirizza il tuo browser a: https://localhost:7071/zimbraAdmin/ (e ignora l’avviso di certificato)

Interfaccia utente amministratore proxy tramite la porta 9071

Non è consigliabile esporre l’interfaccia utente dell’amministratore a Internet. Gli amministratori devono invece accedere all’interfaccia utente di amministrazione tramite una VPN. In ogni caso dovrai assicurarti di eseguire il proxy dell’interfaccia utente di amministrazione tramite Zimbra Proxy per assicurarti che utilizzi la migliore configurazione TLS. Ciò significa che è necessario accedere all’interfaccia utente dell’amministratore tramite la porta 9071 con proxy e negare l’accesso alla porta 7071 tramite un firewall. Per abilitare questo dovresti eseguire come utente Zimbra:

/opt/zimbra/libexec/zmproxyconfig -e -w -C -H `zmhostname`
riavvio di zmproxyctl
SSH disabilita l’autenticazione della password

Assicurati di impostare PasswordAuthentication no/etc/ssh/sshd_configcontrollare il file di configurazione per i duplicati di PasswordAuthenticationPotresti anche voler impostare GSSAPIAuthentication noEsegui systemctl restart sshde assicurati di non poter più accedere utilizzando le password accedendo a un sistema che non dispone della tua chiave privata SSH.

Puoi anche impostare il tuo firewall in modo da consentire solo le connessioni in entrata alla porta 22 da IP noti nel caso in cui tu abbia un IP fisso.

Ulteriori letture: https://www.digitalocean.com/community/tutorials/how-to-set-up-ssh-keys-2

Avere un server di registrazione centralizzato

Assicurati di disporre di registri affidabili nel caso in cui si verifichi un attacco, vedi:

Disabilita l’accesso imap/pop per utente

È possibile disabilitare l’accesso tramite il firewall per tutti gli utenti. Puoi anche disabilitare imap e pop tramite le impostazioni CoS. Vedi: – https://zimbra.github.io/zimbra-9/adminguide.html#_email_messaging_features

Quindi hai la possibilità di abilitarlo per utenti specifici.

Motivo: IMAP è un vettore di attacco comune utilizzato per la forza bruta delle password degli account, è possibile utilizzare il protocollo ActiveSync o l’e-mail basata sul Web.

Disabilita l’autenticazione smtp

Ciò disabiliterà l’uso del tuo Zimbra come relay per i tuoi utenti, il che significa che gli utenti possono solo inviare posta in uscita tramite ActiveSync o WebUI.

Motivo: SMTP è un vettore di attacco comune utilizzato per la forza bruta delle password degli account, è possibile utilizzare il protocollo ActiveSync o l’e-mail basata sul Web.

È possibile configurarlo nell’interfaccia utente dell’amministratore tramite Home → Configura → Impostazioni globali → Disabilita autenticazione MTA.

Ulteriori letture: https://imanudin.net/2018/06/13/zimbra-tips-how-to-restrict-sasl-login-access/

Verifica le reti attendibili Zimbra Postfix MTA

Se possibile, non disporre di una rete affidabile, ad esempio:

zmprov ms zimbra.example.com zimbraMtaMyNetworks "127.0.0.0/8 [::1]/128 xxxx/x [xxxx:xxxx:xxxx::x]/x"
riavvio zmmtactl

Dove xxxx/x è l’indirizzo ipv4 della macchina locale, non una sottorete e [xxxx:xxxx:xxxx::x]/x è l’indirizzo ipv6 della macchina locale.

Ulteriori letture: https://zimbra.github.io/zimbra-9/adminguide.html#setting_up_trusted_netorks

Usa l’autenticazione a 2 fattori

Installa abilita e forza i tuoi utenti a utilizzare 2FA.

Per l’edizione di rete di Zimbra:

Per l’edizione Open Source di Zimbra:

Avere backup e testarli

Implementa una procedura nella tua organizzazione che si occupa specificamente di backup e ripristino. Definire una pianificazione per la creazione del backup e il test di ripristino. Prendere in considerazione l’utilizzo di supporti di backup esterni fisici archiviati sia localmente che in una posizione remota. Quindi puoi ripristinare offline e avere una buona idea del tempo di ripristino. Il backup su cloud può essere troppo lento per il ripristino se è necessario eseguire un ripristino completo del server.

Se utilizzi la crittografia per i tuoi supporti di backup, assicurati di avere accesso alla chiave di decrittografia. In modo che tu possa effettivamente ripristinare il tuo backup in caso di eventi catastrofici.

  1. Crea istantanee di tutti i tuoi server Zimbra
  2. Effettua backup per account utente
  3. Controlla la conservazione del backup Zimbra NG e aumentala se possibile
  4. Usa un sistema di controllo delle versioni come git per tenere traccia della tua configurazione
  5. Disponi di un wiki interno per documentare la tua infrastruttura, la configurazione e le procedure

Ulteriori letture:

Disabilita l’indicizzazione da parte dei motori di ricerca della tua pagina di accesso

Per impostazione predefinita, Zimbra consente l’indicizzazione della pagina di accesso nei motori di ricerca su Internet pubblico. Questo è bello se sei un ISP, non così bello se sei un’azienda.

Per disabilitare questo:

zmprov mcf zimbraMailKeepOutWebCrawlers TRUE
zmprov mcf +zimbraResponseHeader "X-Robots-Tag: noindex"
riavvio di zmmailboxdctl
Disabilita lo spoofing da parte di utenti locali (autenticati).

In Zimbra qualsiasi utente che ha accesso a un account può inviare e-mail per conto di altri utenti sul server. Questo può essere fatto tramite SMTP se non hai disabilitato l’accesso SMTP come menzionato sopra.

Puoi forzare una corrispondenza tra l’indirizzo FROM e il nome utente tramite questa guida:

Gestisci gli allegati bloccati

Zimbra consente di bloccare gli allegati in entrata e in uscita in base al tipo di file. Per impostazione predefinita, questa funzione non è abilitata, puoi abilitarla nell’interfaccia utente amministratore → Configura → Impostazioni globali → Allegati.

Si suggerisce di aggiungere almeno i tipi di file eseguibili di Windows. Esempio di configurazione:

zmprov gacf | grep bloccato | grep -v Comune
zimbraAttachmentsBlocked: TRUE
zimbraMtaBlockedExtension: asd
zimbraMtaBlockedExtension: bat
zimbraMtaBlockedExtension: com
zimbraMtaBlockedExtension: exe
zimbraMtaBlockedExtension: hta
zimbraMtaBlockedExtension: js
zimbraMtaBlockedExtension: jse
zimbraMtaBlockedExtension: lnk
zimbraMtaBlockedExtension: pif
zimbraMtaBlockedExtension: scr
zimbraMtaBlockedExtension: shm
zimbraMtaBlockedExtension: shs
zimbraMtaBlockedExtension: vbe
zimbraMtaBlockedExtension: vbs
zimbraMtaBlockedExtension: vbx
zimbraMtaBlockedExtension: wsf
zimbraMtaBlockedExtension: wsh
zimbraMtaBlockedExtensionWarnAdmin: TRUE
zimbraMtaBlockedExtensionWarnRecipient: TRUE

Ulteriori letture:

Configura l’antispam di Zimbra

Impostare RBL e rivedere e implementare le informazioni in:

Disattiva servlet proxy

Zimbra ha un servlet Java che viene utilizzato da alcuni Zimlet per inoltrare le richieste dal browser Web dell’utente tramite il server Zimbra a server di terze parti. Viene utilizzato, ad esempio, da Webex Zimlet. Molte distribuzioni in realtà non utilizzano alcun Zimlet che utilizza il servlet proxy. Il servlet proxy è un problema di sicurezza in quanto potenzialmente può essere utilizzato per fare in modo che il server Zimbra effettui richieste a se stesso e aggiri il firewall. Non usare caratteri jollyzimbraProxyAllowedDomainse svuotalo completamente se non lo usi:

zmprov mc default zimbraProxyAllowedDomains ""

Fallo per tutti i tuoi CoS, puoi trovarli con zmprov gac.

Account amministratore
  • Crea un account amministratore separato con una password complessa che non usi quotidianamente.
  • Conosci i tuoi amministratori e disabilita gli account amministratore obsoleti.

Se desideri ancora più sicurezza, puoi disabilitare il tuo account amministratore tramite la riga di comando e abilitarlo solo quando necessario.

Tempo di sessione

Per impostazione predefinita, la durata della sessione utente Zimbra è di 3 giorni. Ciò significa che se l’utente lascia un laptop aperto con uno Zimbra connesso, non gli verrà chiesto di accedere nuovamente per 3 giorni.

Prendere in considerazione:

  • decrescente zimbraAuthTokenLifetime
  • decrescente zimbraAdminAuthTokenLifetime
  • configurazione di zimbraMailIdleSessionTimeout (l’impostazione predefinita è disabilitata)

Questo può essere configurato tramite le impostazioni CoS, ulteriori letture:

Ottieni il timestamp dell’ultimo accesso

Puoi configurare Zimbra per memorizzare l’ora in cui si è verificato un accesso riuscito a un account. Originariamente questa funzione era pensata solo per trovare account obsoleti e il timestamp viene aggiornato solo una volta ogni 3 giorni.

Puoi aggiornarlo una volta al secondo configurandolo come:

zmprov mcf zimbraLastLogonTimestampFrequency 1s

Si prega di notare che è necessario utilizzare SSDB affinché funzioni, ulteriori letture:

Installa e abilita haveged

Ulteriori letture:

Installa e abilita chronyd

Ulteriore lettura:

Pre-autenticazione

Se utilizzi la pre-autenticazione, utilizza un’implementazione SOAP. L’API REST di pre-autenticazione non supporta la registrazione dell’IP di origine.

Ecco un esempio di script PHP che implementa una pre-autenticazione SOAP. Questa particolare implementazione può essere rilasciata su un server IDP SimpleSamlPHP in modo che utilizzi SimpleSamlPHP per convalidare se l’utente ha effettuato l’accesso. Una copia è disponibile all’indirizzo: https://github.com/Zimbra-Community/zimbra-tools/blob/ master/pre-auth-soap-saml.php

Ulteriori letture:

Disabilita authFallBackToLocal

Se utilizzi l’autenticazione esterna, ad esempio Active Directory o SAML, assicurati di disabilitare l’uso delle password Zimbra locali. Tieni presente che gli account amministratore globale possono sempre utilizzare l’autenticazione LDAP interna di Zimbra, quindi imposta una passphrase o una password lunga sugli account amministratore globale.

Per disabilitarlo su un’esecuzione di dominio:

zmprov md example.com zimbraAuthFallbackToLocal FALSE
Disabilita l’accesso tramite alias

Per impostazione predefinita, gli utenti possono accedere a Zimbra utilizzando il proprio nome account ma anche uno qualsiasi dei propri indirizzi alias. Per consentire solo l’accesso con il nome dell’account eseguire:

zmlocalconfig -e alias_login_enabled=false
Disabilita la condivisione in CoS

Nell’interfaccia utente dell’amministratore vai su Configura → Classe di servizio → Funzionalità e verifica tutte le funzionalità relative alla condivisione e disabilita ciò che puoi.

Disattiva IMAP/POP esterno in CoS

Nell’interfaccia utente dell’amministratore, vai a Configura → Classe di servizio → Funzionalità e disabilita l’accesso IMAP/POP esterno.

Gestione contabile

Avere o creare una procedura nella propria organizzazione in modo che i nuovi utenti ottengano i diritti di accesso corretti, ma anche in modo da poter disabilitare gli account per gli utenti che lasciano l’organizzazione.

Implementa la creazione e la rimozione automatizzate dell’account in base alla tua procedura. Rimuovi gli account obsoleti e verifica anche che nessuno stia utilizzando la funzione Account esterni in Zimbra e, se necessario, elimina automaticamente gli account esterni.

Non utilizzare cifrari deboli nei certificati TLS

Questa pagina wiki descrive come configurare Zimbra con TLS forte. Presuppone che tu stia utilizzando il proxy Zimbra e neghi il traffico alle porte non proxy tramite un firewall host.

Ulteriori letture:

Registra l’IP di origine corretto

Controlla i tuoi log e verifica se registrano l’IP di origine corretto e non solo quello del server proxy.

Se vedi solo IP interni nel registro, devi configurare Zimbra per registrare l’IP dall’intestazione X-Forwarded-For. https://wiki.zimbra.com/wiki/Log_Files#Logging_the_Originating_IP

zmlocalconfig zimbra_http_originating_ip_header
zimbra_http_originating_ip_header = X-Forwarded-For

zmprov mcf +zimbraMailTrustedIP 127.0.0.1
zmprov mcf +zimbraMailTrustedIP <proxy ip qui>
zmprov mcf +zimbraMailTrustedIP <altro proxy qui>
riavvio zmcontrol

Ulteriori letture:

zimbraPrefShortEmailAddress

Per impostazione predefinita, Zimbra elenca solo il nome del mittente di un’e-mail. Ad esempio: CEO ceo@example.com . Puoi farlo in questo modo:CEO you can configure Zimbra to display the entire email address so that it shows

zmprov mc default zimbraPrefShortEmailAddress FALSE

Fallo per tutti i tuoi CoS, puoi trovarli con zmprov gacNon ancora supportato nell’interfaccia utente moderna.

Impostazione Same Site dell’attributo cookie

Per impostazione predefinita, il valore sarà Strict ma l’utente può modificarlo in Lax, None e “” (vuoto) per nessun SameSiteattributo.

zmlocalconfig -e zimbra_same_site_cookie="Rigido"

Ulteriori letture: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite

Impedisci a Zimbra di inviare X-Mailer
zmprov mcf zimbraSmtpSendAddMailer FALSO
Verifica dell’integrità dell’installazione di Zimbra

Uno script che consente agli amministratori di Zimbra di creare checksum di tutti i file in un’installazione di Zimbra. L’output dello script può essere utilizzato per identificare modifiche indesiderate e file appena creati. Tali modifiche possono ad esempio essere causate da hacker. https://wiki.zimbra.com/wiki/Integrity_check