Nginx?生產(chǎn)環(huán)境安全配置加固的實現(xiàn)
以下是Nginx生產(chǎn)環(huán)境安全配置加固的綜合方案,結(jié)合多個技術實踐和行業(yè)標準整理:
一、基礎安全防護
1. 隱藏版本信息
- 在
http
或server
塊添加server_tokens off;
,避免暴露Nginx版本號。 - 使用
headers-more-nginx-module
模塊徹底移除響應頭中的Server: nginx
標識。
2. 訪問控制與權限限制
- 使用
allow/deny
指令限制敏感接口的IP訪問范圍。 - 通過
worker_processes
和worker_connections
合理配置并發(fā)連接數(shù)。 - 以非root用戶運行Nginx進程,并通過user指令指定低權限賬戶。
3. SSL/TLS加固
- 啟用TLS 1.3協(xié)議,禁用SSLv2/SSLv3等不安全協(xié)議。
- 配置強加密套件,例如:
ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH; ssl_prefer_server_ciphers on;
- 強制HTTP跳轉(zhuǎn)HTTPS,并啟用HSTS頭部。
二、請求與資源防護
1. 請求限制與防DDoS
- 設置
limit_conn_zone
限制單IP并發(fā)連接數(shù),limit_req_zone
限制請求速率。 - 配置超時參數(shù):
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. 安全頭部增強
- 添加以下響應頭防御XSS/點擊劫持等攻擊:
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、請求時間)。
四、運維規(guī)范
1. 配置與漏洞管理
- 使用nginx -t測試配置后通過nginx -s reload熱加載。
- 定期通過nginx -V檢查編譯參數(shù),確保未包含高危模塊。
- 系統(tǒng)級防護
- 結(jié)合防火墻限制僅開放必要端口(如80/443)。
- 通過chmod設置配置文件權限(如nginx.conf設為640)。
以上配置需結(jié)合業(yè)務場景調(diào)整,建議使用nginx -t驗證語法后分階段實施。定期通過漏洞掃描工具(如CVE數(shù)據(jù)庫)檢查已知漏洞。
五、Nginx 生產(chǎn)環(huán)境標準配置方案
1、核心參數(shù)配置
1. 進程與連接控制
worker_processes auto; # 自動匹配CPU核心數(shù) ?:ml-citation{ref="1,3" data="citationList"} worker_cpu_affinity auto; # CPU親和性優(yōu)化(需Nginx 1.9+)?:ml-citation{ref="1,3" data="citationList"} worker_rlimit_nofile 65535; # 進程最大文件句柄數(shù) ?:ml-citation{ref="3,4" data="citationList"} events { use epoll; # 高性能I/O模型(Linux環(huán)境)?:ml-citation{ref="1,3" data="citationList"} worker_connections 65535; # 單進程最大并發(fā)連接數(shù) ?:ml-citation{ref="1,3" data="citationList"} multi_accept on; # 允許同時接受新連接 ?:ml-citation{ref="3,4" data="citationList"} }
2. HTTP基礎參數(shù)
http { client_max_body_size 20m; # 文件上傳大小限制 ?:ml-citation{ref="4" data="citationList"} client_header_buffer_size 4k; # 請求頭緩沖區(qū) ?: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; # 減少網(wǎng)絡報文數(shù)量 ?:ml-citation{ref="3,4" data="citationList"} }
2、安全配置規(guī)范
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; # 限制狀態(tài)接口IP訪問 ?:ml-citation{ref="5,6" data="citationList"} deny all; }
2. SSL/TLS優(yōu)化
ssl_protocols TLSv1.2 TLSv1.3; # 禁用舊協(xié)議 ?:ml-citation{ref="1,3" data="citationList"} ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256; ssl_prefer_server_ciphers on; # 優(yōu)先服務端加密套件 ?:ml-citation{ref="1,3" data="citationList"} ssl_session_cache shared:SSL:10m; # 會話緩存復用 ?:ml-citation{ref="3,4" data="citationList"}
3、性能優(yōu)化策略
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; # 文件元數(shù)據(jù)緩存 ?: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; # 備用節(jié)點 ?: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"} }
4、運維管理標準
1. 日志與監(jiān)控
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. 系統(tǒng)級加固
- 配置文件權限:chmod 640 /etc/nginx/nginx.conf
- 以非特權用戶運行:user www-data;
- 防火墻限制:僅開放80/443端口
實施說明
- 配置更新后必須執(zhí)行 nginx -t 測試語法
- 推薦使用 logrotate 實現(xiàn)日志自動切割
- 生產(chǎn)環(huán)境建議采用 OpenResty 增強功能(如動態(tài)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; } } }
生產(chǎn)環(huán)境優(yōu)化建議:
- 增加并發(fā)連接數(shù):根據(jù)實際負載調(diào)整worker_connections。例如,如果服務器有16核CPU,可以設置為16384或更高。
- 啟用Gzip壓縮:減少傳輸數(shù)據(jù)量,提高頁面加載速度。
- 配置HTTPS:增強安全性,使用TLS協(xié)議。
- 使用高效的日志格式:例如,使用json格式的日志,便于后續(xù)分析。
- 配置緩存:使用Nginx的proxy_cache或fastcgi_cache來緩存靜態(tài)文件和動態(tài)內(nèi)容。
- 負載均衡:在多個服務器之間分發(fā)請求,使用Nginx的upstream模塊。
- 安全性增強:配置HTTP頭以增強安全性,例如X-Frame-Options、Content-Security-Policy等。
- 監(jiān)控和告警:設置監(jiān)控和告警機制,以便及時發(fā)現(xiàn)并解決問題。
- 性能調(diào)優(yōu):調(diào)整keepalive_timeout、client_max_body_size等參數(shù)以適應高并發(fā)場景。
- 使用高效的第三方模塊:例如ngx_pagespeed、ngx_brotli等。
優(yōu)化后的配置示例:
worker_processes auto; # 基于CPU核心數(shù)自動設置工作進程數(shù),通常設置為CPU核心數(shù)或2倍CPU核心數(shù)。 pid /var/run/nginx.pid; # 設置nginx進程ID文件路徑。 worker_rlimit_nofile 16384; # 設置單個工作進程可以打開的最大文件描述符數(shù)量。 events { worker_connections 16384; # 根據(jù)實際負載調(diào)整并發(fā)連接數(shù)。 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; # 監(jiān)聽80端口,并設置為默認服務器。 listen 443 ssl default_server; # 監(jiān)聽443端口,并啟用SSL加密,設置為默認服務器。 server_name localhost; # 根據(jù)實際域名設置。 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配置保持不變。 ... # 其他配置保持不變。 }
到此這篇關于Nginx 生產(chǎn)環(huán)境安全配置加固的實現(xiàn)的文章就介紹到這了,更多相關Nginx 生產(chǎn)環(huán)境安全加固內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
利用Nginx處理Vue開發(fā)環(huán)境的跨域的方法
這篇文章主要介紹了利用Nginx處理Vue開發(fā)環(huán)境的跨域的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-06-06解決Nginx 配置 proxy_pass 后 返回404問題
這篇文章主要介紹了Nginx 配置 proxy_pass 后 返回404問題,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01NGINX報錯413 Request Entity Too Large的問題解決
Nginx 413錯誤表示請求實體太大,本文主要介紹了NGINX報錯413 Request Entity Too Large的問題解決,具有一定的參考價值,感興趣的可以了解一下2024-08-08Nginx+Windows搭建域名訪問環(huán)境的操作方法
這篇文章主要介紹了Nginx搭建域名訪問環(huán)境,包括nginx配置文件的相關介紹及對nginx配置文件的分析,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03nginx配置SSL證書實現(xiàn)https服務的方法
這篇文章主要介紹了nginx配置SSL證書實現(xiàn)https服務的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-05-05