禁用旧版协议需通过注册表修改SChannel层设置:在对应协议路径下创建Enabled=0的DWORD值,重启服务后用Nmap、OpenSSL等验证;同时禁用SMBv1、NetBIOS等高危服务并安装最新补丁。

Windows Server 2012 R2 上禁用旧版协议(SSL 2.0/3.0、TLS 1.0/1.1)不是“加一道锁”,而是移除一把随时可能被撬开的旧钥匙。只要这些协议在系统底层未被显式关闭,攻击者就可能通过降级攻击强制建立不安全连接——哪怕你的应用默认启用 TLS 1.2。
确认当前协议启用状态
动手前先摸清底数,避免误操作导致服务中断:
- 用 Nmap 远程检测:运行
nmap --script ssl-enum-ciphers -p 443 your-server-ip,查看输出中是否列出TLSv1.0或TLSv1.1 - 本地验证:打开注册表编辑器,定位到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols,检查各子项(如 SSL 2.0、TLS 1.0)下是否存在 Client 和 Server 子键;若存在且其 Enabled 值为
1,说明该协议仍启用 - 注意:IIS 或应用程序层配置(如 web.config)不能替代系统级禁用,SChannel 层才是最终控制点
注册表方式精准禁用协议
直接修改 SChannel 协议开关,适用于所有依赖 Windows 加密栈的服务(IIS、SQL Server、RDP 等):
- 对每个需禁用的协议(如 TLS 1.0),在注册表中创建或进入路径:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\TLS 1.0\Server - 新建 DWORD (32-bit) 值,命名为 Enabled,设为
0 - 同样在 Client 子键下设置 Enabled = 0(防止本机作为客户端发起不安全连接)
- 重复操作,依次处理 SSL 2.0、SSL 3.0、TLS 1.1;无需删除键值,设为 0 即可生效
重启服务与验证修复效果
修改后必须重启相关服务,否则新策略不会加载:
- 重启 World Wide Web Publishing Service(IIS)或整个服务器(推荐)
- SQL Server 需额外注意:若使用 2014 或更早版本,禁用 TLS 1.0 后务必安装 KB3135244 等补丁,否则连接会失败
- 验证工具推荐组合:
– 再次运行 Nmap 确认输出中不再出现已禁协议
– 使用 OpenSSL 手动测试:openssl s_client -connect your-server:443 -tls1(应返回 handshake failure)
– Nessus 或 Qualys SSL Labs 报告中对应条目应变为 “Not Supported”
配套加固建议不可跳过
禁用老旧协议只是起点,还需同步清理潜在风险面:
- 禁用 SMBv1:执行
Disable-WindowsOptionalFeature -Online -FeatureName SMB1Protocol -NoRestart,再重启 - 关闭 NetBIOS over TCP/IP:网卡属性 → IPv4 → 高级 → WINS → 选“禁用 TCP/IP 上的 NetBIOS”
- 停用非必要服务:如 Print Spooler、Remote Registry、Telnet,统一设为“禁用”启动类型
- 确保系统已打齐补丁,特别是涉及 Schannel 和 TLS 支持的更新(如 KB4474419、KB4534310)

















