SQL 浏览器服务与静态端口号:我应该选择其中一个吗?

SQL 浏览器服务与静态端口号:我应该选择其中一个吗?

假设我有选择,是否有理由选择启用 SQL 浏览器服务而不是使用默认静态端口,反之亦然?

具体情况如下:
我们有一些第三方应用程序,其中有几个客户端连接到 2005 SQLExpress 实例。此实例配置为接受远程连接,但我们一直遇到间歇性连接问题,显示为“密码不匹配”登录失败,即

Login failed for user 'AppSQLLogin'. [CLIENT: 10.x.x.x] 
Error: 18456, Severity: 14, State: 8.)

我最终发现它正在使用动态端口,并且启动 SQL 浏览器服务显然解决了登录问题。

但是由于我没有在该服务器上运行多个实例,因此我认为我可以将命名的 SQLExpresss 实例设置为使用正常的默认端口 1433 并停止浏览器服务。假设是这种情况,我有什么理由应该或不应该这样做吗?或者换句话说,除非我明确必须,否则我是否不应该运行 SQL 浏览器服务?(它未在我们的任何其他单个默认实例 SQL 服务器上启用)。

答案1

使用静态端口并禁用浏览器将导致零安全性。如果有人入侵服务器,他们可以通过查看应用程序日志来查询系统以获取正在使用的端口列表,或者通过端口扫描服务器(这需要 10-15 秒)。

只需打开浏览器即可完成。

您不想使用端口 1433,因为如果您安装默认实例,它将希望在端口 1433 上运行。

答案2

我想说的是,尽可能关闭浏览器,并将实例配置为在静态端口上运行。但我建议使用 1433 以外的其他端口(可能更高)。查看这篇文章 使用 SQL Server 浏览器服务的最佳实践。


编辑:

Microsoft SQL Server 2005 安全最佳实践 - 操作和管理任务 白皮书明确指出“为了获得更安全的配置,请始终使用静态 TCP/IP 端口分配并禁用 SQL Server Browser 服务。”

相关内容