WAF:ModSecurity on Nginx(15)

news/2024/3/29 14:39:49/文章来源:https://blog.csdn.net/yyj1781572/article/details/129194819

预备知识
Nginx概述


    Nginx ("engine x") 是一个高性能的HTTP和 反向代理 服务器,也是一个 IMAP/POP3/SMTP服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。 

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的运作设计有以下的基础概念:

    1、让使用者可以做任何想做的事情(Empower users to do what they want)

    2、 使用者设定的动作才会执行(Don’t do anything implicitly)

    3、 预设是不做任何动作(Be passive)


ModSecurity的部署架构

    1、 与Web Server结合 。

    2、 与Apache/nginx结合部署为网关,当作一个反向代理。

总结:

    ModSecurity是一个Web应用防火墙(WAF)。当前已经有超过70%的攻击发生在网络应用层,各级组织急需要能够保证他们的系统安全性的帮助。WAF系统的部署,可以为web应用增加一个外部安全层来检测或防止攻击。针对一系列的攻击,ModSecurity为web应用提供了强大的保护,并对HTTP流量进行监测和实时分析。

    软件下载地址:

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

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

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

实验目的
1)Install Nginx with ModSecurity

2)Configure ModSecurity with Nginx

3)启用OWASP规则

实验环境
操作系统:Server:Centos 7 Client:Windows xp

网络拓扑见下图:


服务端IP:10.1.1.56,客户端IP随机

所用软件:Nginx 1.9.15 ; modsecurity-2.9.1

PS:本实验指导书中涉及的软件路径均可以根据你自己所需设定,不必完全按照实验指导书中的配置而设定。

实验步骤一
Install Nginx with ModSecurity


1、安装Nginx和ModSecurity依赖的包和其他必须的软件包

    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

    先解压:

    cd /opt

    gunzip -c modsecurity-2.9.1.tar.gz | tar xvf –

    进入解压后目录执行:

    ./autogen.sh

    ./configure --enable-standalone-module --disable-mlogc

    make

    make install


4、编译nginx并添加modsecurity模块

    先解压:

    cd /opt

    进入解压后目录执行如下命令,编译nginx:

    ./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 & unicode.mapping文件到nginx的conf目录下:

    可以使用find命令查找这个两个文件在哪

    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已经集成了ModSecurity,现在重启Nginx试试。

    检查配置文件:

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

    启动nginx:
    /usr/src/nginx/sbin/nginx
  
    检查ModSecurity是否正常启动的两种办法:

    第一种:/usr/src/nginx/sbin/nginx -V
 
    第二种查看nginx错误日志:

    cat /usr/src/nginx/logs/error.log
  
实验步骤三
启用OWASP规则


1、下载OWASP ModSecurity CRS:

    cd /opt

    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/modsecurity_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/base_rules/modsecurity_crs_41_sql_injection_attacks.conf

 
    将SecRuleEngine设置为On

   
4、php环境下测试:

    我们启用了xss和sql注入的过滤,不正常的请求会直接返回403。以php环境为例,在/var/www/html目录下新建一个index.php内容为:

    修改nginx配置文件为如下:

  
    保存配置。重启nginx即可

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

    切换到client客户端,在浏览器中访问:

    http://serverip/index.php?id=1 正常显示

    http://serverip/index.php? id=1 and 1=1  返回403

    http://serverip/index.php? search=<script>alert('xss');</script>  返回403

    说明sql注入和xss已经被过滤了

   
    当然还可以在/var/log/modsec_audit.log中看到攻击日志   

    至此表示安装成功

 部分实验截图如下图所示;

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_73484.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

指针的进阶【上篇】

文章目录&#x1f4c0;1.字符指针&#x1f4c0;2.指针数组&#x1f4c0;3.数组指针&#x1f4bf;3.1.数组指针的定义&#x1f4bf;3.2. &数组名VS数组名&#x1f4bf;3.3.数组指针的使用&#x1f4c0;1.字符指针 int main() {char ch w;char* pc &ch;// pc就是字符指…

智慧物联网系统源码:一个用于数据的收集、处理、可视化、设备管理、设备预警、报警的平台

项目简介&#xff1a; 一个用于数据的收集、处理、可视化、设备管理、设备预警、报警的平台&#xff0c;通过平台将所有设备连接起来&#xff0c;为上层应用提供设备的管理、数据收集、远程控制等核心物联网功能。 支持支持远程对设备进行实时监控、故障排查、远程控制&#…

PPP点到点协议认证之PAP认证

PPP点到点协议认证之PAP认证 需求 如图配置接口的IP地址将R1配置为认证端&#xff0c;用户名和密码是 huawei/hcie &#xff0c;使用的认证方式是pap确保R1和R2之间可以互相ping通 拓扑图 配置思路 确保接口使用协议是PPP确保接口的IP地址配置正确在R1 的端口上&#xff0c…

Pycharm远程服务器常见问题

2023年02月23日 问题描述&#xff1a;Pycharm远程服务器跑代码时&#xff0c;不小心把Pycharm关掉了&#xff0c;但服务器代码还在运行&#xff1f; 解决办法&#xff1a;kill进程 先用watch -n 0.5 nvidia_smi查看进程&#xff0c;然后kill -9 <进程> 1、nvidia-smi…

ip公司和soc公司是什么?

IP 公司和 SoC 公司都是半导体行业的重要组成部分&#xff0c;但它们的角色和职责略有不同。IP&#xff08;Intellectual Property&#xff09;公司主要提供可重用的知识产权组件&#xff0c;也称为 IP 核或 IP 模块&#xff0c;这些组件可以在设计芯片的过程中被集成到芯片中。…

Unity 对接 ML-Agents 初探

一、ML-Agents 是什么 The Unity Machine Learning Agents Toolkit (ML-Agents) is an open-source project that enables games and simulations to serve as environments for training intelligent agents. We provide implementations (based on PyTorch) of state-of-the…

回归预测 | MATLAB实现BO-CNN-GRU贝叶斯优化卷积门控循环单元多输入单输出回归预测

回归预测 | MATLAB实现BO-CNN-GRU贝叶斯优化卷积门控循环单元多输入单输出回归预测 目录回归预测 | MATLAB实现BO-CNN-GRU贝叶斯优化卷积门控循环单元多输入单输出回归预测效果一览基本介绍模型描述程序设计参考资料效果一览 基本介绍 基于贝叶斯(bayes)优化卷积神经网络-门控循…

Unity(三)--导入3d模型并实现UGUI界面上嵌入3d模型

Unity支持的常用模型格式及建模软件: 格式建模软件网格动画材质骨骼FBX3DMax,C4D,Blender,Maya等√√√√OBJ3DMax,C4D,Blender,Maya等√目录 导入模型并调整好位置创建2D场景(UGUI)使3d模型显示在图片前面方法一:使用Render Texture注意点导入模型并调整好位置 以FBX为例,…

百万数据excel导出功能如何实现?

最近我做过一个MySQL百万级别数据的excel导出功能&#xff0c;已经正常上线使用了。 这个功能挺有意思的&#xff0c;里面需要注意的细节还真不少&#xff0c;现在拿出来跟大家分享一下&#xff0c;希望对你会有所帮助。 原始需求&#xff1a;用户在UI界面上点击全部导出按钮…

如果不使用时钟同步工具,linux如何解决时钟同步问题?仅需要一行命令即可。

这是一篇日记&#xff0c;记录了上帝下凡出手&#xff0c;解救苍生与水火之中的神奇文章&#xff0c;如果你也有过类似的经历&#xff0c;留言关注&#xff0c;咱们交流一下~ 目录 背景&#xff08;如果不想知道可以跳过&#xff09; 一行神奇的命令 一段一段的研究 总结 背…

go atomic 原子操作

在 go 语言 string 类型思考 中有说到 -race 竞态检测&#xff0c;多个 goroutine 并发读写同一个变量是会触发。竞态竞争导致的问题是&#xff1a;结果不可控&#xff0c;你也无法预料最终的结果是什么。 比较棘手的竞态竞争会发生在一些切片类型上&#xff0c;在遍历读取切片…

221 最大正方形

#221 最大正方形 题目描述 在一个由 0 和 1 组成的二维矩阵内&#xff0c;找到只包含 1 的最大正方形&#xff0c;并返回其面积。 示例 1&#xff1a; 输入&#xff1a;matrix [["1","0","1","0","0"],["1",&…

【LeetCode】2357. 使数组中所有元素都等于零

2357. 使数组中所有元素都等于零 题目描述 给你一个非负整数数组 nums 。在一步操作中&#xff0c;你必须&#xff1a; 选出一个正整数 x &#xff0c;x 需要小于或等于 nums 中 最小 的 非零 元素。nums 中的每个正整数都减去 x。 返回使 nums 中所有元素都等于 0 需要的 …

经典设计模式MVC理解

MVC是模型(Model)、视图(View)、控制器(Controller)的简写&#xff0c;将业务逻辑、数据、显示分离的方法来组织代码。今天简单回顾一下。 mvc释义理解 M代表模型(Model)&#xff0c;表示业务规则封装。在MVC的三个部件中&#xff0c;模型拥有最多的处理任务。被模型返回的数据…

图表类可视化开发采坑记录之旅3

如图所示的扇形图样式改造&#xff1a; 开发框架&#xff1a; 基于vue2&#xff0c;echarts5.0.0 基于组件&#xff1a; html代码&#xff1a; <div class"showCanvas"><div id"midError"></div> </div> css代码&#xff1a; …

【华为OD机试模拟题】用 C++ 实现 - 去除多余空格(2023.Q1)

最近更新的博客 华为OD机试 - 入栈出栈(C++) | 附带编码思路 【2023】 华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023】 华为OD机试 - 简易内存池 2(C++) | 附带编码思路 【2023】 华为OD机试 - 第 N 个排列(C++) | 附带编码思路 【2023】 华为OD机试 - 考古…

运动蓝牙耳机什么牌子好,运动蓝牙耳机品牌推荐

现在市面上运动耳机的品牌越来越多&#xff0c;还不知道选择哪一些运动耳机品牌&#xff0c;可以看看下面的一些耳机分享&#xff0c;运动耳机需要注意耳机的参数配置以及佩戴舒适度&#xff0c;根据自己最根本的使用需求来选择运动耳机。 1、南卡Runner Pro4骨传导蓝牙运动耳…

C/C++开发,无可避免的内存管理(篇一)-内存那些事

一、内存管理机制 任何编程语言在访问和操作内存时都会涉及大量的计算工作。但相对其他语言&#xff0c;c/c开发者必须自行采取措施确保所访问的内存是有效的&#xff0c;并且与实际物理存储相对应&#xff0c;以确保正在执行的任务不会访问不应该访问的内存位置。C/C语言及编译…

mongoDB的安装与使用

MongoDB安装MongoDB官方网站&#xff1a;https://www.mongodb.com/try/download/community-kubernetes-operator2软件安装权限不足&#xff1a;https://www.javaclub.cn/database/56541.htmlstep1:打开安装包直接点击Nextstep2&#xff1a;继续点击Nextstep3&#xff1a;点击自…

DMotion - 基于DOTS的动画框架和状态机

【博物纳新】专栏是UWA旨在为开发者推荐新颖、易用、有趣的开源项目&#xff0c;帮助大家在项目研发之余发现世界上的热门项目、前沿技术或者令人惊叹的视觉效果&#xff0c;并探索将其应用到自己项目的可行性。很多时候&#xff0c;我们并不知道自己想要什么&#xff0c;直到某…