PCI DSS 不合规解决方案
2020/05/14 更新
PCI DSS 不合规和 SSL CVE-2016-2107 漏洞修复 都需要重新检测,SSL CVE-2016-2107 漏洞修复 里面提到的 专项测试 可能因为网络状态一直无法返回结果,国外的 SSL 检测网站 也因为网络状态查询速度较慢,推荐使用 国内的测试。
为什么按照要求更新了 OpenSSL 版本,也修改了 TLS 协议相关的配置,但检测结果仍然不理想呢?
不管是 SSL CVE-2016-2107 漏洞修复 还是当前的 PCI DSS 不合规,在最后都需要重启服务器,前者还需要重启 PHP-FPM。
为什么我重启了服务器,检测结果还是没有变化呢?需要检查两点:
- Apache 服务器下 httpd 服务状态是否为
httpd dead but subsys locked
- 国内的 SSL 测试 报告检测时间是否为当前时间
这两点都是我自己碰到的情况,按照流程做了所有的操作,我也以为应该没事了,但事实并不如意。多次重启服务器无果,甚至下载了 openssl CVE-2016-2107 漏洞检测 - 我是地瓜 - cnblogs 作者拿专项测试里 git 源码进行编译的可执行脚本放到服务器上测试,显示 Vulnerable true
,意思这项是存在漏洞的,检测阳性。这意味着我们的改动在服务器环境中没有生效。
我的服务器是 httpd 2.2.27 版本,openssl version
返回 OpenSSL 1.0.1t 3 May 2016
,ssl 协议也按照下面的教程改了。每次重启服务器都是直接 pkill httpd
,然后 service httpd start
,虽然服务状态总是有点不正常 httpd dead but subsys locked
。今天是想解决这个服务器状态不正常的问题,先杀死所有httpd 进程,然后删除 /var/lock/subsys/httpd
(锁文件,系统关闭的过程(发出关闭信号,调用服务自身的进程)中会检查 /var/lock/subsys
下的文件,逐一关闭每个服务,如果某一运行的服务在 /var/lock/subsys
下没有相应的选项,在系统关闭的时候,会像杀死普通进程一样杀死这个服务。),service httpd start
启动服务,虽然服务状态没有达到预期 is running...
,但用上面下载的测试脚本执行,检测阴性,漏洞排除了。惊不惊喜,意不意外? (╯‵□′)╯︵┴─┴
无心插柳柳成荫。后面用 国内的 SSL 测试 检测,刷新报告,当前状态都正常了。
ps:国内的检测网站报告里有一个相关域名,其实就是 www.xx.com 子域名 和 xx.com 的主域名,显示红色,评级还是 F。这个不用去纠结,其实都是一个站点,看检测日期就知道是之前的报告了。这些网站检测一次,会把你的检测报告存起来,估计会做一些数据分析,不用理会。
通过 https://myssl.com/ 网站检测 SSL 服务情况,概述里提到 PCI DSS 不合规。
PCI DSS 是什么?
以下部分内容摘自:HTTPS 安全最佳实践 — 更严格的PCI DSS合规标准
PCI DSS,全称 Payment Card Industry Data Security Standard,第三方支付行业数据安全标准,是由PCI安全标准委员会制定,力在使国际上采用一致的数据安全措施。
早在去年6月30号PCI安全标准委员会官方发表博文将于2018年6月30号(最晚),也就是本月月底禁用早期SSL/TLS,并实施更安全的加密协议(TLS v1.1或更高版本,强烈建议使用TLS v1.2)以满足PCI数据安全标准的要求,从而保护支付数据。
随着时间的临近,我们提前调整了PCI DSS合规判定标准(在原有的标准之上,支持TLS v1.0或更早的加密协议将会判定为不合规),方便您提前调整您的服务以避免违规的风险。
所以,出现 PCI DSS 不合格大概率就是采用了 TLS v1.0 或更早的加密协议。所以配置指南里的推荐配置 TLSv1 TLSv1.1 TLSv1.2
应该是 TLSv1.1 TLSv1.2
(openssl1.0.1+ 版本支持 TLS1.1 和 TLS1.2协议,openssl1.1.1,支持 TLS 1.3)。
Nginx 的配置方法:
ssl_protocols TLSv1.1 TLSv1.2;
Apache 配置方法:
SSLProtocol all -TLSv1 -SSLv2 -SSLv3
[notice]不论是 Nginx 还是 Apache 都有对 SSL 有独立的配置文件,里面有默认的虚拟主机设置,记得要同步修改,或者注释掉默认的虚拟主机配置。在修改完配置后需要重启服务器。[/notice]