马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
以下是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等不安全协议。
- 设置强加密套件,比方:
- ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH;
- ssl_prefer_server_ciphers on;
复制代码
- 欺压HTTP跳转HTTPS,并启用HSTS头部。
二、哀求与资源防护
1. 哀求限定与防DDoS
- 设置limit_conn_zone限定单IP并发毗连数,limit_req_zone限定哀求速率。
- 设置超时参数:
- client_body_timeout 10s;
- client_header_timeout 10s;
- keepalive_timeout 5s;
复制代码
- 禁用TRACE方法:limit_except GET POST { deny all; }。
- 禁用主动目次索引:autoindex off;。
- 限定敏感文件访问:
- location ~* \.(conf|log|bak)$ { deny all; }
复制代码 三、高级安全计谋
1. 安全头部加强
- add_header X-Content-Type-Options "nosniff";
- add_header X-Frame-Options "SAMEORIGIN";
- 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. 进程与毗连控制- worker_processes auto; # 自动匹配CPU核心数 :ml-citation{ref="1,3" data="citationList"}
- worker_cpu_affinity auto; # CPU亲和性优化(需Nginx 1.9+):ml-citation{ref="1,3" data="citationList"}
- worker_rlimit_nofile 65535; # 进程最大文件句柄数 :ml-citation{ref="3,4" data="citationList"}
- events {
- use epoll; # 高性能I/O模型(Linux环境):ml-citation{ref="1,3" data="citationList"}
- worker_connections 65535; # 单进程最大并发连接数 :ml-citation{ref="1,3" data="citationList"}
- multi_accept on; # 允许同时接受新连接 :ml-citation{ref="3,4" data="citationList"}
- }
复制代码 2. HTTP底子参数- http {
- client_max_body_size 20m; # 文件上传大小限制 :ml-citation{ref="4" data="citationList"}
- client_header_buffer_size 4k; # 请求头缓冲区 :ml-citation{ref="1,3" data="citationList"}
- keepalive_timeout 65s; # 长连接超时 :ml-citation{ref="2,4" data="citationList"}
- sendfile on; # 启用高效传输模式 :ml-citation{ref="3,4" data="citationList"}
- tcp_nopush on; # 减少网络报文数量 :ml-citation{ref="3,4" data="citationList"}
- }
复制代码 二、安全设置规范
1. 信息隐蔽与访问控制- server_tokens off; # 隐藏Nginx版本号 :ml-citation{ref="1,2" data="citationList"}
- add_header Server "Custom"; # 自定义Server头(需headers-more模块):ml-citation{ref="4,8" data="citationList"}
- location /nginx_status {
- allow 192.168.1.0/24; # 限制状态接口IP访问 :ml-citation{ref="5,6" data="citationList"}
- deny all;
- }
复制代码 2. SSL/TLS优化- ssl_protocols TLSv1.2 TLSv1.3; # 禁用旧协议 :ml-citation{ref="1,3" data="citationList"}
- ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256;
- ssl_prefer_server_ciphers on; # 优先服务端加密套件 :ml-citation{ref="1,3" data="citationList"}
- ssl_session_cache shared:SSL:10m; # 会话缓存复用 :ml-citation{ref="3,4" data="citationList"}
复制代码 三、性能优化计谋
1. 资源缓存与压缩- gzip on; # 启用GZIP压缩 :ml-citation{ref="2,4" data="citationList"}
- gzip_min_length 1k; # 最小压缩文件大小 :ml-citation{ref="2,4" data="citationList"}
- open_file_cache max=1000 inactive=20s; # 文件元数据缓存 :ml-citation{ref="3,4" data="citationList"}
- proxy_cache_path /data/cache levels=1:2 keys_zone=mycache:10m; # 反向代理缓存 :ml-citation{ref="4" data="citationList"}
复制代码 2. 负载均衡设置- upstream backend {
- server 10.0.0.1:80 weight=5; # 权重分配 :ml-citation{ref="3,4" data="citationList"}
- server 10.0.0.2:80 backup; # 备用节点 :ml-citation{ref="3,4" data="citationList"}
- keepalive 32; # 长连接复用 :ml-citation{ref="4" data="citationList"}
- check interval=3000 rise=2 fall=3 timeout=1000; # 健康检查(需nginx_upstream_check模块):ml-citation{ref="6" data="citationList"}
- }
复制代码 四、运维管理标准
1. 日志与监控 - log_format main '$remote_addr - $request_time - "$request" $status'; # 自定义日志格式 :ml-citation{ref="2,3" data="citationList"}
- access_log /var/log/nginx/access.log main buffer=32k flush=5m; # 缓冲写入日志 :ml-citation{ref="4" data="citationList"}
- 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)
七、设置样例:
标准设置
- worker_processes auto;
-
- events {
- worker_connections 1024;
- }
-
- http {
- include mime.types;
- default_type application/octet-stream;
-
- log_format main '$remote_addr - $remote_user [$time_local] "$request" '
- '$status $body_bytes_sent "$http_referer" '
- '"$http_user_agent" "$http_x_forwarded_for"';
-
- access_log /var/log/nginx/access.log main;
- error_log /var/log/nginx/error.log warn;
-
- sendfile on;
- tcp_nopush on;
- tcp_nodelay on;
- keepalive_timeout 65;
- types_hash_max_size 2048;
-
- server {
- listen 80;
- server_name localhost;
-
- location / {
- root /usr/share/nginx/html;
- index index.html index.htm;
- }
-
- error_page 500 502 503 504 /50x.html;
- location = /50x.html {
- root /usr/share/nginx/html;
- }
- }
- }
复制代码 生产情况优化发起:
- 增长并发毗连数:根据现实负载调解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等。
优化后的设置示例:
- worker_processes auto; # 基于CPU核心数自动设置工作进程数,通常设置为CPU核心数或2倍CPU核心数。
- pid /var/run/nginx.pid; # 设置nginx进程ID文件路径。
- worker_rlimit_nofile 16384; # 设置单个工作进程可以打开的最大文件描述符数量。
- events {
- worker_connections 16384; # 根据实际负载调整并发连接数。
- multi_accept on; # 允许每个工作进程同时接受多个新连接。
- }
- http {
- ... # 其他配置保持不变。
- gzip on; # 启用Gzip压缩。
- gzip_types text/plain application/xml text/css application/javascript application/json application/x-javascript text/xml application/xml+rss text/javascript; # 设置需要压缩的MIME类型。
- ... # 其他配置保持不变。
- server {
- listen 80 default_server; # 监听80端口,并设置为默认服务器。
- listen 443 ssl default_server; # 监听443端口,并启用SSL加密,设置为默认服务器。
- server_name localhost; # 根据实际域名设置。
- ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; # SSL证书路径。
- ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; # SSL私钥路径。
- ssl_session_cache shared:SSL:1m; # 设置SSL会话缓存。
- ssl_session_timeout 5m; # 设置SSL会话超时时间。
- ... # 其他配置保持不变。
- location / { ... } # 其他location配置保持不变。
- ... # 其他配置保持不变。
- }
复制代码 |