一句话概括
Nginx安全加固就是不让坏人进来、不让信息泄露、不让服务器被搞崩。
核心要点(说人话版)
🛡️ 基础防护(像给门上锁)
别用root跑Nginx——就像不让总经理亲自站门岗,找个普通员工(nginx用户)运行就行
隐藏版本号——别告诉黑客你用哪个版本,省得被针对(
server_tokens off)关掉目录浏览——防止别人看到你服务器上的文件列表,跟家里窗帘拉上一个道理
🔒 访问控制(分清楚谁是自己人)
后台锁死:/admin这种敏感目录,只让公司内网IP访问,再加个密码
敏感文件藏好:.git、.env、.htaccess这些配置文件,外人访问直接返回404(装不存在)
限制上传大小:别让人传大文件撑爆你硬盘(
client_max_body_size)
🌐 HTTPS配置(给数据穿衣服)
只用TLSv1.2/1.3(老版本SSL有漏洞,像过时的锁芯)
开启HSTS(强制浏览器用HTTPS访问,防中间人攻击)
配好安全响应头(像给网站穿防弹衣)
🚫 防攻击措施
防暴力破解:登录接口每分钟只让试几次,试多了直接拉黑
IP黑名单:发现恶意IP实时封禁(fail2ban自动干这事)
SQL注入/XSS防护:用ModSecurity WAF(相当于请了个24小时保安)
日常运维该干啥
✅ 每月必做
跑一遍gixy检查配置有没有漏洞
扫描一下端口和服务(nmap)
翻翻日志看有没有异常(4xx/5xx太多说明有人在搞事)
⚠️ 发现被攻击时
实时tail日志看可疑请求(union select、.env、/wp-admin这些关键词)
动态封IP(geo模块+黑名单文件)
📋 配置变更原则
改配置前先
nginx -t测试(别直接重启导致服务挂了)所有配置上Git(方便回滚和追溯)
最容易被忽略的3点
文件权限:配置文件不该让所有人读,日志文件不能让用户删
HTTP方法限制:除了GET/POST/HEAD,其他方法(PUT/DELETE)能关就关
定期更新:老版本Nginx可能有已知漏洞,跟打疫苗一个道理
说白了:安全加固就是不该看的看不到、不该进的进不来、不该传的传不了,再加个监控及时发现谁在搞鬼。