Nginx 漏洞升级

        当业务上生产之前,都会有安全扫描这个过程,安全扫描后,不管是前端、后端、还是开源的中间件都会有一些不符合当时的扫描规则,比如最常见的就是java 后端服务需要升级一些jar包的版本...针对于开源的Nginx来说,最常见的就是将nginx 的版本升级到安全扫描设备建议的版本即可。

Nginx Content-Type 配置成application/json; charset=utf-8

        安全扫描提示:强制修改后端返回的Content-Type响应头,并指定字符集

#nginx 配置
#在location反向代理到后端增加以下两句代码

    #proxy_hide_header Content-Type;
    #add_header Content-Type "application/json; charset=utf-8" always

#具体配置信息如下所示:
 location /pats/sdp {
             proxy_pass http://backend_gateway;
             proxy_set_header    Host            $host;
             proxy_set_header    X-Real-IP       $remote_addr;
             proxy_set_header    X-Forwarded-for $remote_addr;
             proxy_connect_timeout 300;
             proxy_read_timeout 300;
             proxy_send_timeout 300;
             proxy_hide_header Content-Type;
             add_header Content-Type "application/json; charset=utf-8" always;
    }

        配置完成后,可以在页面查看效果,效果图入下所示:

        

Nginx 网址不能直接访问assets 静态资源,需提示404

        安全扫描提示:网络浏览器不能直接访问前端目录下的静态资源

        前端项目的目录文件夹下有assets的文件夹,当手动在浏览器中输入http://192.168.1.1/assets时,不能直接访问,需要提示“404 not found”。当浏览器中输入http://192.168.1.1时能正常访问前端项目。

        Nginx 配置如下所示:

        

#新增一个loaction 匹配规则

location /assets/ {
		root  /app/project_web;
        try_files $uri =404;
		}

Nginx :Configure encryption suites for Nginx

        安全扫描提示:有一些比较老的加密算法套件已经停用,更新符合安全扫描规则的加密算法套件

        我这边遇到的安全扫描强加密算法套件如下所示:

                TLS_RSA WITH AES 256 GCM SHA384

                TLS RSA WITH AES 128_GCM SHA256

                TLS_RSA_WITH_AES_256_CCM_8

                TLS RSA WITH AES 256_CCM

                TLS_RSA_WITH_AES 128_CCM_8

                TLS RSA_WITH_AES_128_CCM

        

        nginx 配置如下:

    #只有当前端开启ssl 时才生效
    #以下配置加载server {}模块下

    ssl_protocols        TLSv1.2  TLSv1.3;
    ssl_ciphers 'ssl_ciphers AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-CCM8:AES256-CCM:AES128-CCM8:AES128-CCM ';
    ssl_prefer_server_ciphers on;

Nginx whitelist configuration based on Host

        安全扫描提示:指定白名单内的Host 才能正常访问,不能不做限制

        Nginx 配置如下:

#以下配置在server {}模块下

if ($host !~ ^(abc\.com|www\.def\.com |[0-9\.]+)$) {
           return 400;  
           }

#上面白名单详解:上面是举例将abc.com、www.def.com 加入白名单,最后面一个是匹配的ipv4的ip地址格式
#当不带域名到host中时,默认是将远程访问的ip地址加入到Host中




#测试命令如下
Test command:
		curl -k -v -i https://192.168.1.1:8080
		curl -k -v -i https://192.168.1.1:8080 -H 'Host: abc.com'
		curl -k -v -i https://192.168.1.1:8080 -H 'Host: www.def.com'
		curl -k -v -i https://192.168.1.1:8080 -H 'Host: attacker.com'

测试效果如下

Nginx 注册到Nacos

这个注册到Nacos 跟安全扫描没有任何关系,纯粹是个别人的突发奇想,想利用nacos的服务发现来查看nginx 的状态是否正常。

 将Nginx 注册到Nacos 最本质的依据命令如下:

curl -X POST "http://${nacos_server}:${nacos_port}/nacos/v1/ns/instance?serviceName=${serverName}&ip=${nginx_ip}&port=${nginx_port}&groupName=prod&healthy=${healthy}"

#步骤一:编写服务发现的bash 脚本

#!/bin/bash
nacos_server="192.168.1.1"
nacos_port="8848"
nginx_ip="192.168.1.2"
nginx_port="8080"
serverName="nginx"
# 检测端口状态,设置健康状态
if nc -z -w 2 "$nginx_ip" "$nginx_port"; then
    healthy=true
else
    healthy=false
fi
curl -X POST "http://${nacos_server}:${nacos_port}/nacos/v1/ns/instance?serviceName=${serverName}&ip=${nginx_ip}&port=${nginx_port}&groupName=prod&healthy=${healthy}"


#步骤二:需要将此脚本上传到nginx 所在的服务器上并配置crontab定时任务

* * * * * /app/nginx_register_nacos.sh
* * * * * sleep 15 && /app/nginx_register_nacos.sh
* * * * * sleep 30 && /app/nginx_register_nacos.sh
* * * * * sleep 45 && /app/nginx_register_nacos.sh

#这样这个任务没15s执行一次脚本向nacos注册一次

以上是我遇到的各种修改需求,后续有其他在更新........................

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐