前言:
通过对服务器 Web
应用防火墙(WAF
)日志的深入分析,我们发现绝大多数攻击均为 SQL
注入和跨站脚本攻击(XSS
)。这些攻击巧妙地绕过了内容分发网络(CDN
)的缓存规则,直接对源服务器发起请求。结果,PHP
和 MySQL
的计算请求量激增,导致服务器负载急剧上升。日志显示,绝大多数攻击都是通过 GET
或 POST
请求发起的。尽管 WAF
能够准确识别并拦截这些攻击,但由于Nginx
层面的防护措施不足,服务器负载仍然承受了较大压力。因此,我们在 Nginx
中添加了防止 SQL
注入和 XSS
攻击的配置,效果出乎意料地好。
要启用这些安全措施,请将以下 Nginx
配置代码添加到对应站点的.conf
配置文件中的[server
]部分,然后重新启动 Nginx
,配置即可生效。
代码如下:
# 汇站网
# https
://www
.huizhanii
.com
/38517.html
if
($request_method
!~* GET
|POST
) { return
444; }
#使用 444 错误代码可以更加减轻服务器负载压力。
#防止 SQL
注入
if
($query_string
~* (\$|'|--|[+|(%20)]union
[+|(%20)]|[+|(%20)]insert
[+|(%20)]|[+|(%20)]drop
[+|(%20)]|[+|(%20)]trun
cat
java
Apache
Bench
|WebBench
|Jmeter
|JoeDog
|Havij
|GetRight
|TurnitinBot
|GrabNet
|masscan
|mail2000
|github
|wget
|curl
|Java
|python
) { return
508; }
#同上,大家根据自己站点实际情况来添加删减下面的屏蔽拦截参数。
if
($http_user_agent
~* "Go
-Ahead
-Got
-It
") { return
508; }
if
($http_user_agent
~* "GetWeb
!") { return
508; }
if
($http_user_agent
~* "Go
!Zilla
") { return
508; }
if
($http_user_agent
~* "Download
Demon
") { return
508; }
if
($http_user_agent
~* "Indy
Library
") { return
508; }
if
($http_user_agent
~* "libwww
-perl
") { return
508; }
if
($http_user_agent
~* "Nmap
Scripting
Engine
") { return
508; }
if
($http_user_agent
~* "~17ce.com
") { return
508; }
if
($http_user_agent
~* "WebBench
*") { return
508; }
if
($http_user_agent
~* "spider
") { return
508; } #这个会影响国内某些搜索引擎爬虫,比如:搜狗
#拦截各恶意请求的 UA
,可以通过分析站点日志文件或者 waf
日志作为参考配置。
if
($http_referer
~* ) { return
509; }
#拦截 17ce.com
站点测速节点的请求。
if
($http_referer
~* WebBench
*") { return
509; }
#拦截 WebBench
或者类似压力测试工具,其他工具只需要更换名称即可。
转载请注明:汇站网 » 利用 Nginx
防止 XSS
攻击、SQL
注入 实践配置方法