Authentication
关于 Google Workspace 的 SPF / DMARC 设置
这里简单记一笔。我有一个域名使用的是 Google Workspace 的邮件服务。 昨天,一位用户使用该域名向中国的 QQ 邮箱用户发送邮件时被退回了。
退信中给出的线索是:
550 DMARC check failed [XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
IP: 2607:f8b0:4864:20::112b]. https://service.mail.qq.com/detail/124/61.
腾讯给出的那个链接是一篇关于 DMARC 如何配置的文章。 从上下文来看,应该是由于腾讯的服务器认为 Google Workspace 的 IP 地址不在允许发信的范围内。
退信确实是 Google Workspace 的邮件服务生成的,数据来源是和对方(腾讯) MX 之间的 SMTP 会话。
我的这个域名确实启用了 DMARC。我的DMARC记录 (域名下的 _dmarc
TXT
记录) 设置如下:
v=DMARC1; p=reject; rua=mailto:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX@dmarc-reports.cloudflare.net;
pct=100; adkim=s; aspf=s
此配置要求对方检查 DKIM 和 SPF,并拒绝不匹配的邮件。
其 SPF 记录 (域名的 @ 的 TXT
记录) 设置如下。这是 Google 官方文档中推荐的设置:
v=spf1 include:_spf.google.com -all
主要的区别是,我使用的是 -all
,即拒绝 SPF 不匹配的邮件,而不是更为常见的、表示即使发现 SPF
不匹配,也仅仅做标记但允许接收的 ~all
。
这里需要说一下背景:在 2004 年左右,一些业内人士认为应该推荐采用
~all
而不是 -all
,因为当时许多大型邮件系统的架构中存在多层邮件服务器分别进行不同的过滤处理,
而在 SMTP 会话阶段直接回一个永久性拒绝 (5XX) 代码可能会让一些不适任的邮件系统管理员如此配置的邮件系统将一些伪造了来源的邮件退到不希望的地方。
我并不赞同这样的观点。事实上,在会话阶段进行退信要比在收件方服务器上生成退信并将退信退给发件人或对方域名的 postmaster 要更好:
对于垃圾邮件的发送者,这意味着他们的邮件服务器会立即知道自己的行为被直接地丑拒,
接收方明确告知他们吞下垃圾邮件,而不是继续发送。对于正常的邮件服务器,
这意味着发件人可以立即收到退信从而找到自己的邮件系统管理员,而不是告诉收件人去翻垃圾箱看看是否有自己的邮件。
另一方面,回应永久性拒绝并不妨碍收件服务器对邮件内容进行进一步分析:它完全可以在 DATA
阶段结束时再回拒绝,从而将邮件完整地接收下来但不递给收件人。
当然,历史无法假设,并已经无数次地证明人类根本不配拥有美好的事物。
DomainKey 记录 (域名下的 google._domainkey
TXT
记录) 由于与此问题无关,故在此处略去。
该域名启用了 DNSSEC。
阅读全文…关掉了 Google 账户的 passkey
最近, Google 账户新增了一种叫做 passkey 的登录方式。
传统的采用密码登录的登录方式中,用户需要用某种方式证明自己知道密码,而绝大多数实现中这意味着网站必须保存用户的密码, 或是密码的 hash 值(通常是HMAC),这意味着网站如果发生了拖库的情况,有可能会将用户的密码或其 hash 值泄漏出去。 此外,用户可能必须输入密码,并将密码通过某种方式传输到服务器上,这样一来在这个过程中便有可能由于本地的木马, 或是网站采用的 SSL/TLS 实现的漏洞导致密码泄漏。除此之外,即使用户十分小心地在每一个不同的网站都使用了不同的密码, 他们仍然需要担心被「钓鱼」的问题,所谓「钓鱼」是这样一种攻击方式:攻击者架设一个看起来很像是用户希望登录的网站的网站, 并诱骗用户输入密码。
阅读全文…用 FIDO key 来做 SSH key
OpenSSH 8.2 中新增了 FIDO/U2F 支持。
它支持两种密钥对类型: ecdsa-sk
和 ed25519-sk
。需要注意的是并非所有的 FIDO Security Key
都实现了 ed25519-sk
的硬件支持:例如,截至2022年,Titan Security Key
就不支持 ed25519-sk
。
使用 FIDO key 的 SSH key 在使用上和之前的 SSH key 类似, 主要的区别在于在登录时系统会确认用户是否在机器旁边(通常是碰一下 FIDO key), 这可以显著地改善安全性:与之前的 SSH key 不同的是, 即使机器上的 U2F/FIDO SSH key 私钥文件被攻击者获得, 在没有硬件 FIDO key 的情况下也无法使用这个私钥。 对于对方同时能获得私钥文件和物理访问的情况, 参见 xkcd/538,就不要跟扳手过不去了。
阅读全文…基于生物特征识别的计算机登录安全吗?
许多新的笔记本计算机系统配备了基于指纹的身份识别系统。与通常人们的认知不同,这类系统的安全性往往仅仅与使用口令相当,甚至要比基于口令的身份认证系统来的更差;这类系统的价值在于,它们简化了用户的身份验证过程,而不是其改善了系统的安全性。
阅读全文…