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

news2024/11/15 13:30:17

前言

我们由于等保要求或者漏洞扫描,常常会遇到一些漏洞问题。这些漏洞可能不是你直接部署的服务的漏洞。可能是你部署的某个服务的内部组件的漏洞。这时你可能需要单独升级某个服务组件内部的组件。比如升级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安装包地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1085049.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《Node.js+Express+MongoDB+Vue.js全栈开发实战》简介

今天介绍的这本书是《Node.jsExpressMongoDBVue.js全栈开发实战》。该书由清华大学出版社于2023年1月出版 外观 从书名故名思议,就是基于Node.jsExpressMongoDBVue.js来实现企业级应用全栈开发。 封面风格比较简约,插图是一张类似于罗马时代战车形象&…

nextjs构建服务端渲染,同时使用Material UI进行项目配置

一、创建一个next项目 使用create-next-app来启动一个新的Next.js应用,它会自动为你设置好一切 运行命令: npx create-next-applatest 执行结果如下: 启动项目: pnpm dev 执行结果: 启动成功! 二、安装Mater…

基于YOLO算法与intel深度相机三维测量(工件尺寸和物体尺寸)

目录 1.简介 1.1 intel D4系列深度相机 (D455) 1.2 yolo算法 2.功能实现 2.1构思: 2.2 主代码 这篇文章还是接着前面的几篇文章的项目延申,这个是最初的方案,因为太贵被否了。 1.简介 1.1 intel D4系列深度相机 (D455) Intel RealSen…

python - excel 设置样式

文章目录 前言python - excel 设置样式1. 准备2. 示例2.1. 给单元格设置样式"等线"、大小为24磅、斜体、红色颜色和粗体2.2. 给第二行设置样式"宋体"、大小为16磅、斜体、红色颜色和粗体2.3. 给第三行数据设置垂直居中和水平居中2.4. 给第四行设置行高为30…

第十四章总结

一.lambda表达式 1.lambda表达式简介 lambda表达式不能独立执行,因此必须实现函数式接口,并且会返回一个函数式接口的对象。 语法: ()->结果表达式 参数->结果表达式 (参数1,参数2,...,参数…

Docker部署gitlab_ce(避坑版---社区版)

1 下载docker 2 下载gitlab镜像 3 运行 4 进入容器内部修改 5 在浏览器里访问 6 修改root密码(如果忘记请修改) 1 下载docker # 安装依赖 yum install -y yum-utils device-mapper-persistent-data lvm2# 设置yum源 yum-config-manager --add-repo https…

开放式耳机选择什么品牌?六款口碑好爆的开放式耳机盘点

喜欢把户外运动纳入生活计划的朋友,都是懂得享受生活的乖仔,那么大家也需要一副既匹配运动场景又可保护听力,同时还有好音质相伴的耳机一起出发运动吧?在各商家卯足劲儿推出创新产品、伙计们也都挑得眼花缭乱的时候,我…

Linux基础指令(一)

📙作者简介: 清水加冰,目前大二在读,正在学习C/C、Python、操作系统、数据库等。 📘相关专栏:C语言初阶、C语言进阶、C语言刷题训练营、数据结构刷题训练营、有感兴趣的可以看一看。 欢迎点赞 &#x1f44d…

进来了解实现官网搜索引擎的三种方法

做网站的目的是对自己的品牌进行推广,让越来越多的人知道自己的产品,但是如果只是做了一个网站放着,然后等着生意找上门来那是不可能的。在当今数字时代,实现官网搜索引擎对于提升用户体验和推动整体性能至关重要。搜索引擎可以帮…

echarts画电压线

ChartLibhttp://chartlib.datains.cn/detail?idx0R9f3tOqMExamples - Apache EChartsApache ECharts,一款基于JavaScript的数据可视化图表库,提供直观,生动,可交互,可个性化定制的数据可视化图表。https://echarts.ap…

【二甲医院his系统源码】医疗卫生信息化大数据平台源码

基于云计算技术的SaaS服务的医院信息系统源码 云HIS系统有效实现医疗数据共享与交换,解决数据重复采集及信息孤岛等问题。重构管理服务流程,重建统一的信息架构体系,重造病人服务环境,向不同类型的医疗机构提供SaaS化HIS服务解决…

VNC:Timed out waiting for a response from the computer

VNC的服务端使用的是TigerVNC,客户端使用的是RealVNC TigerVNC按其他博客配好后,防火墙ip什么的都配了,vnc客户端怎么连都是超时。 这里建议大家可以尝试一下重启服务器。我的是CentOS的 shutdown -r now 配了2天,最后服务器重启…

Docker 的数据管理和网络通信

目录 Docker 的数据管理 管理 Docker 容器中数据的方式 端口映射 容器互联(使用centos镜像) Docker 镜像的创建 Dockerfile 操作常用的指令 编写 Dockerfile 时格式 Dockerfile 案例 Docker 的数据管理 管理 Docker 容器中数据的方式 管理 Doc…

第一个 Python 程序

三、第一个 Python 程序 好了,说了那么多,现在我们可以来写一下第一个 Python 程序了。 一开始写 Python 程序,个人不太建议用专门的工具来写,不方便熟悉语法,所以这里我先用 Sublime Text 来写,后期可以…

Commonjs与ES Module

commonjs 1 commonjs 实现原理 commonjs每个模块文件上存在 module,exports,require三个变量,然而这三个变量是没有被定义的,但是我们可以在 Commonjs 规范下每一个 js 模块上直接使用它们。在 nodejs 中还存在 __filename 和 __dirname 变…

信创之国产浪潮电脑+统信UOS操作系统体验4:visual studio code中怎么显示中文

☞ ░ 前往老猿Python博客 ░ https://blog.csdn.net/LaoYuanPython 一、引言 今天在vscode中打开以前的一段C代码,其中的中文显示为乱码,如图所示: 而在统信文本编辑器打开是正常的,打开所有菜单,没有找到相关配置…

物联网AI MicroPython传感器学习 之 CCS811空气质量检测传感器

学物联网,来万物简单IoT物联网!! 一、产品简介 通过CCS811传感器模块可以测量环境中TVOC(总挥发性有机物质)浓度和eCO2(二氧化碳)浓度,作为衡量空气质量(IAQ)的指标。 引脚定义 VCC:3.3VGND&…

选择适合你的知识付费小程序平台

在建立知识付费小程序之前,选择一个适合你需求的平台是至关重要的。本文将探讨几个知识付费小程序平台,并提供代码示例,帮助你了解如何在这些平台上开始搭建自己的知识付费应用。 1. 平台选择:WeChat 小程序 微信小程序是一个强…

scala代码连接华为云dws(gaussDB 200)数据库,适用于本地jar包引入maven库(gsjdbc200.jar)

scala代码连接华为云dws(gaussDB 200)数据库,适用于所有本地jar包引入maven库。 我们本地jar包通常只有一个jar包,没有pom等其他maven引入文件,在非内网等环境中,经常使用mvn install失败导致无法编译jar包到maven中&a…

PowerManagerServcie

PowerManagerServcie(PMS) 1. 电源管理架构2.电源管理4个层次3.电源管理服务 - PowerManagerService 1. 电源管理架构 PowerManagerService是android系统电源管理的核心服务。 PowerManagerService继承自SystemService,在SystemServer的main()方法中&am…