mail sécurité - MaximeDanlee/admin2-projet GitHub Wiki
Il s’agit d’une technique d’usurpation d’identité qui consiste à envoyer des messages en se faisant passer pour quelqu’un d’autre. L’objectif des fraudeurs est de tromper le destinataire de l’e-mail en lui faisant croire que l’expéditeur est quelqu’un de confiance.
il s'agit de la réception d'email pas voulu, ces mails sont souvent envoyés en grand nombre à des fins publicitaires.
Certaines personnes peuvent intercepter les emails et lire leurs contenus sans notre autorisation.
-
Création d’un enregistrement SPF (Sender Policy Framework) .
-
Utilisation de la technique DKIM (Domain Keys Identified Mail).
-
L’enregistrement DMARC (Domain-based Message Authentication, Reporting and Conformance).
-
Reverse DNS.
Grâce à ces protocoles l'authentification des expéditeurs et des domaines seront vérifiés et donc l'usurpation d'identité sera sera moindre ou même nulle.
-
Proxy SMTP
-
Reverse DNS
-
Création d’un enregistrement SPF
-
Utilisation de la technique DKIM
-
L’enregistrement DMARC
En plus de SPF, DKIM, DMARC et le reverse DNS, le proxy SMTP va filtrer les mails avant d'arriver au serveur mail.
-
S/MIME
-
PGP
S/MIME et PGP permettent de chiffrer les mails.
-
SPF « Sender Policy Framework » : est un mécanisme permettant d’éviter l’usurpation d’identité de l’expéditeur en associant le domaine et l'adresse IP source. (une sorte de white list)
-
DKIM (Domain Keys Identified Mail) : est une clé de sécurisation qui permettra de lier une signature électronique aux e-mails envoyés ce qui garantit l’authentification du domaine et l'intégrité du message.
-
DMARC (Domain-based Message Authentication, Reporting and Conformance) : permet de déterminer vous-même les actions à entreprendre avec les e-mails qui ne passent pas les contrôles DKIM et SPF. Trois résultats possibles pour un email : Approve, Quarantine ou Rejet.
-
Reverse DNS : permet de vérifier si d'adresse IP vient bien du domaine de l'expéditeur.
-
Le S/MIME (Secure/Multipurpose Internet Mail Extensions) : permet de chiffrer les e-mails. Cette technologie utilise la cryptographie asymétrique pour protéger vos e-mails des accès indésirables. Ce protocole vous permet de signer numériquement vos e-mails et d’attester ainsi que vous êtes l'expéditeur légitime du message
-
PGP (Pretty Good Privacy) est un système de chiffrement utilisé pour crypter des données et des fichiers sensibles. On l’utilise également pour envoyer des emails chiffrés.
-
Proxy SMTP permet de filtrer les mails contre le spam et les virus. Configurer les mécanismes ad-hoc pour ne pas être considéré comme émetteur de spam.
-
SPF : les RR ont été ajouté dans le dns
@ IN TXT "v=spf1 ip4:135.125.101.226 ~all"
Site pour tester les RR SPF du dns : https://www.dmarcanalyzer.com/fr/spf-4/checker/
-
DKIM : Comme le service n'a pas encore été mis en place il m'est impossible de l'implémenter
-
DMARC : Les RR ont été enregistré dans le DNS.
Voici le site pour tester les RR DMARc : https://dmarcian.com/dmarc-inspector/
_dmarc TXT ( "v=DMARC1;p=quarantine;sp=quarantine;pct=100;adkim=r;aspf=r;fo=1;ri=86400;rua=mailto:[email protected];ruf=mailto:[email protected];rf=afrf" )
- éditez /etc/postfix/main.cf
# TLS parameters smtpd_tls_security_level = may smtpd_tls_auth_only = no smtpd_tls_key_file = /etc/letsencrypt/live/vps.adminpasbete.fr/privkey.pem smtpd_tls_cert_file = /etc/letsencrypt/live/vps.adminpasbete.fr/fullchain.pem smtpd_tls_CAfile = /etc/letsencrypt/live/vps.adminpasbete.fr/cert.pem smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache # on active TLS pour les connexions sortantes # Sur un postfix anterieur a 2.3, c'est smtp_use_tls = yes smtp_tls_security_level = may smtp_tls_key_file = /etc/letsencrypt/live/vps.adminpasbete.fr/privkey.pem smtp_tls_cert_file = /etc/letsencrypt/live/vps.adminpasbete.fr/fullchain.pem smtp_tls_CAfile = /etc/letsencrypt/live/vps.adminpasbete.fr/cert.pem smtp_tls_note_starttls_offer = yes smtp_tls_enforce_peername = no
source : ici
Record SPF dans le dns :
@ IN TXT "v=spf1 ip4:135.125.101.226 ~all"
Ceci indique que seul le serveur 135.125.101.226 peut envoyer des emails pour ce domaine
source : ici
-
On commence par installer le package opendkim
apt-get install opendkim opendkim-tools spamass-milter
-
Éditez le fichier /etc/opendkim.conf à la fin, ajoutez les éléments suivants :
AutoRestart Yes AutoRestartRate 10/1h UMask 002 Syslog yes SyslogSuccess Yes LogWhy Yes Canonicalization relaxed/simple ExternalIgnoreList refile:/etc/opendkim/TrustedHosts InternalHosts refile:/etc/opendkim/TrustedHosts KeyTable refile:/etc/opendkim/KeyTable SigningTable refile:/etc/opendkim/SigningTable Mode sv PidFile /var/run/opendkim/opendkim.pid SignatureAlgorithm rsa-sha256 UserID opendkim:opendkim Socket inet:12301@localhost
explication :
AutoRestart: Redémarre le filtre en cas de plantage. AutoRestartRate: Indique le ratio de redémarrage minimum et maximum. Si le nombre de redémarrage est plus rapide que ce ratio, ce dernier va être arreté. UMask: indique les permissions et ID utilisateur/groupe. Syslog, SyslogSuccess, *LogWhy: activé les log syslog Canonicalization: méthode canonical de signature des messages, simple : autorise aucune modification relaxed : autorise des modificiations mineures comme changer les espaces. relaxed/simple : L'en-tête du mail utilisera la méthode relaxed et le corps du message utilisera la méthode simple. ExternalIgnoreList: la liste des des hôtes par lequel les mails peuvent passer sans signatures. InternalHosts: liste des hôtes à ne pas vérifier et signer : signature sans vérification. KeyTable: Le chemin des tables de clés de signatures. SigningTable: Liste des tables de signatures pour lequels seront basés les champs from des mails. Mode: declares operating modes; in this case the milter acts as a signer (s) and a verifier (v) PidFile: Le fichier PID (process identification number) SignatureAlgorithm: indique l'algorithme de signatures à utiliser UserID: Le UserID du processus opendkim Socket: Le socket d'écoute de opendkim. Postfix va envoyer les messages à opendkim pour les vérification et signatures à travers ce socket.
- Éditez le fichier /etc/default/opendkim à la fin, ajoutez cette ligne pour indiquer quel port utilisera OpenDKIM à postfix :
SOCKET="inet:12301@localhost"
- Éditez le fichier /etc/postfix/main.cf et vérifier la configarution:
myhostname = l2-2.ephec-ti.be alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = spf-dkim-sio.ovh, vps402861.ovh.net, localhost.ovh.net, localho$ relayhost = mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_command = procmail -a « $EXTENSION » mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all socket= inet:12301@localhost milter_protocol = 2 milter_default_action = accept smtpd_milters = inet:localhost:12301 non_smtpd_milters = inet:localhost:12301
- Nous allons maintenant créer le dossier « opendkim » qui contiendra les hôtes de confiance « TrustedHosts », « KeyTable », « SigningTable » :
mkdir /etc/opendkim mkdir /etc/opendkim/keys
- Éditez le fichier /etc/opendkim/TrustedHosts:
127.0.0.1 localhost 192.168.0.1/24 *.l2-2.ephec-ti.be
- Éditez le fichier /etc/opendkim/KeyTable pour indiquer à OpenDKIM quel fichier clef doit être utilisé pour notre domaine:
mail._domainkey.domaine.comdomaine.com:mail:/etc/opendkim/keys/domaine.com/mail.private
- Éditez le fichier /etc/opendkim/SigningTable pour assurer la liaison de chaque adresse e-mail vers son domaine correspondant:
*@domaine.com mail._domainkey.domaine.com
- Nous allons maintenant générer la paire de clef DKIM grâce aux commandes suivantes :
1. cd /etc/opendkim/keys 2. mkdir domaine.com 3. cd domaine.com 3. opendkim-genkey -s mail -d domaine.com 4. chown opendkim:opendkim mail.private 5. cat /etc/opendkim/keys/domaine.com/mail.txt
- On va ajouter les clés publics au DNS:
a. cat /etc/opendkim/keys/domaine.com/mail.txt (La clé publique se trouve dans le paramètre p)
mail._domainkey IN TXT ( "v=DKIM1; k=rsa; " "p=lacleprubliquequiestlongue" ) ; ----- DKIM key mail for malekal.com
b. déclaration DNS
mail._domainkey 10800 IN TXT "v=DKIM1; k=rsa; p=lacleprubliquequiestlongue"
- Une fois les configuration terminé, redémarrer les service Opendkim et Postfix à l’aide des commandes :
* /etc/init.d/opendkim restart * /etc/init.d/postfix restart
Vous pouvez retrouver les sources ici et ici
- On ajoute dans le DNS :
_dmarc TXT ( "v=DMARC1;p=quarantine;sp=quarantine;pct=100;adkim=r;aspf=r;fo=1;ri=86400;rua=mailto:[email protected];ruf=mailto:[email protected];rf=afrf" )
-
Installer opendmarc dans Postfix :
apt install opendmarc
-
On édite ensuite le fichier de configuration /etc/opendmarc.conf:
AuthservID mail.example.com PidFile /var/run/opendmarc.pid #Debian default RejectFailures false Syslog true TrustedAuthservIDs mail.example.com,mail2.example.com UMask 0002 UserID opendmarc:opendmarc IgnoreHosts /etc/opendmarc/ignore.hosts HistoryFile /var/run/opendmarc/opendmarc.dat #for testing: SoftwareHeader true
Explication :
AuthservID: mettez l’hostname de votre serveur (mail.example.com) PidFile: chemin du fichier PID RejectFailures: true or false. Si la valeur est true alors tous les messages qui ne passeront pas la vérification DMARC seront rejetés. Je préfère avoir les messages donc je garde la valeur à false. Syslog: true or false. Active les logs ou non. TrustedAuthservIDs: ces AuthservIDs sont considérés comme nécessitant la validation DMARC. Utile lorsque plusieurs serveurs MX sont présents et qu’ils n’ont pas tous besoin d’être validés par DMARC. UMask: du fichier PID et du fichier de socket. UserID: utilisateur et groupe qui gère le service dmarc. IgnoreHosts: chemin du fichier d’exclusion. HistoryFile: chemin du fichier d’historique. Nécessaire pour envoyer des rapports à d’autres organisations. SoftwareHeader: ajoute un entête “Dmarc-Filter” avec la version opendmarc à chaque email traité. Utile pour la phase de test.
- On crée maintenant le fichier d’exclusion :
mkdir /etc/opendmarc/ nano /etc/opendmarc/ignore.hosts
- on y ajoute la liste des réseaux et domaines de confiance :
localhost 10.0.0.0/24 172.16.0.0/24
-
On configure maintenant le fichier /etc/default/opendmarc avec une directive SOCKET:
SOCKET="inet:54321@localhost"
-
On demande à ce qu’opendmarc soit lancé au démarrage du serveur :
systemctl enable opendmarc
-
On démarre opendmarc :
service opendmarc start
source : ici