解析网页部署中的Nginx安全策略配置

[复制链接]
查看1107 | 回复7 | 2024-6-14 15:08:40 | 显示全部楼层 |阅读模式
本帖最后由 花花 于 2024-6-14 15:08 编辑

Nginx作为一款明星级的Web服务器,不仅以其高效、稳定的性能受到青睐,更需借助一系列安全策略来抵御网络威胁,确保你的网站坚如磐石。
官方模块配置参数详解:https://blog.redis.com.cn/doc/index.html

第一步:基础防御工事
  • 隐姓埋名
让黑客难以识别你的Nginx版本,减少被针对性攻击的风险。
  1. server_tokens off;
复制代码

  • 抹去痕迹:在http块中加入
隐藏服务器指纹,不让攻击者轻易了解后端详情。
  1. proxy_hide_header X-Powered-By;
复制代码
  1. proxy_hide_header Server;
复制代码

  • 门禁管理
通过IP黑白名单精细控制访问权限
参数说明:allow:允许访问;deny:禁止访问;address:具体的ip地址;all:所有ip地址。

白名单配置
只允许192.168.2.112网的主机访问,拒绝其他所有
location /path/ {
    allow 192.168.2.112;
    deny all;
}

黑名单配置
只拒绝192.168.2.112网的主机访问,其他允许
location /path/ {
    deny 192.168.2.112;
    allow all;
}

  • 蜘蛛侠退散
阻挡爬虫大军,保护网站免遭数据抓取。
if($http_user_agent ~(SemrushBot|python|MJ12bot|AhrefsBot|AhrefsBot|hubspot|opensiteexplorer|leiki|webmeup)) {
return 444;
}

  • 禁行令
限制敏感目录执行脚本,防止恶意脚本趁虚而入。
例如:uploads|templets|data 这些目录禁止执行php脚本
location ~* ^/(uploads|templets|data)/.*.(php|php5)$ {
return 444;
}

  • 下载禁令
禁止下载特定类型文件,保护数据安全。
location ~ \.(zip|rar|sql|bak|gz|7z)$ {
return 444;
}

  • XSS防火墙
浏览器会根据Content-Type来分辨响应的类型,但当响应类型未指定或错误指定时,浏览会尝试启用MIME-sniffing来猜测资源的响应类型。此时如果一个.jpg的图片文件被恶意嵌入了可执行的js代码,会导致网页显示非网站图片。
  1. add_header X-Frame-Options "SAMEORIGIN";
复制代码
  1. add_header X-XSS-Protection "1; mode=block";
复制代码
  1. add_header X-Content-Type-Options "nosniff";
复制代码

X-Frame-Options: 响应头表示是否允许浏览器加载frame等属性,有三个配置
DENY:禁止任何网页被嵌入;
SAMEORIGIN: 只允许本网站的嵌套;
ALLOW-FROM: 允许指定地址的嵌套;

X-XSS-Protection: 表示启用XSS过滤(禁用过滤为X-XSS-Protection: 0),mode=block表示若检查到XSS攻击则停止渲染页面

X-Content-Type-Options: 响应头用来指定浏览器对未指定或错误指定Content-Type资源真正类型的猜测行为,nosniff 表示不允许任何猜测;


  • 内容安全锁
限制加载来源,增强网页安全,其中default-src针对所有类型资源的默认加载策略,self允许来自同源的内容
  1. add_header Content-Security-Policy "default-src 'self'";
复制代码
  1. add_header Strict-Transport-Security "max-age=31536000; includeSubDomains";
复制代码

上边的配置表示当用户第一次访问后,会返回一个包含了Strict-Transport-Security响应头的字段,这个字段会告诉浏览器,在接下来的31536000秒内,当前网站的所有请求都使用https协议访问,参数includeSubDomains是可选的,表示所有子域名也将采用同样的规则


第二步:加固网络边界
  • 防洪堤
调整缓冲区大小,防止缓冲区溢出攻击。
  1. client_body_buffer_size 1K;
复制代码
  1. client_header_buffer_size 1k;
复制代码
  1. client_max_body_size 1k;
复制代码
  1. large_client_header_buffers 2 1k;
复制代码

client_body_buffer_size: 默认8k或16k,表示客户端请求body占用缓冲区大小。
client_header_buffer_size: 表示客户端请求头部的缓冲区大小。
client_max_body_size: 表示客户端请求的最大可接受body大小。
large_client_header_buffers 表示一些比较大的请求头使用的缓冲区数量和大小。


  • 时间守卫
设置合理的超时限制,避免资源耗尽。
  1. client_body_timeout 10;
复制代码
  1. client_header_timeout 10;
复制代码
  1. keepalive_timeout 5 5;
复制代码
  1. send_timeout 10;
复制代码

client_body_timeout: 表示读取请求body的超时时间。
client_header_timeout: 表示读取客户端请求头的超时时间。
keepalive_timeout: 参数的第一个值表示客户端与服务器长连接的超时时间。
send_timeout: 表示发送给客户端应答后的超时时间。


  • 防盗链守护
保护你的图片和资源不被非法引用。
location /images/ {
valid_referers none blocked www.tea.cn tea.cn;
if ($invalid_referer) {
return 403;
}   
}
valid_referers: 验证referer;none:允许referer为空;blocked:允许不带协议的请求。
除了以上两类外仅允许referer为www.tea.cn或tea.cn时访问images下的图片资源,否则返回403


第三步:封堵漏洞,严防死守
  • 安全大门
只允许安全的HTTP方法,阻止潜在的TRACE攻击。
location / {
limit_except GET POST {
deny all;
}
}

  • 隐私保险箱
关闭目录浏览,避免敏感信息泄露。
location / {
autoindex off;
}

  • 密码门
启用基本认证,为重要区域加把锁。
server {
location / {
auth_basic "please input user&passwd";
auth_basic_user_file key/auth.key;
}
}

第四步:高级防御术
  • 流量警察
限制请求速率, 防止DDoS攻击。
http {
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=1r/s;
server {
location / {
limit_req zone=req_limit burst=5 nodelay;
}
}
}
设置限制的大小和速率(每秒最多允许1个请求)。

  • 方法审查
严格限制请求方法,只允许安全的请求方式。
if ($request_method !~ ^(GET|POST)$ ) {
return 405;
}
$request_method能够获取到请求nginx的method

配置只允许GET\POST方法访问,其他的method返回405


  • 用户代理侦查
拒绝可疑的User-Agent,阻拦自动化扫描工具。
if ($http_user_agent ~* LWP::Simple|BBBike|wget|curl) {
return 444;
}

第五步:加密通道,安全升级
  • HTTPS护航
配置SSL证书,为数据传输加上安全的加密层,确保信息传递的私密性和完整性。
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /path/to/certificate.crt;
ssl_certificate_key /path/to/private.key;
location / {
}
}

通过上述步骤,你的Nginx服务器将穿上坚固的盔甲,无论是对抗恶意访问,还是防御数据泄露,都能游刃有余。记得定期检查和更新配置,保持安全策略的最佳状态。


欢迎各位技术大神参与爱星物联开源云项目体验,爱星物联IoT云平台致力于提供更加成熟、安全、全球化可用的物联网服务,降低投入成本,快速开发 IoT 产品,构建安全稳定且可定制化的 IoT 解决方案。
爱星物联开源云项目:https://github.com/ubases

Less is more.
回复

使用道具 举报

WT_0213 | 2024-6-14 15:16:59 | 显示全部楼层
回复

使用道具 举报

爱笑 | 2024-6-14 17:08:17 | 显示全部楼层
用心做好保姆工作
回复

使用道具 举报

iiv | 2024-6-14 19:02:09 | 显示全部楼层
回复

使用道具 举报

bzhou830 | 2024-6-14 20:04:13 | 显示全部楼层
选择去发光,而不是被照亮
回复

使用道具 举报

1084504793 | 2024-6-15 06:41:49 | 显示全部楼层
回复

使用道具 举报

jkernet | 2024-6-15 10:10:39 | 显示全部楼层
感谢分享
回复

使用道具 举报

lazy | 2024-6-17 18:18:49 | 显示全部楼层
打卡
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则