美文网首页
WAF:ModSecurity on Nginx

WAF:ModSecurity on Nginx

作者: 情颂_290f | 来源:发表于2021-07-03 12:47 被阅读0次

    Modsecurity概述

    ModSecurity是一个入侵检测与防护引擎,主要适用于Web应用程序,所以也被称为Web应用程序防火墙。 它可以作为Apache Web服务器的模块或是单独的应用程序来运作。ModSecurity的功能是增强Web application的安全性和保护Web application以避免遭受来自已知与未知的攻击。

    ModSecurity计划是从2002年开始,后来由Breach Security Inc.收购,但Breach Security Inc.允诺ModSecurity仍旧为open source,并开放源代码给大家使用。最新版的ModSecurity(一个开源的Web应用防火墙,即WAF)开始支持核心规则集(Core Rule Set,即CRS,可用于定义旨在保护Web应用免受零日及其他安全攻击的规则)了。ModSecurity团队发布的2.5.10 版以后还包含了其他一些特性,如并行文本匹配、Geo IP解析和信用卡号检测等,同时还支持内容注入、自动化的规则更新和脚本等内容。可以通过ModSecurity手工创建安全过滤器、定义攻击并实现主动的安全输入验证。此外,它还提供了一个面向Lua语言的新的API,为开发者提供一个脚本平台以实现用于保护Web应用的复杂逻辑。

    ModSecurity的运作设计有以下的基础概念:

    • 让使用者可以做任何想做的事情(Empower users to do what they want)
    • 使用者设定的动作才会执行(Don’t do anything implicitly)
    • 预设是不做任何动作(Be passive)

    ModSecurity的部署架构

    1. Web Server结合。
    2. Apache/Nginx结合部署为网关,当做一个反向代理

    软件下载地址

    [Nginx][http://nginx.org/en/download.html]

    [ModSecurity][https://www.modsecurity.org/download.html]

    [OWASP规则集][https://github.com/SpiderLabs/owasp-modsecurity-crs]

    Install Nginx with ModSecurity

    1、安装依赖包和其他必须的包

     yum install gcc make automake autoconf libtool pcre pcre-devel libxml2 libxml2-devel curl curl-devel httpd-devel zlib zlib-devel openssl openssl-devel apr apr-util-devel apr-devel -y
    

    2、下载Nginx和ModSecurity源码

    wget http://nginx.org/download/nginx-1.9.15.tar.gz
    wget https://www.modsecurity.org/tarball/2.9.1/modsecurity-2.9.1.tar.gz
    

    3、编译ModSecurity

    # 先解压
    # 此处下载到/opt目录
    cd /opt
    gunzip -c modsecurity.2.9.1.tar.gz | tar xvf -
    
    # 解压后进入目录执行
    ./autogen.sh
    ./configure --enable-standalone-module --disable-mlogc
    # 编译安装
    make
    make instal
    

    4、编译Nginx并添加ModSecurity模块

    # 解压Nginx
    cd /opt
    gunzip -c nginx-1.9.15.tar.gz | tar xf -
    
    # 进入解压目录执行命令并编译
    ./configure --add-module=/opt/modsecurity-2.9.1/nginx/modsecurity/ --prefix=/usr/src/nginx
    make && make install
    

    Configure ModSecurity with Nginx

    1、复制modsecurity.conf-recommended & unicde.mapping文件到Nginx的conf目录

    # 查看两个文件在哪里
    find / -name modsecurity.conf-recommended
    find / -name unicode.mapping
    
    # 复制文件
    cp /opt modsecurity-2.9.1/modsecurity.conf-recommended   /usr/src/nginx/conf/
    cp /opt/modsecurity-2.9.1/unicode.mapping   /usr/src/nginx/conf/
    

    2、配置

    # 改名
    mv modsecurity.conf-recommended modsecurity.conf
    
    # 修改Nginx文件
    cp nginx.conf nginx.conf.bak # 备份Nginx配置文件
    

    在需要启用modsecurity的主机的location下面加入:

    ModSecurityEnabled on;
    ModSecurityConfig modsecurity.conf;

    重启Nginx,检查配置文件:

    /usr/src/nginx/sbin/nginx -t

    启动Nginx:

    /usr/src/nginx/sbin/nginx -V

    或者

    cat /usr/src/nginx/logs/error.log

    启用OWASP规则

    1、下载OWASP ModSecurity CRS:

    wget 'https://github.com/SpiderLabs/owasp-modsecurity-crs/archive/master.zip'

    2、解压到/usr/src/nginx/conf

    cp master.zip /usr/src/nginx/conf
    cd /usr/src/nginx/conf
    unzip master.zip
    

    3、添加OWASP规则

    # 进入/usr/src/nginx/conf目录。复制规则配置文件到/usr/src/nginx/conf目录
    cp owasp-modsecurity-crs-master/modsecuity_crs_10_setup.conf.example modsecurity_crs_10_setup.conf
    # 打开modsecurity.conf 在最上面引入规则文件路径
    Include /usr/src/nginx/conf/modsecurity_crs_10_setup.conf
    Include /usr/src/nginx/conf/owasp-modsecurity-crs-master/basee_rules/modsecurity_crs_41_sql_injection_attacks.conf
    

    将SecRuleEngine设置为On

    image-20210630162311445

    4、测试环境

    在/var/www/html中写一个phpinfo,vim index.php

    内容为

    <?php
        phpinfo();
    ?>
    

    修改Nginx配置文件

    image-20210630162519964 image-20210630162529671

    保存配置。重启nginx即可

    /usr/src/nginx/sbin/nginx -s reload

    自行测试。

    相关文章

      网友评论

          本文标题:WAF:ModSecurity on Nginx

          本文链接:https://www.haomeiwen.com/subject/tevuultx.html