本文概述了作者在两会期间对星瀚5.011私有云部署客户系统进行安全加固的过程。作者首先根据客户提供的漏洞清单,将加固工作分为应用风险漏洞和Linux系统风险两大类进行。针对应用风险漏洞,作者通过更新容器镜像、删除特定jar文件等方式逐一修复了包括Logback、Apache Hadoop、PostgreSQL JDBC Driver等组件的漏洞。对于Linux系统风险,作者升级了多维数据库、Nginx、Redis、Kafka、Docker runc等中间件,并对log4j进行了详细修复。此外,还处理了Redis权限、nginx配置和docker calico版本升级等问题。整个加固过程耗时约8小时,并建议实际操作中每一步都进行验证。
最近又开两会了。每年3月份都是运维同学忙的时间,后面很多系统排队加固,我就上周完成的一个客户加固过程分享给大家:
客户是星瀚5.011私有云部署,前期做了漏洞扫描并提供了漏洞清单。具体要求是指定时间内完成漏洞修复。
首先。客户提供的分析报告,它分成【应用风险漏洞】、【linux系统风险】两大类,跟等保安全认证比起来其实还缺少安全制度和数据库安全和网络安全监测等项目,说明这次加固任务并不是很多,我将之前实施同学发给总部的反馈资料进行整理,实际行动分开进行。
此次工作的难点在于客户没有测试环境,所以首先与客户沟通进行了环境快照,星瀚的服务器通常会大于3台,首先辨别出需要安装补丁的是哪几台,然后再安排快照即可。本次更新仅需要将容器服务和中间件服务的4台机器进行快照即可。
快照完成后,便根据风险排名由小至大进行加固,每步加固完成后尽量都进行初步业务验证。
-------------------------------------------------------------
Logback 远程代码执行漏洞(CVE-2021-42550) 对应策略 更新mservice镜像,从官网下载补丁后更新容器镜像重启容器
--------------------------------------------------------------
Apache Hadoop 命令注入漏洞(CVE-2022-25168)
Apache Commons Collections 反序列化漏洞 对应策略 更新fileserver镜像,从官网下载补丁后更新容器镜像重启容器
--------------------------------------------------------------
PostgreSQL JDBC Driver SQL注入漏洞(CVE-2022-31197) 对应策略 从应用仓库cosmic/trd的trd-drivers.zip文件中删除postgresql-42.2.16.jar
---------------------------------------------------------------
PostgreSQL JDBC Driver 远程代码执行漏洞(CVE-2022-21724) 对应策略 从应用仓库cosmic/trd的trd-drivers.zip文件中删除postgresql-42.2.16.jar
----------------------------------------------------------------
Apache Hadoop 命令注入漏洞(CVE-2022-25168) 对应策略 从应用仓库cosmic/trd的trd-legacy.zip文件中删除hadoop-common-2.10.1.jar(实际修改cosmic/trd的trd-drivers.zip)
-------------------------------------------------------------------
以上步骤对对应应用风险漏洞的内容,风险较少,注意随时备份,大致耗时3小时。
下面继续处理苍穹平台的漏洞,主要就是更新各类中间件的工作,稍微分析了一下,log4j步骤比较复杂放在最后,先处理其他几个中间件。
------------------------------------------------
Logback 远程代码执行漏洞(CVE-2021-42550)
Shiro 权限绕过漏洞(CVE-2021-41303)
Shiro 身份认证绕过漏洞(CVE-2022-32532)
Shiro 身份认证绕过漏洞(CVE-2022-40664) 对应策略 下载官网mdd包进行升级(就是升级多维数据库,比较简单)
----------------------------------------------------
Nginx DNS解析漏洞(CVE-2021-23017) 对应策略 升级nginx(需要重启,很快)
----------------------------------------------------
Redis 整数溢出漏洞(CVE-2021-32762) 对应策略 升级redis(需要重启,业务稍微断一下)
----------------------------------------------------
Jackson-databind远程代码执行漏洞(CVE-2019-12384) 对应策略 升级 kafka(也是重启)
----------------------------------------------------
Docker runc容器逃逸漏洞(CVE-2021-30465) 对应策略 升级 runc到1.0.0-rc95(容器重启)
-----------------------------------------------------
至此第二部分修复完成,下面要对log4j进行升级,因为内容较多,所以总部直接给了一个修复文档专门描述。
Apache Log4j 远程代码执行漏洞(CVE-2021-44832)
Apache Log4j 远程代码执行漏洞(CVE-2021-44228、CVE-2021-45046)
Apache Log4j 拒绝服务漏洞(CVE-2021-45105) 对应策略 log4j2漏洞升级
只是这个步骤大概就用1个多小时(但是必须停机维护)
-------------------------------------------------------
Jackson-databind 反序列化漏洞(CVE-2020-36188、CVE-2020-36189)
Jackson-databind 反序列化远程代码执行漏洞(CVE-2020-24616)
Jackson-databind 反序列化漏洞(CVE-2020-35728)
Jackson-databind 反序列化漏洞(CVE-2020-35490、CVE-2020-35491)
Jackson-databind 远程代码执行漏洞(CVE-2020-9547、CVE-2020-9548)
Jackson-databind 反序列化漏洞(CVE-2021-20190)
Jackson-databind 反序列化漏洞(CVE-2020-36179、CVE-2020-36180、CVE-2020-36181、CVE-2020-36182)
这几个漏洞有一个统一的修复方法,就是在中间件进行端口屏蔽
我整理成表格按照顺序执行,(这一步不需要停机,在线进行即可)
----------------------------------------------------------------------
最后还有几个点需要处理,
Redis服务以root权限运行 需要使用指定用户运行服务
nginx的漏洞X-Frame-Options not in config file 需要修改配置文件
docer的 calico 版本需要升级(这个步骤我还要研究下离线更新的方案)
这几步骤都需要重启验证。
---------------------------------------------------------------------
关于这次星瀚加固的记录就先到这里,除去分析和整理,实际操作耗时2个半天(非常紧张且中间无干扰间断,包含每个组件的备份,脚本编写,还有分别验证的时间,这里强烈建议走一步验一步,否则出了问题都不知道怎么回退),正好满满8小时的工作内容。一般客户先测试再生产的工作量就*2便可,可以作为其他同学的工作量参考。至于详细的加固语句和方案执行记录说明我这里有完整的打包,可以单独找我索取。
推荐阅读