博客
关于我
WAF安全应用防火墙(nginx+lua)
阅读量:87 次
发布时间:2019-02-26

本文共 2626 字,大约阅读时间需要 8 分钟。

一、如果使用nginx简单实现403和404,应该都不难,只需要在配置文件中的server字段中添加相应的内容即可

1、nginx实现rerurn 403
修改nginx配置文件在server中加入以下内容

set $block_user_agent 0;     if ( $http_user_agent ~ "Wget|AgentBench"){        set $block_user_agent 1;     }     if ($block_user_agent = 1) {         return 403 ;   }

2、nginx实现rerurn 404

修改nginx配置文件在server中加入以下内容,让访问sql|bak|zip|tgz|tar.gz的请求返回404

location ~* "\.(sql|bak|zip|tgz|tar.gz)$"{       return 404; }

但是针对于更高层面的功能实现,nginx自带的模块是实现不了的,例如IP白名单、IP黑名单、Cookie过滤等等。而waf安全防火墙可以实现的功能还是比较多的。

针对waf的介绍,请参考我的博客
今天我再介绍另外一种实现waf功能的方法,即”nginx+lua”

二、编译nginx的时候加载lua

1、环境准备:Nginx安装必备的Nginx和PCRE软件包

[root@linux-node2 ~]# cd /usr/local/src [root@linux-node2 src]# wget http://nginx.org/download/nginx-1.9.4.tar.gz[root@linux-node2 src]# wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz其次,下载当前最新的luajit和ngx_devel_kit (NDK)[root@linux-node2 src]# wget http://luajit.org/download/LuaJIT-2.0.3.tar.gz[root@linux-node2 src]# wget https://github.com/simpl/ngx_devel_kit/archive/v0.2.19.tar.gz[root@linux-node2 src]# wget https://github.com/openresty/lua-nginx-module/archive/v0.9.16.tar.gz[root@linux-node2 src]# useradd -s /sbin/nologin -M www    #创建Nginx运行的普通用户

2、解压NDK和lua-nginx-module

[root@linux-node2 src]# tar -zxvf v0.2.19.tar.gz[root@linux-node2 src]# tar -zxvf v0.9.16.tar.gz

3、安装LuaJIT,Luajit是Lua即时编译器

[root@linux-node2 src]# tar -zxvf LuaJIT-2.0.3.tar.gz [root@linux-node2 src]# cd LuaJIT-2.0.3[root@linux-node2 LuaJIT-2.0.3]# make && make install

4、安装Nginx并加载模块

[root@linux-node2 src]# tar -zxf pcre-8.40.tar.gz[root@linux-node2 src]# tar -zxvf nginx-1.9.4.tar.gz [root@linux-node2 src]# cd nginx-1.9.4[root@linux-node2 nginx-1.9.4]# export LUAJIT_LIB=/usr/local/lib[root@linux-node2 nginx-1.9.4]# export LUAJIT_INC=/usr/local/include/luajit-2.0[root@linux-node2 nginx-1.9.4]# ./configure --prefix=/usr/local/nginx --user=www --group=www     --with-http_ssl_module --with-http_stub_status_module --with-file-aio --with-http_dav_module --add-module=../ngx_devel_kit-0.2.19/ --add-module=../lua-nginx-module-0.9.16/ --with-pcre=/usr/local/src/pcre-8.40 [root@linux-node2 nginx-1.5.12]# make -j2 && make install

[root@linux-node2 ~]# ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2 #一定创建此软连接,否则报错

如果不创建符号链接,可能出现以下异常: error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory

安装完毕后,下面可以测试安装了,修改nginx.conf 增加第一个配置

location /hello {                default_type 'text/plain';                content_by_lua 'ngx.say(",lua")';        }[root@linux-node2 ~]# /usr/local/nginx-1.9.4/sbin/nginx –t[root@linux-node2 ~]# /usr/local/nginx-1.9.4/sbin/nginx

测试

转载地址:http://vomk.baihongyu.com/

你可能感兴趣的文章
Nginx面试三连问:Nginx如何工作?负载均衡策略有哪些?如何限流?
查看>>
Nginx(2):Nginx配置server节点
查看>>
nginx:/usr/src/fastdfs-nginx-module/src/common.c:21:25:致命错误:fdfs_define.h:没有那个文件或目录 #include
查看>>
Nginx:NginxConfig可视化配置工具安装
查看>>
Nginx:现代Web服务器的瑞士军刀 | 文章末尾送典藏书籍
查看>>
ngModelController
查看>>
ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
查看>>
ngrok内网穿透可以实现资源共享吗?快解析更加简洁
查看>>
ngrok内网穿透可以实现资源共享吗?快解析更加简洁
查看>>
NHibernate动态添加表
查看>>
NHibernate学习[1]
查看>>
NHibernate异常:No persister for的解决办法
查看>>
Nhibernate的第一个实例
查看>>
NHibernate示例
查看>>
nid修改oracle11gR2数据库名
查看>>
NIFI1.21.0/NIFI1.22.0/NIFI1.24.0/NIFI1.26.0_2024-06-11最新版本安装_采用HTTP方式_搭建集群_实际操作---大数据之Nifi工作笔记0050
查看>>
NIFI1.21.0_java.net.SocketException:_Too many open files 打开的文件太多_实际操作---大数据之Nifi工作笔记0051
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_插入时如果目标表中已存在该数据则自动改为更新数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0058
查看>>
NIFI1.21.0_Mysql到Mysql增量CDC同步中_补充_更新时如果目标表中不存在记录就改为插入数据_Postgresql_Hbase也适用---大数据之Nifi工作笔记0059
查看>>