【已修复Log4j2漏洞】GrayLog安全版本4.2.3升级实践

2021-12-14 14:03:17 浏览数 (1)

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服务是否正常

(图片可点击放大查看)

(图片可点击放大查看)

0 人点赞