Linux搭建waf防火墙,Linux入门教程:nginx安装配置naxsi waf防火墙,nginxwaf Naxsi 不依赖...
Linux入门教程:nginx安装配置naxsi waf防火墙,nginxwaf Naxsi 不依赖
Naxsi 是第三方 nginx 模块 ,它和 Modsecurity 都是开源 WAF ,但是它们的防御模式不同。 Naxsi 不依赖像防病毒软件这样的签名库,因此不会被“未知”攻击模式所规避(就像我们平常说的主动防御)。Naxsi 和其他 WAF 之间的另一个主要区别就是仅过滤 GET 和 POST 请求。
我之前一直在用 modsecurity ,效果还不错,但是它对 nginx 支持真的不太好~.~ 。经常会产生大量错误日志,不过这个并不影响它的正常功能,只是看着揪心。让我想更换它的主要原因是 Modsecurity 经常在处理某个请求(正常或不正常)时,会突然导致 CPU 99.9% 以上,这是最不能忍受的。
我们先来简单对比下 Naxsi 和 Modsecurity :
在日常使用中,可以发现 Modsecurity 具有非常严格的防御规则(误报挺多的),并且规则支持较好(有强大的后台?)。如果你使用 Apache 服务器,推荐使用 Modsecurity WAF。如果你使用的是 Nginx 服务器,建议先尝试使用 Naxsi 。
下面就来在 Centos 下编译安装 Nginx + Naxsi WAF 。Modsecurity 的编译安装在这里(http://www.wuedc.com/nginx-installed-configuration-modsecurity-waf/)。
编译 Nginx + Naxsi
首先先运行:
nginx -V
然后可以看到现有的模块,复制保存一下备用。
configure arguments: --prefix=/usr/local/nginx --user=www --group=www --with-http_stub_status_module --with-http_v2_module --with-http_ssl_module --with-ipv6 --with-http_gzip_static_module --with-http_realip_module --with-http_flv_module --with-openssl=../openssl-1.0.2h --with-pcre=../pcre-8.38 --with-pcre-jit --with-ld-opt=-ljemalloc
下载 Nginx 和 Naxsi
Naxsi 应该使用所有高于 0.8.X 的 Nginx 版本。 Naxsi 版本可以在 https://github.com/nbs-system/naxsi 这里,选择 Branch –> Tags 查看版本号。
下载 Nginx 和 Naxsi ,并解压,然后进入解压后的 Nginx 目录:
wget http://nginx.org/download/nginx-x.x.xx.tar.gz
wget https://github.com/nbs-system/naxsi/archive/x.xx.x.tar.gz
tar xvzf nginx-x.x.xx.tar.gz
tar xvzf naxsi-x.xx.tar.gz
cd nginx-x.x.xx/
Naxsi 不要求任何特定的依赖,它需要的 libpcre ,libssl ,zlib ,gzip 这些 Nginx 已经集成了。
然后编译(记得在 ./configure 后面加上 –add-module=../naxsi-x.xx/naxsi_src/ 和你之前备份的模块):
./configure --conf-path=/etc/nginx/nginx.conf --add-module=../naxsi-x.xx/naxsi_src/ \
--error-log-path=/var/log/nginx/error.log --http-client-body-temp-path=/var/lib/nginx/body \
--http-fastcgi-temp-path=/var/lib/nginx/fastcgi --http-log-path=/var/log/nginx/access.log \
--http-proxy-temp-path=/var/lib/nginx/proxy --lock-path=/var/lock/nginx.lock \
--pid-path=/var/run/nginx.pid --with-http_ssl_module \
--without-mail_pop3_module --without-mail_smtp_module \
--without-mail_imap_module --without-http_uwsgi_module \
--without-http_scgi_module --with-ipv6 --prefix=/usr
make
make install
等待编译完成。Naxsi 安装完成。
nginx/naxsi 基本配置
首先将 naxsi 目录下的 naxsi_core.rules 拷贝至 nginx.conf 所在目录。
http 部分配置
打开 nginx.conf 在 http 部分配置:
http {
include naxsi_core.rules; #导入 naxsi 核心规则
...
}
server 部分配置
在 nginx.conf 的 server 部分配置:
location / {
#开启 naxsi
SecRulesEnabled;
#开启学习模式
LearningMode;
#定义阻止请求的位置
DeniedUrl "/50x.html";
#CheckRules, 确定 naxsi 何时采取行动
CheckRule "$SQL >= 8" BLOCK;
CheckRule "$RFI >= 8" BLOCK;
CheckRule "$TRAVERSAL >= 4" BLOCK;
CheckRule "$EVADE >= 4" BLOCK;
CheckRule "$XSS >= 8" BLOCK;
#naxsi 日志文件
error_log /.../foo.log;
...
}
error_page 500 502 503 504 /50x.html;
#This is where the blocked requests are going
location = /50x.html {
return 418; #I'm a teapot \o/
}
server 完整示例配置
server {
listen 80 default;
access_log /wwwlogs/access_nginx.log combined;
root /www/site;
index index.html index.htm index.php;
location ~ [^/]\.php(/|$) {
SecRulesEnabled;
#LearningMode;
DeniedUrl "/RequestDenied";
CheckRule "$SQL >= 8" BLOCK;
CheckRule "$RFI >= 8" BLOCK;
CheckRule "$TRAVERSAL >= 4" BLOCK;
CheckRule "$EVADE >= 4" BLOCK;
CheckRule "$XSS >= 8" BLOCK;
error_log /wwwlogs/foo.log;
fastcgi_pass unix:/dev/shm/php-cgi.sock;
fastcgi_index index.php;
include fastcgi.conf;
}
location /RequestDenied {
return 403;
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|ico)$ {
expires 30d;
access_log off;
}
location ~ .*\.(js|css)?$ {
expires 7d;
access_log off;
}
}
测试
测试 nginx 配置
/nginx/sbin/nginx -t
nginx: the configuration file /nginx/conf/nginx.conf syntax is ok
nginx: configuration file /nginx/conf/nginx.conf test is successful
重启 nginx
service nginx reload
防御测试
浏览器中打开 http://www.test.com/?a=<>‘ ,出现 403 错误,并且在 foo.log 中出现 NAXSI_FMT 开头的日志。恭喜你 Naxsi 启用成功。
白名单规则
Naxsi 社区提供了一些常用的白名单规则,例如 wordpress 。可以在 https://github.com/nbs-system/naxsi-rules 下载白名单规则。
然后将规则 include 到 server 内的 location 中。重启 nginx 即可。不过目前这些白名单最近的修改日期显示是1年前~.~ ,可根据自身需要添加白名单规则。
详细的白名单规则以及 Naxsi 其他支持,可参考 Naxsi WIKI。
Linux搭建waf防火墙,Linux入门教程:nginx安装配置naxsi waf防火墙,nginxwaf Naxsi 不依赖...相关推荐
- mysql 开源入门_入门教程:安装配置新版MySQL 8开源数据库
原标题:入门教程:安装配置新版MySQL 8开源数据库 [ 来自IT168] [IT168 技术]MySQL是现代应用程序编程堆栈中常见的数据库管理系统.如果您想要一个适用于您应用程序的,便于利用丰富 ...
- 教程 | 用安卓手机搭建 web 服务器(二)—— Nginx 安装配置
上一步完成了必要的软件安装,接下来需要在 Linux 系统上安装 nginx. Nginx("engine x")是一款是由俄罗斯的程序设计师 Igor Sysoev 所开发高性能 ...
- 教程 | 用安卓手机搭建 web 服务器(一)—— 应用安装配置
[2019.2.23 更新]:更新 BusyBox,Linux Deploy 软件 之前无意间看到了一篇<在安卓上部署服务器>的文章,正好最近换了新手机,正好最近在学 Python 和 H ...
- WindowsServer2012 R2 64位中文标准版(IIS8.5)下手动搭建PHP环境详细图文教程(二)安装IIS8.5...
//来源:http://www.imaoye.com/Technology/WindowsServer2012R264IIS85.html 阿里云服务器ECS Windows Server 2012 ...
- linux c++编程教程,Linux下的C++编程入门教程.ppt
<Linux下的C++编程入门教程.ppt>由会员分享,可在线阅读,更多相关<Linux下的C++编程入门教程.ppt(14页珍藏版)>请在人人文库网上搜索. 1.Linux下 ...
- linux下的c 编程入门教程,Linux下的C编程入门教程.ppt
<Linux下的C编程入门教程.ppt>由会员分享,可在线阅读,更多相关<Linux下的C编程入门教程.ppt(14页珍藏版)>请在装配图网上搜索. 1.Linux下c+编程, ...
- SpringCloud 入门教程(三): 配置自动刷新
Spring Cloud 入门教程(三): 配置自动刷新 之前讲的配置管理, 只有在应用启动时会读取到GIT的内容, 之后只要应用不重启,GIT中文件的修改,应用无法感知, 即使重启Config Se ...
- nginx安装配置(图文教程)
nginx安装配置(图文教程) nginx介绍 nginx是一款使用C语言编写的高性能的HTTP和反向代理服务器.优点是占用内存小,并发能力强. nginx下载.安装 输入以下代码下载安装包 wget ...
- RabbitMQ入门教程(安装,管理插件,Publisher/Consumer/交换机/路由/队列/绑定关系,及如何保证100%投递等)
RabbitMQ入门教程(安装,管理插件,Publisher/Consumer/交换机/路由/队列/绑定关系,及如何保证100%投递等) 1. RabbitMQ简介及AMQP协议 开源的消息代理和队列 ...
最新文章
- TensorFlow各版本下载地址,强烈推荐
- 中国电信:回归根本的SOC发展之道
- leetcode A String Replacement Problem---流程图
- opengl源码 实现无缝切换图片过场_手把手讲解 Android hook技术实现一键换肤
- [以太坊源代码分析] VI. 基于p2p的底层通信(上篇)
- Pytorch基础(十)——优化器(SGD,Adagrad,RMSprop,Adam,LBFGS等)
- BZOJ 2844 | HYSBZ - 2844albus就是要第一个出场——线性基
- ios 上传图片失败 小程序_微信小程序ios端 使用ajaxSubmit上传图片失败,android没问题...
- Linked List Two Finish
- 14个新鲜的免费图标集
- Windows 95/98虚拟机OS安装说明书[仅限VirtualBox]
- 牛刀 —— 汨罗网络屏幕投影软件的技术实现
- excel空值排查快捷键
- 工作中,掌握这四个说话技巧,再也不用担心自己不会说话
- 基本SQL命令表命令
- android TextView向上滚动(模仿滚动文字广告效果)
- (完全理解)二重积分中的换元积分中的雅可比矩阵
- Pentaho Data Integration(Kettle) 6.0
- 揭秘肖特基二极管损坏背后的秘密
- Spine动画显示错乱问题
热门文章
- Android四大组件-Boardcast
- (16)万能查询还是万恶查询?
- EndNote导入文献出现带有大括号{}乱码的解决办法
- chrome浏览器不能显示本地图片办法解决(图片预览)
- 《SolidWorks 2014中文版完全自学手册》——第1章 SolidWorks 2014入门 1.1 SolidWorks的设计思想...
- 上班族用哪个邮箱好用,如何正确使用邮件工作?...
- 充电桩(charging station)是什么?
- 最近沉迷美女图片无法自拔,所以我决定用PHP扒海量妹子图
- Mysql——》索引存储模型推演
- 6.6.5 住房公积金参缴记录