用户
搜索
  • TA的每日心情
    开心
    2022-1-12 17:18
  • 签到天数: 42 天

    连续签到: 1 天

    [LV.5]常住居民I

    i春秋-见习白帽

    Rank: 3Rank: 3

    8

    主题

    73

    帖子

    2225

    魔法币
    收听
    0
    粉丝
    0
    注册时间
    2018-7-19
    发表于 2021-12-31 15:05:10 0860

    WAF:ModSecurity on Nginx

    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

    自行测试。

    发新帖
    您需要登录后才可以回帖 登录 | 立即注册