热门课程

免费试听

上课方式

开班时间

当前位置: 首页 -   文章 -   根域文章 -   正文

自建WAF系统的步骤

zhiliaoadmin
2025-01-03 10:43:21
0

  基于开源软件自建WAF是个不错的选择,本节以春哥的OpenResty以及unixhot开源的WAF为基础,以Centos系统为例,介绍如何建立WAF。unixhot开源的WAF虽然功能比较简单,但其代码逻辑清晰,对于理解WAF的基本原理非常有帮助,然而应用在实际环境中还有许多需要修改的地方。我会在unixhot的基础上提供一个升级版本,有兴趣的读者可以参考本书配套GitHub的code/waf。

  1.OpenResty简介

  OpenResty是一个基于Nginx与Lua的高性能Web平台,其内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项,用于方便地搭建能够处理超高并发、扩展性极高的动态Web应用、Web服务和动态网关。OpenResty通过汇聚各种设计精良的Nginx模块,从而将Nginx有效地变成一个强大的通用Web应用平台。这样,Web开发人员和系统工程师可以使用Lua脚本语言调动Nginx支持的各种C以及Lua模块,快速构造出足以胜任10K乃至1000K以上单机并发连接的高性能Web应用系统。OpenResty的目标是让你的Web服务直接运行在Nginx服务内部,充分利用Nginx的非阻塞I/O模型,不仅仅对HTTP客户端请求,甚至于对诸如MySQL、PostgreSQL、Memcached以及Redis等的远程后端都进行一致的高性能响应。

  2.安装OpenResty

  首先安装依赖的库:

  yum install -y readline-devel pcre-devel openssl-devel

  然后下载OpenResty并编译安装,安装路径在/home/maidou/opt/openresty:

  wget https://openresty.org/download/ngx_openresty-1.9.3.2.tar.gz

  ./configure ——prefix=/home/maidou/opt/openresty ——with-luajit ——with-http_stub_status_module ——with-pcre ——with-pcre-jit

  gmake

  gmake install

  3.安装unixhot

  从GitHub同步对应的代码:

  git clone https://github.com/unixhot/waf.git

  将WAF的Lua文件复制到Nginx配置文件目录:

  cp -fr waf /home/maidou/opt/openresty/nginx/conf/

  修改Nginx配置文件nginx.conf,在HTTP标签处增加WAF相关配置,其中lua_package_path表示Lua脚本对应的目录,init_by_lua_file表示Lua初始化脚本,access_by_lua_file表示处理每个请求的Lua脚本:

  http {

  include mime.types;

  default_type application/octet-stream;

  sendfile on;

  #WAF相关配置

  lua_shared_dict limit 50m;

  lua_package_path "/home/maidou/opt/openresty/nginx/conf/waf/?.lua";

  init_by_lua_file "/home/maidou/opt/openresty/nginx/conf/waf/init.lua";

  access_by_lua_file "/home/maidou/opt/openresty/nginx/conf/waf/access.lua";

  Nginx重新加载配置文件生效:

  ./nginx -s reload

自建WAF系统的步骤

  4.Nginx反向代理

  Nginx+Lua WAF很重要的一个基础功能,即反向代理功能,假设需要保护网站:

  http://www.douwaf.com

  解析域名对应的IP地址为112.80.255.48:

  nslookup www.douwaf.com

  www.douwaf.com canonical name = xi.n.shifen.com.

  Name: xi.n.shifen.com

  www.douwaf.com canonical name = xi.n.shifen.com.

  Name: xi.n.shifen.com

  Address: 180.76.234.74

  使用页面访问,可以正常使用,说明反向代理配置生效。测试阶段也可以不进行DNS切换,修改/etc/hosts文件也可以达到同样效果:

  180.76.234.74 www.douwaf.com

  查看访问日志,可以看到对应的访问记录:

  61.135.169.80 - - [21/Jul/2017:19:09:03 +0800] "GET / HTTP/1.1" 200 11762 "-" "curl/7.51.0"

  5.基于Nginx+Lua的WAF

  可以把Lua理解为一个进程,贯穿在整个Nginx服务的HTTP报文处理的流程中,可以针对HTTP报文的任何字段进行处理,如图2-7所示。这里只是为了方便理解,事实上Lua就像胶水一样粘入了Nginx的处理流程,其实并没有真实存在一个Lua进程。下面以unixhot的WAF为例,我们一起来理解WAF的运行原理。


预约申请试听课
大家都在看

恭喜知了堂CISP-PTE班学员顺利入职红队岗,...

2025-01-03 浏览次数:0

线性表的数据结构有哪些?都有什么特点呢

2025-01-03 浏览次数:0

成都学java培训去哪里好?收费有没有便宜的?

2025-01-03 浏览次数:0

大学生有哪些信息安全认证可以考?毕业前可别错过

2025-01-03 浏览次数:0

0基础怎么学网络安全?自学还是报培训班?

2025-01-03 浏览次数:0

Java计算机编程培训学校

2025-01-03 浏览次数:0
最新资讯