怎么只让特定几台机器能连上SQL Server服务器,防止别人乱进
- 问答
- 2026-01-11 12:49:22
- 2
要实现只让特定几台机器能连上SQL Server服务器,防止未经授权的访问,可以从多个层面设置“关卡”,这就像给你的服务器大门加上好几道锁,并且只给你信任的几台机器配了钥匙,核心思路是结合网络防火墙、SQL Server自身的身份验证和权限管理来共同实现,以下是具体的方法,主要参考微软官方文档及常见的服务器安全实践。
第一道关卡:网络层面的隔离 - 使用Windows防火墙
这是最直接、最外层的防护,通过配置服务器上的Windows防火墙,可以直接指定只允许来自特定IP地址的通信请求到达SQL Server服务的端口。

- 找到SQL Server的监听端口:你需要知道你的SQL Server在哪个端口上“听候”连接,默认情况下是1433端口,但有时出于安全考虑可能会更改,你可以通过SQL Server配置管理器来查看:打开“SQL Server网络配置”,选择你的实例,在右侧查看TCP/IP协议的属性,在“IP地址”选项卡中可以看到“TCP端口”设置。
- 配置Windows防火墙入站规则:
- 在SQL Server所在的电脑上,打开“高级安全Windows防火墙”。
- 点击“入站规则”,然后在右侧操作栏选择“新建规则”。
- 规则类型选择“端口”,点击下一步。
- 选择“TCP”,并输入你刚才查到的特定端口号(例如1433),点击下一步。
- 选择“允许连接”,点击下一步。
- 根据需要选择规则应用的网络配置文件(域、专用、公用),通常至少会勾选“专用”,点击下一步。
- 给规则起一个容易识别的名字,SQL Server访问限制 - 仅限特定IP”,点击完成。
- 这是关键一步:限制规则的作用范围:
- 规则创建好后,在入站规则列表中找到它,双击打开属性。
- 切换到“作用域”选项卡,在“远程IP地址”部分,选择“下列IP地址”。
- 点击“添加”按钮,然后你可以通过两种方式添加允许的机器:
- 单个IP地址:直接输入那台电脑的固定IP地址(例如192.168.1.100)。
- IP地址范围:如果你信任一个网段,可以输入子网地址和掩码(例如192.168.1.0/24,表示允许192.168.1.1到192.168.1.254的所有机器)。
- 将你需要允许的所有机器的IP地址都添加进去,只有在这个列表里的IP地址,其连接请求才会被防火墙放行,其他任何IP地址的尝试连接都会被直接拒绝在门外。
通过这道关卡,你已经从网络层面上极大地缩小了攻击面,即使有人知道了SQL Server的密码,只要他的机器IP不在白名单里,就连建立连接的机会都没有。
第二道关卡:SQL Server身份验证模式的选择与管理
确保连接请求来自可信IP后,接下来要验证连接者的身份,SQL Server有两种主要的登录验证模式:

- Windows身份验证(推荐):这是更安全的方式,用户使用他们在Windows域或本地计算机上的用户名和密码进行登录,SQL Server信任Windows操作系统已经完成了身份验证,这样做的好处是,你不需要在SQL Server中单独管理一套密码,可以借助Windows的组策略来集中管理用户和密码复杂性要求。
- SQL Server身份验证:SQL Server自己管理用户名和密码,如果你有非Windows环境的设备(如Linux应用服务器)需要连接,或者无法使用域环境,可能需要使用这种方式。
最佳实践是优先使用Windows身份验证。 要检查和设置验证模式,可以在SQL Server Management Studio中,右键点击服务器实例,选择“属性”,在“安全性”页面中设置。
第三道关卡:创建最低权限的登录名和用户
即使通过了前两道关卡,也绝不能允许授权的机器用高权限账户(如sa)随意连接,要遵循“最小权限原则”,即只授予完成工作所必需的最少权限。

- 为每台机器上的具体使用者创建单独的登录名:
- 如果使用Windows身份验证,你需要在SQL Server上为对应的Windows域用户或组创建登录名,公司财务部的张三用的电脑IP是192.168.1.100,那你应该在SQL Server中创建一个登录名,指向“Domain\ZhangSan”这个Windows用户。
- 如果必须使用SQL Server身份验证,则创建一个新的SQL Server登录名,并设置一个强密码。
- 将登录名映射到具体数据库的用户:光有服务器层面的登录名还不够,这个登录名还需要在需要访问的每个数据库中被映射为一个“用户”。
- 授予精确的数据库权限:给这个数据库用户分配精确的权限,不要直接给它“db_owner”(数据库所有者)这种万能权限,而是根据实际需要,只授予“SELECT”(查询)、“INSERT”(插入)、“UPDATE”(更新)等具体的操作权限,你可以通过数据库角色来批量管理权限,也可以直接对表、视图等对象进行授权。
总结与额外建议
最有效的方法是组合拳:
- 防火墙IP白名单:作为第一道坚固的大门,阻止所有非授权IP的连接。
- Windows身份验证:利用操作系统的安全机制进行身份验证。
- 最小权限原则:为每个用户或应用创建专属的低权限账户。
还有一些增强安全的做法:
- 更改默认端口:将SQL Server的默认1433端口改为一个不常用的端口,可以避免一些简单的自动化扫描攻击,但这只是一种隐蔽措施(安全通过 obscurity),不能替代上述的实质性安全控制。
- 禁用SA账户:系统管理员sa账户是众所周知的攻击目标,在创建了其他具备必要权限的管理员账户后,应强烈考虑禁用sa账户。
- 定期审计:定期查看SQL Server的错误日志和Windows事件日志,检查是否有大量的失败登录尝试,这可能是攻击迹象。
通过以上这些步骤层层设防,你就可以有效地将SQL Server的访问权限牢牢控制在指定的几台机器和指定的用户手中,大大提升数据库服务器的安全性,这些方法的核心思想来源于通用的服务器安全原则和微软对于SQL Server安全部署的建议。
本文由盈壮于2026-01-11发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://haoid.cn/wenda/78694.html