SPFv1配置详解:从零开始掌握邮件认证技术

本文详细解析SPFv1发送方策略框架的配置方法,涵盖DNS记录语法、机制动作参数、邮件服务器授权原理,以及如何通过SPF记录防止邮件伪造和钓鱼攻击,适合系统管理员和蓝队人员参考。

如何配置SPFv1:大众化详解

Kent Ickler 和 Derrick Rauch*


防晒系数?

等等不对… 是发送方策略框架(Sender Policy Framework)

“1997届的女士们先生们,记得涂防晒霜…现在我要给出我的建议:”


背景介绍

当今网络中存在邮件"伪造"现象(感谢@ustayready)。发送方策略框架(SPF)最初创建于2005年(RFC 4408),最新版本于2014年更新(RFC 7208),并与DKIM和DMARC共同更新。它通过为收件邮件服务器提供验证方法,尝试阻止伪造邮件,判断邮件是否来自FROM字段中域名的授权发送服务器。收件邮件服务器从而能够判断入站邮件更可能是伪造/钓鱼邮件还是合法邮件。

  • 如果收件邮件服务器收到来自SPF授权服务器的邮件,则有理由认为是有效/“好"邮件
  • 如果收到来自SPF未授权服务器的邮件,则有理由认为是无效/恶意邮件

SPF记录还可以"告知"收件邮件服务器在收到未授权邮件时应采取的措施:继续投递、标记为可疑(增加风险评级)或直接拒绝。当然,SPF记录并非金科玉律,收件邮件服务器可以自行决定如何权衡SPF记录的重要性。


营销人员的困境

营销人员经常为此苦恼。这是SendGrid、MailGun、MailChimp等工具面临的难题。他们购买了花哨的新营销邮件工具,但大家总是将他们的活动邮件标记为垃圾邮件!如果营销团队没有确保其FROM域名的SPF记录准确,收到的邮件更容易被判定为垃圾邮件/恶意邮件,从而进入垃圾箱被遗忘。


前瞻性思考

发送方策略框架并未消亡,但在反垃圾邮件和反钓鱼领域有了新的兄弟技术。DKIM和DMARC是较新的框架,扩展了SPF最初开始的验证功能。它们共同尝试在域名所有权和收件邮件服务器之间建立信任网络。请关注我们未来关于DMARC和DKIM的博客文章。


DNS记录配置

“授权"邮件服务器/中继发送邮件的SPF记录是一个DNS TXT记录,必须在注册商指定的名称服务器上设置。由于这涉及域名所有权,它允许域名所有者告知收件方:收到带有其域名的FROM字段的邮件是否来自预期的邮件服务器。

下面讨论的DNS记录必须在域名注册商NS记录定义的域名名称服务器上创建。


语法详解

有许多工具可帮助构建SPF记录,但您仍需了解其工作原理。SPF记录由SMTP收件方从左到右读取,首次匹配时记录分析停止并返回配置结果。

  • DNS记录类型 = TXT
  • 主机 = @(您的主要TLD或要保护的域名)
  • 值 = [语法]!!

值键是记录的核心部分,让我们仔细看看:

"v=spf1 " [机制-动作] [机制-对象] [机制-动作] [机制-对象]...

机制-动作

动作参数告知收件邮件服务器应采取的操作:

  • + 通过邮件:SPF记录指定主机已授权(邮件接受)
  • - 拒绝邮件:SPF记录指定主机未授权(邮件拒绝)
  • ~ 软失败:SPF记录指定主机未授权但,嗯,可能(标记/增加风险)
  • ? 中立:SPF记录指定不知道,双重嗯(邮件接受)

机制-对象

有多种选项:

  • all 所有服务器,所有地方
  • ip4:<邮件服务器IP地址>
  • ip4:<IP地址>/CIDR样式
  • ip6:<IPv6地址>
  • ip6:<IP地址>/CIDR样式
  • a:[域名] 包含[x-域名]的所有A记录
  • a:[域名]/CIDR 包含[x域名]所有A记录的/CIDR网络
  • a 包含此域的所有A记录
  • a/CIDR 包含此域所有A记录的/CIDR网络
  • mx 包含此域的mx记录
  • mx/CIDR 包含此域所有mx记录的/CIDR网络
  • mx:[域名] 包含[x-域名]的所有mx记录
  • mx:[域名]/CIDR 包含[x域名]所有mx记录的/CIDR网络
  • ptr 包含此域ptr记录的IP
  • ptr:[域名] 包含[x-域名]ptr记录的IP
  • exists:[域名] YES/NO触发器。如果A记录存在=通过
  • redirect:[域名] 用[域名]的SPF记录替换整个SPF记录
  • include:[域名] 包含[域名]的SPF记录。匹配=通过,不匹配=失败。这种类型记录通常用于大型邮件提供商如Google、Office等,也常用于邮件中继如SendGrid、MailGun等。

include:是一种信任机制。它允许您将授权发送邮件的信任代理到另一个域名/组织的SPF记录,您承认该组织负责发送您的邮件。这些组织通常将其SPF记录覆盖所有可能的邮件服务器。


示例

  • v=spf1 +mx -all
    接受来自此域mx记录的邮件,拒绝其他所有来源

  • v=spf1 +a:AnotherDomain.com ?a:google.com -all
    接受来自AnotherDomain.com的A记录邮件,对Google.com的A记录持中立态度,但拒绝其他所有

  • v=spf1 exists:AnotherDomain.com -all
    如果AnotherDomain.com存在A记录则接受邮件,否则拒绝

  • v=spf1 -all
    拒绝来自此域的所有邮件,无论谁发送

  • v=spf1 include:mailgun.com include:sendgrid.com -all
    遵循mailgun.com和sendgrid.com的SPF记录规则,拒绝所有其他

  • v=spf1 redirect=AnotherDomain.com
    仅遵循AnotherDomain.com的SPF记录规则


再谈营销

回到营销部分,MailChimp、MailGun和SendGrid在做什么?

有趣的是,如果您使用邮件中继或群发邮件服务,邮件可以被视为授权,从而突破垃圾箱。但是,我内心的红队人员不得不问…

第三方能否在我信任的第三方处创建账户,并在未经我明确批准的情况下以我的名义发送邮件?

嗯,是…也不是。

这些服务可以在您配置SPF记录授权其邮件服务器的情况下以您的名义发送邮件。它们各自采取一些措施确保第三方不能使用您的发件地址发送邮件,通过在代表该域名发送邮件前强制用户验证FROM域名。每种服务的做法不同。有些在其域名上创建DNS记录,应包含为+a:yourdomain.mailrelayservice.com,这可以为您提供一些保证。但最终,您需要信任您的邮件服务器,如果您觉得不能,那么…这是个艰难的世界,瘫痪性偏执将会出现。


更多资源

有关SPF记录等的更多信息,请查看以下链接。同时请关注我们即将发布的关于DKIM(RFC 7372)和DMARC(RFC 7489)的博客!

SPF记录生成器

有些平台可以帮助构建适合您特定需求的SPF记录。大多数工作方式相似…有些甚至要钱$$!我不建议为帮助创建SPF记录付费,但一如既往,使用免费服务时要小心。也就是说,MXToolbox多年来一直在我的系统管理员和蓝队工具箱中,从未让我失望。

在线构建SPF:https://mxtoolbox.com/SPFRecordGenerator.aspx

链接

即将发布的博客阅读:DKIM, DMARC!

“但请相信我的防晒建议。”


*Kent和Derrick是我们系统管理员团队的一员——没有他们我们该怎么办?

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计