Nginx 生产环境关于安全问题的一些配置集合
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注册一次
以上是我遇到的各种修改需求,后续有其他在更新........................
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)