2019-08-08 08:14:181、我使用的Centos7,所以直接使用 yum 安装:
Nginx 安装 Naxsi 模块实现 WAF WEB应用安全防火墙的功能
能够浏览我的这篇文章,相信你已经对 Nginx 不陌生了,所以这里就不再赘述 Nginx 的安装和配置了,我们直接从 Nginx 和 Naxsi 的集成来讲,如果你对 Nginx 还比较陌生,不知道配置文件在哪里或者不知道如何编译,那这篇文章不太适合你,还请先熟悉 Nginx 的安装和配置编译。
我为什么需要 WAF 呢?随着网站上线时间变长,各种扫描攻击也日益增多,为了能安心一点,所以就希望能有个 WAF防火墙抵挡大部分攻击扫描,但是硬件 WAF防火墙虽然好,价格也十分昂贵,中小型企业或者创业团队肯定没有资金来购买昂贵的安全设备的,但是 Nginx + Naxsi 就可以构建一个免费的软件 WAF防火墙,所以我开始尝试使用 Naxsi 来实现我的 WAF防火墙。
在开始之前,我们先了解一下都需要准备的环境(我所演示的操作均在Linux环境下):
- 1、Nginx:http://nginx.org/en/download.html
- 2、Naxsi:https://github.com/nbs-system/naxsi
- 3、Linux环境我安装了: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
一、下载和安装各项依赖和包
1、我使用的Centos7,所以直接使用 yum 安装:
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
2、下载 Nginx:
wget -P /usr/local/src/ http://nginx.org/download/nginx-1.16.0.tar.gz
3、下载 Naxsi:
wget -P /usr/local/src/ https://github.com/nbs-system/naxsi/archive/untagged-afabfc163946baa8036f.tar.gz
4、解压 Nginx 和 Naxsi:
tar vxf nginx-1.16.0.tar.gz
tar vxf untagged-afabfc163946baa8036f.tar.gz
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
2、下载 Nginx:
wget -P /usr/local/src/ http://nginx.org/download/nginx-1.16.0.tar.gz
3、下载 Naxsi:
wget -P /usr/local/src/ https://github.com/nbs-system/naxsi/archive/untagged-afabfc163946baa8036f.tar.gz
4、解压 Nginx 和 Naxsi:
tar vxf nginx-1.16.0.tar.gz
tar vxf untagged-afabfc163946baa8036f.tar.gz
注意,untagged-afabfc163946baa8036f.tar.gz 就是下载的 Naxsi,解压后就是下文中的 naxsi 文件夹
5、新建 Nginx 的工作目录
mkdir /usr/local/nginx
6、配置 Nginx 的各个模块,在此处添加 Naxsi 模块,注意下文中的 “../naxsi/” 就是 Naxsi 解压的文件夹
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
7、编译安装
make modules
make
make install
8、复制 Naxsi 的核心规则文件到指定位置
cp ../naxsi/naxsi_config/naxsi_core.rules /etc/nginx/naxsi_core.rules
二、配置 Nginx 的配置文件 nginx.conf
1、在 http 节点处
http {
#上下文省略
include /etc/nginx/naxsi_core.rules; # 此处加载 naxsi 核心规则文件
#上下文省略
}
2、在 server 节点处
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 日志里面,所以我们需要它拦截攻击,就需要把这个注释掉。
三、重启 Nginx,验证是否能拦截攻击请求
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload
验证方法也很简单,执行类似这样的请求:
http://localhost/?id=<>
如果显示的是 403 禁止访问,那么就是成功了!
商业用途请联系作者获得授权。
版权声明:本文为博主「任霏」原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接及本声明。
相关推荐
猜你还喜欢这些内容,不妨试试阅读一下评论与留言
以下内容均由网友提交发布,版权与真实性无法查证,请自行辨别。微信订阅号
扫码关注「任霏博客」微信订阅号内容标签
最新留言
- 你好,我想问一下如果是分析型的数据库要怎么制作docker镜像呢 是修改V008R003C002B0320版本号吗
- 可以的,我也正在开发分享的程序,可以邮件或群联系我都可以,关于页面里有联系方式:https://www.renfei.net/page/about 。
- 有破解软件的需要可以私下联系您吗?
- 您好,手机APP只是个客户端,用于数据呈现展示,数据均保存在服务器上,只留个APP没有任何用处,无能为力哦。
- 老哥 看你弄了这么多软件好厉害啊。 我有个软件 我买过几个小会员 没用几天 然后商家跑路了,软件服务器关闭了,连不上去 用不了。 你能做成一个打补丁版本可以本地用的么? 方便看下么?https://haodezhe.lanzouw.com/iD0f30h9joza 谢谢老哥!
- 您好,由于版权投诉和我国知识产权法的完善,我已经下架所有破解软件的下载链接了。
- 请问怎么下载呀
- 我保存的License在:https://gitlab.com/renfei/KingbaseES-V8-R3/-/tree/master/License ,开发版是长期有效的,只不过限制连接数,现在官网好像已经下线 V8R3 的下载页面了,其他版本我也不确定是否过期
- 这个版本的license有没有
- 序列号长度不对呀
热文排行
- 优雅的源代码管理(二):Git 的工作原理
- 优雅的源代码管理(一):版本控制系统 VCS(Version Control System)与软件配置管理 SCM(Software Configuration Management)
- ChatGPT 开发商 OpenAI 买下极品域名 AI.com
- 火爆的 AI 人工智能 ChatGPT 国内注册教程、使用方式和收费标准
- 解决 SpringCloud 中 bootstrap.yml 不识别 @[email protected] 参数
- Cron表达式书写教程搞定Linux、Spring、Quartz的定时任务
- 阿里云香港可用区C发生史诗级故障
- 国产统信UOS服务器操作系统V20提供免费使用授权
- 开源站长推送工具效果评测推荐(百度/必应/谷歌)
- 获取公网IP服务「ip.renfei.net」升级增加地理定位数据字段公示