![Windows Server SMTP 功能 - 安装影响](https://linux22.com/image/639026/Windows%20Server%20SMTP%20%E5%8A%9F%E8%83%BD%20-%20%E5%AE%89%E8%A3%85%E5%BD%B1%E5%93%8D.png)
背景:我是一名 SQL Server DBA。我继承了大约 50 台 SQL Server,需要设置各种维护计划和警报。为了获得全部好处,我还需要配置数据库邮件,以便在作业失败、出现警报条件等时发送电子邮件。这需要 SMTP 服务器来中继电子邮件(希望我在这里的措辞正确)。由于每个 SQL Server 都在自己的域中,因此似乎我必须在每个域的服务器上安装 SMTP 功能并进行配置。我想我会直接在每个 SQL Server 主机上执行此操作。
我按照这篇 MSDN 文章那里的一切都说得通。在避开了几个防病毒障碍后,我的电子邮件就可以顺利通过了。
问题:安装 SMTP 功能的安全后果是什么?在我的概念验证中,我将 SMTP 配置为允许来自 127.0.0.1 的中继,而不允许其他任何人的中继。这被认为是“安全的”。我还忽略了其他什么吗?
更新日期:2014 年 8 月 21 日:事实证明,我的公司已经可以访问 Microsoft SMTP 服务器。有人告诉我,这是一项付费服务。我由此推断,MS 的 SMTP 服务器本身并不是开放中继。我通过匿名身份验证连接到它,尽管我不确定 MS 如何知道发件人是他们的付费客户之一(可能是 IP 地址?)。所以最后,我有一个 SMTP 服务器,我不必维护它,也不需要在无数的 SQL Server 上安装和配置 SMTP 功能。感谢大家的意见。
答案1
smtp
有很长的安全故障历史(sendmail、emacs 等)。MS 也是如此。坦率地说,我最不希望做的事情就是期望 MS 机器能够保证传入的smtp
安全。我们通常在提供邮件的任何 Windows 机器和 Internet 之间放置smtp
代理(例如,FreeBSD 的 postfix 配置了反垃圾邮件 AV 和简单转发)。
话虽如此...
如果您的smtp
配置是“仅传出”(即:随机机器无法打开到端口 25、587 和/或 465 的连接),那么您实际上并没有过于暴露于攻击。
任何 MTA(不仅仅是 Windows)最有可能出现故障的模式是暴力破解密码。在这种情况下,有人会攻击您的网络端口,试图猜测用户/密码对。您可以通过监控给定 IP 和/或子网的失败身份验证次数来防御这种情况(在 Windows 中并不容易),并相应地修改防火墙(通常是第二天到期的 t 时间内的 x 次错误身份验证)。您还可以订阅 RBL(在 Windows 中并不容易做到)请参阅:http://en.wikipedia.org/wiki/Realtime_Blackhole_List。您还可以配置防火墙或 NMS,当有太多外发 smtp 连接时(即您的smtp
计算机已被入侵,并且已成为垃圾邮件源,在奇怪的时间每分钟发送 +100 条消息)发生故障,并阻止或警告管理员。(使用 Windows 也不容易做到。)
请注意,让垃圾邮件发送者猜出密码并将您的服务器变成垃圾邮件源头是最有可能的失败模式。更糟糕的情况是,您将弱用户名/密码对暴露给整个互联网,从而允许脚本小子利用您服务器的授权。您需要制定严格的密码策略。您需要将任何此类传入放在网络smtp
上的隔离 DMZ 中。并且您需要密切监视防火墙例外情况(例如安装snort
)
答案2
我们遇到过类似的用例,即某些应用程序不支持我们主电子邮件系统所需的经过身份验证的 SMTP。我们通常建议您拥有一个 SMTP 服务器,并将所有数据库服务器指向该服务器,这只是为了简单起见。但是,如果这不可能,并且您确实必须在每个数据库服务器上安装它,请确保查看限制连接,并且您将有几个地方可以执行此操作,具体取决于您的网络。
从 SMTP 虚拟服务器开始,单击服务器的属性,然后访问。您将在其中看到一些选项,并且您正在寻找“连接控制”和“中继限制”。如果您只有一个 SMTP 服务器用于多个数据库服务器,请将它们设置为需要访问的计算机的 IP,或者将其设置为 127.0.0.1 或 localhost(正如您已经做的那样),以限制到仅限该服务器(如果它安装在每个数据库服务器上)。
您还必须在 Windows 防火墙中做出允许,以便进一步限制访问。如果您必须在每个数据库服务器上安装它,则可以阻止所有入站 SMTP 流量并仅允许出站。
答案3
这是一个稍微不同的方法:
为什么不在您的基础架构中设置单个实例,而不是在每个客户端基础架构中安装一个 SMTP 服务器实例呢?然后,您可以为每个客户端配置数据库邮件,以通过您的 SMTP 服务器进行中继。每个客户端无论如何都需要允许出站 SMTP,那么它是从 SQL Server 出站还是从 SMTP 服务器出站有什么关系呢?
通过仅保护一个 SMTP 实例,您可以减少管理开销并潜在地减少攻击面。
如果您失去客户或他们将业务转移到其他地方,他们只需重新配置或禁用数据库邮件即可。在这种情况下,您也只需重新配置 SMTP 服务器即可。