Sqlserver安全篇之_隐藏实例功能和禁用SQL Server Browser服务

发布于:2025-02-26 ⋅ 阅读:(20) ⋅ 点赞:(0)

总结:
1、隐藏实例功能和禁用SQL Server Browser服务的功能一样,对应非默认实例(且这个默认实例是1433端口)的情况下,都是需要在连接字符串中提供端口号才能连接到实例
2、隐藏实例功能后,就算开启了SQL Server Browser服务,SQL Server Browser服务也无法识别计算机上的所有SQL Server实例的端口和命名管道

隐藏实例
https://learn.microsoft.com/zh-cn/sql/database-engine/configure-windows/hide-an-instance-of-sql-server-database-engine?view=sql-server-ver16
Sql Server Configuration Manager–SQL Server Network Configuration–Right-click Protocols for MSSQLSERVER–Properties–Flags–Hide Instances–Yes

实验环境:testdb1服务器上2个实例,一个默认实例端口1433,一个命名实例test端口49344,SQL Server Browser服务正常运行的情况下

不隐藏实例
默认实例和命名实例的SPN都正常,在远程服务器使用SSMS输入testdb1可以正常连接默认实例也可以输入testdb1\test或testdb1,49344或testdb1\test,49344正常连接命名实例

隐藏实例
默认实例和命名实例的SPN都正常,在远程服务器使用SSMS输入testdb1可以正常连接默认实例也可以输入testdb1,4934或testdb1\test,49344正常连接命名实例,但是输入testdb1\test无法正常连接命名实例,也就是说遇到非1433端口的命名实例时必须写明端口的方式才可以正常连接命名实例

不管隐藏实例的功能是否打开
如果把默认实例的端口从1433改成1439,且默认实例的SPN正常,在远程服务器使用SSMS输入testdb1都不可以正常连接默认实例,必须输入testdb1,1439才可以正常连接默认实例testdb1。

隐藏实例功能:如果启用这个功能,那么只有默认实例且该默认实例必须是默认端口的情况下,远程服务器使用SSMS时可以在不输入端口的情况下就可以正常连接默认实例,其他非默认实例或非默认端口(含默认实例名)的实例,远程服务器使用SSMS时都必须写明端口的情况下才可以正常连接。

官方文档中关于隐藏实例的总结:SQL Server 使用 SQL Server 浏览器服务来枚举安装在计算机上的 数据库引擎 实例。 这使客户端应用程序可以浏览服务器,并帮助客户端区别同一台计算机上的多个数据库引擎实例。 你可以使用隐藏SQL Server 数据库引擎实例的方式来防止SQL Server Browser服务识别计算机上的所有SQL Server实例。如果你隐藏命名实例,你将需要在连接字符串中提供端口号才能连接到隐藏的实例,即使SQL Server Browser服务正在运行也是如此。

SQL Server Browser
https://learn.microsoft.com/zh-cn/sql/tools/configuration-manager/sql-server-browser-service?view=sql-server-ver16&redirectedfrom=MSDN
SQL Server Browser:Provides SQL Server connection information to client computers.

实验环境:testdb1服务器上2个实例,一个默认实例端口1433,一个命名实例test端口49344

SQL Server Browser服务运行时的状态
默认实例和命名实例的SPN都正常,在远程服务器使用SSMS输入testdb1可以正常连接默认实例也可以输入testdb1\test或testdb1,49344或testdb1\test,49344正常连接命名实例

关闭SQL Server Browser服务后
默认实例和命名实例的SPN都正常,在远程服务器使用SSMS输入testdb1可以正常连接默认实例也可以输入testdb1,4934或testdb1\test,49344正常连接命名实例,但是输入testdb1\test无法正常连接命名实例,也就是说遇到非1433端口的命名实例时必须写明端口的方式才可以正常连接命名实例

不管SQL Server Browser服务是运行还是关闭
如果把默认实例的端口从1433改成1439,且默认实例的SPN正常,在远程服务器使用SSMS输入testdb1都不可以正常连接默认实例,必须输入testdb1,1439才可以正常连接默认实例testdb1。

SQL Server Browser服务:如果关闭这个服务,那么只有默认实例且该默认实例必须是默认端口的情况下,远程服务器使用SSMS时可以在不输入端口的情况下就可以正常连接默认实例,其他非默认实例或非默认端口(含默认实例名)的实例,远程服务器使用SSMS时都必须写明端口的情况下才可以正常连接。

官方文档中关于SQL Server Browser的总结: 在启动后,SQL Server Browser将启动并使用UDP 1434端口, SQL Server Browser将读取注册表,识别计算机上的所有SQL Server实例,并注明它们使用的端口和命名管道。当SQL Server客户端请求SQL Server资源时,客户端将使用1434端口向服务器发送一条UDP消息。 SQL Server Browser将用请求的实例的TCP/IP端口或命名管道做出响应。 然后,客户端应用程序将使用所需实例的端口或命名管道向服务器发送请求来完成连接。当SQL Server Browser服务不运行时,如果提供了正确的端口号或命名管道,仍可以连接到 SQL Server。