Qui di seguito c'è una breve descrizione su come installare il server e-mail Postfix che permetterà di raggiungere il punteggio massimo nelle tre sezioni del rapporto: Consegna Confidenziale, Phishing-Furto di Identità e Integrità dei Messaggi. Questa guida è stata testata su di una macchina virtuale con Ubuntu 24.04 LTS.
Il modo più semplice per avere DNSSEC è di usare un fornitore di servizi che supporta DNSSEC. Un’altra alternativa, che sarà esplorata nelle guide future, è di installare il proprio DNS con il supporto DNSSEC. Prima di iniziare, il nome di dominio deve avere un record MX e tale record deve avere un indirizzo IP assegnato e un record A. Nel servizio DNS (locale o fornito da terzi), si provvederà a creare un record MX (almeno uno) per il dominio model.dcslab.eu: 5 mx.model.dcslab.eu. Il primo valore corrispondente alla priorità e il secondo al nome dell’host dell'MTA. Per ciascun record MX generato provvederemo a creare un record A associando il nome dell’host MX al corrispondente indirizzo IP. Per esempio:
mx.model.dcslab.eu. IN A 139.191.36.5
General type of mail configuration? | Internet Site |
System mail name | model.dcslab.eu |
root and postmaster mail recipients | model (root user) |
destinations to accept mail for (mydestinations) | model.dcslab.eu |
force synchronous updates on mail | yes |
local networks (mynetworks) | 192.168.1.0/24 127.0.0.1 |
Mailbox Size limit (bytes) | 0 (means no limit) |
Local address extension character | (no address extensions) |
Internet Protocols to use | IPv4 |
Generiamo alias per ricevere rapporti DMARC
Per impostare correttamente StartTLS sulla nostra installazione Postfix, abbiamo bisogno di un certificato firmato da una Certification Authority (CA) riconosciuta e di configurare un insieme di parametri nel server Postfix. Il primo passo consiste nell’ottenere un certificato firmato da una Certification Authority valida. In questo esempio usiamo Let's Encrypt come Certification Authority che emette un certificato gratuito valido. Seguiremo poi la guida di installazione per una piattaforma Debian generica.
L’applicazione, per la richiesta del certificato, necessita l’accesso alla porta TCP 80. Se un’applicazione utilizza questa porta, deve essere terminata prima di continuare. All’ottenimento del certificato possiamo riavviare il servizio. Al momento della richiesta del certificato, è importante specificare correttamente il nome del dominio che intendiamo autentificare attraverso il certificato. Nel nostro caso, abbiamo specificato mx.model.dcslab.eu per il nostro provider email.
Per configurare SPF, è necessario impostare un record DNS, in modo che altri Mail Transfer Agents (MTAs) lo possano utilizzare al momento del ricevimento delle e-mail da parte del nostro dominio. Per permettere al nostro dominio di utilizzare SPF al momento del ricevimento delle e-mail, dobbiamo installare e configurare un’applicazione facendo uso dello strumento apt-get.
Inizieremo impostando una semplice regola per il record DNS indicando gli host autorizzati ad inviare e-mail per conto del nostro dominio model.dcslab.eu
IN TXT "v=spf1 mx -all"
Successivamente installeremo e configureremo il pacchetto: postfix-policyd-spf-python
# SPF /etc/postfix/master.cf configuration
#
policy-spf unix - n n - - spawn
user=nobody argv=/usr/bin/policyd-spf
# SPF /etc/postfix/main.cf configuration
policy-spf_time_limit = 3600s
smtpd_helo_restrictions = reject_invalid_hostname
smtpd_recipient_restrictions = permit_mynetworks,reject_unauth_destination, check_policy_service unix:private/policy-spf
DKIM richiede tre tappe per essere attivato:
Dopo aver generato le chiavi, possiamo usarle per creare i record TXT corrispondenti nel DNS del nostro dominio. Il sotto-dominio corrispondente è <selector>._domainkey.<our_domain>.
modelSelector._domainkey IN TXT ("v=DKIM1; h=sha256; k=rsa; s=email; p=MIGf...QAB")
Dopo la generazione della chiave e la creazione della registrazione TXT, dovremo configurare opendkim per lavorare con postfix.
#key_name domain:selector:/path/to/private_key_file
model.dcslab.eu model.dcslab.eu:modelSelector:/etc/opendkim/private_keys/modelSelector.key
#signer_of_the_message key_name
*@model.dcslab.eu model.dcslab.eu
#list-of-hosts (ips and hostnames)
127.0.0.1
model.dcslab.eu
192.168.1.0/24
Syslog yes
SyslogSuccess yes
LogWhy yes
UMask 002
OversignHeaders From,Subject
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
ExternalIgnoreList /etc/opendkim/TrustedHosts
InternalHosts /etc/opendkim/TrustedHosts
SignatureAlgorithm rsa-sha256
AutoRestart Yes
UserID opendkim:opendkim
SOCKET="local:/var/spool/postfix/var/run/opendkim/opendkim.sock"
# OpenDKIM milter configuration
milter_default_action = accept
milter_protocol = 6
smtpd_milters = unix:/var/run/opendkim/opendkim.sock
non_smtpd_milters = $smtpd_milters
La configurazione di DMARC è simile a DKIM, a parte per la generazione della chiave.
Per quanto riguarda DMARC, il record TXT è collegato al sotto-dominio _dmarc.<our_domain>. Un policy record DMARC di base contiene la versione e la policy da seguire (accetta, rifiuta, …) e l’indirizzo e-mail di riferimento da utilizzare in caso di necessità.
_dmarc TXT( "v=DMARC1; p=reject; rua=mailto:dmarc_reports@model.dcslab.eu")
Per concludere, dobbiamo configurare postfix e opendmarc.
AuthservID model.dcslab.eu
Socket inet:8893@localhost
# DMARC /etc/postfix/main.cf configuration
# 8893 is default for opendmarc
smtpd_milters = unix:/var/run/opendkim/opendkim.sock, inet:127.0.0.1:8893
Postfix ha il supporto per DANE, come opzione nella configurazione di TLS. Questa opzione deve essere già attivata al momento della configurazione di StartTLS.
smtp_tls_security_level = dane
smtp_dns_support_level = dnssec
Postfix necessita di un nameserver che effettua la validazione in maniera ricorsiva per DNSSEC. Ci troveremo quindi davanti a due opzioni, una corrisponde nell’ installare e configurare un nameserver locale per il caching e la validazione ricorsiva per DNSSEC, l’altra opzione prevede la configurazione del sistema per usarne uno esterno. Per impostare un record TLSA, possiamo usare uno strumento online (example) per generare i valori corrispondenti. Per ottenere il valore pem del certificato, possiamo eseguire:
-----BEGIN CERTIFICATE-----
MIIFMjCCBBqgAwIBAgISA/ZiA+nFT1Hd5emwMgI20KtdMA0GCSqGSIb3DQEBCwUA
...
Wq6bzNp36KG7fb86FW5VfJsINeIUdad/6J/gBylPPzaoonQ7vcT0VB6TI4/ic1C1
VuvF9e7YHH42YnWMoBesmOqoNWty+tzyFObvZPp7XLyQCDbS4ZY=
-----END CERTIFICATE-----
Seguendo la documentazione Postfix, sceglieremo i seguenti parametri per generare i record TLSA:
Provvediamo a generare un record per un servizio TCP sulla porta 25, quindi:
_25._tcp.mx.model.dcslab.eu TLSA 3 1 1 1cf86240705080beee6827b063e52274e545859711d4f63aca3af259210ad6ab