Centos7_Tengine安装+基于Lua实现应用层防护

简介

Tengine是由淘宝网发起的Web服务器项目。它在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。Tengine的性能和稳定性已经在大型的网站如淘宝网,天猫商城等得到了很好的检验。它的最终目标是打造一个高效、稳定、安全、易用的Web平台。

官方地址 http://tengine.taobao.org/

特性

  • 继承Nginx-1.6.2的所有特性,兼容Nginx的配置;
  • 动态模块加载(DSO)支持。加入一个模块不再需要重新编译整个Tengine;
  • 支持SO_REUSEPORT选项,建连性能提升为官方nginx的三倍;
  • 同时支持HTTP v2协议和SPDY v3协议,可同时使用两种协议;
  • 流式上传到HTTP后端服务器或FastCGI服务器,大量减少机器的I/O压力;
  • 更加强大的负载均衡能力,包括一致性hash模块、会话保持模块,还可以对后端的服务器进行主动健康检查,根据服务器状态自动上线下线,以及动态解析upstream中出现的域名;
  • 输入过滤器机制支持。通过使用这种机制Web应用防火墙的编写更为方便;
  • 支持设置proxy、memcached、fastcgi、scgi、uwsgi在后端失败时的重试次数
  • 动态脚本语言Lua支持。扩展功能非常高效简单;
  • 支持管道(pipe)和syslog(本地和远端)形式的日志以及日志抽样;
  • 支持按指定关键字(域名,url等)收集Tengine运行状态;
  • 组合多个CSS、JavaScript文件的访问请求变成一个请求;
  • 自动去除空白字符和注释从而减小页面的体积
  • 自动根据CPU数目设置进程个数和绑定CPU亲缘性;
  • 监控系统的负载和资源占用从而对系统进行保护;
  • 显示对运维人员更友好的出错信息,便于定位出错机器;
  • 更强大的防攻击(访问速度限制)模块;
  • 更方便的命令行参数,如列出编译的模块列表、支持的指令等;
  • 可以根据访问文件类型设置过期时间;
  • ……


安装编译工具

yuminstall jemalloc jemalloc-devel -y

或者

yumgroupinstall "Development Tools" "Server PlatformDeveopment"

建立nginx程序用户

groupadd-r www

useradd-r -g www www -c "Web user" -d /dev/null -s /sbin/nologin

 

安装依赖工具

Openssl:

cd/usr/local/src

wgethttp://www.openssl.org/source/openssl-1.0.1c.tar.gz

tar-zxvf openssl-1.0.1c.tar.gz

zlib:

cd/usr/local/src

wgethttp://zlib.net/zlib-1.2.8.tar.gz

tar-zxvf zlib-1.2.8.tar.gz

pcre:

cd/usr/local/src

tarzxvf pcre-8.30.tar.gz


1下载luajit2.0并安装

推荐使用lujit2.0以上做lua支持

ngx_lua如果是0.9.2以上版本,建议正则过滤函数改为ngx.re.find,匹配效率会提高三倍左右。

http://luajit.org/download.html

wget http://luajit.org/download/LuaJIT-2.0.4.tar.gz

make && make install

所以lib和include是直接放在/usr/local/lib和usr/local/include

2.源码安装Tengine

下载源码

wget http://tengine.taobao.org/download/tengine-2.1.2.tar.gz

tar xf tengine-2.1.2.tar.gz /usr/local/src/

./configure\

--user=www --group=www\

--prefix=/usr/local/nginx\

--with-http_stub_status_module\

--with-http_ssl_module\

--with-http_concat_module\

--with-http_spdy_module\

--with-http_gzip_static_module\

--with-ipv6\

--with-http_sub_module\

--with-ld-opt=-ljemalloc\

--with-openssl=/usr/local/src/openssl-1.0.1c\

--with-pcre=/usr/local/src/pcre-8.30\

--with-zlib=/usr/local/src/zlib-1.2.8\

--with-http_lua_module\

--with-luajit-inc=/usr/local/include/luajit-2.0\

--with-luajit-lib=/usr/local/lib \

ln -s/usr/local/lib/libluajit-5.1.so.2 /lib64/libluajit-5.1.so.2

查看 nginx -V


安装ngx_lua_waf模块

防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等web攻击

防止svn/备份之类文件泄漏

防止ApacheBench之类压力测试工具的攻击

屏蔽常见的扫描黑客工具,扫描器

屏蔽异常的网络请求

屏蔽图片附件类目录php执行权限

防止webshell上传

git clone https://github.com/loveshell/ngx_lua_waf.git

cp -r ngx_lua_waf/ /usr/local/nginx/conf/waf

请提前新建/usr/local/nginx/logs/hack/目录攻击日志,并赋予nginx用户对该目录的写入权限。

mkdir-p /usr/local/nginx/logs/hack/

chown-R www:www /usr/local/nginx/logs/hack/

chmod-R 755 /usr/local/nginx/logs/hack/

使用说明:

nginx安装路径假设为:/usr/local/nginx/conf/

把ngx_lua_waf下载到conf目录下,解压命名为waf

在nginx.conf的http段添加

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

配置config.lua里的waf规则目录(一般在waf/conf/目录下)

    RulePath = "/usr/local/nginx/conf/waf/wafconf/"

绝对路径如有变动,需对应修改

然后重启nginx即可

配置文件详细说明:

  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~~]]      --警告内容,可在中括号内自定义  备注:不要乱动双引号,区分大小写

检查规则是否生效

部署完毕可以在其他机器尝试如下命令:

    curl http://xxxx/test.php?id=../etc/passwd    返回"Please go away~~"字样,说明规则生效。


时间: 2024-10-12 23:53:26

Centos7_Tengine安装+基于Lua实现应用层防护的相关文章

iptables/netfilter基于layer7实现应用层过滤

前言 做为网络管理员,对P2P.QQ.酷狗等软件是又爱又恨,大多数公司为了提高工作效率,禁止公司员工登陆QQ.看视频等,在市场上买专门的上网行为管理设备,随便一种都是价格不菲,而使用linux来做网关一样可以禁止qq.酷狗等软件,为实现此功能就需要为iptables/netfilter添加layer7模块,而iptables/netfilter是基于内核的,所以需要重新编译内核. 编译过程 环境介绍 系统环境:CentOS6.6 所需源码包:kernel-2.6.32-504.16.2.el6.

基于lua的网页脚本开发语言cgilua(转)

这里为大家介绍基于lua脚本实现的网页开发语言,cgilua 介绍 cgilua使用Lua是一个用于创建动态网页的服务器端脚本语言.纯LUA脚本和LUA页(LP)的支持,cgilua.Lua脚本是一个Lua程序创建一个网页的全部内容并返回给客户端.Lua页面是一个常规的标记的文本(HTML,XML等)文件中嵌入Lua代码中使用一些特殊的标签.这些标签是由cgilua和结果页返回到客户端的处理. Lua脚本和Lua页同样易于使用,并选择其中的一个主要取决于所产生的网页的特点.当Lua页面逻辑和格式

Windows Server 2012 R2 VDI系列(三)—安装基于虚拟机桌面部署

下面我们就可以开始整个的VDI的配置了,Windows Server 2012开始VDI很多工作都会由系统本身为我们完成,因此配置过程相对来讲要简化很多.首先我们先来配置RDVH角色. 1.点击添加角色和功能 2.直接下一步 3.这里不同于传统的选择,我们需要选择下边的远程桌面服务安装 4.这里我们选择标准部署 5.选择基于虚拟机的桌面部署,也就是配置RDVH,如果选择下边的基于会话的桌面部署,那就是配置RDSH 6.直接下一步 7.首先我们需要配置RD连接代理,这里的角色我们之前都已经制订好了

虚拟机安装-基于VMware12 安装xp系统---下篇

限于篇幅,本次分享为上一篇随笔"虚拟机安装-基于VMware12 安装xp系统---上篇"的后续分享. ---------------------------------------------------------分割线----------------------------------------------------- 单击"开启此虚拟机".选择第二项(运行WINDOWS PE 微软系统)进入win PE 系统,选择将系统分为几个盘,然后会提示说将系统装到

新书《Nginx实战:基于Lua语言的配置、开发与架构详解》开始发售

新书<Nginx实战:基于Lua语言的配置.开发与架构详解>开始发售https://item.jd.com/12487157.html#none <Nginx实战:基于Lua语言的配置.开发与架构详解>主要讲解了Nginx在反向代理和应用开发中的作用,阅读本书可以了解Nginx在互联网开发中扮演的多个角色,充分利用这些角色的各项功能有助于提升服务的整体性能.<Nginx实战:基于Lua语言的配置.开发与架构详解>所介绍的大部分功能是通过Nginx+Lua进行开发和配置的

nginx + lua 构建网站防护waf(一)

最近在帮朋友维护一个站点.这个站点是一个Php网站.坑爹的是用IIS做代理.出了无数问题之后忍无可忍,于是要我帮他切换到nginx上面,前期被不断的扫描和CC.最后找到了waf这样一个解决方案缓解一下.话不多说直接开始. waf的作用: 防止sql注入,本地包含,部分溢出,fuzzing测试,xss,SSRF等web攻击 防止svn/备份之类文件泄漏 防止ApacheBench之类压力测试工具的攻击 屏蔽常见的扫描黑客工具,扫描器 屏蔽异常的网络请求 屏蔽图片附件类目录php执行权限 防止web

基于Android系统应用层与框架层剖析View点击事件

基于Android操作系统的框架层和应用层,介绍了View的绘制.触摸事件的传递流程,分析了View与用户交互时被回调的相关框架层代码和应用层代码,研究了Android应用中事件处理的相关重要机制.通过具体代码详细剖析了在Android系统下用户和View交互过程中折射出的回调机制,回调方法在系统框架的详细执行过程,以及基于回调机制的经典事件处理模型. 1 引言 Android是一种基于Linux的自由及开放源代码的操作系统,目前基于Android平台的应用日趋广泛.Android应用程序大多基

非openresty方式安装Nginx + Lua + Redis 环境

一.功能实现介绍: 使用Redis做分布式缓存:使用lua API来访问redis缓存:使用nginx向客户端提供服务,ngx_lua将lua嵌入到nginx,让nginx执行lua脚本,高并发,非阻塞的处理各种请求.url请求nginx服务器,然后lua查询redis,返回json数据. 二.服务器环境介绍: 系统:CentOS release 6.8 (Final) x86_64位 最小化安装服务器型号:PowerEdge R630 磁盘是ssd盘服务器上已存在服务: 是一件安装包lnmp环

基于openrisc学习之环境搭建二:win7或ubuntu下安装基于虚拟机的openrisc仿真编译环境

上一个章节小编已经介绍了ubuntu物理机的安装和使用,这一章节我主要是介绍下在win7下和在ubuntu物理机下安装虚拟机,导入OpenRISC提供的ubuntu镜像.但这里不得不说OpenRISC上面搭建的环境的文件结构很乱,只是对于初学者来说可以省去安装编译链的麻烦.如果想自己安装交叉编译链,搭建自己的SOC平台,请参考下一个章节. 一.虚拟机安装及镜像导入 1.文件的准备(其中OpenRISC_Ubuntu_2011-12-15.vdi.bz2镜像在OpenCore上已经无法下载.) 将