为网络安全带来微小而美好的改变

电子邮件安全实践

通过电子邮件进行社工钓鱼,可以实现数据和资金的盗取。大部分的APT攻击都是通过电子邮件的方式开始的,包括勒索软件、转账欺诈、恶意软件等攻击场景。

开始前可以学习下关于电子邮件攻击技术:

安全意识的提升并不能完全杜绝,因此应实施电子邮件安全最佳实践。

个人电子邮件安全实践

网络、软件和设备

  • 使用普及度高的邮件服务商。收入更多,对应投入的安全资源也更多。往往意味着攻击他们的成本更高,对应安全性也更高。优先选择Gmail、腾讯邮箱。
  • 保持邮件客户端处于最新版本。
  • 设备与网络
    • 保持手机、电脑、路由器和所有联网设备处于最新状态,并更改默认密码。
    • 不要使用公共Wi-Fi
    • 离开电脑时,记得锁屏。
    • 不要借电脑给他人。

保护账户

通过入侵获取邮箱账户权限,从而收集日历、联系人、组织架构、文件和历史邮件各种信息的访问权限。

  • 强制开启邮箱登陆二次验证(扫码、短信、Google Auth)
  • 复杂密码,不要在不同网站使用同一个密码,定期更换。

保护通信过程

电子邮件和附件通过互联网发送时会被窃取或篡改。

  • S/MIME:用户需要购买TLS证书。
  • PGP:用户生成密钥对,包含一个私钥和一个公钥。私钥用作揭秘消息,公钥是给联系人使用的,他们可以加密给你发送的邮件。

发送邮件

  • 哪些文件应该通过电子邮件发送,哪些文件应该通过其它文件传输方式发送。
    • 公司邮件切勿转发至自己个人邮箱。
    • 切勿使用公司邮箱地址用作个人用途,比如注册自己的社交账号等。
    • 电子邮件中不应该包含敏感信息,真的有必要使用加密的方式,并通过其它渠道发送解密密钥
    • 比如公司内部不应该通过邮件+软件附件的方式让大家安装软件。
    • 不要使用短网址,隐藏了原始地址,难以判断是否合法
    • 共享附件的链接:比如百度云盘,可以设置分享密码和到期时间。
    • 不要回复任何要求提供账号密码或个人信息的邮件
  • 发送前再次确认是否有包含组织外的人员,该内容是否适合提供出去。
  • 如果向大范围用户发送营销电子邮件,建议使用SendGrid等邮件转发服务器,可以较大概率降低被列入黑名单的可能性,还可以看到电子邮件投递的效果指标。
  • 发送营销邮件时使用二级域名,比如reply@event.feei.cn,当被封禁时不会影响其他业务

接收邮件

  • 钓鱼邮件识别
    • 使用链接、紧迫感、恐惧、报复、劣质的标识、语法和拼写错误、要求启用宏
  • 不要打开未知地址的邮件、附件。
    • 谨慎识别打开邮件中的链接,显示的链接和悬停的链接不一致。
    • 不要下载执行附件
    • 勿打开未知人员发送的邮件,尤其是邮件附件
  • 从互联网上下载到计算机的内容要小心谨慎。

离线邮件备份

不要期待你的邮件服务商能够备份你的邮件,以及能够快速恢复他们。应该使用工具在本地备份,离线储存。

TODO 推荐离线备份邮件的工具。

安全的设置

  • 检查并删除不用的子账户
  • 检查是否存在转发邮件的配置并删除
  • 检查日志是否有异常登陆情况
  • 去掉企业邮箱中的除姓名、邮箱地址外其它的信息(手机号、职位、部门等)

企业电子邮箱安全最佳实践

默认安全配置

  • 邮箱Web服务开启HTTPS,邮箱协议仅开启加密通信端口。
    • 使用SMTP协议发件时,禁止使用25端口,建议587、565端口。
    • 使用IMAP协议收件时,禁止使用143端口,建议使用993端口。
    • 使用POP3协议时,禁止使用110端口,建议使用995端口。
  • 关闭企业邮箱中的组织架构信息。一般自己员工不需要在邮箱中查看组织架构信息,而攻击者拿到邮箱权限后,往往会爬取组织架构和全部人员花名册信息。
  • 开启全员强制2FA
  • 启用邮箱审计功能:后续发生任何违规行为,就能了解到什么时间发生了什么。
  • 禁止邮箱转发到远程域:攻击者控制邮箱后,通常会通过设置邮件转发的方式来窃取数据,即使后续丢失了邮箱的控制权限。
  • 禁止中继:开放的中继配置将导致被垃圾邮件控制着使用,从而导致自己邮件域被各大邮件服务商列入垃圾邮件黑名单。
  • 设置限制策略:某个电子邮件账户被盗,也可能会被拿来发送垃圾邮件。每个发件人每天收件人的上限、每个发件人每小时发送数量上限
  • 设置附件限制:电子邮件附件作为传播恶意软件的重要渠道,限制各类可执行文件的附件非常重要。包括 .exe .bat .vbs .jar .swf 等。
  • 启用DNSSEC:面对DNS缓存投毒等问题,使用公钥加密对DNS响应进行签名来阻止恶意利用。

限制来信地址(SPF)

发件人策略框架(SPF),简单理解就是告诉所有的邮件服务器收到我这个域名发送的邮件时,以我告诉你的IP地址为准,不是我们IP地址的都算作伪造。

SPF原理

通过给发件域名配置一个TXT类型DNS记录,当其它的DNS Server收到我们域名的邮件时,会查询该域名TXT记录中是否存在SPF记录,如果存在则会获取SPF标记的IP,拿到IP和实际发件IP比对,从而判断是否伪造。

腾讯企业邮箱的SPF记录

# 查询qq.com根域名的TXT类型的DNS记录
# 解析到了spf.mail.qq.com域名上
➜  ~ dig -t txt qq.com
; <<>> DiG 9.10.6 <<>> -t txt qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 20179
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;qq.com.				IN	TXT
;; ANSWER SECTION:
qq.com.			1388	IN	TXT	"v=spf1 include:spf.mail.qq.com -all"
;; Query time: 26 msec
;; MSG SIZE  rcvd: 83
# 查询spf.mail.qq.com的TXT记录
# 解析到了spf-a.mail.qq.com等多个域名上
➜  ~ dig -t txt spf.mail.qq.com
; <<>> DiG 9.10.6 <<>> -t txt spf.mail.qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 8072
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;spf.mail.qq.com.		IN	TXT
;; ANSWER SECTION:
spf.mail.qq.com.	6423	IN	TXT	"v=spf1 include:spf-a.mail.qq.com include:spf-b.mail.qq.com include:spf-c.mail.qq.com include:spf-d.mail.qq.com include:spf-e.mail.qq.com include:spf-f.mail.qq.com -all"
;; Query time: 15 msec
;; MSG SIZE  rcvd: 224
# 查询spf-f.mail.qq.com的TXT记录
# 显示的是最终的IP地址段
➜  ~ dig -t txt spf-a.mail.qq.com
; <<>> DiG 9.10.6 <<>> -t txt spf-a.mail.qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50079
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;spf-a.mail.qq.com.		IN	TXT
;; ANSWER SECTION:
spf-a.mail.qq.com.	598	IN	TXT	"v=spf1 ip4:103.7.28.0/24 ip4:103.7.29.0/24 ip4:112.90.139.0/24 ip4:113.108.23.0/24 ip4:113.108.11.0/24 ip4:119.147.193.0/24 ip4:119.147.194.0/24 ip4:59.78.209.0/24 ip4:113.96.223.0/24 ip4:183.3.226.0/24 ip4:183.3.255.0/24 ip4:59.36.132.0/24 -all"
;; Query time: 38 msec
;; MSG SIZE  rcvd: 304

也就是所有QQ邮箱发出去的邮件,比如网易邮箱收到时会去查询QQ的SPF设置并捞取所有信任IP,根据邮件发件人和信任IP比对来判断是否为伪造邮件。

SPF配置

在域名DNS服务商里面配置根域名(@)的TXT记录TTL保留默认或3600,以feei.cn(使用的腾讯企业邮箱)的TXT记录为例。

v=spf1 include:spf.mail.qq.com -all
  • v=spf1代表为SPF1版本。
  • include:spf.mail.qq.com表示使用spf.mail.qq.com的TXT记录作为信任IP。
  • -all表示除开之前配置的信任IP外,其它所有的都拒绝接收。
  • 每条内容以空格作为分隔
  • 每个修饰符只能出现一次

限定符

  • +表示通过,指定允许发送的主机
  • -表示失败,指定拒绝发送的主机
  • ~表示软失败,不允许发送但标记起来
  • ?中性,不确定

all/include描述

  • all一般放在末尾,表示始终匹配
  • include表示多层嵌套

ip4/ip6描述符

  • ip4:ip,比如ip4:1.1.1.1
  • ip4:IP段,比如ip4:1.1.1.1/24
  • ip6:ip,比如ip6:1080::8:800:68.0.3.1/96

a/mx描述符

  • 默认域名的A记录,比如v=spf1 a -all
  • 指定域名的A记录,比如v=spf1 a:feei.cn -all
  • 按照MX记录的优先级,比如v=spf1 mx mx:feei.cn -all

详细的查看官方文档SPF语法

SPF例子

# 域名不会发送邮件
"v=spf1 -all"

# 认为SPF无用或无关紧要
"v=spf1 +all"

# 只允许1.1.1.1发出来的邮件
"v=spf1 ip4:1.1.1.1 -all"

# 只允许腾讯企业邮箱发出来的邮件
"v=spf1 ip4:spf.mail.qq.com -all"

SPF枚举邮件服务器地址

根据SPF特性,可以通过递归方式枚举出某个企业的全部邮件服务器地址。

# -*- coding: utf-8 -*-
"""
    SPF
    ~~~
    SPF信任IP枚举
    spf = SPF()
    spf.spf('qq.com')
    print(spf.root)
    print(spf.ip_segments)
    print(spf.included_domains)
    print(spf.ips)
    :author:    Feei <feei@feei.cn>
    :homepage:  https://github.com/FeeiCN/Mail-Checker
    :license:   GPL, see LICENSE for more details.
    :copyright: Copyright (c) 2015 Feei. All rights reserved
"""
import re
import dns.resolver
class SPF(object):
    def __init__(self):
        self.ips = []
        self.included_domains = []
        self.ip_segments = []
        self.root = []
    def spf(self, domain):
        txt_items = dns.resolver.query(domain, 'txt')
        for txt in txt_items:
            txt = txt.to_text().strip()
            if re.search(r"^<strong>\"</strong>v=spf", txt):
                self.parse_spf(domain, txt.strip('"'))
    def parse_spf(self, domain, record):
        for item in record.split(' '):
            if re.search(r'^ip4:', item):
                ip = item[4:]
                is_ip_segment = False
                if '/' in ip:
                    self.ip_segments.append(ip)
                    is_ip_segment = True
                else:
                    self.ips.append(ip)
                self.root.append({"domain": domain, "ip": ip, "ip_segment": is_ip_segment})
            elif re.search(r'^include:', item):
                include = item[8:]
                if not (include in self.included_domains or include == domain):
                    self.spf(include)
                self.included_domains.append(include)
spf = SPF()
spf.spf('qq.com')
# 结构
print(spf.root)
# IP
print(spf.ips)
# IP段
print(spf.ip_segments)
# 域名
print(spf.included_domains)
[{'domain': 'spf-a.mail.qq.com', 'ip': '103.7.28.0/24', 'ip_segment': True}, {'domain': 'spf-a.mail.qq.com', 'ip': '103.7.29.0/24', 'ip_segment': True}, {'domain': 'spf-a.mail.qq.com', 'ip': '112.90.139.0/24', 'ip_segment': True}, {'domain': 'spf-a.mail.qq.com', 'ip': '113.108.23.0/24', 'ip_segment': True}, {'domain': 'spf-a.mail.qq.com', 'ip': '113.108.11.0/24', 'ip_segment': True}, {'domain': 'spf-a.mail.qq.com', 'ip': '119.147.193.0/24', 'ip_segment': True}, {'domain': 'spf-a.mail.qq.com', 'ip': '119.147.194.0/24', 'ip_segment': True}, {'domain': 'spf-a.mail.qq.com', 'ip': '59.78.209.0/24', 'ip_segment': True}, {'domain': 'spf-a.mail.qq.com', 'ip': '113.96.223.0/24', 'ip_segment': True}, {'domain': 'spf-a.mail.qq.com', 'ip': '183.3.226.0/24', 'ip_segment': True}, {'domain': 'spf-a.mail.qq.com', 'ip': '183.3.255.0/24', 'ip_segment': True}, {'domain': 'spf-a.mail.qq.com', 'ip': '59.36.132.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '14.17.32.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '14.17.43.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '14.17.44.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '14.17.21.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '183.60.52.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '183.60.61.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '183.60.8.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '183.62.104.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '184.105.206.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '184.105.67.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '203.205.160.0/24', 'ip_segment': True}, {'domain': 'spf-b.mail.qq.com', 'ip': '58.250.132.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '54.179.177.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '183.57.50.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '59.37.110.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '54.204.34.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '54.206.16.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '54.206.34.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '54.207.19.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '54.207.22.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '54.238.142.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '54.238.162.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '54.243.244.0/24', 'ip_segment': True}, {'domain': 'spf-c.mail.qq.com', 'ip': '58.251.149.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '58.250.134.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '54.254.200.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '54.92.39.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '103.7.31.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '14.17.18.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '112.90.142.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '113.108.91.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '119.147.14.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '180.153.3.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '183.60.60.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '183.62.126.0/24', 'ip_segment': True}, {'domain': 'spf-d.mail.qq.com', 'ip': '211.139.188.0/24', 'ip_segment': True}, {'domain': 'spf-e.mail.qq.com', 'ip': '203.205.176.0/24', 'ip_segment': True}, {'domain': 'spf-e.mail.qq.com', 'ip': '14.215.153.0/24', 'ip_segment': True}, {'domain': 'spf-e.mail.qq.com', 'ip': '14.215.154.0/24', 'ip_segment': True}, {'domain': 'spf-e.mail.qq.com', 'ip': '14.215.155.0/24', 'ip_segment': True}, {'domain': 'spf-e.mail.qq.com', 'ip': '183.61.51.0/24', 'ip_segment': True}, {'domain': 'spf-e.mail.qq.com', 'ip': '183.61.52.0/24', 'ip_segment': True}, {'domain': 'spf-e.mail.qq.com', 'ip': '163.177.87.0/24', 'ip_segment': True}, {'domain': 'spf-e.mail.qq.com', 'ip': '220.249.245.0/24', 'ip_segment': True}, {'domain': 'spf-e.mail.qq.com', 'ip': '52.59.177.0/24', 'ip_segment': True}, {'domain': 'spf-e.mail.qq.com', 'ip': '18.194.254.0/24', 'ip_segment': True}, {'domain': 'spf-f.mail.qq.com', 'ip': '180.163.24.128/25', 'ip_segment': True}, {'domain': 'spf-f.mail.qq.com', 'ip': '121.51.40.128/25', 'ip_segment': True}, {'domain': 'spf-f.mail.qq.com', 'ip': '58.246.222.128/25', 'ip_segment': True}, {'domain': 'spf-f.mail.qq.com', 'ip': '58.250.143.128/25', 'ip_segment': True}, {'domain': 'spf-f.mail.qq.com', 'ip': '121.51.6.0/25', 'ip_segment': True}, {'domain': 'spf-f.mail.qq.com', 'ip': '183.2.187.0/25', 'ip_segment': True}, {'domain': 'spf-f.mail.qq.com', 'ip': '203.205.140.128/25', 'ip_segment': True}, {'domain': 'spf-f.mail.qq.com', 'ip': '203.205.210.0/25', 'ip_segment': True}, {'domain': 'spf-f.mail.qq.com', 'ip': '203.205.146.128/25', 'ip_segment': True}]
[]
['103.7.28.0/24', '103.7.29.0/24', '112.90.139.0/24', '113.108.23.0/24', '113.108.11.0/24', '119.147.193.0/24', '119.147.194.0/24', '59.78.209.0/24', '113.96.223.0/24', '183.3.226.0/24', '183.3.255.0/24', '59.36.132.0/24', '14.17.32.0/24', '14.17.43.0/24', '14.17.44.0/24', '14.17.21.0/24', '183.60.52.0/24', '183.60.61.0/24', '183.60.8.0/24', '183.62.104.0/24', '184.105.206.0/24', '184.105.67.0/24', '203.205.160.0/24', '58.250.132.0/24', '54.179.177.0/24', '183.57.50.0/24', '59.37.110.0/24', '54.204.34.0/24', '54.206.16.0/24', '54.206.34.0/24', '54.207.19.0/24', '54.207.22.0/24', '54.238.142.0/24', '54.238.162.0/24', '54.243.244.0/24', '58.251.149.0/24', '58.250.134.0/24', '54.254.200.0/24', '54.92.39.0/24', '103.7.31.0/24', '14.17.18.0/24', '112.90.142.0/24', '113.108.91.0/24', '119.147.14.0/24', '180.153.3.0/24', '183.60.60.0/24', '183.62.126.0/24', '211.139.188.0/24', '203.205.176.0/24', '14.215.153.0/24', '14.215.154.0/24', '14.215.155.0/24', '183.61.51.0/24', '183.61.52.0/24', '163.177.87.0/24', '220.249.245.0/24', '52.59.177.0/24', '18.194.254.0/24', '180.163.24.128/25', '121.51.40.128/25', '58.246.222.128/25', '58.250.143.128/25', '121.51.6.0/25', '183.2.187.0/25', '203.205.140.128/25', '203.205.210.0/25', '203.205.146.128/25']
['spf-a.mail.qq.com', 'spf-b.mail.qq.com', 'spf-c.mail.qq.com', 'spf-d.mail.qq.com', 'spf-e.mail.qq.com', 'spf-f.mail.qq.com', 'spf.mail.qq.com']

防止邮件内容篡改(DKIM)

DKIM作用

使用域名密钥识别邮件 (DKIM) 标准有助于向外发送邮件遭到假冒,包括邮件内容遭到更改、使邮件显示为非真实的来源的发件人或发件地址,这些都是对邮件未授权利用的常见手法。

DKIM原理

使用DKIM,将会加密签名添加到所有外发邮件的Header中,收到此类邮件的邮件服务器会使用DKIM解密邮件Header,并验证邮件发送后是否遭到篡改。

DKIM使用

  • 为域名生成密钥
  • 向域名DNS记录增加公钥,以便于其它邮件服务器使用此密钥读取邮件Header中DKIM
  • 开启DKIM功能,以便于将DKIM签名添加到所有发送的邮件Header中

国内的腾讯企业邮箱和网易企业邮箱都不支持DKIM。

正确处理可疑邮件(DMARC)

DMARC(Domain-based Message Authentication, Reporting & Conformance)是一种基于现有的SPF和DKIM协议的可扩展电子邮件认证协议,邮件收发双方建立了邮件反馈机制,便于邮件发送方和邮件接收方共同对域名的管理进行完善和监督。对于未通过前述检查的邮件,接收方则按照发送方指定的策略进行处理,如直接投入垃圾箱或拒收。从而有效识别并拦截欺诈邮件和钓鱼邮件,保障用户个人信息安全。

简单讲就是不像之前的SPF的管控策略,只能拦截、通过,而是可以有更多的操作方式,比如扔进垃圾箱甚至讲这些邮件转发给我们。

DMARC配置

检查一个网站的DMARC配置可以查看_dmarc.domain.comTXT记录,比如qq.com的DMARC记录。

➜  ~ dig -t txt _dmarc.qq.com
; <<>> DiG 9.10.6 <<>> -t txt _dmarc.qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 225
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;_dmarc.qq.com.			IN	TXT
;; ANSWER SECTION:
_dmarc.qq.com.		3610	IN	TXT	"v=DMARC1; p=none; rua=mailto:mailauth-reports@qq.com"
;; Query time: 189 msec
;; MSG SIZE  rcvd: 107

qq.com的DMARC配置为例:

v=DMARC1; p=none; rua=mailto:mailauth-reports@qq.com
  • v=DMARC1表示使用的是DMARC1版本,必须放在最前面
  • p表示邮件处理策略
    • none表示不采取特定策略,初期观察建议采用此模式
    • quarantine表示邮件接收者将邮件标记为可疑的
    • reject表示邮件接收者拒收该邮件
  • rua表示将一段时间的汇总报告反馈的邮件地址,可用逗号分隔
  • ruf表示当检测到伪造邮件时将伪造信息的报告反馈的邮件地址,可用逗号分隔

详细语法介绍见DMARC文档

例如我希望我域名feei.cn配置DMARC,则在我的DNS服务商管理后台增加一条DNS记录。HOST为_dmarc,类型为TXT,值为v=DMARC1; p=none; rua=mailto:mail-report@feei.cnDMARC的前提必须已经配置过SPF。

DMARC例子

# 检测到伪造邮件时不做任何特殊处理,将伪造邮件报告给我
v=DMARC1; p=none; ruf=mailto:mail-report@feei.cn

# 检测到伪造邮件时标记为可疑邮件,将伪造的邮件报告给我
v=DMARC1; p=quarantine; ruf=mailto:mail-report@feei.cn

# 检测到伪造邮件时拒绝接受该邮件,将伪造的邮件报告给我,并将一段时间内的汇总报告给我
v=DMARC1; p=reject; ruf=mailto:mail-report@feei.cn; rua=mailto:mail-report@feei.cn

启用IP的反向解析地址(PTR)

PTR(Pointer Record)是将IP解析到域名上,常见的域名解析到IP是通过A(IPv4)或AAAA(IPv6)进行的,可以简单理解为IP的反向域名解析,常用于提升邮箱的发信信誉从而提高到达率。

查询IP的PTR可以通过dig -x ip,比如查看8.8.8.8的PTR记录为google-public-dns-a.google.com.

➜  ~ dig -x 8.8.8.8
; <<>> DiG 9.10.6 <<>> -x 8.8.8.8
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 1999
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;8.8.8.8.in-addr.arpa.		IN	PTR
;; ANSWER SECTION:
8.8.8.8.in-addr.arpa.	75474	IN	PTR	google-public-dns-a.google.com.
;; Query time: 91 msec
;; MSG SIZE  rcvd: 93

PTR配置

PTR的配置无法在DNS服务商配置,因为IP的归属是运营商(ISP),因此如果是买的云主机需要向运营商提交申请进行配置解析。

启用垃圾邮件过滤

  • 订阅DNS黑洞列表,将阻止大多数边缘处的垃圾邮件。
  • 启用速率控制以防止拒绝服务攻击。
  • 启用内容分析来启发式阻止或隔离垃圾邮件。
  • 阻止反向DNS查找失败的发件人。
  • 过滤危险附件。

定期钓鱼演练

  • TODO 工具推荐

定期安全培训

  • TODO 培训内容与考试题目推荐
为网络安全带来微小而美好的改变
Loading