La documentazione per questo prodotto è stata redatta cercando di utilizzare un linguaggio senza pregiudizi. Ai fini di questa documentazione, per linguaggio senza di pregiudizi si intende un linguaggio che non implica discriminazioni basate su età, disabilità, genere, identità razziale, identità etnica, orientamento sessuale, status socioeconomico e intersezionalità. Le eventuali eccezioni possono dipendere dal linguaggio codificato nelle interfacce utente del software del prodotto, dal linguaggio utilizzato nella documentazione RFP o dal linguaggio utilizzato in prodotti di terze parti a cui si fa riferimento. Scopri di più sul modo in cui Cisco utilizza il linguaggio inclusivo.
Cisco ha tradotto questo documento utilizzando una combinazione di tecnologie automatiche e umane per offrire ai nostri utenti in tutto il mondo contenuti di supporto nella propria lingua. Si noti che anche la migliore traduzione automatica non sarà mai accurata come quella fornita da un traduttore professionista. Cisco Systems, Inc. non si assume alcuna responsabilità per l’accuratezza di queste traduzioni e consiglia di consultare sempre il documento originale in inglese (disponibile al link fornito).
In questo documento vengono spiegate processo di verifica dell'identità del server Transport Layer Security (TLS) per Cisco Email Security Appliance (ESA)
Il processo di verifica TLS è essenzialmente un processo di convalida in due fasi:
Ciò comporta la verifica di:
Processo di convalida dell'identità presentata dal server (contenuta nel certificato di chiave pubblica X.509) rispetto all'identità di riferimento del server.
Manteniamo la terminologia dei nomi di identità descritta nella RFC 6125.
Nota: l'identità presentata è un identificatore presentato da un certificato di chiave pubblica X.509 del server che può includere più di un identificatore presentato di tipi diversi. Nel caso del servizio SMTP, è contenuto come estensione subjectAltName di tipo dNSName o come CN (Nome comune) derivato dal campo dell'oggetto.
Nota: l'identità di riferimento è un identificatore costruito da un nome di dominio DNS completo che un client si aspetta da un servizio dell'applicazione di presentare nel certificato.
Il processo di verifica è importante soprattutto per un client TLS, in quanto in generale un client avvia una sessione TLS e un client deve autenticare la comunicazione. Per ottenere questo risultato, il client deve verificare se l'identità presentata corrisponde all'identità di riferimento. La parte importante è capire che la sicurezza del processo di verifica TLS per il recapito della posta è quasi interamente basata sul client TLS.
Il primo passaggio della convalida dell'identità del server consiste nel determinare l'identità di riferimento da parte del client TLS. Dipende dall'applicazione l'elenco di identificatori di riferimento che il client TLS considera accettabile. Inoltre, un elenco di identificativi di riferimento accettabili deve essere costruito indipendentemente dagli identificativi presentati dal servizio. [rfs6125#6.2.1]
L'identità di riferimento deve essere un nome di dominio DNS completo e può essere analizzata da qualsiasi input (accettabile per un client e considerato sicuro). L'identità di riferimento deve essere un nome host DNS a cui il client sta tentando di connettersi.
Il nome di dominio di posta elettronica del destinatario è un'identità di riferimento espressa direttamente dall'utente, con l'intenzione di inviare un messaggio a un utente specifico in un particolare dominio e questo soddisfa anche il requisito di essere un FQDN a cui un utente sta tentando di connettersi. È coerente solo nel caso di un server SMTP autonomo in cui il server SMTP è di proprietà e gestito dallo stesso proprietario e il server non ospita troppi domini. Come ogni dominio deve essere elencato in certificato (come uno di subjectAltName: valori dNSName). Dal punto di vista dell'implementazione, la maggior parte delle Autorità di certificazione (CA) limita il numero di nomi di dominio a un massimo di 25 voci (fino a un massimo di 100). Questo non è accettato nel caso dell'ambiente host, pensiamo ai provider di servizi di posta elettronica (ESP) in cui i server SMTP di destinazione ospitano migliaia e più di domini. Questo non è in scala.
L'identità di riferimento configurata in modo esplicito sembra essere la risposta, ma questo impone alcuni vincoli, in quanto è necessario associare manualmente un'identità di riferimento al dominio di origine per ogni dominio di destinazione o "ottenere i dati da un servizio di mappatura dei domini di terze parti in cui un utente ha esplicitamente posto un trust e con cui il client comunica su una connessione o un'associazione che fornisce sia l'autenticazione reciproca che il controllo dell'integrità". [RFC6125#6.2.1]
Dal punto di vista concettuale, questo può essere pensato come una "query MX sicura" da eseguire una sola volta al momento della configurazione, con il risultato memorizzato in modo permanente nell'MTA per proteggersi da eventuali compromessi del DNS quando è in stato di esecuzione. [2]
Ciò fornisce un'autenticazione più forte solo con i domini "partner", ma per i domini generici che non sono stati mappati questo non supera l'esame e questo non è immune dalle modifiche della configurazione sul lato del dominio di destinazione (come le modifiche del nome host o dell'indirizzo IP).
Il passaggio successivo del processo consiste nel determinare un'identità presentata. L'identità presentata viene fornita da un certificato di chiave pubblica X.509 del server, come estensione subjectAltName di tipo dNSName o come nome comune (CN) trovato nel campo dell'oggetto. Dove è possibile che il campo relativo al soggetto sia vuoto, purché il certificato contenga un'estensione subjectAltName che include almeno una voce subjectAltName.
Sebbene l'utilizzo di Nome comune sia ancora in pratica, è considerato deprecato e la raccomandazione corrente è quella di utilizzare le voci subjectAltName. Il supporto per l'identità da Nome comune rimane per la compatibilità con le versioni precedenti. In tal caso, è necessario utilizzare prima dNSName di subjectAltName e solo quando è vuoto, viene selezionato Nome comune.
Nota: il nome comune non è fortemente tipizzato perché potrebbe contenere una stringa descrittiva per il servizio anziché una stringa il cui formato corrisponde a quello di un nome di dominio DNS completo
Alla fine, quando sono stati determinati entrambi i tipi di identità, il client TLS deve confrontare ciascuno dei suoi identificativi di riferimento con gli identificativi presentati al fine di trovare una corrispondenza.
ESA consente di abilitare TLS e la verifica del certificato al momento della consegna a domini specifici (usando la pagina Controlli destinazione o il comando destconfig CLI). Quando è richiesta la verifica del certificato TLS, è possibile scegliere una delle due opzioni di verifica disponibili a partire dalla versione 8.0.2 di AsyncOS. Il risultato della verifica previsto può variare a seconda dell'opzione configurata. Tra le 6 diverse impostazioni per TLS, disponibili sotto controllo di destinazione, ci sono due importanti che sono responsabili della verifica del certificato:
CLI: destconfig
Do you want to use TLS support?
1. No
2. Preferred
3. Required
4. Preferred - Verify
5. Required - Verify
6. Required - Verify Hosted Domains
[6]>
Un processo di verifica TLS per l'opzione (4) Preferito - Verifica è identico a (5) Obbligatorio - Verifica, ma l'azione intrapresa in base ai risultati differisce come illustrato nella tabella seguente. I risultati per l'opzione (6) Obbligatorio - Verifica dei domini ospitati è identico a (5) Obbligatorio - Verifica ma un flusso di verifica TLS è abbastanza diverso.
Impostazioni TLS | Significato |
4. Preferito (Verifica) | Il protocollo TLS viene negoziato tra l'appliance Email Security e gli MTA del dominio. L'accessorio tenta di verificare il certificato dei domini. Sono possibili tre risultati:
|
5. Obbligatorio (verifica) |
Il protocollo TLS viene negoziato tra l'appliance Email Security e gli MTA del dominio. Verifica del certificato dei domini obbligatoria. Sono possibili tre risultati:
|
La differenza tra le opzioni TLS Required - Verify e TLS Required - Verify Hosted Domain risiede nel processo di verifica dell'identità. Il modo in cui viene elaborata l'identità presentata e il tipo di identificativi di riferimento che è consentito utilizzare fanno la differenza per il risultato finale. Lo scopo della descrizione seguente e dell'intero documento è quello di avvicinare questo processo all'utente finale. Poiché la comprensione non corretta o non chiara di questo argomento può avere un impatto sulla protezione della rete degli utenti.
L'identità presentata deriva prima da subjectAltName - estensione dNSName e se non esiste alcuna corrispondenza o l'estensione subjectAltName non esiste rispetto a CN-ID - il campo Nome comune da oggetto è selezionato.
L'elenco di identità di riferimento (REF-ID) è costruito da un dominio destinatario o da un dominio destinatario e da un nome host derivato da una query DNS PTR eseguita sull'indirizzo IP a cui è connesso il client. Nota: in questo caso particolare, identità di riferimento diverse sono confrontate con controlli di identità diversi presentati.
~= rappresenta una corrispondenza esatta o con caratteri jolly
L'identità presentata (dNSName o CN-ID) viene confrontata con le identità di riferimento accettate finché non viene confrontata e nell'ordine in cui sono elencate di seguito.
Per riassumere, con l'opzione 'TLS obbligatorio - Verifica' non esiste alcun nome host MX confrontato con dNSName o CN, un record di risorse PTR DNS viene controllato solo per CN e viene confrontato solo se la coerenza DNS viene mantenuta A(PTR(IP)) = IP, vengono eseguiti sia il test esatto che il test con caratteri jolly per dNSName e CN.
L'identità presentata deriva innanzitutto dall'estensione subjectAltName di tipo dNSName. Se non c'è corrispondenza tra dNSName e una delle identità di riferimento accettate (REF-ID), la verifica non riesce indipendentemente dal fatto che nel campo dell'oggetto esista un CN e potrebbe superare un'ulteriore verifica dell'identità. Il CN derivato dal campo del soggetto viene convalidato solo quando il certificato non contiene estensioni subjectAltName di tipo dNSName.
Tenere presente che l'identità presentata (dNSName o CN-ID) viene confrontata con le identità di riferimento accettate finché non viene confrontata e nell'ordine in cui sono elencate di seguito.
CN convalidato solo quando dNSName non esiste nel certificato. Il CN-ID viene confrontato con le identità di riferimento accettate riportate di seguito.
Quando la route SMTP è configurata e l'identità presentata non corrisponde al dominio del destinatario della posta elettronica, tutti i nomi di route FQDN vengono confrontati e, se non corrispondono, non vengono eseguiti ulteriori controlli. Con route SMTP configurate in modo esplicito, nessun nome host MX viene considerato confrontato con un'identità presentata. L'eccezione qui fa una route SMTP che è stata impostata come indirizzo IP.
In caso di route SMTP configurate in modo esplicito, si applicano le regole seguenti:
Quando si parla dell'opzione di verifica TLS obbligatoria per i domini ospitati, il modo in cui ESA si è connessa a un server di destinazione è importante per il processo di verifica TLS a causa delle route SMTP configurate in modo esplicito che forniscono un'identità di riferimento aggiuntiva da prendere in considerazione nel processo.
~= rappresenta una corrispondenza esatta o con caratteri jolly
Prendiamo un esempio dalla vita reale, ma per il dominio del destinatario: example.com. Di seguito è riportata una descrizione di tutti i passaggi necessari per verificare manualmente l'identità del server.
example.com -> IN MX mx01.subd.emailhosted.not.
example.com -> IN MX mx02.subd.emailhosted.not.
mx01.subd.emailhosted.not. -> IN A 192.0.2.1
mx02.subd.emailhosted.not. -> IN A 192.0.2.2
192.0.2.1 -> IN PTR mx0a.emailhosted.not.
192.0.2.2 -> IN PTR mx0b.emailhosted.not.
mx0a.emailhosted.not. -> IN A 192.0.2.1
mx0b.emailhosted.not. -> IN A 192.0.2.2
Nota: in questo caso i nomi host MX e i nomi revDNS non corrispondono
$ echo QUIT |openssl s_client -connect mx0a.emailhosted.not:25 -starttls smtp 2>/dev/null| openssl x509 -text | grep -iEo 'DNS:.*|CN=.*'
CN=thawte SHA256 SSL CA
CN=*.emailhosted.not
DNS:*.emailhosted.not, DNS:emailhosted.not
echo QUIT |openssl s_client -connect mx0b.emailhosted.not:25 -starttls smtp 2>/dev/null| openssl x509 -text | grep -iEo 'DNS:.*|CN=.*'
CN=thawte SHA256 SSL CA
CN=*.emailhosted.not
DNS:*.emailhosted.not, DNS:emailhosted.not
mx01.subd.emailhosted.not. -> IN A 192.0.2.1
PTR(IP): 192.0.2.1 -> IN PTR mx0a.emailhosted.not.
A(PTR(IP)): mx0a.emailhosted.not. -> IN A 192.0.2.1
Il nome di dominio PTR convalida l'identità e, poiché il certificato è un certificato firmato dalla CA, convalida l'intero certificato e viene stabilita una sessione TLS.
Revisione | Data di pubblicazione | Commenti |
---|---|---|
1.0 |
16-Apr-2018 |
Versione iniziale |