当前位置:   article > 正文

centos7安装 Nginx+ModSecurity实现WAF_centos waf

centos waf

Nginx+ModSecurity 安装

modsecurity原本是Apache上的一款开源waf,可以有效的增强web安全性,目前已经支持nginx和IIS,配合nginx的灵活和高效,可以打造成生产级的WAF,是保护和审核web安全的利器。

如果不指定路径,可以直接全部复制指令执行, 亲测可以执行

1.相关依赖

yum install -y gcc-c++ flex bison yajl yajl-devel curl-devel curl GeoIP-devel doxygen zlib-devel pcre-devel lmdb-devel libxml2-devel ssdeep-devel lua-devel libtool autoconf automake wget epel-release openssl-devel 
  • 1

2. 安装Modsecurity

mkdir -p /usr/app/modsecurity 
cd /usr/app/modsecurity 
wget http://www.modsecurity.cn/download/modsecurity/modsecurity-v3.0.3.tar.gz
tar -zxvf modsecurity-v3.0.3.tar.gz
mv modsecurity-v3.0.3 /usr/app/modsecurity/modsecurity
cd /usr/app/modsecurity/modsecurity
sh build.sh
./configure
make && make instal
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

出现改图片内容 为正常
在这里插入图片描述

3.ModSecurity-nginx 安装

ModSecurity-nginx 官方下载地址

ModSecurity-nginx cdsn下载

modsecurity-nginx是 nginx 和 libmodsecurity 之间的连接器, 其实就是一个第三方 Nginx 模块, Nginx 可以通过静态或动态方式加载该模块

cd /usr/app
wget https://codeload.github.com/SpiderLabs/ModSecurity-nginx/zip/refs/heads/master
yum -y install unzip
unzip  master
mv ModSecurity-nginx-master /usr/app/modsecurity/modsecurity-nginx
  • 1
  • 2
  • 3
  • 4
  • 5

4.安装nginx

由于个人原因 需要安装SSL模块 ,如果不需要SSL 可以编译时使用下面 指令进行编译。

./configure --prefix=/usr/app/nginx --add-module=/usr/app/modsecurity-nginx 
  • 1

全部执行内容

mkdir -p /usr/app/nginx
cd /usr/app/nginx
wget http://nginx.org/download/nginx-1.16.1.tar.gz
tar -zxvf nginx-1.16.1.tar.gz
cd /usr/app/nginx/nginx-1.16.1/
./configure --prefix=/usr/app/nginx --with-http_stub_status_module --with-http_ssl_module --with-file-aio --with-http_realip_module --add-module=/usr/app/modsecurity-nginx 
make && make install
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

5.nginx + ModSecurity-nginx 配置

将modsecurity 下的配置文件 复制到nginx.config 目录,方便后期更改配置。

mkdir -p /usr/app/nginx/conf/modsecurity
cp  /usr/app/modsecurity/modsecurity/modsecurity.conf-recommended /usr/app/nginx/conf/modsecurit/modsecurity.conf
cp  /usr/app/modsecurity/modsecurity/unicode.mapping  /usr/app/nginx/conf/modsecurity
  • 1
  • 2
  • 3

5.1配置 nginx.conf 内容

vim /usr/app/nginx/conf/nginx.conf
  • 1

在http或server节点中添加以下内容(在http节点添加表示全局配置,在server节点添加表示为指定网站配置)

   vim 
    modsecurity on;
    modsecurity_rules_file /usr/app/nginx/conf/modsecurity/modsecurity.conf;
  • 1
  • 2
  • 3

在这里插入图片描述

5.2配置 modsecurity.conf 内容

vim /usr/app/nginx/conf/modsecurity/modsecurity.conf
  • 1

打开规则引擎 SecRuleEngine On

#SecRuleEngine DetectionOnly
SecRuleEngine On

  • 1
  • 2
  • 3

确保ModSecurity在记录审计日志时保存请求体IJ 改为 C

#SecAuditLogParts ABIJDEFHZ
SecAuditLogParts ABCDEFHZ

  • 1
  • 2
  • 3

添加防护规则文件

Include /usr/app/nginx/conf/modsecurity/crs-setup.conf
Include /usr/app/nginx/conf/modsecurity/rules/*.conf
  • 1
  • 2

6.下载modsecurity-crs防护规则文件

下载规则文件压缩包

cd /usr/app/modsecurity
wget http://www.modsecurity.cn/download/corerule/owasp-modsecurity-crs-3.3-dev.zip
unzip owasp-modsecurity-crs-3.3-dev.zip
cd owasp-modsecurity-crs-3.3-dev
  • 1
  • 2
  • 3
  • 4

复制crs-setup.conf.example到/usr/app/nginx/conf/modsecurity/下并重命名为crs-setup.conf

cp crs-setup.conf.example /usr/app/nginx/conf/modsecurity/crs-setup.conf
  • 1

复制rules文件夹到 /usr/local/app/conf/modsecurity/
修改文件名称,去掉 .example 让配置文件生效

cp -r rules /usr/app/nginx/conf/modsecurity/
cd /usr/app/nginx/conf/modsecurity/rules
mv REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf.example REQUEST-900-EXCLUSION-RULES-BEFORE-CRS.conf
mv RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf.example RESPONSE-999-EXCLUSION-RULES-AFTER-CRS.conf
  • 1
  • 2
  • 3
  • 4

7.启动 nginx

/usr/app/nginx/sbin/nginx -c /usr/app/nginx/conf/nginx.conf
  • 1

测试防护效果

发送正常请求

curl -I http://localhost 
  • 1

返回200 nginx首页内容

HTTP/1.1 200 OK
Server: nginx/1.16.1
Date: Thu, 03 Nov 2022 16:21:18 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Thu, 03 Nov 2022 15:40:36 GMT
Connection: keep-alive
ETag: “6363e0f4-264”
Accept-Ranges: bytes

发送注入攻击

curl -I 'http://localhost/?id=2 AND 1=1' 
  • 1

返回结果 403 被拦截

HTTP/1.1 403 Forbidden
Server: nginx/1.16.1
Date: Thu, 03 Nov 2022 16:18:58 GMT
Content-Type: text/html
Content-Length: 153
Connection: keep-alive

参考内容

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/365837
推荐阅读
相关标签
  

闽ICP备14008679号