mcpField
I
implementing-dmarc-dkim-spf-email-security

implementing-dmarc-dkim-spf-email-security

github.com/mukul975安全35.2k75 次安装8 周前更新
代码仓库

关于 implementing-dmarc-dkim-spf-email-security

这项技能指导域名管理员配置 SPF、DKIM 和 DMARC,以验证发件来源与邮件完整性,并处理未通过认证的邮件。内容包括 DNS 记录设置、DMARC 报告分析和验证步骤。

主要功能

  1. 01检查现有 SPF、DKIM 和 DMARC 记录
  2. 02设置 SPF 授权发件服务器
  3. 03生成 DKIM 密钥并发布公钥
  4. 04配置 DMARC 策略与报告
  5. 05解析 DMARC 汇总报告

适用场景

  1. 01减少冒用组织域名的钓鱼邮件
  2. 02逐步从监控过渡到隔离或拒收策略
  3. 03识别未授权发件来源和认证失败

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/mukul975/anthropic-cybersecurity-skills --skill implementing-dmarc-dkim-spf-email-security

安装后在 Claude Code 中输入/implementing-dmarc-dkim-spf-email-security确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

LICENSE
assets/
template.md
references/
api-reference.md
standards.md
workflows.md
scripts/
agent.py
process.py

详细介绍

实施 DMARC、DKIM 和 SPF 邮件安全

概述

SPF、DKIM 和 DMARC 构成了电子邮件身份验证的三大支柱。三者结合可防止域名伪造、验证邮件完整性,并规定如何处理未通过身份验证的邮件。正确实施可大幅减少冒充组织域名的网络钓鱼攻击。

适用场景

  • 在环境中部署或配置 DMARC、DKIM、SPF 邮件安全功能时
  • 制定符合合规要求的安全控制措施时
  • 为此域构建或改进安全架构时
  • 开展需要实施这些措施的安全评估时

前提条件

  • 拥有域名的 DNS 管理权限
  • 可访问电子邮件服务器/MTA 配置(Postfix、Exchange、Google Workspace、Microsoft 365)
  • 基本了解 DNS TXT 记录
  • 用于运行验证脚本的 Python 3.8+

核心概念

SPF(发件人策略框架)

发布一条 DNS TXT 记录,列出获准代表你的域名发送电子邮件的 IP 地址和邮件服务器。接收服务器会将信封发件人的 IP 地址与此列表进行核对。

DKIM(域名密钥识别邮件)

使用私钥为发出的电子邮件添加加密签名,并将对应的公钥发布到 DNS 中。接收方会验证签名,以确保邮件在传输过程中未被篡改。

DMARC(基于域名的邮件身份验证、报告和一致性)

DMARC 基于 SPF 和 DKIM,通过指定策略(none/quarantine/reject)来处理身份验证失败的邮件,并提供报告机制,以监控伪造尝试。

工作流

步骤 1:审查当前状态
# Check existing SPF record
dig TXT example.com | grep spf

# Check existing DKIM selector
dig TXT selector1._domainkey.example.com

# Check existing DMARC record
dig TXT _dmarc.example.com
步骤 2:实施 SPF
# DNS TXT record for example.com
v=spf1 ip4:203.0.113.0/24 include:_spf.google.com include:spf.protection.outlook.com -all

SPF 关键机制:

  • ip4: / ip6: - 授权特定 IP 地址范围
  • include: - 引入另一个域的 SPF 记录
  • a - 授权域的 A 记录中的 IP 地址
  • mx - 授权域的 MX 记录中的 IP 地址
  • -all - 硬性拒绝所有其他来源(推荐)
  • ~all - 软性拒绝(监控阶段)
步骤 3:实施 DKIM
# Generate DKIM key pair (2048-bit RSA)
openssl genrsa -out dkim_private.pem 2048
openssl rsa -in dkim_private.pem -pubout -out dkim_public.pem

# Format public key for DNS (remove headers, join lines)
grep -v "PUBLIC KEY" dkim_public.pem | tr -d '\n'

在 selector1._domainkey.example.com 上添加 DNS TXT 记录:

v=DKIM1; k=rsa; p=MIIBIjANBgkqhki...
步骤 4:实施 DMARC
# DNS TXT record at _dmarc.example.com
# Phase 1 (Monitor):
v=DMARC1; p=none; rua=mailto:[email protected]; ruf=mailto:[email protected]; pct=100

# Phase 2 (Quarantine):
v=DMARC1; p=quarantine; rua=mailto:[email protected]; pct=25

# Phase 3 (Reject):
v=DMARC1; p=reject; rua=mailto:[email protected]; pct=100
步骤 5:监控并分析 DMARC 报告

使用 scripts/process.py 解析 DMARC 汇总 XML 报告,并识别身份验证失败、未经授权的发件人和伪造尝试。

工具和资源

验证

  • SPF 记录通过 mxtoolbox.com 的验证
  • 测试邮件的 DKIM 签名验证成功
  • DMARC 记录格式正确,且已启用报告
  • 测试邮件在收件方的 Authentication-Results 标头中通过全部三项检查

评论

支持 Markdown