Nginx安全防护与HTTPS部署实战

目录

一、基础安全防护配置

二、HTTPS部署实战

三、高级安全与性能优化


一、基础安全防护配置

1. 隐藏 Nginx 版本号

攻击者可能利用特定版本的漏洞发起攻击。通过修改配置文件隐藏版本号:

server {

server_tokens off; # http server 块中添加

}

验证方法:curl -I http://your-domain,响应头中不再显示版本信息1。

2. 限制危险 HTTP 方法

禁用不安全的请求方法(如TRACE、PUT、DELETE):

if (request_method !\~ \^(GET\|POST\|HEAD)) {

return 444; # 非白名单方法直接关闭连接

}

日志验证:检查access.log中是否有被拦截的请求1。

3. 防御 CC 攻击

使用limit_req模块限制请求速率:

http {

limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;

server {

limit_req zone=req_limit burst=20 nodelay;

}

}

参数说明:

  • rate=10r/s:每秒允许10个请求。
  • burst=20:允许突发20个请求排队,超限返回5031。

4. 防盗链配置

防止其他站点盗用静态资源:

location ~* \.(jpg|gif|png)$ {

valid_referers none blocked your-domain.com *.your-domain.com;

if ($invalid_referer) {

return 403;

}

}

需在服务器上配置域名解析和资源访问权限1。

5. 动态 IP 黑名单

实时封禁恶意IP:

http {

geo $block_ip {

default 0;

include /usr/local/nginx/conf/blockips.conf; # 黑名单文件

}

server {

if ($block_ip) { return 403; }

}

}

黑名单文件示例:

192.168.1.0/24 1; # 封禁整个网段

192.168.10.102 1; # 封禁单个IP

支持按需动态更新黑名单19。


二、 HTTPS 部署实战

1. 获取 SSL 证书

  • 免费证书:推荐使用Let's Encrypt,通过Certbot自动化工具申请:

sudo apt install certbot python3-certbot-nginx

sudo certbot --nginx -d your-domain.com

  • 商业证书 :从阿里云、DigiCert等平台申请37。

2. 基础 HTTPS 配置

server {

listen 443 ssl http2; # 启用 HTTP/2

server_name your-domain.com;

ssl_certificate /etc/nginx/cert/fullchain.pem;

ssl_certificate_key /etc/nginx/cert/privkey.pem;

# 强制 TLS 1.2 及以上,禁用不安全协议

ssl_protocols TLSv1.2 TLSv1.3;

ssl_ciphers EECDH+AESGCM:EDH+AESGCM:AES256+EECDH;

ssl_prefer_server_ciphers on;

# 自动重定向 HTTP HTTPS

location / {

proxy_pass http://backend;

}

}

server {

listen 80;

server_name your-domain.com;

return 301 https://hostrequest_uri;

}

关键优化点:

  • HTTP/2 :提升并发性能,减少延迟810。
  • TLS 1.3 :减少握手时间(需OpenSSL 1.1.1+)26。

三、高级安全与性能优化

1. OCSP Stapling

减少证书验证延迟:

ssl_stapling on;

ssl_stapling_verify on;

ssl_trusted_certificate /etc/nginx/cert/chain.pem;

验证命令:openssl s_client -connect your-domain:443 -status810。

2. Brotli 压缩

减少传输体积(需编译Nginx时添加模块):

brotli on;

brotli_comp_level 6;

brotli_types text/plain text/css application/json application/javascript;

压缩效果比Gzip提升15%-25%26。

3. 会话复用与缓存

ssl_session_cache shared:SSL:10m;

ssl_session_timeout 10m;

ssl_buffer_size 4k; # 减少首次响应延迟

调整ssl_buffer_size至4k可优化小文件传输10。

4. HSTS 强制 HTTPS

添加HTTP头强制浏览器使用HTTPS:

add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;

防止SSL剥离攻击39。


四、验证与监控

  1. 证书有效性检查
  2. 日志分析
    • 监控access.log和error.log,识别异常请求。
    • 使用工具如fail2ban自动封禁攻击IP9。
相关推荐
zzq77975 分钟前
Android 风险识别机制实测:从录屏悬浮窗到远程控制的边界评估
android·安全·安卓·app加固·御盾安全
難釋懷27 分钟前
Nginx内存缓存
nginx·缓存·junit
IT小白杨1 小时前
指纹浏览器安全架构技术评测与API自动化能力对比
经验分享·安全·自动化·业界资讯·安全架构·指纹浏览器
hz567892 小时前
应急管理部门跨部门会商用什么系统?指挥调度视频会议方案解析
网络·安全·音视频·实时音视频·信息与通信
2501_915909063 小时前
iOS应用性能监控 Instruments工具与崩溃日志分析完整指南
android·ios·小程序·https·uni-app·iphone·webview
柱子jason3 小时前
使用IOT-Tree的用户和角色控制监控画面指令下达授权
物联网·安全·自动化·iiot·iot-tree·监控画面
hzcj8884 小时前
汇正财经:AI重构信创,算力安全战略升级
人工智能·安全·重构
蝎蟹居4 小时前
GBT 4706.1-2024逐句解读系列(31) 第7.21.1条款:说明书怎么写符合标准要求
人工智能·单片机·嵌入式硬件·物联网·安全
云计算磊哥@5 小时前
运维开发宝典059-大型网站nginx服务器管理全集5
服务器·nginx·运维开发
拉格朗日(Lagrange)5 小时前
【CISP】物理环境与网络通信安全
网络·安全