邮件安全中针对发件人伪造/发件人欺骗(sender spoofing)的防护主要有三个手段,SPF,DKIM,以及DMARC。
一、SPF
该工具通过在DNS中设置一条’TXT’记录,来列明来自该域名邮件的所有来源IP地址。收件方在接收来自该域名邮件时,通过比对来源IP地址是否在SPF记录列明的IP地址里,以判断该邮件来源是否合规。
# dig +short txt cudalab.cn
“v=spf1 ip4:58.33.11.169/29 -all”
二、DKIM
DKIM可以实现发件域名验证以及邮件内容防篡改。发件服务器在发出这封邮件之前,会计算邮件正文(body)的哈希(hash)值,并将该哈希值以及指定信头内容一起进行签名(signature,通过RSA 私钥签名),正文哈希值以及信头的签名会记录在邮件的DKIM-Signature信头中。如下DKIM信头:
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com;
s=s110527; h=Date:From:Subject:Mime-Version:Message-ID; bh=L+8Zx
zPm1zqerw/KREbUB9p2XQCpCgEkbKEwwrOteOo=; b=TBdhU1w7/VQwdhnykLF4y
qymwFKJ/MCGwemRWImFAc3QiLTSVqzgEabt+JoWHRy2oan3S2c3IWRMxnxa38DSB
PqKOwQ3bd1bTXfVkw2qFd3dzd4N5/IsG7mcZxpg+/UKAHyVCEXWw7Pl9O+BanwOi
m+v/i9doamZAMaWD8HlIJs=
如上DKIM-Signature信头,其内记录了多个字段,‘b’记录了正文的哈希值,‘bh’记录了信头的签名。RSA签名的验证需要使用到公钥,该公钥发布在DNS记录中,该DNS记录的查询格式为:‘selector._domainkey.domain’,如下:
dig +short txt s110527._domainkey.163.com
“v=DKIM1\; k=rsa\; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCp9JpS7EORNjwIntXII17mJuwob+hJoVmHr2h2HPpSE7QYgh815kHdYC4JbxXgcP0mNZOY3R1Vk6dUDR8NQiL+xB9fRNWFS36Tq7CzPE/UI/+PxWhPzPnvABr4gbQcres8ee9cgEMPFDpck4O7ULNJNxH003Ofcmh1K+xDGyqPWQIDAQAB”
收件方通过验证DKIM-Signature信头内’b’以及’bh’字段的值,以验证发件域名以及邮件内容(含指定信头)是否真实可靠。
三、DMARC
SPF和DKIM可以在发件人验证应用上相互补充,DMARC即是将SPF和DKIM结合使用的一项策略,并聚合了report功能。
发件方需要发布DMARC DNS记录,如下:
dig +short txt _dmarc.yahoo.com
“v=DMARC1\; p=reject\; pct=100\; rua=mailto:dmarc_y_rua@yahoo.com\;”
如上,域名’yahoo.com’的DMARC记录中,字段’p’表示如果检查结果失败对应的动作(这里是阻断‘reject’),字段’rua’记录了聚合报告发送的地址。
DMARC检查流程为:
上述检查中如有一项失败,则该DMARC检查失败。
DMARC最佳实践当然是同时配置了SPF及DKIM并使用,但是DMRAC允许只单独配置SPF或DKIM。如果只配置了SPF或者DKIM,DMARC则只校验配置项。(若SPF及DKIM都没有配置,而单独配置DMARC是没有意义的,无法通过DMARC检查。)
*词语解释
SPF:Sender Protection Framework
DMARC:Domain-based Message Authentication, Reporting and Conformance
*参考文章
原文链接:https://www.cnblogs.com/eric-su/p/14509930.html
原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/23520