• WAF学习_(2)安装


    0x00:前言

    ngx_lua_waf是一个基于ngx_lua的web应用防火墙。

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

    waf需要nginx环境,这里我们使用openresty

    OpenResty(又称:ngx_openresty) 是一个基于 NGINX 的可伸缩的 Web 平台,由中国人章亦春发起,提供了很多高质量的第三方模块。

    OpenResty 是一个强大的 Web 应用服务器,Web 开发人员可以使用 Lua 脚本语言调动 Nginx 支持的各种 C 以及 Lua 模块,更主要的是在性能方面,OpenResty可以 快速构造出足以胜任 10K 以上并发连接响应的超高性能 Web 应用系统。

    这次安装ngx_lua_waf基于openresty,主要是因为方便

    也可以零散安装各种模块

    系统:Centos 7虚拟机

    0x01:openresty安装

    综合看了很多安装教程

    :很多命令前都加了sudo 因为不是root,若是root可不加

    (1)更新yum,不太清楚为啥,某个博客提到了

    OpenResty 官方现在开始维护自己的打包虚机集合了,新的 linux 包仓库正在陆续登陆 openresty.org 官网。欢迎大家试用!原来老源的用户可以先禁用掉老的 openresty 源。

    • sudo yum install -y yum-util
    • sudo yum-config-manager --add-repo  https://openresty.org/package/centos/openresty.repo

    (2)安装依赖库

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

    (3)安装openresty

    • cd src
    • sudo wget "https://openresty.org/download/openresty-1.15.8.2.tar.gz"   ///注意版本,可到官网找最新版本
    • ./configure --prefix=/usr/local/openresty --with-luajit --with-http_stub_status_module --with-pcre --with-pcre-jit
    • sudo gmake && sudo gmake install

    (4)测试openresty

    • sudo vim /usr/local/openresty/nginx/conf/nginx.conf

    在文件中写:类似在server中写一个hello函数

    server {
        location /hello {
                default_type text/html;
                content_by_lua_block {
                        ngx.say("Hello world")
                }
        }
    }
    启动nginx
    • sudo /usr/local/openresty/nginx/sbin/nginx -t
    • sudo /usr/local/openresty/nginx/sbin/nginx
    • sudo curl http://xxxxxxx虚拟机IP地址xxxxxxxx/hello

    返回hello world

    或者浏览器打开http://xxx虚拟机IP地址xxx/hello

    • netstat -lntp | grep 80 #服务器正常运行
    服务器启动、重启命令
    # /usr/local/openresty/bin/openresty # 如果没有启动服务,则启动
    # /usr/local/openresty/bin/openresty -s reload # 如果已经启动,则重载配置
    # /usr/local/openresty/bin/openresty -t # 测试配置是否正常
    nginx: the configuration file /usr/local/openresty/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/openresty/nginx/conf/nginx.conf test is successful

    注:可能本机浏览器打不开虚拟机网址,原因是iptables防火墙

    WAF学习小插曲之iptables:这这这里里里
    1。本机能ping通虚拟机
    2。虚拟机也能ping通本机
    3。虚拟机能访问自己的web
    4。本机无法访问虚拟己的web
     
    sudo /sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT ##允许80端口通过防火墙
    /etc/init.d/iptables save #这个我没用到
    /etc/init.d/iptables restart #这个我也没用到

    或者到防护墙文件中设置

    vi /etc/sysconfig/iptables

    -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT(允许80端口通过防火墙)
    -A INPUT -m state –state NEW -m tcp -p tcp –dport 3306 -j ACCEPT(允许3306端口通过防火墙)
    重启防火墙
    /etc/init.d/iptables restart

    (5)安装配置ngx_lua_waf

    https://github.com/loveshell/ngx_lua_waf中也有详细说明

    • cd /usr/local/openresty/nginx/conf  #到该目录下安装配置
    • sudo git clone https://github.com/loveshell/ngx_lua_waf.git
    • sudo mv ngx_lua_waf/ waf/  #改文件名字  中间有空格
    配置:
    • sudo vim /usr/local/openresty/nginx/conf/nginx.conf
    ...
    user nobody; # 取消注释
    ...
    http{ # 在http块下添加如下内
    ...
    lua_package_path "/usr/local/openresty/nginx/conf/waf/?.lua";
    lua_shared_dict limit 10m;
    init_by_lua_file /usr/local/openresty/nginx/conf/waf/init.lua;
    access_by_lua_file /usr/local/openresty/nginx/conf/waf/waf.lua;
    • cd /usr/local/openresty/nginx/conf/waf/
    • sudo vim config.lua
    ...
    RulePath = "/usr/local/openresty/nginx/conf/waf/wafconf/" # 规则文件路径,路径灵活变动不是固定的
    attacklog = "on" # 启用日志
    logdir = "/usr/local/openresty/nginx/logs/hack/" # 日志目录
    ...
    创建日志目录
    • # mkdir -p /usr/local/openresty/nginx/logs/hack/
    • # chown -R nobody:nobody /usr/local/openresty/nginx/logs/hack/
    访问
    http://xxxx/test.php?id=../etc/passwd

  • 相关阅读:
    result set sql server
    [转载]:C#、.Net面试题目及答案
    [转载]:合并两个已排序好的int数组,并排序返回c#实现
    [转载]实际举例C#引用类型和值类型的区别
    mysql 性能优化方案
    oracle 并行原理深入解析及案例精粹
    创建Oracle外部表 External Table
    Oracle 分区表
    MySQL索引类型一览
    MySQL配置文件mysql.ini参数详解、MySQL性能优化
  • 原文地址:https://www.cnblogs.com/liqik/p/12419731.html
Copyright © 2020-2023  润新知