前言
老师布置的作业……
利用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服务器的配置信息。
在安装完之后,查看配置信息,在Nginx.conf
中可以看到关于端口等配置信息的设置是在/etc/nginx/sites-enabled/*
中
可以看到这里Nginx服务器的端口是设置成80
端口,web的根目录设置为/var/www/html
注意:如果系统开启了防火墙,那么防火墙需放行80端口
1 | sudo ufw allow 80 #允许外部访问80端口 |
如图,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
然后访问http://192.168.1.141/hello
(5)配置php环境
安装php-fpm
1 | apt-get install php-fpm |
然后配置nginx.conf
如下,重新加载配置nginx -t -c /etc/nginx/nginx.conf
关于nginx如何调用php参考文章:http://www.cnblogs.com/echojson/p/10830302.html
在根目录下创建phpinfo.php
1 | phpinfo(); |
安装防火墙
防火墙选择开源项目ngx_lua_waf
1 | http://github.com/loveshell/ngx_lua_waf |
这款waf在可拓展性和性能上有很好的平衡
安装命令如下:
1 | git clone https://github.com/loveshell/ngx_lua_waf.git #下载waf源码 |
其中config.lua
中是防火墙的配置文件,wafconf
中是各种防护规则,可以自行添加。
1 | wafconf有以下几个防护规则: |
配置防火墙
(1)修改防火墙配置config.lua
(2)修改Nginx服务器的nginx.conf
配置,在http
模块中添加如下内容,重新加载配置nginx -t -c /etc/nginx/nginx.conf
验证
在根目录创建test.php
1 | echo $_GET['id']; |
XSS攻击
SQL注入攻击
查看日志
总结
开源项目ngx_lua_waf
实际上是存在一些误报等问题,对防火墙进行修改,参考文章:https://www.leavesongs.com/OTHERLAN/diy-my-nginx-lua-waf.html