需要的软件:LuaJIT-2.0.0.tar.gz
nginx-1.4.4.tar.gz
v0.2.19(ngx_devel_kit)
v0.9.5rc2(nginx_lua模块)
1.安装前准备
yum -y install gcc gcc-c++ ncurses-devel libxml2-devel \
openssl-devel curl-devel libjpeg-devel libpng-devel \
autoconf pcre-devel libtool-libs freetype-devel gd zlib-devel \
zip unzip wget crontabs iptables file bison cmake patch \
mlocate flex diffutils automake make \
readline-devel glibc-devel glibc-static glib2-devel \
bzip2-devel gettext-devel libcap-devel logrotate ntp libmcrypt-devel \
GeoIP*
下载nginx
wget http://nginx.org/download/nginx-1.4.4.tar.gz
下载LuaJIT 2.0
wget http://luajit.org/download/LuaJIT-2.0.0.tar.gz
下载ngx_devel_kit并解压
wget --no-check-certificate https://github.com/simpl/ngx_devel_kit/archive/v0.2.19.tar.gz
tar zxf v0.2.19
下载nginx_lua_module并解压
wget --no-check-certificate https://github.com/chaoslawful/lua-nginx-module/archive/v0.9.5rc2.tar.gz
tar zxf v0.9.5rc2
下载ngx_lua_waf并解压
wget --no-check-certificate https://github.com/loveshell/ngx_lua_waf/archive/master.zip
unzip master
2.安装LuaJIT 2.0
tar zxf LuaJIT-2.0.0.tar.gz && cd LuaJIT-2.0.0
make && make install
注:lib和include是直接放在/usr/local/lib和usr/local/include
再来设置环境变量(这是给后面nginx编译的时候使用的):
vi /etc/profile
export LUAJIT_LIB=/usr/local/lib
export LUAJIT_INC=/usr/local/include/luajit-2.0
export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH
保存后执行:
source /etc/profile
3.安装nginx和nginx_lua
useradd -M -r -s /sbin/nologin www
tar zxf nginx-1.4.4.tar.gz && cd nginx-1.4.4
./configure --user=www --group=www --add-module=../ngx_devel_kit-0.2.19 \
--add-module=../lua-nginx-module-0.9.5rc2 --prefix=/usr/share/nginx --sbin-path=/usr/sbin/nginx \
--conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log --http-client-body-temp-path=/var/lib/nginx/tmp/client_body \
--http-proxy-temp-path=/var/lib/nginx/tmp/proxy --http-fastcgi-temp-path=/var/lib/nginx/tmp/fastcgi \
--pid-path=/var/run/nginx.pid --lock-path=/var/lock/subsys/nginx --with-http_secure_link_module \
--with-http_random_index_module --with-http_ssl_module --with-http_realip_module \
--with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module \
--with-http_gzip_static_module --with-http_stub_status_module --with-http_perl_module \
--with-http_geoip_module --with-mail --with-mail_ssl_modul
make -j2
make install
完了之后,还要执行一步:
ln -s /usr/local/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2
不执行这步的,你使用nginx -V或者启动nginx会报下面的错误:
error while loading shared libraries: libluajit-5.1.so.2: cannot open shared object file: No such file or directory
然后创建下面3个文件夹:
mkdir -p /var/lib/nginx/tmp/client_body
mkdir -p /data/logs/hack/
chown -R www:www /data/logs/hack/
chmod -R 755 /data/logs/hack/
mkdir -p /etc/nginx/conf.d
把nginx-1.4.4启动脚本这篇文章里的启动脚本添加到:
/etc/init.d/nginx
chmod +x /etc/init.d/nginx
chkconfig --add nginx
chkconfig nginx on
4.配置ngx_lua_waf
mv ngx_lua_waf-master /etc/nginx/conf.d/waf
vi /etc/nginx/conf.d/waf/config.lua
修改RulePath = "/usr/local/nginx/conf/waf/wafconf/"为:
RulePath = "/etc/nginx/conf.d/waf/wafconf/"
修改logdir = "/usr/local/nginx/logs/hack/"为:
logdir = "/data/logs/hack/"
其他的根据你自己的需要进行修改.
config.lua配置文件说明:
RulePath = "/usr/local/nginx/conf/waf/wafconf/"
--规则存放目录
attacklog = "off"
--是否开启攻击信息记录,需要配置logdir
logdir = "/usr/local/nginx/logs/hack/"
--log存储目录,该目录需要用户自己新建,切需要nginx用户的可写权限
UrlDeny="on"
--是否拦截url访问
Redirect="on"
--是否拦截后重定向
CookieMatch = "on"
--是否拦截cookie攻击
postMatch = "on"
--是否拦截post攻击
whiteModule = "on"
--是否开启URL白名单
ipWhitelist={"127.0.0.1"}
--ip白名单,多个ip用逗号分隔
ipBlocklist={"1.0.0.1"}
--ip黑名单,多个ip用逗号分隔
CCDeny="on"
--是否开启拦截cc攻击(需要nginx.conf的http段增加lua_shared_dict limit 10m;)
CCrate = "100/60"
--设置cc攻击频率,单位为秒.
--默认1分钟同一个IP只能请求同一个地址100次
html=[[Please go away~~]]
--警告内容,可在中括号内自定义
备注:不要乱动双引号,区分大小写
5.修改nginx配置
vi /etc/nginx/nginx.conf
在nginx.conf里的http配置里添加:
lua_need_request_body on;
lua_package_path "/etc/nginx/conf.d/waf/?.lua";
lua_shared_dict limit 10m;
init_by_lua_file /etc/nginx/conf.d/waf/init.lua;
access_by_lua_file /etc/nginx/conf.d/waf/waf.lua;
保存后,使用/etc/init.d/nginx configtest检查下是否有错,然后启动nginx.
6.测试
在/var/www/vhosts/下创建个test.php文件,内容为test
使用curl来访问,当然前提是nginx做好了虚拟主机,这里就不介绍怎么做虚拟主机了.
curl http://localhost/test.php?id=../etc/passwd
返回的内容:
test
curl http://blog.slogra.com/test.php?id=../etc/passwd
返回的内容:
Please go away~~
说明规则是生效了的.
- 浏览: 937863 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (832)
- 系统集成、架构 (116)
- 前端负载、开发、db (139)
- 监控与安全、性能 (70)
- Trouble Shooting (45)
- 管理哲学、业余提升 (9)
- 经典转载 (8)
- 主导过项目演示 (37)
- docker集群 (9)
- jvm 性能参数 (7)
- 监控平台 (28)
- 发布管理平台 (6)
- 日志平台 (53)
- Tools (36)
- shell & pytho &ansible自动化运维平台 (20)
- mongodb&nosql&db (32)
- system (12)
- kafa zk (11)
- python&nodejs (311)
- 数据平台 (5)
- PAAS (0)
- IAAS (0)
- SAAS (0)
- Go (2)
- kotlin (2)
- Redis学习笔记4-脚本、持久化和集群 (2)
最新评论
-
hsluoyz:
PyCasbin 是一个用 Python 语言打造的轻量级开源 ...
django guardian 对象级别权限设计 -
phncz310:
厉害了,我的哥
python黑魔法异常重试的次数,间隔的装饰器涵数 -
adamoooo:
Zabbix二次开发,可以试试:乐维监控www.91lewei ...
zabbix二次开发及app -
shi3689476:
你好,模块下载地址还能提供一下吗?
NGINX开发杀手锏-线程池 -
tobato:
Elasticsearch 和 Influxdb 为何选了El ...
elastic作数据源,对比kibana与grafana
发表评论
-
GOPS2016笔记思考
2016-04-16 22:07 940花了一天时间整理思路,把吸收知识吐出来, ... -
Linux PAM&&PAM后门
2016-03-17 18:11 9120x00 PAM简介 PAM (Pluggable Au ... -
自动立体化运维监控理念
2016-03-17 10:05 851场景 客户投诉有问题,于是研发测试运维开 ... -
读唯品会NoSQL平台自动化发展及运维经验分享
2016-03-11 10:05 1172看完后,点赞。 点子不错,基于 ... -
jvm调优其实就是对Young代的次数与时间调优
2016-03-10 10:07 638最近在做埋点 ... -
nginx配置lua模块和基于lua的waf三种方式
2016-02-24 09:40 1164nginx和lua都注重性能,使用lua扩展nginx大大增 ... -
使用ganglia监控hadoop及hbase集群
2016-02-15 08:44 775一、Ganglia简介 Ganglia ... -
如何深入理解 StatsD 与 Graphite ?
2016-02-02 18:35 627众所周知,StatsD 负责 ... -
curl方式实现zabbix以微信形式报警
2016-01-27 09:27 1288现实生产环境中,我们通常使用邮件和短信接受zab ... -
notify+rsync实时同步 百万级别文件
2016-01-27 09:12 1609背景 我们公司在用inotify+rsync做实时同步,来 ... -
报警监控平台之设计url回调webhook管理系统
2016-01-22 09:40 1300前言: 关于监控方面的回调,国内也有一些第三 ... -
创业型公司如何做好监控报警
2016-01-21 16:55 1287编者按:可靠稳定的产品背后需要有靠谱的监控报警框架 ... -
zabbix监控多JMX端口
2016-01-20 10:49 15731. 开启Tomcat JMX功能 CATALINA_OP ... -
JaCoCo:分析单元测试覆盖率的利器
2016-01-18 17:18 1124前言 随着敏捷开发的流行,编写单元测试已经成为业界 ... -
Zabbix 3.0 alpha6企业级分布式监控系统发布
2016-01-18 10:27 866Zabbix企业级分布式监控系统发布了3.0第六个alp ... -
Python日常巡检程序(daily-check)
2016-01-17 12:58 1170前言 在公司对于运维人员来说,巡检是日常例行的一件事。刚 ... -
接口安全调用该怎么做?签名?证书?服务安全?
2016-01-12 10:11 693在这个以“数据为生命”的时代,每一个开发商都尽可能的收集客户 ... -
从0到1构建美团压测工具
2016-01-10 10:10 765美团内部的RPC服务大多构建在Thrift之上,在日常开发服 ... -
针对不同主机使用不同 SSH Key
2016-01-04 09:38 945考虑到安全性和便捷性,相信大部分同学都已经习惯了 SSH k ... -
论客户端埋点
2016-01-04 09:24 910埋点的意义 用户数据 ...
相关推荐
Centos 7 64 +[nginx+ngx_lua 模块] 支持WAF防护功能 可以作为喔
WEB应用防火墙,利用nginx的组件nginx_lua的组件,利用Lua语言开发的一个防火墙,简单
lua-upstream-nginx-module, Nginx C 模块将Lua向ngx_lua公开,用于 Nginx upstreams 电子邮件名称ngx_http_lua_upstream - Nginx MODULE,用于向 Nginx upstreams公开Lua到 ngx_lua目录NAME状态概要说明函数get_...
ngx_lua 作者所写,揭示ngx_lua核心技术和开发案列。
此次主要跟大家分享的就是我们团队在这整个转换过程中的一些心得体会,以及在 NGINX 上基于 ngx_lua 的一些有趣的功能,特别地,会着重介绍下我们是如果利用 ngx_lua 的灵活性来动态收集日志进行数据聚合分析的。
nginx lua module for windows 详细请访问 http://blog.csdn.net/ngwsx/
lua_use_default_type lua_code_cache lua_regex_cache_max_entries header_filter_by_lua ngx.headers_sent
ngx_lua nginx + lua + C++ 环境配置: 推荐OpenResty安装(如果你已经安装过了nginx,请参考第9条) 安装步骤可以参考 1.安装依赖,我的是centos,其他系统请参考上边链接里的说明 yum install readline-devel pcre-devel...
NULL 博文链接:https://cywhoyi.iteye.com/blog/2118913
Using ngx_lua in UPYUN 2.pdf
Nginx所需环境的安装,及nginx安装,nginx相关功能开启,后端节点健康检查插件安装,静态资源缓存插件,缩略图插件安装等。
nginx-lua-waf 用法 自己构建镜像bilxio/nginx-lua-waf ,在nginx-lua-waf文件夹执行如下命令: docker build -t bilxio/nginx-lua-waf . 或者,直接拉它, docker pull bilxio/nginx-lua-waf 要运行映像并将...
redhat6.4+nginx+keepalived__实现双机热备和负载均衡
Nginx 二次开发
nginx+tomcat+memcached_SH nginx+tomcat+memcached_SH nginx+tomcat+memcached_SH nginx+tomcat+memcached_SH
lua-resty-consul, 库与ngx_lua中的consul接口的接口 lua-resty-consul库与ngx_lua中的consul接口的接口目录概述依赖项方法新插件 。get_decodedget_json_decoded把了删除get_client_body_reader
ngx_cache_purge 是 nginx 模块,此模块可以清理 nginx 的 FastCGI、proxy、 SCGI 和 uWSGI 的缓存。配置指令(相同位置语法)fastcgi_cache_purgesyntax: fastcgi_cache_purge on|off|<method> [from all|<ip> [.....
nginx+lua+redis通过匹配客户端ip进行灰度发布
「应急响应」Nginx+Lua_在网络安全方面的应用 - NGFW 数据安全 勒索病毒 信息安全 基础架构安全 数据安全