能够浏览我的这篇文章,相信你已经对 Nginx 不陌生了,所以这里就不再赘述 Nginx 的安装和配置了,我们直接从 Nginx 和 Naxsi 的集成来讲,如果你对 Nginx 还比较陌生,不知道配置文件在哪里或者不知道如何编译,那这篇文章不太适合你,还请先熟悉 Nginx 的安装和配置编译。
我为什么需要 WAF 呢?随着网站上线时间变长,各种扫描攻击也日益增多,为了能安心一点,所以就希望能有个 WAF防火墙抵挡大部分攻击扫描,但是硬件 WAF防火墙虽然好,价格也十分昂贵,中小型企业或者创业团队肯定没有资金来购买昂贵的安全设备的,但是 Nginx + Naxsi 就可以构建一个免费的软件 WAF防火墙,所以我开始尝试使用 Naxsi 来实现我的 WAF防火墙。
在开始之前,我们先了解一下都需要准备的环境(我所演示的操作均在Linux环境下):
yum -y install crontabs gcc gcc-c++ glibc libpcre3-dev make zlib autoconf openssl openssl-devel wget libxslt-devel gd gd-devel GeoIP GeoIP-devel pcre pcre-devel
wget -P /usr/local/src/ http://nginx.org/download/nginx-1.16.0.tar.gz
wget -P /usr/local/src/ https://github.com/nbs-system/naxsi/archive/untagged-afabfc163946baa8036f.tar.gz
tar vxf nginx-1.16.0.tar.gz
tar vxf untagged-afabfc163946baa8036f.tar.gz
注意,untagged-afabfc163946baa8036f.tar.gz 就是下载的 Naxsi,解压后就是下文中的 naxsi 文件夹
mkdir /usr/local/nginx
cd nginx-1.16.0/
./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--add-module=../naxsi/naxsi_src \
--with-http_stub_status_module\
--with-http_gzip_static_module\
--with-http_realip_module\
--with-http_ssl_module
make modules
make
make install
cp ../naxsi/naxsi_config/naxsi_core.rules /etc/nginx/naxsi_core.rules
http {
#上下文省略
include /etc/nginx/naxsi_core.rules; # 此处加载 naxsi 核心规则文件
#上下文省略
}
server {
#上下文省略
# 启用Naxsi模块
SecRulesEnabled;
# 启用学习模式,即拦截请求后不拒绝访问,只将触发规则的请求写入日志
#LearningMode; #enable learning mode
LibInjectionSql; #enable libinjection support for SQLI
LibInjectionXss; #enable libinjection support for XSS
# 拒绝访问时展示的页面
DeniedUrl "/RequestDenied";
# 检查规则
CheckRule "$SQL >= 8" BLOCK;
CheckRule "$RFI >= 8" BLOCK;
CheckRule "$TRAVERSAL >= 4" BLOCK;
CheckRule "$EVADE >= 4" BLOCK;
CheckRule "$XSS >= 8" BLOCK;
error_log logs/naxsi.log;
# 配置拦截后拒绝访问时展示的页面,这里直接返回403。
location /RequestDenied {
return 403;
}
#上下文省略
}
这里说下 LearningMode 学习模式,如果把这个放出来,启用学习模式的话,就不会拦截攻击,只是把攻击请求写入 error_log 日志里面,所以我们需要它拦截攻击,就需要把这个注释掉。
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
验证方法也很简单,执行类似这样的请求:
http://localhost/?id=<>
如果显示的是 403 禁止访问,那么就是成功了!
商业用途请联系作者获得授权。
版权声明:本文为博主「任霏」原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://www.renfei.net/posts/1003286
本站有缓存策略,时间约2小时后能看到您的评论。本站使用自动审核机制,如果您的内容包含广告/谩骂/恐怖/暴力/涉政等不和谐内容将无法展示!
本站有缓存策略,时间约2小时后能看到您的评论。本站使用自动审核机制,如果您的内容包含广告/谩骂/恐怖/暴力/涉政等不和谐内容将无法展示!