从历史上看,作为安全最佳实践的一部分,建议不要使用默认端口连接到 SQL Server。在具有单个默认实例的服务器上,默认情况下将使用以下端口:
- SQL Server 服务 - 端口 1433 (TCP)
- SQL Server 浏览器服务 - 端口 1434 (UDP)
- 专用管理员连接 - 端口 1434 (TCP)
问题:
- 这个建议仍然有用吗?
- 是否应该更改所有上述端口?
从历史上看,作为安全最佳实践的一部分,建议不要使用默认端口连接到 SQL Server。在具有单个默认实例的服务器上,默认情况下将使用以下端口:
问题:
那时是愚蠢的,现在仍然是愚蠢的。通过可以说是默默无闻的安全根本不是安全。
恕我直言,它从来没有相关性。出于某些合规目的,这是必需的,因为起草这些合规的人不明白他们在做什么,恕我直言。
我不会改变任何。
即使通过默默无闻的安全性不是真正的安全性,我也不会说在任何情况下它都没有帮助。
如果攻击者想知道你的服务在哪里监听,他们可以很容易地找到,但是如果发生愚蠢的自动攻击,如果你改变了端口,你可能会很幸运。
我唯一记得它真正有用的地方是在SQL Slammer时代,当时 SQL Server 2000 易受攻击,蠕虫通过生成随机 ip 并连接到默认的 SQL Server 浏览器端口进行传播。
如果我没记错的话,当时的官方建议是更改端口,直到您可以修补服务器(因为没有立即可用的修补程序或因为您没有窗口)
要让该蠕虫在您需要将 SQL Server 连接到 Internet 而不是位于防火墙后面时进入您的网络,您不应该这样做,但无论如何,在这种特定情况下,非默认端口号可能会有所帮助。
但是,我确实同意,如果您有适当的安全措施,您添加的复杂性可能不会超过它防止事件发生的机会。
不,不是。一些被误导的人可能会这样介绍它,但我已经做了 20 多年的安全工作,更改默认端口一直是一种“如果你愿意,你可以做一些事情,有时在非常特定的情况下可能会提供一个针对一些非常具体的威胁的额外安全性”的东西。
在非常具体的情况下,根据您的威胁模型和风险分析,在某些情况下这可能是合理的建议。在绝大多数情况下,不,它不相关,也从来没有。
是的,它仍然有用。
更改默认端口只有一个真正的目的:如果您的数据库服务器对可能受到威胁的主机开放,则可以防御自动扫描/攻击。
虽然这听起来可能没什么大不了,但请记住:
所以,是的,虽然它本身在受到有针对性的攻击时对你没有多大帮助,但使用随机端口(和/或让它只监听随机 IPv6 地址)会使其不那么明显,因此至少给你更多时间在自动 0day 漏洞扫描攻击您之前升级(甚至可能完全保护您免受此类自动扫描!)
此外(这不仅有助于抵御所有自动攻击,还有助于抵御一些有针对性的攻击)当攻击者试图找到您的数据库端口以通过暴力端口扫描来利用它时,可以检测和防御它(通过将攻击者 IP 范围列入黑名单,并在检测到某些内部主机作为攻击源时提醒管理员)
另请注意,更改服务器和客户端的默认端口(特别是如果它们是自动部署的)是微不足道的工作,并且检测暴力扫描也很容易;所以你真的应该这样做(不仅仅是数据库服务器;但对于由于可用性问题而设置它的开销并不令人望而却步的所有服务:就像
80
某些人(和机器人)一样,不建议更改 web 的默认端口会搞砸的,世界各地的随机防火墙可能不允许建立连接。但 RDP 是很好的目标,例如非默认端口)我不会更改端口,但绝不会直接通过 Internet 公开数据库服务。只能通过像 SSH 这样的安全隧道。更改 SSH 的端口可能是一个好主意,可以最大限度地减少扫描程序的流量。