• modsecurity3.0 nginx 安装


    备注:

    使用的是modsecurity 3.0 的版本,也是nginx 官方推荐使用的,同时使用的是nginx 的dynamic module 

    1. 环境准备

    https://github.com/SpiderLabs/ModSecurity
    https://github.com/SpiderLabs/ModSecurity-nginx
    https://nginx.org/download/nginx-1.13.8.tar.gz
     

    2.  编译libmodsecurity

    a. 预备(编译依赖) 
    
     yum install -y pcre pcre-devel openssl openssl-devel libtool libtool-ltdl-devel gcc gcc-c++ gcc-g77 autoconf automake 
    geoip geip-devel libcurl libcurl-devel  yajl yajl-devel lmdb-devel  ssdeep-devel  lua-devel
    备注:比较多,实际安装会有提示
    
    b. 编译
    
    git clone --depth 1 -b v3/master --single-branch https://github.com/SpiderLabs/ModSecurity
    cd ModSecurity
    git submodule init
    git submodule update
    ./build.sh
    ./configure
    make
    make install
    
    备注:fatal: No names found, cannot describe anything.  提示这个错误可以不用管(官方说明)
    
    c. modsecurity nginx dynamic module编译
    
    git clone --depth 1 https://github.com/SpiderLabs/ModSecurity- nginx.git
    wget https://nginx.org/download/nginx-1.13.8.tar.gz
    tar xvf nginx-1.13.8.tar.gz
    cd nginx-1.13.8
    ./configure  --add-dynamic-module=../ModSecurity-nginx
    make modules
    
    cp objs/ngx_http_modsecurity_module.so /usr/local/nginx/modules(此处为Nginx 安装位置,我的nginx 也是源码编译)
    
    d. nginx源码编译
    
    参考上面的nginx下载
    ./configure 
    make
    make install
    
     
     
    3. 配置模块加载
    load_module modules/ngx_http_modsecurity_module.so;
    备注: 位置 nginx main
    
     
     
    4. 测试nginx 环境准备
    a.实际业务应用
    /usr/local/nginx/cong/nginx.conf
    
    server {
    listen localhost:8085;
    location / {
    default_type text/plain;
    return 200 "Thank you for requesting ${request_uri}
    ";
    } 
    }
    
    b. waf(modsecurity nginx 出口,以及数据入口) nginx proxy
    
    server {
            listen       80;
            location / {
             proxy_pass http://localhost:8085;
             proxy_set_header Host $host;
          }
    }
     
    5. modsecurity 配置文件
    a. 官方模版
    
    mkdir -p /usr/local/nginx/modsec
    cd /usr/local/nginx/modsec
    wget https://raw.githubusercontent.com/SpiderLabs/ModSecurity/v3/master/modsecurity.conf-recommended
    mv modsecurity.conf-recommended   modsecurity.conf
    启用规引擎
    SecRuleEngine On
    b. 创建主配置文件
    
    main.conf
    内容如下:
    Include /usr/local/nginx/modsec/modsecurity.conf
    SecRule ARGS:testparam "@contains test" "id:1234,deny,log,status:403"
    
    c. waf 上面的nginx 80 配置)
     modsecurity on;
     modsecurity_rules_file /usr/local/nginx/modsec/main.conf;
     
    6. 加载配置
    sbin/nginx -t
    备注:  如果不报错说明没有问题,报错可以参考日志解决
     
    7. 测试
    实际上,上面的配置是如果请求参考testparam 包含test 就提示403
    
    测试结果:
    curl -i http://localhost/foo?testparam=dalongtest
    HTTP/1.1 403 Forbidden
    Server: nginx/1.13.8
    Date: Sun, 18 Feb 2018 10:45:43 GMT
    Content-Type: text/html
    Content-Length: 169
    Connection: keep-alive
    
    <html>
    <head><title>403 Forbidden</title></head>
    <body bgcolor="white">
    <center><h1>403 Forbidden</h1></center>
    <hr><center>nginx/1.13.8</center>
    </body>
    </html>
    
    curl -i http://localhost/foo?testparam=dalong
    HTTP/1.1 200 OK
    Server: nginx/1.13.8
    Date: Sun, 18 Feb 2018 10:46:14 GMT
    Content-Type: text/plain
    Content-Length: 47
    Connection: keep-alive
    
    Thank you for requesting /foo?testparam=dalong
     
    8. 扩展
    同时支持 OWASP 的crs
    配置参考:
    wget https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/ v3.0.2.tar.gz
    tar -xzvf v3.0.2.tar.gz
    sudo mv owasp-modsecurity-crs-3.0.2 /usr/local
    cd /usr/local/owasp-modsecurity-crs-3.0.2
    sudo cp crs-setup.conf.example crs-setup.conf
    
    # Include the recommended configuration Include /usr/local/nginx/modsec/modsecurity.conf
    # OWASP CRS v3 rules
    Include /usr/local/owasp-modsecurity-crs-3.0.2/crs-setup.conf Include /usr/local/owasp-modsecurity-crs-3.0.2/rules/*.conf
     
     
    8. 参考资料
    https://github.com/SpiderLabs/ModSecurity/tree/v3/master
    https://github.com/SpiderLabs/ModSecurity
    https://www.nginx.com/resources/library/modsecurity-3-nginx-quick-start-guide/
  • 相关阅读:
    Big-data:Linux基础(04)--快捷键
    Big-data:Linux基础(03)
    Big-data:Linux基础(02)
    [mysql]删除和修改
    git使用两个异常处理
    jmeter函数使用以及json格式的后置处理器
    jmeter遇到中文不可见
    jmeter参数化
    GIT简易使用
    mysql基本语句(更新中)
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/8453031.html
Copyright © 2020-2023  润新知