12月9日,一个影响 Apache Log4j2 2.0<=2.14.1版本的零日漏洞被公开。
Graylog 使用 Log4j 2 Java库来记录自身的日志信息。该库的2.15.0之前的版本容易受到远程代码执行攻击,特别是当作为用户输入发送的特定值将由 Graylog 记录时。有关该漏洞的更多详细信息,请参阅CVE-2021-44228
代码语言:javascript复制https://nvd.nist.gov/vuln/detail/CVE-2021-44228
Apache发布了新的Log4j来修复该漏洞,Graylog 开发团队立即将此修复程序整合到该平台的所有支持版本(v3.3.15、v4.0.14、v4.1.9 和 v4.2.3)中。
受影响的 GRAYLOG 版本
All Versions >= 1.2.0 和 <= 4.2.2
Graylog 官方建议用户立即升级到适当的版本
代码语言:javascript复制https://www.graylog.org/post/graylog-update-for-log4j
(图片可点击放大查看)
下面以GrayLog 4.1.5为例,简单介绍GrayLog升级到最新安全版本4.2.3的步骤
1、确认当前GrayLog版本
代码语言:javascript复制rpm -aq | grep graylog
(图片可点击放大查看)
(图片可点击放大查看)
2、卸载graylog4.1的repo仓库
代码语言:javascript复制yum remove graylog-4.1-repository-1-3.noarch
(图片可点击放大查看)
3、使用最新的graylog repo
代码语言:javascript复制https://packages.graylog2.org/repo/packages/graylog-4.2-repository_latest.rpm
(图片可点击放大查看)
(图片可点击放大查看)
代码语言:javascript复制wget https://packages.graylog2.org/repo/packages/graylog-4.2-repository_latest.rpm
rpm -ivh graylog-4.2-repository_latest.rpm
yum clean all
yum makecache
4、升级graylog-server至最新安全版本
代码语言:javascript复制yum update graylog-server
systemctl restart graylog-server.service
tail -f /var/log/graylog-server/server.log
(图片可点击放大查看)
(图片可点击放大查看)
在上面server.log中的WARN日志,建议开启Elasticsearch安全认证
代码语言:javascript复制https://www.elastic.co/guide/en/elasticsearch/reference/7.14/security-minimal-setup.html
GrayLog添加用户密码认证接入Elasticsearch
1、elastic开启xpack.security
代码语言:javascript复制vim /etc/elasticsearch/elasticsearch.yml
加入如下一行
xpack.security.enabled: true
cat /etc/elasticsearch/elasticsearch.yml | grep -v ^#
systemctl restart elasticsearch.service
(图片可点击放大查看)
2、 给保留用户elastic设置密码
代码语言:javascript复制/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
(图片可点击放大查看)
3、验证elasticsearch用户密码
代码语言:javascript复制curl -u elastic:elastic@2021 http://127.0.0.1:9200
(图片可点击放大查看)
4、重新修改内置用户elastic的密码
因为elasticsearch-setup-passwords interactive命令只能使用一次,所以采用如下方式进行修改
代码语言:javascript复制curl -X POST -u elastic:elastic@2021 "localhost:9200/_security/user/elastic/_password?pretty" -H 'Content-Type: application/json' -d' { "password" : "elastic2021" } '
(图片可点击放大查看)
为什么修改密码?因为下面在配置Graylog对接Elasticsearch时不支持密码中含@特殊符号,试过转义也不行
(图片可点击放大查看)
5、修改graylog配置文件中elasticsearch_hosts配置
代码语言:javascript复制vim /etc/graylog/server/server.conf
添加如下一行
elasticsearch_hosts = http://elastic:elastic2021@127.0.0.1:9200
(图片可点击放大查看)
6、重启GrayLog-server服务
代码语言:javascript复制systemctl restart graylog-server.service
tail -f /var/log/graylog-server/server.log
(图片可点击放大查看)
7、验证graylog升级后版本信息
代码语言:javascript复制rpm -aq | grep graylog
可以看到升级到了4.2.3版本 为什么说是安全版本?
代码语言:javascript复制ps -ef | grep log4j2.formatMsgNoLookups=true
因为开启了log4j2.formatMsgNoLookups=true
(图片可点击放大查看)
当然不升级版本,在JAVA_OPTS启动参数里加该配置也是可以的
(图片可点击放大查看)
8、这时重新验证漏洞是否存在
发现elasticsearch组件仍存在漏洞
(图片可点击放大查看)
Elasticsearch 官方安全公告 (ESA-2021-31)
Log4j 是包括 Elasticsearch 在内的无数 Java 应用程序使用的标准日志记录库。由于我们使用了 Java 安全管理器,Elasticsearch 不易受此漏洞的远程代码执行影响,但是很快我们将提供 Elasticsearch 6.8.21 和 7.16.1,这将删除易受攻击的 Log4j 组件并设置下面标识的 JVM 选项。
如果要彻底修复,还是等elasticsearch7.16.1版本发布后升级更新Elasticsearch至7.16.1版本
可以参考如下链接
代码语言:javascript复制https://discuss.elastic.co/t/apache-log4j2-remote-code-execution-rce-vulnerability-cve-2021-44228-esa-2021-31/291476
https://mp.weixin.qq.com/s/sGFjVyjoyt32p2gCL05A7Q
9、验证Graylog服务是否正常
(图片可点击放大查看)
(图片可点击放大查看)