支付宝提示服务器有【中危漏洞】任意邮件伪造检测

​ 使用Bugscan检测到我自己的网站有这个漏洞后,我费了好一番功夫来查找资料,终于是解决了这个问题。在此把经验分享出来,主要觉得这方面中文资料太少了。

​ 检测到你的服务器存在邮件伪造的时候,你可能还在疑惑:这到底是什么东西?有什么危害?和我有什么关系?

​ 这里就不再细说邮件伪造的始末。遇到问题大家最关心的是解决方案。此处将主要围绕解决方案来说,文本旨在读者看后能得到一个正常运行的设置。

首先,如何验证邮件伪造?

​ 解决对邮件伪造的疑惑,这里有一个在线的测试网站:https://emkei.cz/ 。可以尝试使用这个网站测试发送一封邮件给自己。例如:检测说a.com存在邮件伪造漏洞。那么我们可以尝试使用admin@a.com作为发件人,给一个自己的邮箱,例如我的treeoph(at)gmail(dot)com发送一封测试邮件。内容随意填写,不到一分钟你应该就能收到邮件了,也有可能会在垃圾邮件里。注意,请勿用于非法用途。

第二,有什么危害?

​ 可以想见如果有一个a.com的用户,在收到admin@a.com 的邮件后,用户很可能就相信这就是管理员(admin)发来的邮件。因此,用户很可能会毫不犹豫地点开邮件中的链接、下载并打开其中的附件。这个时候,作为一个a.com的用户,就很可能被攻击控制了。如果用户是管理员,那么可能服务器权限也会沦落他人之手。

​ 另外一种危害方式,一个垃圾邮件生产者可以伪造海量的a.com域名的邮件来散播木马、病毒、钓鱼页面,色情、暴力、恐怖的信息,等等。其危害是不可预测的。

第三,如何防止邮件伪造?

​ 答案是:Sender PolicyFramework (SPF) 发信者策略

1. SPF是什么呢?

​ 简单来说就是人们设计的一套可以杜绝邮件伪造的机制,只要遵照他们设计的方法来配置自己域名的DNS解析,就可以杜绝邮件伪造。

​ 关于SPF的一切,你可以在这个网站(英文)上获得:http://www.openspf.org

​ SPF 的原理是这样的,伪造这虽然能伪造你的域名,但是却不能控制你的域名的DNS解析记录。因为只有拥有域名账户权限,才能更改解析记录。你的域名解析到的ip是1.1.1.1,而伪造者的ip是2.2.2.2。如果能做一个声明,告诉邮件接收者,我的域名发的邮件ip都是1.1.1.1,其他的都是假的,可以抛弃掉,那么就可以杜绝邮件伪造了。SPF就是这样的一个协议,你可以按照SPF的格式发出声明,邮件服务器按照SPF解读你的声明。这样的一次沟通,就可以解决邮件伪造问题了。

2. 如何使用SPF

​ 首先,登录你的域名提供商的管理页面,这个页面就是通常是用来设置域名解析ip地址的地方。例如上述例子,可以这样声明,在域名的解析记录里添加一条txt记录,

二级域名:空或@

txt记录值为:v=spf1 ip4:1.1.1.1 -all

这样,就设置了你的邮件只能是从1.1.1.1这个ip发出的。其中txt记录的意义:

v=spf1      #版本号声明;

ip4:x.x.x.x #指定ip地址;

-all        #对其余的标记为无效(FAIL)

当然这样设置有些问题就是你的域名可能需要变化的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作为合法地址。

3.更多

关于剩余检查项all前面的“-”符号,参见下表:

"+"  Pass(通过)

"-"  Fail(拒绝)

"~"  Soft Fail(软拒绝)

"?"  Neutral(中立)

建议使用“-all”来拒绝陌生地址的邮件。当使用“~all”时,一般会将邮件标记为垃圾邮件。但是由于有时人们还是会翻查垃圾邮件(甚至有时官方都会建议去检查垃圾邮件),因此这样处理并不安全。所以如无特殊需求,建议使用“-all”来拒绝。

禁用所有邮件服务:

v=spf1 -all

详细语法说明(英文): http://www.openspf.org/SPF_Record_Syntax

http://www.openspf.org/RFC_4408

(用空的话把这个翻译出来)

参考链接(中文):http://www.renfei.org/blog/introduction-to-spf.html

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤劳的执着的运维农民工

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值