GNU/Linux >> Linux Esercitazione >  >> Linux

Come proteggere i tuoi servizi di posta elettronica Linux con SSL/TLS

Tradizionalmente, i servizi di posta elettronica inviano i dati in modo non protetto:indipendentemente dal fatto che tu stia inviando e-mail tramite SMTP o ricevendole tramite IMAP o POP, le impostazioni predefinite sono in chiaro. Con più applicazioni online che applicano la crittografia e il consenso generale per proteggere i tuoi dati, è meglio proteggere i tuoi servizi di posta elettronica con un certificato di sicurezza Secure Sockets Layer/Transport Layer Security (SSL/TLS).

Più risorse Linux

  • Comandi Linux cheat sheet
  • Cheat sheet sui comandi avanzati di Linux
  • Corso online gratuito:Panoramica tecnica RHEL
  • Cheat sheet della rete Linux
  • Cheat sheet di SELinux
  • Cheat sheet dei comandi comuni di Linux
  • Cosa sono i container Linux?
  • I nostri ultimi articoli su Linux

Innanzitutto, una rapida revisione dei servizi e dei protocolli di posta elettronica. L'e-mail viene inviata tramite un servizio chiamato Simple Mail Transport Protocol (SMTP) utilizzando la porta TCP 25. Questo protocollo invia e-mail da server a server in base alle ricerche di record MX (Mail Exchanger) DNS. Una volta che un'e-mail è sul server di posta, viene recuperata utilizzando uno dei due servizi:Internet Message Access Protocol (IMAP) che utilizza la porta TCP 143 o Post Office Protocol (POP3) che utilizza la porta TCP 110. Tutti questi servizi, per impostazione predefinita, invia la tua e-mail e l'autenticazione a/da questi servizi in testo normale, quindi è molto non protetto!

Per proteggere i dati e-mail e l'autenticazione, questi servizi hanno aggiunto una funzione di sicurezza in cui possono utilizzare un certificato SSL/TLS per avvolgere il flusso di dati e la comunicazione con la crittografia. Il modo in cui la crittografia SSL/TLS protegge le informazioni va oltre lo scopo di questo articolo, ma l'articolo sulla sicurezza Internet di Bryant Son lo tratta in modo dettagliato. Ad alto livello, la crittografia SSL/TLS è un algoritmo di crittografia pubblico/privato.

Aggiungendo queste funzionalità di sicurezza ai servizi, possono essere in ascolto su nuove porte TCP:

Servizio Porta TCP predefinita Porta SSL/TLS
SMTP 25 587
IMAP 143 993
POP3 110 995

Genera certificati SSL/TLS

I certificati SSL/TLS possono essere generati gratuitamente utilizzando strumenti come OpenSSL, oppure possono essere acquistati a una gamma di prezzi dalle autorità di certificazione pubbliche (CA). In passato, generare il proprio certificato era facile e nella maggior parte dei casi funzionava, ma con la crescente richiesta di una migliore sicurezza, la maggior parte dei client di posta elettronica non si fida dei certificati SSL/TLS autogenerati senza un'eccezione manuale.

Se il tuo caso d'uso è privato o per test, ha senso risparmiare denaro con un certificato autogenerato. Ma se lo stai distribuendo a un gruppo numeroso o hai clienti paganti, allora è meglio acquistare un certificato da un'azienda pubblica e affidabile che li vende.

In entrambi i casi, il processo per iniziare a richiedere un nuovo certificato consiste nell'utilizzare gli strumenti OpenSSL sul tuo sistema Linux per creare una richiesta di firma del certificato (CSR):

$ openssl req -new -newkey rsa:2048 -nodes -keyout mail.mydomain.key -out mail.mydomain.csr

Questo comando creerà contemporaneamente una nuova CSR e una chiave privata per il servizio che stai cercando di proteggere. Il processo ti porrà una serie di domande associate al certificato:dettagli sulla posizione, nome di dominio completo del server (FQDN), informazioni di contatto e-mail, ecc. Dopo aver compilato le informazioni, verranno generati la chiave e la CSR.

Se generi il tuo certificato

Se desideri generare il tuo certificato, devi creare la tua CA radice prima di emettere il comando CSR sopra. Puoi creare la tua CA radice con:

$ openssl genrsa -des3 -out myCA.key 2048

Ti verrà chiesto di aggiungere una passphrase. Per favore fornisci una passphrase sicura e non perderla:questa è la tua chiave CA radice privata e, come afferma il nome, è la radice di tutta la fiducia nei tuoi certificati.

Quindi, genera il certificato CA radice:

$ openssl req -x509 -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.pem

Dopo aver risposto ad alcune altre domande, genererai un certificato CA radice con una durata di cinque anni.

Utilizzando il file CSR dei passaggi precedenti, puoi richiedere che un nuovo certificato venga generato e firmato dalla CA radice appena creata:

$ openssl x509 -req -in mail.mydomain.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out mail.mydomain.pem -days 1825 -sha256

Inserisci la passphrase della chiave della CA radice privata per creare e firmare il certificato.

Ora hai i due file necessari per configurare i tuoi servizi di posta elettronica per una maggiore sicurezza:il file della chiave privata, mail.mydomain.key e il file del certificato pubblico, mail.mydomain.pem .

Se acquisti un certificato

Se acquisti un certificato da un fornitore, ti chiederà di caricare quel CSR sul suo sistema, poiché viene utilizzato come input per generare il certificato SSL/TLS. Il certificato sarà accessibile come file (come mail.mydomain.pem ). Molti fornitori di SSL richiedono anche il download di un certificato intermedio. In questo caso, devi combinare i due file del certificato in uno solo, in modo che il servizio di posta elettronica possa elaborarli entrambi in combinazione. Puoi combinare il tuo certificato con un certificato intermedio di terze parti con:

$ cat mail.mydomain.pem gd_bundle-g2-g1.crt > mail.mydomain.pem

Si noti che l'estensione del file di output è .pem , che sta per Privacy-Enhanced Mail.

Ora hai i due file necessari per configurare i tuoi servizi di posta elettronica per una maggiore sicurezza:il file della chiave privata, mail.mydomain.key e il file del certificato pubblico combinato, mail.mydomain.pem .

Crea una directory sicura per i tuoi file

Indipendentemente dal fatto che tu abbia creato la tua chiave o ne abbia acquistata una da un fornitore, crea una directory sicura e di proprietà della radice per i due file che hai creato sopra. Un esempio di flusso di lavoro per creare un gioco sicuro sarebbe:

$ mkdir /etc/pki/tls
$ chown root:root /etc/pki/tls
$ chmod 700 /etc/pki/tls

Assicurati di impostare le autorizzazioni sui tuoi file dopo averli copiati in /etc/pki/tls con:

$ chmod 600 /etc/pki/tls/*

Configura i tuoi servizi SMTP e IMAP

Quindi, configura entrambi i servizi SMTP e IMAP per utilizzare i nuovi certificati di sicurezza. I programmi utilizzati in questo esempio per SMTP e IMAP sono postfix e dovecot .

Modifica / ecc / postfix/main.cf nel tuo editor di testo preferito. Aggiungi le seguenti righe:

smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/mail.mydomain.pem
smtpd_tls_key_file = /etc/pki/tls/mail.mydomain.key

Personalizza la tua configurazione

Le seguenti opzioni consentono di disabilitare/abilitare diverse crittografie, protocolli, ecc.:

smtpd_tls_eecdh_grade = strong
smtpd_tls_protocols= !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_mandatory_protocols= !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_mandatory_ciphers = high
smtpd_tls_security_level=may
smtpd_tls_ciphers = high
tls_preempt_cipherlist = yes
smtpd_tls_mandatory_exclude_ciphers = aNULL, MD5 , DES, ADH, RC4, PSD, SRP, 3DES, eNULL
smtpd_tls_exclude_ciphers = aNULL, MD5 , DES, ADH, RC4, PSD, SRP, 3DES, eNULL
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1

Modifica /etc/dovecot/dovecot.conf aggiungendo queste tre righe:

ssl = required
ssl_cert = </etc/pki/tls/mail.mydomain.pem
ssl_key = </etc/pki/tls/mail.mydomain.key

Aggiungi le seguenti opzioni per disabilitare/abilitare diverse crittografie, protocolli e altro (lascerò a te la comprensione e la considerazione):

ssl_cipher_list = EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA+SHA384:EECDH+ECDSA+SHA256:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH+aRSA+RC4:EECDH:EDH+aRSA:ALL:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!RC4:!SSLv2
ssl_prefer_server_ciphers = yes
ssl_protocols = !SSLv2 !SSLv3 !TLSv1 !TLSv1.1
ssl_min_protocol = TLSv1.2

Imposta il contesto per SELinux

Se la tua distribuzione Linux ha SELinux abilitato, imposta il contesto SELinux corretto per i tuoi nuovi file di certificato.

Per Postfix SELinux:

$ chcon -u system_u -t cert_t mail.mydomain.*

Per Dovecot SELinux:

$ chcon -u system_u -t dovecot_cert_t mail.mydomain.*

Riavvia entrambi i servizi e connettiti con le configurazioni del client di posta elettronica aggiornate. Alcuni client di posta elettronica rileveranno automaticamente i nuovi numeri di porta; altri richiederanno di aggiornarli.

Verifica la tua configurazione

Prova rapidamente dalla riga di comando con openssl e il s_client plug-in:

$ openssl s_client -connect mail.mydomain.com:993
$ openssl s_client -starttls imap -connect mail.mydomain.com:143
$ openssl s_client -starttls smtp -connect mail.mydomain.com:587

Questi comandi di test mostreranno una pletora di dati sulla connessione, il certificato, la crittografia, la sessione e il protocollo che stai utilizzando. Questo non è solo un buon modo per verificare che la nuova configurazione funzioni, ma anche per confermare che stai utilizzando il certificato appropriato e le impostazioni di sicurezza che hai definito nel postfix o dovecot file di configurazione.

Stai al sicuro!


Linux
  1. Come proteggere un account abilitato per cPanel con un certificato SSL Lets Encrypt

  2. Come proteggere un account abilitato per cPanel con un certificato SSL Sectigo

  3. Come gestire i certificati Lets Encrypt SSL/TLS con certbot

  4. Come proteggere il nome host di Plesk sulla porta 8443 con il certificato SSL

  5. Come configurare VSFTPD con connessione crittografata SSL/TLS?

Come installare il certificato SSL/TLS gratuito Let's Encrypt sui tuoi domini con cPanel?

Come proteggere il socket TCP di Docker con TLS

Come controllare la data di scadenza SSL su Plesk

Come monitorare i tuoi server Linux con Checkmk

Come proteggere Nginx con Let's Encrypt certificato SSL

Come proteggere un firewall Linux con le regole IPtables