Nginx反向代理第四篇

正文索引 [隐藏]

Nginx反向代理第四篇

经过前几篇的学习,大家一定会了基础的Nginx反代

这次我们将目光转向OpenResty

安装

我们依旧使用OneinStack进行安装

wget -c http://mirrors.linuxeye.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh --nginx_option 3 --reboot 

安装的文件夹

/usr/local/openresty/nginx

网站配置文件地址:

/usr/local/openresty/nginx/conf/vhost/

安装防火墙

ngx_lua_waf

作用

  • 防止sql注入,本地包含,部分溢出,fuzzing测试,xss55RFweb攻击。
  • 防止svn/备份之类文件泄漏。
  • 防止ApacheBench之类压力测试工具的攻击。
  • 屏蔽常见的扫描黑客工具,扫描器。
  • 屏蔽异常的网络请求。
  • 屏蔽图片附件类目录php执行权限。
  • 防止webshell上传。
自动安装
cd oneinstack && ./addons.sh

选择3即可自动安装

手动安装

借用的 https://www.moerats.com/archives/611/

Github地址:https://github.com/loveshell/ngx_lua_waf

先把ngx_lua_waf下载到conf目录下:

cd /usr/local/openresty/nginx/conf
wget https://www.moerats.com/usr/down/waf.tar.gz
tar zxf waf.tar.gz
rm -rf waf.tar.gz

再编辑/usr/local/openresty/nginx/conf/nginx.conf,将以下代码放入http{}中。

lua_shared_dict limit 10m;
lua_package_path "/usr/local/openresty/nginx/conf/waf/?.lua";
init_by_lua_file "/usr/local/openresty/nginx/conf/waf/init.lua";
access_by_lua_file "/usr/local/openresty/nginx/conf/waf/waf.lua";

然后运行service nginx restart重启nginx,使其生效。

配置文件:

#配置文件路径
/usr/local/openresty/nginx/conf/waf/config.lua
#详细参数,具体自己看着设置
RulePath = "/usr/local/openresty/nginx/conf/waf/wafconf/"
--规则存放目录
attacklog = "on"
--是否开启攻击信息记录,需要配置logdir
logdir = "/data/wwwlogs/"
--log存储目录,该目录需要用户自己新建,需要nginx用户的可写权限
UrlDeny="on"
--是否拦截url访问
Redirect="on"
--是否拦截后重定向
CookieMatch = "on"
--是否拦截cookie攻击
postMatch = "off"
--是否拦截post攻击
whiteModule = "on"
--是否开启URL白名单
black_fileExt={"php","jsp"}
--填写不允许上传文件后缀类型
ipWhitelist={"127.0.0.1"}
--ip白名单,多个ip用逗号分隔
ipBlocklist={"1.0.0.1"}
--ip黑名单,多个ip用逗号分隔
CCDeny="on"
--是否开启拦截cc攻击
config_cc_rate = "60/60"
--设置cc攻击频率,单位为秒.
--默认1分钟同一个IP只能请求同一个地址60次

过滤规则:

#过滤规则在/usr/local/openresty/nginx/conf/waf/wafconf下。
#规则可根据需求自行调整,每条规则需换行,或者用|分割
args里面的规则get参数进行过滤的
url是只在get请求url过滤的规则        
post是只在post请求过滤的规则        
whitelist是白名单,里面的url匹配到不做过滤        
user-agent是对user-agent的过滤规则
#默认开启了get和post过滤的,需要开启cookie过滤,编辑waf.lua取消部分--注释即可。
#日志文件名称格式如下:虚拟主机名_sec.log

白名单设置:

#ip白名单
修改/usr/local/openresty/nginx/conf/waf/wafconf/config.lua中的ipWhitelist。
可以填写多个ip,多个ip中用,分割,例如{"127.0.0.1","192.155.1.1"}。

#url白名单
修改/usr/local/openresty/nginx/conf/waf/wafconf/whiteurl,一行一个,取字符段验证,只取uri,通常用于api链接放行,且不能带参数。
例如https://xxx/Rats.php?xx,我们填入^/Rats.php$即可放行全部以/Rats.php开头的uri。

安装 ngx cache purge

先不要搞

首先进入 oneinstack/src文件夹

wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
tar zxvf ngx_cache_purge-2.3.tar.gz
tar -zxvf openresty-1.15.8.3.tar.gz 
cd openresty-1.15.8.3
./configure --add-module=../ngx_cache_purge-2.3
make
service nginx stop
cp ./build/nginx-1.15.8/objs/nginx /usr/local/openresty/nginx/sbin/nginx
service nginx start

然后,,,,,,,他报错了,等我再研究研究叭 (估计是要手动安装一遍ngx_lua_waf)

安装verynginx

mkdir verynginx
cd verynginx
wget https://github.com/alexazhou/VeryNginx/archive/master.zip
unzip master.zip
python install.py install verynginx

之后安装下面添加配置

#添加到http区块外
include /opt/verynginx/verynginx/nginx_conf/in_external.conf;

#添加到http区块内
include /opt/verynginx/verynginx/nginx_conf/in_http_block.conf;

#添加到server区块内
include /opt/verynginx/verynginx/nginx_conf/in_server_block.conf;

使用:

http://ip/verynginx/index.html