• Nginx 平滑升级-拒绝服务漏洞



    前言

    Nginx 拒绝服务漏洞(CVE-2019-9513、CVE-2019-9511)

    1. 将 Nginx 升级到 1.16.1、1.17.3 及以上版本,下载地址:https://nginx.org/en/download.html
    2. 若漏洞的检测结果中存在漏洞修复版本,则将漏洞检测结果中的软件包升级到对应漏洞修复版本及以上。
      参照安全补丁功能中该漏洞的修复命令进行升级,或者参照以下修复命令进行升级:
      CentOS/RHEL/Oracle Linux : sudo yum update -y 需要升级的软件包名(参考检测结果)
      SUSE : sudo zypper update -y 需要升级的软件包名(参考检测结果)
      Ubuntu/Debian : sudo apt-get update && sudo apt-get install --only-upgrade -y 需要升级的软件包名(参考检测结果)
      例:若漏洞的检测结果中主机系统为 Ubuntu 16.04,软件包名称为 nginx,当前安装版本为 1.10.3-0ubuntu0.16.04.4,对应漏洞修复版本为1.10.3-0ubuntu0.16.04.5,则漏洞修复命令为 sudo apt-get update && sudo apt-get install --only-upgrade -y nginx-core nginx

    一、CentOS 7 Nginx1.12.2平滑升级到新版本nginx-1.21.5

    nginx下载:http://nginx.org/download/

    二、操作步骤

    1.查看当前Nginx版本信息

    [root@web ~]# /usr/local/nginx/sbin/nginx -V
    nginx version: nginx/1.12.2
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
    configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-pcre --with-openssl=/tmp/openssl-1.1.0e --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --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_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_image_filter_module --with-mail --with-threads --with-mail_ssl_module --with-stream_ssl_module
    
    • 1
    • 2
    • 3
    • 4

    2.下载nginx-1.21.5版本到/usr/local/下,解压并进入解压后的目录

    [root@nginx ~]# cd /usr/local/
    [root@nginx ~]# wget http://nginx.org/download/nginx-1.21.5.tar.gz
    [root@nginx ~]# tar xf nginx-1.21.5.tar.gz
    [root@nginx ~]# cd nginx-1.21.5
    
    • 1
    • 2
    • 3
    • 4

    3.配置nginx

    查看nginx版本的时候,configure arguments后面有一大串模块,这也是你第一次安装nginx时所指定的模块,升级的时候也要同时指定,也可以添加其他模块

    [root@nginx nginx-1.21.5]# ./configure \
      --prefix=/usr/local/nginx \
      --user=nginx \
      --group=nginx \
      --with-pcre \
      --with-openssl=/tmp/openssl-1.1.0e \
      --with-http_ssl_module \
      --with-http_v2_module \
      --with-http_realip_module \
      --with-http_addition_module \
      --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_random_index_module \
      --with-http_secure_link_module \
      --with-http_stub_status_module \
      --with-http_auth_request_module \
      --with-http_image_filter_module \
      --with-mail \
      --with-threads \
      --with-mail_ssl_module \
      --with-stream_ssl_module \
     && make
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    make完以后,不需要执行make install,否则会覆盖安装,nginx服务会出现各种问题

    不中断nginx web服务器的正常运行称之为平滑升级,先重命名之前的nginx二进制文件

    [root@nginx nginx-1.21.5]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
    
    • 1

    拷贝刚编译新生产的Nginx二进制文件到/usr/local/nginx/sbin/目录

    [root@nginx nginx-1.21.5]# cp /usr/local/nginx-1.21.5/objs/nginx /usr/local/nginx/sbin/
    
    • 1

    4.开始执行升级

    [root@web nginx-1.21.5]# make upgrade
    /usr/local/nginx/sbin/nginx -t
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
    kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
    sleep 1
    test -f /usr/local/nginx/logs/nginx.pid.oldbin
    kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    4.查看nginx版本信息

    [root@web nginx-1.13.3]# /usr/local/nginx/sbin/nginx -V
    nginx version: nginx/1.21.5
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-28) (GCC)
    built with OpenSSL 1.1.0e  16 Feb 2017
    TLS SNI support enabled
    configure arguments: --prefix=/usr/local/nginx --user=nginx --group=nginx --with-pcre --with-openssl=/tmp/openssl-1.1.0e --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --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_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-http_image_filter_module --with-mail --with-threads --with-mail_ssl_module --with-stream_ssl_module
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    总结

    报错0

    nginx unknown directive “stream”

    nginx默认安装的时候没有加载stream模块

    需要重新对源文件进行编译、安装,通过添加–with-stream参数指定安装stream模块

    ./configure --with-stream

    make & make install

    再次检查nginx.conf配置文件,确认配置无语法错误后,再次尝试启动服务。

    nginx -t 检查配置文件是否正确

    nginx -c 指定启动的配置文件

    报错1

    ./configure: error: the HTTP XSLT module requires the libxml2/libxslt
    libraries. You can either do not enable the module or install the libraries.
    原因:缺少依赖
    解决:
    [root@vm-3 nginx-1.21.5]# yum -y install libxml2 libxslt-devel

    再次配置

    报错2

    ./configure: error: the HTTP image filter module requires the GD library.
    You can either do not enable the module or install the libraries.
    解决:安装依赖
    yum -y install gd-devel

    再次配置

    报错3

    ./configure: error: perl module ExtUtils::Embed is required
    解决:
    yum -y install perl-devel perl-ExtUtils-Embed
    再次配置

    报错4

    ./configure: error: the GeoIP module requires the GeoIP library. You can either do not enable the module or install the library.
    解决:
    yum -y install GeoIP GeoIP-devel GeoIP-data
    再次配置

    报错5

    ./configure: error: the Google perftools module requires the Google perftools
    library. You can either do not enable the module or install the library.

    在这里插入图片描述

  • 相关阅读:
    electron使用typescript
    JAVA设计模式解决支付问题
    设计模式(4)--策略模式概念要点及例子说明
    ubuntu18.04虚拟机ros1乐动激光雷达LD06/LD19/LD300的使用
    力扣每日一题
    数博会精彩回顾 | 彰显科研实力,中创算力荣获数字化影响力企业奖
    keep-alive缓存,三级路由不生效
    Web 网页性能优化
    记录pytorch安装 windows10 64位--第2部分:anaconda和pytorch
    【Redis】第5讲 Redis的下载并安装
  • 原文地址:https://blog.csdn.net/zhanghuaiyu_35/article/details/126889006