自主升级nginx-ingress-controller的内置nginx组件

前言

我们由于等保要求或者漏洞扫描,常常会遇到一些漏洞问题。这些漏洞可能不是你直接部署的服务的漏洞。可能是你部署的某个服务的内部组件的漏洞。这时你可能需要单独升级某个服务组件内部的组件。比如升级nginx-ingress-controller的ngix版本这样的需求。

漏洞描述

  • 各个版本情况:rancher:2.4.10、Kubernetes:1.18.0、rancher/nginx-ingress-controller:nginx-0.35.0-rancher2
  • 漏洞描述:nginx 安全漏洞(CVE-2021-23017)
  • 漏洞名称:nginx 安全漏洞(CVE-2021-23017)
    详细描述:Nginx是美国Nginx公司的一款轻量级Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。nginx存在安全漏洞,该漏洞源于一个离一错误在该漏洞允许远程攻击者可利用该漏洞在目标系统上执行任意代码。受影响版本:0.6.18-1.20.0
    解决办法:厂商补丁:目前厂商已发布升级补丁以修复漏洞,补丁获取链接:https://www.nginx.com/blog/updating-nginx-dns-resolver-vulnerability-cve-2021-23017/(不建议打补丁,可以采用升级的方法处理改漏洞,卸载安装,或者直接安装启用,都可以,nginx安装方法参考我前面的方法。)
    威胁分值:9.4
    危险插件:
    发现日期:2021-05-25
    CVE编号:CVE-2021-23017
    CNNVD编号:CNNVD-202105-1581
    CNCVE编号:CNCVE-202123017
    CVSS评分:6.8

    处理过程

  • 查看当前nginx-ingress-controller镜像系统情况、版本以及所用的nginx版本情况。进入容器内部 nginx -V 、 cat /etc/issue查看。一定要明确当前使用的nginx-ingress-controller镜像是基于alpine还是debian的!!!
  • 查找nginx 对应系统的安装包情况

        可以使用apk search --allow-untrusted nginx 进行查找最新版本。当然你可能需要指定镜像源后再查询:echo http://mirrors.aliyun.com/alpine/v3.18/main/ > /etc/apk/repositories。

        直接也可以直接在nginx和阿里的镜像源这里来查找:

Index of /packages/alpine/  、http://mirrors.aliyun.com/alpine/

以阿里云为例:

  •  更新nginx版本,制作新镜像

        由于线上无法联网,且尽量避免直接在线上操作。我们将rancher/nginx-ingress-controller:nginx-0.35.0-rancher2镜像下载到本地,然后确保本地机器可以连接网络后新开一个cmd窗口进行操作:

PS C:\Users\Administrator\Desktop> docker run -it -u root rancher/nginx-ingress-controller:nginx-0.35.0-rancher2 /bin/bash
bash-5.0# nginx -v
nginx version: nginx/1.19.2
bash-5.0# cat /etc/issue
Welcome to Alpine Linux 3.11
Kernel \r on an \m (\l)

bash-5.0# echo http://mirrors.aliyun.com/alpine/v3.18/main/ > /etc/apk/repositories
bash-5.0# apk add --upgrade --allow-untrusted nginx
fetch http://mirrors.aliyun.com/alpine/v3.18/main/x86_64/APKINDEX.tar.gz
(1/8) Upgrading musl (1.1.24-r2 -> 1.2.4-r2)
(2/8) Purging ca-certificates-cacert (20191127-r2)
(3/8) Installing ca-certificates-bundle (20230506-r0)
(4/8) Upgrading zlib (1.2.11-r3 -> 1.2.13-r1)
(5/8) Installing libcrypto3 (3.1.3-r0)
(6/8) Upgrading pcre (8.43-r0 -> 8.45-r3)
(7/8) Installing libssl3 (3.1.3-r0)
(8/8) Installing nginx (1.24.0-r6)
Executing nginx-1.24.0-r6.pre-install
Executing nginx-1.24.0-r6.post-install
Executing busybox-1.31.1-r9.trigger
Executing ca-certificates-20191127-r2.trigger
OK: 30 MiB in 42 packages
bash-5.0# nginx -v
nginx version: nginx/1.19.2                    ###这个地方还是现实1.19.2 但是应该是缓存问题,我们看到更新1.24.0已经成功了,所以尝试将容器保存为新的镜像试试
bash-5.0#

        由于我们开的是交互式窗口,所以不要退出,退出后容器就进不来了,所以再开一个cmd进行容器保存和测试:

#########新开一个cmd  将容器保存为镜像################
PS C:\Users\Administrator\Desktop\test> docker ps
CONTAINER ID   IMAGE                                                    COMMAND                   CREATED         STATUS         PORTS             NAMES
957cf78e4b8e   rancher/nginx-ingress-controller:nginx-0.35.0-rancher2   "/usr/bin/dumb-init …"   2 minutes ago   Up 2 minutes   80/tcp, 443/tcp   confident_robinson
PS C:\Users\Administrator\Desktop\test> docker commit -m="nginx-ingerss-controller自定义镜像基于apline3.11、nginx1.24.0" -a="yinghuo1129" 957cf78e4b8e 10.**.**.**:30000/ruifei/toos/nginx-ingerss-controller:nginx1.24.0-Release
sha256:b457932f1b5913c72d55e5acf315a31b50f9a0982384285122c513545180e996
PS C:\Users\Administrator\Desktop\test> docker run -it -u root 10.**.**.**:30000/ruifei/toos/nginx-ingerss-controller:nginx1.24.0-Release /bin/bash
bash-5.0# nginx -v
nginx version: nginx/1.24.0
bash-5.0# nginx -V
nginx version: nginx/1.24.0
built with OpenSSL 3.1.0 14 Mar 2023 (running with OpenSSL 3.1.3 19 Sep 2023)
TLS SNI support enabled
configure arguments: --prefix=/var/lib/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --pid-path=/run/nginx/nginx.pid --lock-path=/run/nginx/nginx.lock --http-client-body-temp-path=/var/lib/nginx/tmp/client_body --http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi --http-uwsgi-temp-path=/var/lib/nginx/tmp/uwsgi --http-scgi-temp-path=/var/lib/nginx/tmp/scgi --with-perl_modules_path=/usr/lib/perl5/vendor_perl --user=nginx --group=nginx --with-threads --with-file-aio --without-pcre2 --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-mail=dynamic --with-mail_ssl_module --with-stream=dynamic --with-stream_ssl_module --with-stream_realip_module --with-stream_geoip_module=dynamic --with-stream_ssl_preread_module --add-dynamic-module=/home/buildozer/aports/main/nginx/src/njs-0.7.11/nginx --add-dynamic-module=/home/buildozer/aports/main/nginx/src/ngx_devel_kit-0.3.2/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/traffic-accounting-nginx-module-2.0/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/array-var-nginx-module-0.06/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/nginx-auth-jwt-0.2.1/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/ngx_brotli-1.0.0rc/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/ngx_cache_purge-2.5.3/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/nginx_cookie_flag_module-1.1.0/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/nginx-dav-ext-module-3.0.0/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/echo-nginx-module-0.63/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/encrypted-session-nginx-module-0.09/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/ngx-fancyindex-0.5.2/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/ngx_http_geoip2_module-3.4/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/headers-more-nginx-module-0.34/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/nginx-keyval-0.1.0/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/nginx-log-zmq-1.0.0/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/lua-nginx-module-0.10.24/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/lua-upstream-nginx-module-0.07/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/naxsi-1.3/naxsi_src --add-dynamic-module=/home/buildozer/aports/main/nginx/src/nchan-1.3.6/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/redis2-nginx-module-0.15/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/set-misc-nginx-module-0.33/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/nginx-http-shibboleth-2.0.1/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/ngx_http_untar_module-1.1/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/nginx-upload-module-2.3.0/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/nginx-upload-progress-module-0.9.2/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/nginx-upstream-fair-0.1.3/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/ngx_upstream_jdomain-1.4.0/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/nginx-vod-module-1.31/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/nginx-module-vts-0.2.1/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/mod_zip-1.3.0/ --add-dynamic-module=/home/buildozer/aports/main/nginx/src/nginx-rtmp-module-1.2.2/
bash-5.0# exit
exit
PS C:\Users\Administrator\Desktop\test>

好,至此我们已经成功完成了nginx版本的升级得到了我们自己的新的nginx-ingerss-controller镜像,可以push到自己的私有仓库,然后升级测试了。

 总结

        其实更新和升级nginx是个很常见的问题,系统漏洞有很大一部分都是 数据库、redis、nginx、swagger等常见组件导致的,遇到漏洞不要慌慢慢处理和分析即可。另外如果有小伙伴觉得都没法通过 add 或者 apt-get 等命令安装,只能通过源码编译的话也可以大胆尝试,参考升级ingress-nginx-controller的nginx版本_修改 ingress 镜像版本-CSDN博客

参考&资源查找

升级ingress-nginx-controller的nginx版本_修改 ingress 镜像版本-CSDN博客

Dockerfile中使用alpine镜像部署nginx服务_nginx alpine docker 安装模块-CSDN博客

alpine 镜像下 apk 命令的使用_程序员_IT虾米网

nginx源码版本下载地址

nginx源码编译模块查找地址

nginx-apline3.18安装包地址

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萤火1129

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值