一份关于windows server服务器的安全漏洞处理建议(来自绿盟安全评估)
文章目录
前言一、服务器主机存在漏洞应该怎么修复?
二、报告中的高危漏洞(部分展示)1.Microsoft Windows CredSSP 远程执行代码漏洞(CVE-2018-0886)2.SSL/TLS协议信息泄露漏洞(CVE-2016-2183)3.SSL/TLS RC4 信息泄露漏洞(CVE-2013-2566)4.SSL/TLS 受诫礼(BAR-MITZVAH)攻击漏洞(CVE-2015-2808)5.SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱6.nginx 缓冲区错误漏洞(CVE-2022-41741)7.nginx 越界写入漏洞(CVE-2022-41742)8.ICMP timestamp请求响应漏洞9.允许Traceroute探测10.隐藏计算机名称信息11.Windows终端服务器通信加密级别检查
总结
前言
文章来由,友商服务器最近做了一次安全评估,领导让协助处理下漏洞修复。根据这份绿盟安全评估中的服务器漏洞扫描分析结果,做了下面的修复过程和总结,希望对看到小伙伴有帮助。
提问:为什么要做安全漏洞修补?
据市场研究公司Gartner研究报告称“实施漏洞管理的企业会避免近90%的攻击”。可以看出,及时的漏洞修补可以在一定程度上防止病毒、攻击者的威胁。
一、服务器主机存在漏洞应该怎么修复?
a. 建议所有Windows系统使用"Windows Update"进行更新。 b. 对于大量终端用户而言,可以采用WSUS进行自动补丁更新,也可以采用补丁分发系统及时对终端用户进行补丁更新。 c. 对于存在弱口令的系统,需在加强使用者安全意识的前提下,督促其修改密码,或者使用策略来强制限制密码长度和复杂性。 d. 对于存在弱口令或是空口令的服务,在一些关键服务上,应加强口令强度,同时需使用加密传输方式,对于一些可关闭的服务来说,建议 关闭该服务以达到安全目的。 e. 对于UNIX系统订阅厂商的安全公告,与厂商技术人员确认后进行漏洞修补、补丁安装、停止服务等。 f. 由于其他原因不能及时安装补丁的系统,考虑在网络边界、路由器、防火墙上设置严格的访问控制策略,以保证网络的动态安全。 g. 建议网络管理员、系统管理员、安全管理员关注安全信息、安全动态及最新的严重漏洞,攻与防的循环,伴随每个主流操作系统、应用服务的生命周期。 h. 建议采用远程安全评估系统定期对网络进行评估,真正做到未雨绸缪。
二、报告中的高危漏洞(部分展示)
1.Microsoft Windows CredSSP 远程执行代码漏洞(CVE-2018-0886)
漏洞名称: Microsoft Windows CredSSP 远程执行代码漏洞(CVE-2018-0886) 详细描述: Windows是一款由美国微软公司开发的窗口化操作系统。
凭据安全支持提供程序协议 (CredSSP) 中存在远程执行代码漏洞。成功利用此漏洞的攻击者可以在目标系统上中继用户凭据并使用其执行代码。
来源:Microsoft 链接:https://portal.msrc.microsoft.com/zh-CN/security-guidance/advisory/CVE-2018-0886
解决办法
厂商补丁:Microsoft
Microsoft 已经为此发布了一个安全公告(CVE-2018-0886)以及相应补丁: CVE-2018-0886: Microsoft Windows CredSSP 远程执行代码漏洞. 链接: https://portal.msrc.microsoft.com/zh-CN/security-guidance/advisory/CVE-2018-0886
2.SSL/TLS协议信息泄露漏洞(CVE-2016-2183)
漏洞名称 SSL/TLS协议信息泄露漏洞(CVE-2016-2183)【原理扫描】【可验证】 详细描述 TLS是安全传输层协议,用于在两个通信应用程序之间提供保密性和数据完整性。
TLS, SSH, IPSec协商及其他产品中使用的IDEA、DES及Triple DES密码或者3DES及Triple 3DES存在大约四十亿块的生日界,这可使远程攻击者通过Sweet32攻击,获取纯文本数据。
来源:Karthik Bhargavan Gaetan Leurent 链接:https://www.openssl.org/news/secadv/20160922.txt
解决办法
建议:避免使用IDEA、DES和3DES算法
1、OpenSSL Security Advisory [22 Sep 2016] 链接:https://www.openssl.org/news/secadv/20160922.txt 请在下列网页下载最新版本: https://www.openssl.org/source/ 2、对于nginx、apache、lighttpd等服务器禁止使用DES加密算法 主要是修改conf文件 3、Windows系统可以参考如下链接: https://social.technet.microsoft.com/Forums/en-US/31b3ba6f-d0e6-417a-b6f1-d0103f054f8d/ssl-medium-strength-cipher-suites-supported-sweet32cve20162183?forum=ws2016
https://docs.microsoft.com/zh-cn/troubleshoot/windows-server/windows-security/restrict-cryptographic-algorithms-protocols-schannel 验证方法 根据SSL/TLS协议信息泄露漏洞(CVE-2016-2183)原理,通过发送精心构造的数据包到目标服务,根据目标的响应情况,验证漏洞是否存在
3.SSL/TLS RC4 信息泄露漏洞(CVE-2013-2566)
漏洞名称: SSL/TLS RC4 信息泄露漏洞(CVE-2013-2566)【原理扫描】【可验证】 详细描述: 安全套接层(Secure Sockets Layer,SSL),一种安全协议,是网景公司(Netscape)在推出Web浏览器首版的同时提出的,目的是为网络通信提供安全及数据完整性。SSL在传输层对网络连接进行加密。传输层安全(Transport Layer Security),IETF对SSL协议标准化(RFC 2246)后的产物,与SSL 3.0差异很小。
SSL/TLS内使用的RC4算法存在单字节偏差安全漏洞,可允许远程攻击者通过分析统计使用的大量相同的明文会话,利用此漏洞恢复纯文本信息。 解决办法
建议:避免使用RC4算法
1、禁止apache服务器使用RC4加密算法 vi /etc/httpd/conf.d/ssl.conf 修改为如下配置 SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!RC4 重启apache服务 2、关于lighttpd加密算法 在配置文件lighttpd.conf中禁用RC4算法,例如: ssl.cipher-list = “EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4” 重启lighttpd 服务。
3、Windows系统建议参考官网链接修复: https://support.microsoft.com/en-us/help/2868725/microsoft-security-advisory-update-for-disabling-rc4
验证方法: 根据SSL/TLS RC4 信息泄露漏洞(CVE-2013-2566)原理,通过发送精心构造的数据包到目标服务,根据目标的响应情况,验证漏洞是否存在
注意: 这个server2012 KB2868725补丁打不上,有说用KB2992611或者KB2871997可以同作用修复这个漏洞,下载测试也一样安装不上,测试了好多方法,最后用注册表方式解决,内容如下:
先执行这:
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\DES56/56]“Enabled”=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\NULL]“Enabled”=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC240/128]“Enabled”=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC256/128]“Enabled”=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC440/128]“Enabled”=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC456/128]“Enabled”=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC464/128]“Enabled”=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\PCT1.0\Server]“Enabled”=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL2.0\Server]“Enabled”=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL3.0\Server]“Enabled”=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Protocols\SSL3.0\Client]“DisabledByDefault”=dword:00000001
再执行这个:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers]
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 128/128] “Enabled”=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 40/128] “Enabled”=dword:00000000
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\SCHANNEL\Ciphers\RC4 56/128] “Enabled”=dword:00000000
4.SSL/TLS 受诫礼(BAR-MITZVAH)攻击漏洞(CVE-2015-2808)
漏洞名称: SSL/TLS 受诫礼(BAR-MITZVAH)攻击漏洞(CVE-2015-2808)【原理扫描】【可验证】 详细描述: SSL/TLS协议是一个被广泛使用的加密协议,Bar Mitzvah攻击实际上是利用了"不变性漏洞",这是RC4算法中的一个缺陷,它能够在某些情况下泄露SSL/TLS加密流量中的密文,从而将账户用户名密码,信用卡数据和其他敏感信息泄露给黑客。
解决办法 临时解决方法:
SSL/TLS
1、禁止apache服务器使用RC4加密算法 vi /etc/httpd/conf.d/ssl.conf 修改为如下配置 SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5:!RC4 重启apache服务 2、关于nginx加密算法 1.0.5及以后版本,默认SSL密码算法是HIGH:!aNULL:!MD5 0.7.65、0.8.20及以后版本,默认SSL密码算法是HIGH:!ADH:!MD5 0.8.19版本,默认SSL密码算法是 ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM 0.7.64、0.8.18及以前版本,默认SSL密码算法是ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP 低版本的nginx或没注释的可以直接修改域名下ssl相关配置为 ssl_ciphers “ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES 256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GC M-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4”; ssl_prefer_server_ciphers on; 需要nginx重新加载服务
3、关于lighttpd加密算法 在配置文件lighttpd.conf中禁用RC4算法,例如: ssl.cipher-list = “EECDH+AESGCM:EDH+AESGCM:ECDHE-RSA-AES128-GCM-SHA256:AES256+EECDH:AES256+EDH:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA256:ECDHE-RSA-AES256-SHA:ECDHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:DES-CBC3-SHA:HIGH:!aNULL:!eNULL:!EXPORT:!DES:!MD5:!PSK:!RC4”
重启lighttpd 服务。
4、tomcat参考: https://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html https://tomcat.apache.org/tomcat-7.0-doc/ssl-howto.html
5、浏览器手工屏蔽方案 Windows 用户: 1)完全关闭 Chrome 浏览器和Mozilla Firefox浏览器 2)复制一个平时打开 Chrome 浏览器(Mozilla Firefox浏览器)的快捷方式 3)在新的快捷方式上右键点击,进入属性 4)在「目标」后面的空格中字段的末尾输入以下命令 --cipher-suite-blacklist=0x0004,0x0005,0xc011,0xc007
Mac OS X 用户: 1)完全关闭 Chrome 浏览器 2)找到本机自带的终端(Terminal) 3)输入以下命令:/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --cipher-suite-blacklist=0x0004,0x0005,0xc011,0xc007
Linux 用户: 1)完全关闭 Chrome 浏览器 2)在终端中输入以下命令:google-chrome --cipher-suite-blacklist=0x0004,0x0005,0xc011,0xc007
如果扫描器跟目标机之间存在WAF,请优先检查WAF配置。 验证方法 根据SSL/TLS 受诫礼(BAR-MITZVAH)攻击漏洞(CVE-2015-2808)原理,通过发送精心构造的数据包到目标服务,根据目标的响应情况,验证漏洞是否存在
5.SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱
漏洞名称: SSL/TLS 服务器瞬时 Diffie-Hellman 公共密钥过弱【原理扫描】 详细描述: 安全套接层(Secure Sockets Layer,SSL),一种安全协议,是网景公司(Netscape)在推出Web浏览器首版的同时提出的,目的是为网络通信提供安全及数据完整性。SSL在传输层对网络连接进行加密。传输层安全TLS(Transport Layer Security),IETF对SSL协议标准化(RFC 2246)后的产物,与SSL 3.0差异很小。
当服务器SSL/TLS的瞬时Diffie-Hellman公共密钥小于等于1024位时,存在可以恢复纯文本信息的风险。
DHE man-in-the-middle protection (Logjam)
https://www.openssl.org/blog/blog/2015/05/20/logjam-freak-upcoming-changes/ https://weakdh.org/sysadmin.html https://en.wikipedia.org/wiki/DiffieE28093Hellman_key_exchange#Security
解决办法
一. http服务器相关配置 1.首先生成大于1024bit(例如2048bit)的dhkey openssl dhparam -out dhparams.pem 2048
2.然后在对应服务器中配置
Apache2.4.8及以后版本 使用如下配置命令配置(http.conf中或者对应的虚拟主机配置文件中添加) SSLOpenSSLConfCmd DHParameters “{path to dhparams.pem}”
Apache2.4.7版本 Apache2.2.31版本及以后版本 redhat debian等大多发行版中最新Apache2.2.x 通过把dhparams.pem的内容直接附加到证书文件后
Apache2.4.7之前2.4.x版本 Apache2.2.31之前版本 dhparam默认为1024bit 无法修改
nginx使用如下命令配置(在对应的虚拟主机配置文件nginx.conf中server字段内添加) ssl_dhparam {path to dhparams.pem}
二.如果服务器配置无法修改,例如Apache2.2.31之前版本,可以禁用DHE系列算法,采用保密性更好的ECDHE系列算法,如果ECDHE不可用可以采用普通的 RSA。
更多解决方案请参考: https://weakdh.org/sysadmin.html
6.nginx 缓冲区错误漏洞(CVE-2022-41741)
漏洞名称: nginx 缓冲区错误漏洞(CVE-2022-41741) 详细描述: 此插件基于版本检测,有可能误报,未开启 MP4 模块的nginx属于误报,请忽略该漏洞。 Nginx是美国Nginx公司的一款轻量级Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 Nginx在 ngx_http_mp4_module 中存在漏洞,这可能允许攻击者激发 worker 进程的崩溃,或者通过使用特制的 mp4 文件致使 worker 进程出现内存泄露。该问题仅影响启用了 ngx_http_mp4_module 模块(默认不启用)并在配置文件中使用 .mp4 指令的 NGINX。此外,只有当攻击者能够触发使用 ngx_http_mp4_module 对特制 mp4 文件的进行处理时,攻击才有可能成功。
https://mailman.nginx.org/pipermail/nginx-announce/2022/RBRRON6PYBJJM2XIAPQBFBVLR4Q6IHRA.html
解决办法 缓解措施:只允许受信用户发布音频和视频文件,或者在 NGINX 配置中禁用 MP4 模块,直到升级至修复版本。
厂商补丁: 目前厂商已发布升级补丁以修复漏洞,补丁获取链接: http://nginx.org/download/patch.2022.mp4.txt
7.nginx 越界写入漏洞(CVE-2022-41742)
漏洞名称: nginx 越界写入漏洞(CVE-2022-41742) 详细描述: 此插件基于版本检测,有可能误报。 Nginx是美国Nginx公司的一款轻量级Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 Nginx Plus 的模块 ngx_http_hls_module 中存在一个漏洞,该漏洞可能允许本地攻击者破坏 NGINX 的工作进程内存,从而导致其崩溃或在使用特制的音频或视频文件时产生其他潜在的影响。只有当配置文件中使用 hls 指令时,该问题才会影响 Nginx Plus。 此外,只有当攻击者可以触发使用模块 ngx_http_hls_module 对特制音频或视频文件进行 处理时,攻击才有可能成功。一次成功的利用可能允许一个本地攻击者破坏 NGINX 的 worker 进程,导致其中止或其他潜在的影响。
https://mailman.nginx.org/pipermail/nginx-announce/2022/RBRRON6PYBJJM2XIAPQBFBVLR4Q6IHRA.html 解决办法 缓解措施:只允许受信用户发布音频和视频文件。或者在 NGINX 配置中禁用 HLS 模块,直到升级至修复版本,可缓解此风险。
厂商补丁: 目前厂商已发布升级补丁以修复漏洞,补丁获取链接: http://nginx.org/download/patch.2022.mp4.txt
8.ICMP timestamp请求响应漏洞
漏洞名称:ICMP timestamp请求响应漏洞 详细描述:远程主机会回复ICMP_TIMESTAMP查询并返回它们系统的当前时间,这可能允许攻击者攻击一些基于时间认证的协议
解决办法
在防火墙上过滤外来的ICMP timestamp(类型 13)报文以及外出的ICMP timestamp回复报文
详细操作 注:13,14是ICMP timestamp 请求响应漏洞的规则,11是允许Traceroute探测 一、 windows系统 < ctrl > + < r > 打开cmd命令行,输入命令:netsh firewall set icmpsetting 13 disable 二、 Linux系统 编辑etc/sysconfig/iptables文件,在防火墙规则里面添加如下记录: -A RH-Firewall-1-INPUT -p ICMP --icmp-type timestamp-request -j DROP -A RH-Firewall-1-INPUT -p ICMP --icmp-type timestamp-reply -j DROP 或在终端命令行输入以下命令: sudo iptables -A INPUT -p ICMP --icmp-type timestamp-request -j DROP sudo iptables -A INPUT -p ICMP --icmp-type timestamp-reply -j DROP 输入完成,保存修改后的规则:service iptables save 重启iptables服务:service iptables restart 检查新添加的规则是否有效,检查命令:iptables -L -n
9.允许Traceroute探测
漏洞名称: 允许Traceroute探测 详细描述: 本插件使用Traceroute探测来获取扫描器与远程主机之间的路由信息。攻击者也可以利用这些信息来了解目标网络的网络拓扑。
解决办法
在防火墙出站规则中禁用echo-reply(type 0)、time-exceeded(type 11)、destination-unreachable(type 3)类型的ICMP包。
Windows下使用powershell修改防火墙(测试可用,完美解决)
New-NetFirewallRule -DisplayName “Disable Outbound ICMP0” -Direction “Outbound” -Protocol “ICMPv4” -ICMPType 0 -Action “Block” New-NetFirewallRule -DisplayName “Disable Outbound ICMP11” -Direction “Outbound” -Protocol “ICMPv4” -ICMPType 11 -Action “Block” New-NetFirewallRule -DisplayName “Disable Outbound ICMP3” -Direction “Outbound” -Protocol “ICMPv4” -ICMPType 3 -Action “Block”
10.隐藏计算机名称信息
1、在键盘上按“WIN+R”组合键,打开运行界面,输入“CMD”命令,打开命令提示符界面; 2、在命令提示符界面中,输入“netconfigserver/hidden:yes”命令,按回车。即可在局域网中隐藏自己的计算机名想要知道是否隐藏成功,再输入“netconfigserver”命令,在输出的结果中,“服务器已隐藏”字样被设置为“yes”,说明设置成功了; 3、如果需要取消隐藏,着可在命令提示窗中输入“netconfigserver/hidden:no”命令,按回车即可。
11.Windows终端服务器通信加密级别检查
漏洞名称: Windows终端服务器通信加密级别检查 详细描述: Microsoft Windows远程桌面协议用于连接Windows终端服务。RDP是客户端和服务端之间的通信协议。
终端服务器和客户端通信采用RC4算法加密,在如下选项:
管理工具->终端服务器配置->rdp-tcp->常规选项卡->加密级别
设置为中或客户端兼容或低时,允许使用或只能使用40或56位的密钥加密通信数据,40或56位密钥对于保护机密数据是远远不够的。如果您的当前终端服务器支持128位加密密钥,将该选项设置为高将强制使用128密钥加密通信数据。 解决办法 按如下步骤进行操作:
管理工具->终端服务器配置->rdp-tcp->常规选项卡->加密级别
将该选项设置为“高”。
注意,该设置将使得强制使用128位RC4加密通信数据,不支持128位加密的老客户端可能无法连接服务器。
windows server 2008 windows server 2012
总结
这个报告是合作单位的服务器安全评估出来的,帮忙协助处理下,希望对看到的小伙伴有所帮助,有问题咱们一起讨论实践哦。