DNS Check: SPF, DKIM, DMARC, and BIMI Validation
Vérification DNS : Validation SPF, DKIM, DMARC et BIMI
Description
Sender Policy Framework (SPF), DomainKeys Identified Mail (DKIM), Domain-based Message Authentication, Reporting & Conformance (DMARC) et Brand Indicators for Message Identification (BIMI) sont des enregistrements DNS clés utilisés pour authentifier les e-mails et empêcher l'usurpation d'identité.
- SPF : Garantit que seuls les serveurs de messagerie autorisés peuvent envoyer des e-mails au nom d'un domaine.
- DKIM : Permet au destinataire de vérifier l'expéditeur et l'intégrité du message via une signature numérique.
- DMARC : Aligne SPF et DKIM pour fournir des rapports et une politique de gestion des e-mails non authentifiés.
- BIMI : Ajoute des logos de marque aux e-mails vérifiés, améliorant ainsi la reconnaissance de la marque et la confiance dans les communications par e-mail.
L'incapacité à configurer correctement ces enregistrements peut entraîner une vulnérabilité accrue aux attaques de phishing, à l'usurpation d'e-mails et une réduction de la délivrabilité des e-mails. Chaque vérification garantit que les mécanismes d'authentification des e-mails sont correctement implémentés.
Recommandation
Pour garantir une authentification appropriée des e-mails et atténuer les risques de phishing et d'usurpation d'e-mails, il est essentiel de configurer et de valider vos enregistrements DNS SPF, DKIM, DMARC et BIMI. Vous trouverez ci-dessous les étapes de configuration et de vérification de chacun de ces mécanismes pour trois configurations de serveurs de messagerie différentes.
### Valider la syntaxe de l'enregistrement SPF :
dig TXT example.com | grep "v=spf1"
if [ -z "$(dig +short TXT example.com | grep spf1)" ]; then
echo "No SPF record found"
fi
### Vérifier la longueur de l'enregistrement SPF :
spf_record=$(dig TXT example.com | grep "v=spf1")
if [ ${#spf_record} -gt 255 ]; then
echo "SPF record exceeds length limit"
fi
### Vérifier les limites de recherche DNS :
spf_check=$(dig TXT example.com | grep "v=spf1")
lookup_count=$(echo "$spf_check" | grep -o 'include' | wc -l)
if [ "$lookup_count" -gt 10 ]; then
echo "SPF record exceeds the 10 DNS lookup limit"
fi
### Interroger l'enregistrement DKIM :
dig TXT default._domainkey.example.com | grep "v=DKIM1"
### Valider la syntaxe de l'enregistrement DKIM :
dkim_record=$(dig TXT default._domainkey.example.com)
if [[ "$dkim_record" =~ "v=DKIM1" ]]; then
echo "Valid DKIM record"
else
echo "Invalid DKIM record syntax"
fi
### Vérifier la longueur de la clé DKIM :
dkim_key=$(dig TXT default._domainkey.example.com | grep -o "p=.*" | cut -d' ' -f2)
if [ ${#dkim_key} -lt 1024 ]; then
echo "DKIM key is too short"
fi
### Interroger l'enregistrement DMARC :
dig TXT _dmarc.example.com | grep "v=DMARC1"
### Valider la syntaxe de l'enregistrement DMARC :
dmarc_record=$(dig TXT _dmarc.example.com)
if [[ "$dmarc_record" =~ "v=DMARC1" ]]; then
echo "Valid DMARC record"
else
echo "Invalid DMARC record syntax"
fi
### Vérifier l'absence d'enregistrements DMARC :
if [ -z "$(dig +short TXT _dmarc.example.com)" ]; then
echo "No DMARC record found"
fi
### Analyser la politique DMARC :
policy=$(dig TXT _dmarc.example.com | grep "p=")
if [[ "$policy" =~ "p=none" ]]; then
echo "DMARC policy is set to 'none' – no action taken on unauthenticated emails"
elif [[ "$policy" =~ "p=reject" ]]; then
echo "DMARC policy is set to 'reject' – unauthenticated emails are rejected"
elif [[ "$policy" =~ "p=quarantine" ]]; then
echo "DMARC policy is set to 'quarantine' – unauthenticated emails are flagged"
fi
### Interroger l'enregistrement BIMI :
dig TXT default._bimi.example.com | grep "v=BIMI1"
### Valider la syntaxe de l'enregistrement BIMI :
bimi_record=$(dig TXT default._bimi.example.com)
if [[ "$bimi_record" =~ "v=BIMI1" ]]; then
echo "Valid BIMI record"
else
echo "Invalid BIMI record syntax"
fi
### Vérifier l'URL du logo BIMI :
logo_url=$(dig TXT default._bimi.example.com | grep "l=" | cut -d'=' -f2)
if curl --output /dev/null --silent --head --fail "$logo_url"; then
echo "Valid logo URL"
else
echo "Invalid logo URL"
fi
Liens
Normes
- SOC2_CONTROLS:
- CC_6_1
- CC_6_6
- CC_6_7
- CC_7_1
- CC_7_2
- CC_7_3
- CC_7_4
- CC_8_1
- CC_9_1
- CC_9_2
- PCI_STANDARDS:
- REQ_12_3
- REQ_12_10
- CCPA:
- CCPA_1798_150
- GDPR:
- ART_24
- ART_32
- ART_33
- ART_34
- CWE_TOP_25:
- CWE_787
- CWE_125
- CWE_416
- CWE_119
- HIPAA_CONTROLS:
- SECURITY212
- SECURITY213