最近,搞IT的小伙伴们我想都知道Apache被爆出来的这个Log4j2远程代码执行漏洞,这个漏洞可以说影响范围极广,危害性非常强,所以大家一定要小心!Apache Log4j2是一个基于Java的日志记录工具,当程序将用户输入的数据进行日志记录时,即可触发此漏洞,成功利用此漏洞可以在目标服务器上执行任意代码。那么,我们如何快速地排查我们运行着的服务器是否存在这个Log4j2漏洞风险呢?本人当时一出来这个漏洞告警第一时间就排查出来了,可以说一条命令就得出结论,排查出我们大量服务器是否存在Apache Log4j2远程代码执行漏洞!!!本篇就来介绍一下本人的排查思路,大家可以参看一下哈~
最简单的思路是查看服务器是否存在Log4j组件,那么Linux运维工程师们一条命令如下:
find / -name “*log4j-*.jar”
我们查找有没有存在这个log4j包的路径就行了,如果有的话就深入分析自己运行的版本是否有影响,现在受影响的版本是Apache log4j2 2.0 – 2.14.1的版本。
那么如果只有少量服务器还好,有大量成百上千的服务器一台台去查看不得累死,所以就得有批量执行查看的思路,本人这里就采用了Ansible这款批量自动化运维神器了,在Ansible主机上执行命令如下:
ansible Linux -m command -a “find / -name ‘*log4j-*.jar'”
这条命令后,被ansible管理的所有远程主机会全部执行find命令后搜索显示结果,这样我们是不是第一时间就可排查出来了。
如果大家要确认服务器运行着的Log4j到底是否有影响,这里有个脚本可以排查,下载链接如下:
https://static.threatbook.cn/tools/log4j-local-check.sh,脚本原理是首先通过读取系统中所有打开的文件,来读取所有加载了的log4j的jar包,然后识别log4j 2.x的jar包文件名特征来识别出结果,如果没检测出来,则对其他jar包进行正则匹配 log4j-core,看是否有引用该jar包,如果显示 jar包路径,则说明存在该漏洞,没有则说明没有直接加载log4j对应jar包。
以下运行结果表示不存在log4j2漏洞风险。
以下运行结果表示存在log4j2漏洞风险,可以看到运行的log4j版本为2.13.3为受影响的版本。
接下来我们通过Ansible批量执行这个shell脚本命令如下:
ansible Linux -m script -a “/root/log4j-check.sh”
最后,我们所有的服务器运行log4j情况是不是就一目了然地展现出来了,就可以迅速排查出log4j2漏洞风险了。
转载作品,原作者:IT老良,文章来源:https://www.toutiao.com/i7045919273641902599