Nginx+Lua配置防火墙

前言

老师布置的作业……

​ 利用Nginx服务器的Lua模块搭建网站防火墙。

​ 配置目标:对XSS攻击,SQL注入起一定的防护作用

​ 环境:Ubuntu18.04 (192.168.1.141)

配置过程

前期配置

(1)安装Nginx服务器

1
sudo apt-get install nginx-full

​ 安装完Nginx服务器后,关于Nginx服务器的信息在目录/etc/nginx下,其中Nginx.conf为Nginx服务器的配置信息。

image-20200615192818044

​ 在安装完之后,查看配置信息,在Nginx.conf中可以看到关于端口等配置信息的设置是在/etc/nginx/sites-enabled/*

image-20200615194017591

image-20200615193745419

​ 可以看到这里Nginx服务器的端口是设置成80端口,web的根目录设置为/var/www/html

注意:如果系统开启了防火墙,那么防火墙需放行80端口

image-20200615194308401

1
sudo ufw allow 80 #允许外部访问80端口

image-20200615195252407

​ 如图,Nginx服务器正常工作。

(2)安装Lua及其相关组件

1
sudo apt-get install lua5.2 lua5.2-doc liblua5.2-dev

(3)安装LuaJIT

1
sudo apt-get install LuaJIT

(4)安装nginx的lua模块Lua-nginx-module

1
sudo apt-get install libnginx-mod-http-lua

​ 验证Lua模块是否成功安装

​ 在/etc/nginx/sites-enabled/default中修改server模块,添加如下内容,重新加载配置nginx -t -c /etc/nginx/nginx.conf

image-20200615200031112

​ 然后访问http://192.168.1.141/hello

image-20200615200137535

(5)配置php环境

​ 安装php-fpm

1
apt-get install php-fpm

​ 然后配置nginx.conf如下,重新加载配置nginx -t -c /etc/nginx/nginx.conf

image-20200615204942539

​ 关于nginx如何调用php参考文章:http://www.cnblogs.com/echojson/p/10830302.html

​ 在根目录下创建phpinfo.php

1
<?php phpinfo(); ?>

image-20200615205551760

安装防火墙

​ 防火墙选择开源项目ngx_lua_waf

1
http://github.com/loveshell/ngx_lua_waf

​ 这款waf在可拓展性和性能上有很好的平衡

​ 安装命令如下:

1
2
3
4
git clone https://github.com/loveshell/ngx_lua_waf.git #下载waf源码
cd ngx_lua_waf
mkdir /etc/nginx/waf
mv * /etc/nginx/waf

image-20200615201614638

​ 其中config.lua中是防火墙的配置文件,wafconf中是各种防护规则,可以自行添加。

1
2
3
4
5
6
wafconf有以下几个防护规则:
args 对get参数进行过滤
url 只在get请求url过滤的规则
post 只在post请求过滤的规则
whitelist 白名单,里面的url匹配不做过滤
user-agent 对user-agent的过滤规则

配置防火墙

​ (1)修改防火墙配置config.lua

image-20200615203546604

​ (2)修改Nginx服务器的nginx.conf配置,在http模块中添加如下内容,重新加载配置nginx -t -c /etc/nginx/nginx.conf

image-20200615204053770

验证

​ 在根目录创建test.php

1
<?php echo $_GET['id']; ?>

XSS攻击

image-20200615204053770

SQL注入攻击

image-20200615204053770

​ 查看日志

image-20200615210419222

总结

​ 开源项目ngx_lua_waf实际上是存在一些误报等问题,对防火墙进行修改,参考文章:https://www.leavesongs.com/OTHERLAN/diy-my-nginx-lua-waf.html

Author: 我是小吴啦
Link: http://yoursite.com/2020/06/15/Nginx-Lua%E9%85%8D%E7%BD%AE%E9%98%B2%E7%81%AB%E5%A2%99/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.