前言

因工作原因,接触到了WAF,今天部署了一下Naxsi,记录一下

GitHub

正文

环境

Centos 7

下载

更新yum

yum update -y

安装必要依赖

yum install gcc gcc-c++ cmake ncurses ncurses-devel libxml2 libxml2-devel zlib zlib-devel gd gd-devel openssl openssl-devel curl curl-devel libtool pcre pcre-devel wget unzip vim

下载Nginx

可使用最新版

wget http://nginx.org/download/nginx-1.17.8.tar.gz

下载Naxsi

可使用最新版

wget https://github.com/nbs-system/naxsi/archive/0.56.tar.gz

解压

tar -xvzf nginx-1.17.8.tar.gz

tar -xvzf 0.56.tar.gz

编译安装带插件的Nginx

cd nginx-1.17.8

注意 --add-module 后面跟的路径

./configure --prefix=/opt/nginx --add-module=/root/naxsi/naxsi-0.56/naxsi_src --user=nginx --group=nginx --with-http_ssl_module --with-http_geoip_module --without-mail_pop3_module --without-mail_smtp_module --without-mail_imap_module --without-http_uwsgi_module --without-http_scgi_module

make

make install

mkdir /var/log/nginx

安装Naxsi插件

cp /root/naxsi/naxsi-0.56/naxsi_config/naxsi_core.rules /opt/nginx/conf/

vim /opt/nginx/conf/naxsi.rules

写入以下内容保存

SecRulesEnabled;

DeniedUrl "/RequestDenied";

## check rules

CheckRule "$SQL >= 8" BLOCK;

CheckRule "$RFI >= 8" BLOCK;

CheckRule "$TRAVERSAL >= 4" BLOCK;

CheckRule "$EVADE >= 4" BLOCK;

CheckRule "$XSS >= 8" BLOCK;

上面的内容是拦截的规则, naxsi的流程是将每个请求URL解析,发现一个可疑处增加一些分数,从2到8分都有,然后根据此文件的规则确定规则

比如 CheckRule "$SQL >= 8" BLOCK; 的意思是如果SQL部分分数大于等于8返回错误的状态码(404)

更多详细可看 Naxsi规则简单说明

开启Naxsi插件

vim /opt/nginx/conf/nginx.conf

修改为

user nginx nginx;
worker_processes 1;
events {
worker_connections 1024;
} http {
include mime.types;
include /opt/nginx/conf/naxsi_core.rules;
default_type application/octet-stream; access_log off;
error_log /var/log/nginx/error.log; sendfile on;
keepalive_timeout 65;
tcp_nodelay on;
gzip on;
gzip_disable "MSIE [1-6].(?!.*SV1)"; server {
listen 80;
server_name localhost; location / {
include /opt/nginx/conf/naxsi.rules; # 开启插件
proxy_pass http://127.0.0.1:3456; # 通过后转发到内部监听业务地址
} error_page 500 502 503 504 /50x.html; location = /50x.html {
root html;
}
}
}

开启Nginx

测试

/opt/nginx/sbin/nginx -t

启动

/opt/nginx/sbin/nginx

测试

使用Post测试

访问业务地址

比如一个Python的接口,路由是 / ,接收Post和Get请求,直接返回 helloworld

访问时带上SQL注入

http://x.x.x.x/?q="><script>alert(1)</script>

返回404代表已成功拦截



去掉sql注入访问返回200

Nginx集成Naxsi防火墙的更多相关文章

  1. 烂泥:php5.6源码安装及php-fpm配置与nginx集成

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. LNMP环境的搭建中,现在只有php没有源码安装过.这篇文章就把这个介绍下. 注意本篇文章使用的centos 6.5 64bit. 登陆centos下载 ...

  2. NGINX的奇淫技巧 —— 5. NGINX实现金盾防火墙的功能(防CC)

    NGINX的奇淫技巧 —— 5. NGINX实现金盾防火墙的功能(防CC) ARGUS 1月13日 发布 推荐 0 推荐 收藏 2 收藏,1.1k 浏览 文章整理中...... 实现思路 当服务器接收 ...

  3. 烂泥:KVM、kickstart与nginx集成

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 前几篇文章介绍了FTP.NFS与KVM.kickstart集成的案例,从这篇文章开始,我们来介绍HTTP方式与KVM.kickstart集成. HTTP ...

  4. 为了解决linux配置Nginx 只能关闭防火墙才能访问的问题

    使用Nginx和iptables做访问权限控制(IP和MAC)     之前配置的服务器,相当于对整个内网都是公开的,而且,除了可以通过80端口的nginx来间接访问各项服务,也可以绕过nginx,直 ...

  5. Nginx使用naxsi防xss、防注入攻击配置

    == 对于nginx有相应模块来完成WAF构建,此处使用的是naxsi模块. == 一.安装前提 .必须安装了nginx并可提供基本服务(这个是添加模块儿的前提,自己google吧): .下载naxs ...

  6. windows下Nacos集群搭建与nginx集成

    前言: nacos集群至少需要三个(一般为奇数个)nacos实 例,其前面顶nginx,外界入口从nginx入 一.windows下Nacos集群搭建 将Nacos的解压包复制分成3份,分别是: na ...

  7. Identity Server 4 从入门到落地(十二)—— 使用Nginx集成认证服务

    前面的部分: Identity Server 4 从入门到落地(一)-- 从IdentityServer4.Admin开始 Identity Server 4 从入门到落地(二)-- 理解授权码模式 ...

  8. 使用docker+consul+nginx集成分布式的服务发现与注册架构

    一.环境说明: 1.一台虚拟机,该系统已经装好了docker: ip 192.168.10.224 虚拟网卡,与主机互通 操作系统rhel6 内核 2.6.32  64位 docker版本 1.7.1 ...

  9. JBOSS EAP实战(2)-集群、NGINX集成、队列与安全

    JBOSS HTTP的Thread Group概念 JBOSS是一个企业级的J2EE APP Container,因此它和任何一种成熟的企业级中间件一样具有Thread Group的概念.所谓Thre ...

随机推荐

  1. Scrum冲刺_Day03

    一.团队展示: 1.项目:light_note备忘录 2.队名:删库跑路队 3.团队成员 队员(不分先后) 项目角色 黄敦鸿 后端工程师.测试 黄华 后端工程师.测试 黄骏鹏 后端工程师.测试 黄源钦 ...

  2. vertical-align什么时候使用?常用的值分别有什么作用?

    设置元素的垂直对齐方式 常用的值: 1.baseline:默认.元素放置在父元素的基线上. 2.sub:垂直对齐文本的下标. 3.super:垂直对齐文本的上标 4.top:把元素的顶端与行中最高元素 ...

  3. react-admin-plus 正式开源, 欢迎star

    简介 基于react.ant-ui.typescript的前端微服务框架.欢迎star. 在线地址 在线demo 项目介绍   沉淀了几个月的时间,这款框架终于正式的和大家见面了!   先说一下我做这 ...

  4. 网络层-network layer(下):网络互连、子网掩码计算方法、Ipv4报头解析

    第五章 网络层-Network Layer(下) 上一章讲了网络层的任务.提供的两种服务.五个重要的路由算法.以及网络层的拥塞控制和服务质量问题.这一部分主要讲一讲网络互连问题和Internet的网络 ...

  5. SA-IS学习笔记

    Q:SA-IS 是什么玩意? A:一种 \(O(n)\) 求后缀数组的高科技. Q:为什么会有 SA-IS 这种算法? A:因为它是 \(O(n)\) 的,比倍增 \(O(n\log n)\) 快. ...

  6. 测试web-view,实现小程序和网页之间的切换

    官方有句提醒:个人类型与海外类型的小程序暂不支持使用 测试条件: 1.小程序后台管理中,进入"开发设置",设置一个业务域名(注意:不是设置服务器域名).比如 https://tes ...

  7. db2密码中有感叹号时,连接方法

    在脚本文件中,可以将密码用单引号括起来 db2 "connect  to testdb user test_user using 'Gb2Zk1!R'"

  8. Spark Connector Reader 原理与实践

    本文主要讲述如何利用 Spark Connector 进行 Nebula Graph 数据的读取. Spark Connector 简介 Spark Connector 是一个 Spark 的数据连接 ...

  9. abp.zero 9.0框架的前端Angular使用说明

    abp.zero 9.0框架的前端Angular使用说明 目录 abp.zero 9.0框架的前端Angular使用说明 摘要 1 部署及启动 1.1 依赖包安装 1.2 使用yarn安装依赖包 1. ...

  10. C++ string常见函数总结

    基础概念 对照功能列表:不能直接回答的再去看相应解析说明. begin 得到指向字符串开头的 Iterator end 得到指向字符串结尾的 Iterator rbegin 得到指向反向字符串开头的 ...