1433 与危险扩展
SQL Server 默认监听 1433,一旦直接暴露到公网就会被持续爆破。与此同时还要检查数据库内部的危险扩展:xp_cmdshell 允许在数据库上下文中执行系统命令,拿到数据库权限的攻击者可以借此直接跳到操作系统层面。加固要分两处做:边界收敛端口,实例内部关闭不需要的扩展功能。
基本信息
| 适用平台 | Windows(SQL Server) |
|---|---|
| 默认端口 | 1433 |
| 风险等级 | 高 |
| 基线要求 | 1433 限源,危险扩展关闭 |
| 关键扩展 | xp_cmdshell、OLE Automation、CLR |
典型使用场景
- 数据库暴露面盘点与边界收敛
- 排查实例是否监听在默认端口与全部地址
- 关闭不需要的危险扩展功能
- 排查数据库是否成为提权跳板
- 检查服务账号与启动方式的合理性
- 与防火墙和安全组规则交叉核对
端口与实例核查
端口与实例核查
Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Microsoft SQL Server\*\MSSQLServer\SuperSocketNetLib\Tcp\IPAll' -ErrorAction SilentlyContinue | Select-Object TcpPort, TcpDynamicPorts # 静态与动态端口
netstat -ano | findstr :1433 # 确认 1433 是否在监听
Get-Service | Where-Object {$_.DisplayName -like 'SQL Server*'} | Select-Object Name, Status, StartType # 服务状态与启动类型
Get-NetFirewallRule -DisplayName '*SQL*' | Select-Object DisplayName, Enabled, Direction # 相关防火墙规则危险扩展核查
危险扩展核查
SELECT name, value_in_use FROM sys.configurations WHERE name IN ('xp_cmdshell','Ole Automation Procedures','clr enabled'); -- 查看危险扩展的启用状态
SELECT @@version AS version; -- 确认实例版本,便于对照补丁复核必查项
| 检查项 | 含义 | 注意点 |
|---|---|---|
| TcpPort | 实例的静态 TCP 端口 | 固定端口便于防火墙收敛 |
| TcpDynamicPorts | 动态端口配置 | 非 0 会让固定端口规则失效 |
| 1433 监听 | 是否监听且对外可达 | 不应暴露到不可信网段 |
| xp_cmdshell | 是否启用了命令执行扩展 | 不需要时应关闭 |
| 服务启动类型 | 自动或手动启动 | 与业务实际使用情况匹配 |
实例如果只需本机或内网访问,可以直接在 SQL Server 配置管理器里关闭 TCP,或者改成内网静态端口并配套防火墙限源。
xp_cmdshell 常被应用临时打开之后忘记关闭:要把它纳入例行巡检项,定期复查启用状态。
动态端口会让基于固定端口的防火墙规则失效:要固定成静态端口,或者按程序名放行。