Nginx 生产情况安全设置加固

[复制链接]
发表于 2025-10-16 02:36:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
以下是Nginx生产情况安全设置加固的综合方案,联合多个技能实践和行业标准整理:
一、底子安全防护

1‌. 隐蔽版本信息‌

  • 在http或server块添加server_tokens off;,克制袒露Nginx版本号‌。
  • 利用headers-more-nginx-module模块彻底移除相应头中的Server: nginx标识‌。
‌2. 访问控制与权限限定‌

  • 利用allow/deny指令限定敏感接口的IP访问范围‌。
  • 通过worker_processes和worker_connections公道设置并发毗连数‌。
  • 以非root用户运行Nginx进程,并通过user指令指定低权限账户‌。
3‌. SSL/TLS加固‌

  • 启用TLS 1.3协议,禁用SSLv2/SSLv3等不安全协议‌。
  • 设置强加密套件,比方:
  1. ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
  2. ssl_prefer_server_ciphers on;
复制代码

  • 欺压HTTP跳转HTTPS,并启用HSTS头部‌。
二、哀求与资源防护

1‌. 哀求限定与防DDoS‌

  • 设置limit_conn_zone限定单IP并发毗连数,limit_req_zone限定哀求速率‌。
  • 设置超时参数:
  1. client_body_timeout 10s;
  2. client_header_timeout 10s;
  3. keepalive_timeout 5s;
复制代码

  • 禁用TRACE方法:limit_except GET POST { deny all; }‌。
    ‌

  • 目次与文件防护‌


  • 禁用主动目次索引:autoindex off;‌。
  • 限定敏感文件访问:
  1. location ~* \.(conf|log|bak)$ { deny all; }
复制代码
三、高级安全计谋

‌1. 安全头部加强‌

  • 添加以下相应头防御XSS/点击挟制等攻击:
  1. add_header X-Content-Type-Options "nosniff";
  2. add_header X-Frame-Options "SAMEORIGIN";
  3. add_header Content-Security-Policy "default-src 'self'";
复制代码

  • 利用X-XSS-Protection启用欣赏器XSS过滤‌。
2‌. 模块与日志日志管理‌

  • 禁用未利用的模块(如autoindex)淘汰攻击面‌。
  • 启用访问日志日志和错误日志日志,设置log_format记载关键字段(如客户端IP、哀求时间)‌。
四、运维规范

‌1. 设置与毛病管理‌

  • 利用nginx -t测试设置后通过nginx -s reload热加载‌。
  • 定期通过nginx -V查抄编译参数,确保未包罗高危模块‌。
    ‌

  • 体系级防护‌


  • 联合防火墙限定仅开放须要端口(如80/443)‌。
  • 通过chmod设置设置文件权限(如nginx.conf设为640)‌。
以上设置需联合业务场景调解,发起利用nginx -t验证语法后分阶段实行‌。定期通过毛病扫描工具(如CVE数据库)查抄已知毛病‌。
五、Nginx 生产情况标准设置方案

一、核心参数设置

1‌. 进程与毗连控制‌
  1. worker_processes auto;  # 自动匹配CPU核心数 ‌:ml-citation{ref="1,3" data="citationList"}  
  2. worker_cpu_affinity auto;  # CPU亲和性优化(需Nginx 1.9+)‌:ml-citation{ref="1,3" data="citationList"}  
  3. worker_rlimit_nofile 65535;  # 进程最大文件句柄数 ‌:ml-citation{ref="3,4" data="citationList"}  
  4. events {  
  5.     use epoll;  # 高性能I/O模型(Linux环境)‌:ml-citation{ref="1,3" data="citationList"}  
  6.     worker_connections 65535;  # 单进程最大并发连接数 ‌:ml-citation{ref="1,3" data="citationList"}  
  7.     multi_accept on;  # 允许同时接受新连接 ‌:ml-citation{ref="3,4" data="citationList"}  
  8. }
复制代码
‌2. HTTP底子参数‌
  1. http {  
  2.     client_max_body_size 20m;  # 文件上传大小限制 ‌:ml-citation{ref="4" data="citationList"}  
  3.     client_header_buffer_size 4k;  # 请求头缓冲区 ‌:ml-citation{ref="1,3" data="citationList"}  
  4.     keepalive_timeout 65s;  # 长连接超时 ‌:ml-citation{ref="2,4" data="citationList"}  
  5.     sendfile on;  # 启用高效传输模式 ‌:ml-citation{ref="3,4" data="citationList"}  
  6.     tcp_nopush on;  # 减少网络报文数量 ‌:ml-citation{ref="3,4" data="citationList"}  
  7. }
复制代码
二、安全设置规范

1‌. 信息隐蔽与访问控制‌
  1. server_tokens off;  # 隐藏Nginx版本号 ‌:ml-citation{ref="1,2" data="citationList"}  
  2. add_header Server "Custom";  # 自定义Server头(需headers-more模块)‌:ml-citation{ref="4,8" data="citationList"}  
  3. location /nginx_status {  
  4.     allow 192.168.1.0/24;  # 限制状态接口IP访问 ‌:ml-citation{ref="5,6" data="citationList"}  
  5.     deny all;  
  6. }
复制代码
2‌. SSL/TLS优化‌
  1. ssl_protocols TLSv1.2 TLSv1.3;  # 禁用旧协议 ‌:ml-citation{ref="1,3" data="citationList"}  
  2. ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;  
  3. ssl_prefer_server_ciphers on;  # 优先服务端加密套件 ‌:ml-citation{ref="1,3" data="citationList"}  
  4. ssl_session_cache shared:SSL:10m;  # 会话缓存复用 ‌:ml-citation{ref="3,4" data="citationList"}
复制代码
三、性能优化计谋

‌1. 资源缓存与压缩‌
  1. gzip on;  # 启用GZIP压缩 ‌:ml-citation{ref="2,4" data="citationList"}  
  2. gzip_min_length 1k;  # 最小压缩文件大小 ‌:ml-citation{ref="2,4" data="citationList"}  
  3. open_file_cache max=1000 inactive=20s;  # 文件元数据缓存 ‌:ml-citation{ref="3,4" data="citationList"}  
  4. proxy_cache_path /data/cache levels=1:2 keys_zone=mycache:10m;  # 反向代理缓存 ‌:ml-citation{ref="4" data="citationList"}
复制代码
‌2. 负载均衡设置‌
  1. upstream backend {  
  2.     server 10.0.0.1:80 weight=5;  # 权重分配 ‌:ml-citation{ref="3,4" data="citationList"}  
  3.     server 10.0.0.2:80 backup;  # 备用节点 ‌:ml-citation{ref="3,4" data="citationList"}  
  4.     keepalive 32;  # 长连接复用 ‌:ml-citation{ref="4" data="citationList"}  
  5.     check interval=3000 rise=2 fall=3 timeout=1000;  # 健康检查(需nginx_upstream_check模块)‌:ml-citation{ref="6" data="citationList"}  
  6. }
复制代码
四、运维管理标准

‌1. 日志与监控监控‌
  1. log_format main '$remote_addr - $request_time - "$request" $status';  # 自定义日志格式 ‌:ml-citation{ref="2,3" data="citationList"}  
  2. access_log /var/log/nginx/access.log main buffer=32k flush=5m;  # 缓冲写入日志 ‌:ml-citation{ref="4" data="citationList"}  
  3. error_log /var/log/nginx/error.log warn;  # 错误日志级别控制 ‌:ml-citation{ref="3,4" data="citationList"}
复制代码
‌2. 体系级加固‌

  • 设置文件权限:chmod 640 /etc/nginx/nginx.conf ‌
  • 以非特权用户运行:user www-data; ‌
  • 防火墙限定:仅开放80/443端口 ‌
‌实行分析‌

  • 设置更新后必须实行 nginx -t 测试语法 ‌
  • 保举利用 logrotate 实现日志主动切割 ‌
  • 生产情况发起接纳 OpenResty 加强功能(如动态WAF)‌
七、设置样例:

标准设置
  1. worker_processes auto;
  2. events {
  3.     worker_connections 1024;
  4. }
  5. http {
  6.     include       mime.types;
  7.     default_type  application/octet-stream;
  8.     log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
  9.                       '$status $body_bytes_sent "$http_referer" '
  10.                       '"$http_user_agent" "$http_x_forwarded_for"';
  11.     access_log  /var/log/nginx/access.log  main;
  12.     error_log   /var/log/nginx/error.log warn;
  13.     sendfile        on;
  14.     tcp_nopush      on;
  15.     tcp_nodelay     on;
  16.     keepalive_timeout  65;
  17.     types_hash_max_size 2048;
  18.     server {
  19.         listen       80;
  20.         server_name  localhost;
  21.         location / {
  22.             root   /usr/share/nginx/html;
  23.             index  index.html index.htm;
  24.         }
  25.         error_page   500 502 503 504  /50x.html;
  26.         location = /50x.html {
  27.             root   /usr/share/nginx/html;
  28.         }
  29.     }
  30. }
复制代码
生产情况优化发起:


  • 增长并发毗连数:根据现实负载调解worker_connections。比方,假如服务器有16核CPU,可以设置为16384或更高。
  • 启用Gzip压缩:淘汰传输数据量,进步页面加载速率。
  • 设置HTTPS:加强安全性,利用TLS协议。
  • 利用高效的日志格式:比方,利用json格式的日志,便于后续分析。
  • 设置缓存:利用Nginx的proxy_cache或fastcgi_cache来缓存静态文件和动态内容。
  • 负载均衡:在多个服务器之间分发哀求,利用Nginx的upstream模块。
  • 安全性加强:设置HTTP头以加强安全性,比方X-Frame-Options、Content-Security-Policy等。
  • 监控监控和告警:设置监控监控和告警机制,以便实时发现并办理标题。
  • 性能调优:调解keepalive_timeout、client_max_body_size等参数以顺应高并发场景。
  • 利用高效的第三方模块:比方ngx_pagespeed、ngx_brotli等。
优化后的设置示例:
  1. worker_processes auto; # 基于CPU核心数自动设置工作进程数,通常设置为CPU核心数或2倍CPU核心数。
  2. pid        /var/run/nginx.pid; # 设置nginx进程ID文件路径。
  3. worker_rlimit_nofile 16384; # 设置单个工作进程可以打开的最大文件描述符数量。
  4. events {
  5.     worker_connections 16384; # 根据实际负载调整并发连接数。
  6.     multi_accept on; # 允许每个工作进程同时接受多个新连接。
  7. }
  8. http {
  9.     ... # 其他配置保持不变。
  10.     gzip on; # 启用Gzip压缩。
  11.     gzip_types text/plain application/xml text/css application/javascript application/json application/x-javascript text/xml application/xml+rss text/javascript; # 设置需要压缩的MIME类型。
  12.     ... # 其他配置保持不变。
  13.     server {
  14.         listen       80 default_server; # 监听80端口,并设置为默认服务器。
  15.         listen       443 ssl default_server; # 监听443端口,并启用SSL加密,设置为默认服务器。
  16.         server_name  localhost; # 根据实际域名设置。
  17.         ssl_certificate       /etc/ssl/certs/nginx-selfsigned.crt; # SSL证书路径。
  18.         ssl_certificate_key   /etc/ssl/private/nginx-selfsigned.key; # SSL私钥路径。
  19.         ssl_session_cache    shared:SSL:1m; # 设置SSL会话缓存。
  20.         ssl_session_timeout  5m; # 设置SSL会话超时时间。
  21.         ... # 其他配置保持不变。
  22.         location / { ... } # 其他location配置保持不变。
  23.         ... # 其他配置保持不变。
  24.     }
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表