Exchange2010接收发送连接器的安全权限
应boss要求,需要关掉邮箱服务器的匿名登录发邮件的权限,下面共享一下该问题的深入知识。
下面我们来查看匿名用户的权限
[PS] C:\Get-ReceiveConnector mailserver\D* | Get-ADPermission | where {$_.user -like "*anon*"} | ft identity,user,deny,extendedrighsts –autosize
你会发现,匿名用户是没有验证用户的smtp提交权限的。 下面我们来看看接收器上针对用户的几个权限(也就是extenderights):
Permission Display name
ms-Exch-SMTP-Submit Submit Messages to Server
ms-Exch-SMTP-Accept-Any-Recipient Submit Messages to any Recipient
ms-Exch-SMTP-Accept-Any-Sender Accept any Sender
ms-Exch-SMTP-Accept-Authoritative-DomainSender Accept Authoritative Domain Sender
ms-Exch-SMTP-Accept-Authentication-Flag Accept Authentication Flag
ms-Exch-Accept-Headers-Routing Accept Routing Headers
ms-Exch-Accept-Headers-Organization Accept Organization Headers
ms-Exch-Accept-Headers-Forest Accept Forest Headers
ms-Exch-SMTP-Accept-Exch50 Accept Exch50
ms-Exch-SMTP-Send-Exch50 Send Exch50
ms-Exch-Send-Headers-Routing Send Routing Headers
ms-Exch-Send-Headers-Organization Send Organization Headers
ms-Exch-Send-Headers-Forest Send Forest Headers
ms-Exch-Bypass-Message-Size-Limit Bypass Message Size Limit
ms-Exch-Bypass-Anti-Spam Bypass Anti-Spam
参数解释
ms-Exch-SMTP-Submit
如果smtp接收线程没有该权限,线程是无法通过该连接器提交邮件的。使用“mail from”;”auth”命令都会失败。这也意味着你的exchangeserver无法通过该连接器拿到发给该域内的邮件。 为匿名添加该权限:
Get-ReceiveConnector mailserver\\D\* | Add-ADPermission –user “nt authority\\anonymous logon” –extendedrights ms-exch-smtp-submit
再次测试,此时报的是另外一个错误,是正常的
ms-Exch-SMTP-Accept-Any-Sender
上面的错误是因为匿名登陆没有ms-Exch-SMTP-Accept-Any-Sender permission。如果smtp接收线程没有该权限,服务器将会检查发信人地址仿冒。 为匿名添加该权限:
Get-ReceiveConnector mailserver\D* | Add-ADPermission –user “nt authority\anonymous logon” –extendedrights ms-exch-smtp-accept-any-sender
再次测试,ok了
在上面的测试中,我突然想使用另外一个账户名来发送邮件,但是如你看到的,我失败了。可是匿名用户不是拥有可以使用任意域名的权限么?为什么?原 来,Exchange Receive Connectors有2个不同的权限针对mail from 判断使用可以允许的域名。这些域名有2大类:
权威域和internal relay
extenal relay或者没有定义
如何查看exchange organization中哪些域名是被设置为权威域?
使用 get-acceptedDoamin
你可以看到 “bb.dmn” 是一个权威域;这也就是为何无法使用该域名发信的原因。如果要让receive connector接受这种类型的发送者SMTP线程,则必须添加ms-Exch-SMTP-Accept-Authoritative-Domain-Sender 权限
ms-Exch-SMTP-Accept-Authoritative-Domain-Sender
如果smtp接收线程没有该权限,服务器会拒绝“mailfrom”中使用了权威域名的邮件。
为匿名账户添加该权限
Get-ReceiveConnector mailserver\D* | Add-ADPermission –user “nt authority\anonymous logon” –extendedrights ms-Exch-SMTP-Accept-Authoritative-Domain-Sender
再次测试,没有问题了吧!
看起来是没有问题了。SMTP 线程可以接受任意的mailfrom地址;发送者也可以使用任意域名,而且还能使用权威域名。SMTP线程也接受收件人是权威域内的用户,但拒绝投递邮件 给外部。这确保了邮件系统是安全的,不会被外部用户relay. So what permission is missing from SMTP session so that we couldn’t relay message to outside. Check out the next one please!!
ms-Exch-SMTP-Accept-Any-Recipient
这是一个重要的权限,你也可以称之为relay权限。因为一个拥有该权限的smtp接收线程可以投递邮件给组织外。如果你有一个面向公网的接受连接器而且为匿名用户添加了该权限,那此时你的邮件系统就是一个 OPEN-RELAY server!!
作为测试的目的,我们这里为匿名用户添加该权限。
Get-ReceiveConnector mailserver\D* | Add-ADPermission –user “nt authority\anonymous logon” –extendedrights ms-Exch-SMTP-Accept-Any-Recipient
此时再来做测试:
这就是一个open relay smtp server了。别怪我没有提醒你!如果你这么干了,后果自负!
ms-Exch-SMTP-Accept-Authentication-Flag
如果smtp接收线程没有该权限,服务器将会忽略auth验证的部分。在内网中,exchangeservers传送匿名邮件会使用“auth=<>”。
这个权限允许早前版本的exchange服务器以内部发送者的名义提交邮件。Ex07 会将这些邮件识别为内部邮件。(exchange07的邮件全部有hub来投递,所以比如ex03就不能归属于exchange07 的组织中。)
ms-Exch-Accept-Headers-Routing
如果smtp接收线程没有该权限,服务器会删掉所有“received:”的行
如果你查看入站邮件头,你可以看到邮件从发送者到收信者所经过的邮件服务器信息。下面是在outlook中使用Message Options 查看的例子。当邮件从SMTP server传递给下一个server,每个接受server都会在mail中添加一个签名(以Received:开头)。如果一个邮件在组织内经过了3 个smtp服务器,那这封邮件的接受者就能知道你组织的内网中3台mialserver的ip地址。是不是觉得很不安全呢?
要避免该问题,你只需要简单的在发送接收器上拒绝匿名用户的这项权利。
get- sendconnector “D*” | add-adpermission –user “nt authority\anonymous logon” –extendedrights ms-Exch-Accept-Headers-Routing
Get-SendConnector "d*"| Get-ADPermission -user "nt authority\anonymous logon" | ft deny,isinherited,extendedrights -autosize
ms-Exch-Accept-Headers-Organization
如果smtp接收线程没有该权限,服务器会删掉所有“X-MS-Exchange-Organization-”的行
ms-Exch-Accept-Headers-Forest
如果smtp接收线程没有该权限,服务器会删掉所有“X-MS-Exchange-Forest-”的行
ms-Exch-SMTP-Accept-Exch50
这个权限允许线程提交包含XEXCH50命令的邮件。当于Exchange 2000 Server 和 Exchange 2003协同工作的时候会用到XEXCH50命令。而在exchange07only的状态下,该权限应该被disabled。
ms-Exch-Send-Headers-Routing
如果smtp发送线程没有该权限,服务器会删掉所有“received:”的行。
ms-Exch-Send-Headers-Organization
如果smtp发送线程没有该权限,服务器会删掉所有“X-MS-Exchange-Organization-”的行
ms-Exch-Send-Headers-Forest
如果smtp发送线程没有该权限,服务器会删掉所有“X-MS-Exchange-Forest-”的行
ms-Exch-Bypass-Message-Size-Limit
如果SMTP接收线程拥有该权限,服务器将在协议级别跳过邮件大小限制。
ms-Exch-Bypass-Anti-Spam
如果SMTP接收线程拥有该权限,服务器将跳过该邮件的anti-spampass检查。
PS:除了可以通过powershell更改以上权限外,还可以在域控上通过ADSI工具修改,在后面的文章里面描述。
相关文章
- MacOS风险排查怎么做;春节安全值守怎么安排 | FB甲方群话题讨论
- 活动报名&议题征集 | FreeBuf企业安全俱乐部·北京站暖意回归
- MongoDB 3.0+安全权限访问控制详解
- Linux下配置安全的目录权限(linux配置目录权限)
- Linux用户权限管理:保证安全的关键(linux用户及权限管理)
- Linux 文件权限:将它变得更加安全(linux文件的权限)
- 管理Linux账号权限管理:实现安全的用户控制(linux账号权限)
- nginx 安装SSL安全证书详解编程语言
- 控制Linux U盘权限控制:实现安全管理(linuxu盘权限)
- 云端安全·守护Linux系统(云锁linux)
- Linux权限管理:文件保护与安全(linux权限文件)
- 权限管理管理Linux FTP账号权限保障安全(linuxftp账号)
- Oracle:限制登录权限以保护安全(oracle限制登录)
- Linux NFS权限管理:更安全的共享网络存储(linuxnfs权限)
- Linux系统权限降低:保障安全,防止意外操作(linux降低权限)
- Linux:默认权限保障安全(linux默认权限)
- Linux服务器漏洞防护:必不可少的安全扫描(linux服务器漏洞扫描)
- Linux虚拟主机:开启安全的虚拟之旅(linux虚拟主机下载)
- 管理SQL Server权限管理:“实现安全保障”(sqlserver的权限)
- 安全一步步深入浅出彻底搞懂Redis的线程安全(彻底搞懂redis的线程)
- 管理Oracle用户权限管理 以安全保障数据完整性(oracle人物权限)
- MySQL云端化让数据管理更高效灵活安全(mysql上云的好处)
- 安全运行Redis低权限改善防御(以低权限运行Redis)
- Oracle中自动增长序列保证主键安全(oracle主键自增序列)
- Oracle SX锁实现完美的数据库事务安全(oracle sx锁)
- 安全Redis账号安全实现最佳保护(redis 账号)
- 美NIAID:单剂单克隆抗体在小型试验中能安全地预防疟疾
- destoon安全设置中需要设置可写权限的目录及文件