1、反垃圾邮件DMARC技术交流廖诚 vDMARC简介vDMARC vs DKIM&SPFvDMARC应用场景vDMARC架构vDMARC举例vDMARC发展前景 vDMARC,全称Domain-based Message Authentication,Reporting and Conformance,是基于现有的DKIM和SPF两大主流电子邮件安全协议发展而来的。v主要目的是识别并拦截钓鱼邮件,从而确保用户的个人信息安全。v由邮件发送方在DNS里声明自己采用该协议,接收方收到该域发送过来的邮件时,则进行DMARC校验,从而判断当前邮件来源是否合法。 v2012/01/30,由Paypal,Go
2、ogle,微软,雅虎,ReturnPath等15家行业巨头,主要包括金融机构、Email服务提供商、数据分析机构等,联手成立的互联网联盟dmarc.org,致力于提交并推广DMARC新电子邮件安全协议。v目前该组织的官方成员有,如下图示: v1)三者都是邮件发送方在DNS里声明TXT记录,但DKIM&SPF校验结果处理策略单一(accept/reject),而DMARC策略更灵活(多种组合策略,支持百分比等)。v2)DMARC支持report的功能,邮件发送方在DNS除了可以声明策略外,还可以声明自己用于接收report的URI。v3)DKIM&SPF 可以严格限制某个域名的来源合法性,但无法
3、限制该域名的子域名,即子域名将无法得到保护。 v4)当一个站点的邮件服务器数量多或IP更换频繁时,这个域通常不设置SPF或仅设置为软失败。v5)有些允许合法使用多个域名的邮箱服务器(如企业邮箱提供商),所有在同一家服务商上注册企业邮服务的域名(如和),它们的SPF记录都指向相同的IP列表,这种情况下仅仅靠SPF是阻止不了发送一封谎称发自的伪造邮件。 v6)DMARC可以在DNS记录里明确地声明一封验证失败邮件的处理策略,是reject或进垃圾箱,相当于授权给邮件接收方,那邮件接收方就可以非常果断地(因为是依据邮件发送方的授权和策略),不带一丝犹豫(担心误判)地处理这类邮件了。 v1)对于邮件发
4、送方,有这么一类特别的域名,它们经常被spammer利用于伪造各种钓鱼/诈骗邮件,如银行、保险等金融企业,支付宝、Paypal等支付商,知名网站、政府网站等,依靠DMARC会更好的降低他们的域名被利用于伪造的可能性。v2)对于一些普通域名,中小企业、不知名网站等依靠DKIM&SPF就足够保护自己的域名了,不再需要多一个DMARC,否则效果不明显还反倒加大了维护成本。 v3)对于邮件接收方,无论是专业邮箱提供商(网易、Gmail等),还是个人架设的邮箱服务器(单位邮箱等),他们都非常希望拦截掉所有类型的垃圾邮件和伪造邮件。所以只要条件允许,他们都会支持越多的安全检查手段(SPF/DKIM/DMA
5、RC等)。v4)普通用户是DMARC的间接受益,他们只需要选择优秀的已支持DMARC协议的邮箱服务商(网易、Gmail等)来注册,就可以确保自己的个人信息安全。 v业务处理流程说明:v 1)用户将信发送到寄信服务器v 2)寄信服务器在邮件头中添加DKIM签名后,将信发给收信服务器v 3)收信服务器收到信后,先做一些常规验证,然后进行DKIM&SPF验证,最后进行DMARC验证v 4)验证成功将信投递给接收者,验证失败或者需要隔离,则根据策略产生一报告反馈给邮件发送者 vDMARC校验的核心过程:v 1)从信头提取From字段的domain,称域名A。此字段只存在一个域名。v 2)查询DNS,获
6、取域名A的DMARC记录。若该域无设置DMARC记录,忽略本次DMARC校验。v 3)校验DKIM,若验证成功,则获取DKIM签名中的“d=”字段值,称域名B。信头中如果有多个DKIM签名验证通过,则域名B会存在多个。v 4)校验SPF,若验证成功,则获取本次SMTP会话中MAIL FROM字段的domain,称域名C。此字段只存在一个域名。 v 5)校验DMARC,将域名B及域名C中的每一个域名和域名A进行DMARC比较,若当中有至少一个域名一致,则认为DMARC检查通过,否则认为DMARC检查失败。v 6)DMARC有2种比较模式,relaxed模式下,所比较的域名和域名A完全一致,或为域
7、名A的父域名,则认为检查通过。strict模式下,所比较的域名和域名A完全一致,才认为检查通过。v 7)一旦整个DMARC校验结果失败,将执行DMARC策略。 vDMARC策略:v DNS策略查询方法,命令行如下:dig+short txt _ dig+short txt _v 策略标签(p/sp)选项说明:none-仅做测试,收信方应忽略DMARC检查结果,进入后续的反垃圾流程,但不影响report的发送。quarantine-收信方应认为这是一封可疑邮件,可以投递到垃圾箱或做特殊标记。reject-收信方应直接拒绝本次SMTP会话请求。 v一个DMARC拦截钓鱼邮件的例子:v 下面伪造一封
8、自称发自的邮件,发往网易邮箱,看的MX机器是否会拒收这封邮件。v 1)首先查询一下的DMARC记录,命令行如下:dig+short txt _v 2)连接到的MX机器,发送一封paypal伪造邮件,命令行操作过程如下: telnet 220.181.12.55 25helo 250 OKmail from:本次会话的域名C250 Mail OKrcpt to:250 Mail OK data354 End data from:本次会话的域名Ato:testsubject:test test.550 MI:DMA mx5,N8CowEAZAEUGc2JQkC6HBg-.6679S2 134862
9、9370 http:/ quit221 B v 3)测试说明:v 上面这封伪造邮件,域名B及域名C中没有一个域名和域名A能匹配上,即DMARC校验不通过。v 那么根据的DMARC策略要求,的MX服务器拒收了这封邮件(返回了550 MI:DMA)。v 在反馈url中查询550 MI:DMA错误,获取退信原因如下:550 MI:DMA 该邮件未被发信域的DMARC许可。请参考http:/dmarc.org/关于DMARC规范的定义; vDMARC识别效果明显,是一款低开销+高效应+诸多优势的电子邮件安全工具。vDMARC协议还不够成熟,还处在不断完善当中。v使用范围不大,目前国内只有163邮箱提供DMARC验证服务。vDMARC也不是无所不能的,目前只能识别出针对信头From字段域名的伪造,还无法识别其他的伪造手段,如伪造信头Sender字段等。