- Sécurité & Confidentialité
- Base de connaissances
- 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
Détectez ce problème avec Ostorlab
Ostorlab recherche ce problème dans les applications web, les API et les réseaux.
Créer un compteLiens
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
- OWASP_TOP_10:
- A05_2021