添加SPF、DKIM、DMARC、PTR防止邮件伪造,加强电子邮件安全
- A
如果有人告诉你,你的服务器存在邮件伪造的时候,你可能还在疑惑:这到底是什么东西?有什么危害?和我有什么关系?
首先,我们来了解一下如何验证邮件伪造?
这里有一个老外做的在线测试网站:https://emkei.cz/
可以尝试使用这个网站测试发送一封邮件给自己。例如:检测说a.com存在邮件伪造漏洞。那么我们可以尝试使用admin@a.com作为发件人,给你自己的邮箱发送一封测试邮件。内容随意填写,不到一分钟你应该就能收到邮件了,也有可能会在垃圾邮件里。注意,请勿用于非法用途。
还有一个更人性化的在线测试网站:http://www.mail-tester.com/
打开后,网站输入框会默认带有一个邮箱地址,你需要复制这个邮箱地址并编辑一封电子邮件发送给该地址,完成操作后点击开始验证等待一分钟左右,系统就会为你打出评分,支持中文显示哦!
第二,它有什么危害?
(一)可以想见如果有一个a.com的用户,在收到admin@a.com的邮件后,用户很可能就相信这就是管理员(admin)发来的邮件。因此,用户很可能会毫不犹豫地点开邮件中的链接、下载并打开其中的附件。这个时候,作为一个a.com的用户,就很可能被攻击控制了。如果用户是管理员,那么可能服务器权限也会沦落他人之手。
(二)垃圾邮件生产者可以伪造海量的a.com域名的邮件来散播木马、病毒、钓鱼页面,色情、暴力、恐怖的信息,等等。其危害是不可预测的。
第三,我们该如何防止邮件伪造,它到底是什么?
我们需要添加SPF、DKIM、DMARC、PTR
SPF,全称为 Sender Policy Framework,即发件人策略框架,它的内容写在DNS的txt类型的记录里面;作用是防止别人伪造你的邮件地址进行发信,是一种非常高效的反垃圾邮件解决方案。
当前 Email 通信,还是在使用 SMTP 这个协议。SMTP 的全称为 Simple Mail Transfer Protocol,即「简单邮件传输协议」。正如它的名字锁暗示的,SMTP 实际上是一个非常简单(甚至简陋)的传输协议,本身并没有很好的安全措施。根据 SMTP 的规则,发件人的邮箱地址是可以由发信方任意声明的。在 SMTP 协议制定的时候也许还好,但在垃圾和诈骗邮件横行的今天,这显然是极不安全的。SPF 出现的目的,就是为了防止随意伪造发件人。
关于SPF的一切,你可以在这个网站(英文)上了解更多:http://www.openspf.org/
DKIM,电子邮件验证标准——域名密钥识别邮件标准。DomainKeys Identified Mail的缩写。
DKIM让企业可以把加密签名插入到发送的电子邮件中,然后把该签名与域名关联起来。签名随电子邮件一起传送,而不管是沿着网络上的哪条路径传送,电子邮件收件人则可以使用签名来证实邮件确实来自该企业。
关于DKIM的一切,你可以在这个网站(英文)上了解更多:http://www.dkim.org/
DMARC(Domain-based Message Authentication, Reporting & Conformance)是txt记录中的一种,是一种基于现有的SPF和DKIM协议的可扩展电子邮件认证协议,其核心思想是邮件的发送方通过特定方式(DNS)公开表明自己会用到的发件服务器(SPF)、并对发出的邮件内容进行签名(DKIM),而邮件的接收方则检查收到的邮件是否来自发送方授权过的服务器并核对签名是否有效。对于未通过前述检查的邮件,接收方则按照发送方指定的策略进行处理,如直接投入垃圾箱或拒收。从而有效识别并拦截欺诈邮件和钓鱼邮件,保障用户个人信息安全。
关于DMARC的一切,你可以在这个网站(英文)上了解更多:https://dmarc.org/
PTR(Pointer Record)记录,是电子邮件系统中的邮件交换记录的一种;另一种邮件交换记录是A记录(在IPv4协议中)或AAAA记录(在IPv6协议中)。PTR记录常被用于反向地址解析。
第四:如何使用SPF,如何设置它?
首先,登录你的域名提供商的管理页面,这个页面就是通常是用来设置域名解析ip地址的地方。例如上述例子,可以这样声明,在域名的解析记录里添加一条txt记录:
记录名为@,txt记录值为:v=spf1 ip4:1.1.1.1 -all
这样,就设置了你的邮件只能是从1.1.1.1这个ip发出的。当然这样设置有些问题就是你的域名可能需要变化的ip地址,或扩增多个ip,这时候就可以用其他方式,更改中间的部分(ip4对应位置):
记录名为@,txt记录值为:v=spf1 include:spf1.a.com include:spf2.a.com -all
再设置一个spf1.a.com的txt解析记录,内容为:
记录名为spf1,txt记录值为:v=spf1 ip4:1.1.1.0/24 ip4:1.2.3.4 -all
其中include的意思是使用其后的地址的SPF记录。而ip4:1.1.1.0/24则是使用一个段。设置spf2.a.com与此类似。这样就可以使用更多的地址作为合法地址。也可以include多层,但常见的一般最多三层已经够用,最后一层要指定到具体的ip或域名。
其他如:v=spf1 a mx ip4:x.x.x.x -all 使用a记录,mx解析记录和指定的ip作为合法地址。
一条 SPF 记录定义了一个或者多个 mechanism,而 mechanism 则定义了哪些 IP 是允许的,哪些 IP 是拒绝的。
这些 mechanism 包括以下几类:
all | ip4 | ip6 | a | mx | ptr | exists | include
每个 mechanism 可以有四种前缀:
"+" Pass(通过) "-" Fail(拒绝) "~" Soft Fail(软拒绝) "?" Neutral(中立)
建议使用“-all”来拒绝陌生地址的邮件。当使用“~all”时,一般会将邮件标记为垃圾邮件。但是由于有时人们还是会翻查垃圾邮件(甚至有时官方都会建议去检查垃圾邮件),因此这样处理并不安全。所以如无特殊需求,建议使用“-all”来拒绝。
禁用所有邮件服务:
记录名为需要添加SPF记录的域名前缀或直接为@,txt记录值为:v=spf1 -all
腾讯邮箱可设置记录值为:v=spf1 include:spf.mail.qq.com ~all
163邮箱可设置记录值为:v=spf1 include:spf.163.com -all
阿里邮箱可设置记录值为:v=spf1 include:spf.mxhichina.com -all
其他邮箱都是一样的操作,自行顿悟即可~
第五:如何使用DKIM,如何设置它?
因为DKIM涉及到了密钥等各方面的问题,在这里傲世我就不做多详述,有感兴趣的朋友可以前往此处了解更多
第六:如何使用DMARC,如何设置它?
注意:设置DMARC记录之前,请务必确保已设置SPF记录!
设置了SPF记录后,添加以下DMARC记录(操作是和添加SPF一样的):
记录名:_dmarc,txt记录值为:v=DMARC1;p=reject;rua=admin@a.com
注意:Dmarc记录里,有两个值可由您来自定义:
p:用于告知收件方,当检测到某邮件存在伪造发件人的情况,收件方要做出什么处理,reject为拒绝该邮件;none为不作任何处理;quarantine为将邮件标记为垃圾邮件。
ruf:用于当检测到伪造邮件,收件方须将检测结果发送到哪个邮箱地址。
建议:p值最优设置方式是第一次设置选择none,观察发信情况一个月,再改为quarantine,再观察一个月,最后再设为reject。
腾讯邮箱可设置记录值为:v=DMARC1; p=none; rua=mailto:mailauth-reports@qq.com
163邮箱可设置记录值为:v=DMARC1; p=none; fo=1; ruf=mailto:dmarc@qiye.163.com; rua=mailto:dmarc_report@qiye.163.com
阿里邮箱可设置记录值为:v=DMARC1; p=quarantine;rua=mailto:dmarc_report@yourdomain.com;ruf=mailto:dmarc_report@yourdomain.com
第七:如何使用PTR,如何设置它?
该问题需要涉及到主机商方面来处理,傲世给大家推荐一个更加专业的介绍,有感兴趣的朋友可以前往此处了解更多
写在最后,添加上面所述的记录,它们本质上是一个 DNS 记录,所以并不是修改之后立即生效的——通常需要几个小时的时间。好了本文就介绍到这,希望能帮到您,更多资料可前往官网查阅。