Linux运维:安全防御OpenResty

1 OpenResty简介

OpenResty是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建可以处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。nginx

2 OpenSty安装

系统环境说明:
[root@jranson ~]# cat /etc/redhat-release 
CentOS Linux release 7.4.1708 (Core) 
[root@jranson ~]# uname -r
3.10.0-693.21.1.el7.x86_64

安装步骤:
一、安装依赖包
yum install -y readline-devel pcre-devel openssl-devel  openssl-devel gcc 

二、下载软件包
wget https://openresty.org/download/ngx_openresty-1.9.3.2.tar.gz --no-check-certificate

三、解压
tar -zxvf ngx_openresty-1.9.3.2.tar.gz

四、进入目录,初始化
cd ngx_openresty-1.9.3.2
./configure --prefix=/usr/local/openresty --with-luajit --with-http_stub_status_module --with-pcre --with-pcre-jit

五、编译安装
gmake
gmake install

3 功能列表

  • 支持白名单和黑名单功能,直接将黑名单的IP访问拒绝。
  • 支持URL白名单,将不须要过滤的URL进行定义。
  • 支持User-Agent的过滤,匹配自定义规则中的条目,而后进行处理(返回403)。
  • 支持CC攻击防御,单个URL指定时间的访问次数,超过设定值,直接返回403。
  • 支持Cookie过滤,匹配自定义规则中的条目,而后进行处理(返回403)。
  • 支持URL过滤,匹配自定义规则中的条目,若是用户请求的URL包含这些,返回403。
  • 支持URL参数过滤,原理同上。
  • 支持日志记录,将全部拒绝的操做,记录到日志中去。
  • 日志记录为JSON格式,便于日志分析,例如使用ELKStack进行攻击日志收集、存储、搜索和展现。

4 配置waf规则

一、克隆git项目
git clone https://github.com/unixhot/waf.git

二、拷贝至nginx配置文件目录下
cp -a ./waf/waf /usr/local/openresty/nginx/conf/

三、编辑nginx配置文件,配置规则
vim /usr/local/openresty/nginx/conf/nginx.conf

四、在http块配置里面添加下列配置
http{
    lua_shared_dict limit 50m;
    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/access.lua";

五、waf/config.lua文件能够自定义规则,错误信息等。



六、检查语法,启动openresty
/usr/local/openresty/nginx/sbin/nginx -t
/usr/local/openresty/nginx/sbin/nginx

5 测试

在浏览器输入ip/a.sql,若是没有定义规则以前的web服务器,用户浏览器会弹出一个下载文件的页面。定义完规则的web服务器会自动匹配到规则,而后拒绝访问,或者重定向到错误页面等等。git

相关文章
相关标签/搜索