当前位置:   article > 正文

网络对抗原理实验4-搭建web防火墙_nginx web防火墙

nginx web防火墙

一.  实验目标

基于Nginx(本机实装)安装并配置 ModSecurity 模块,搭建WAF,实现以下安全功能:

1.对 SQL 注入攻击进行阻断并报警。

2.对特定扫描器或发包工具(paros、w3af 等)的 User-Agent 进行检测和报警

二.  实验过程

1. 配置环境

sudo apt-get update

sudo apt-get install libpcre3 libpcre3-dev libssl-dev zlib1g zlib1g-dev build-essential

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

sudo make install

耐心等待编译完成。

2. 安装ModSecurity-nginx 连接器

git clone --depth 1

https://gitclone.com/github.com/SpiderLabs/ModSecurity-nginx.git

安装过nginx1.18.0版本,所以下载同版本源码重新编译,链接这个模块。

链接完毕后,将objs/ngx_http_modsecurity_module.so复制到nginx的实装目录,供配置文件链接。我选择了modsecurity/aaa.so.

3. 下载并部署 OWASP ModSecurity CRS 规则库

Nginx/modsecurity文件夹下需要有这四项。打开其中的rules文件夹,去除900和999规则后的example后缀,这是后期自定义规则使用的配置文件。

然后打开/etc/nginx,编辑nginx.conf和/modsecurity/modsecurity.conf,使得nginx打开modsecurity服务。

对于:modsecurity.conf

SecRuleEngine DetectionOnly改为SecRuleEngine On

同时添加以下内容:

Include /etc/nginx/modsecurity/crs-setup.conf

Include /etc/nginx/modsecurity/rules/*.conf

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

SecAuditLogParts ABCDEFHZ

重启nginx后即可开始配置自定义规则

4. 配置自定义规则

4.1 实现阻断SQL注入攻击

这里我根据实验二里探索到的三种SQL注入攻击,进行了检测;

配置在900文件里,其命名规则为xxx文件决定了前三位,内部序号占用后三位,所以采取900-001~900-003

4.2 实现阻断扫描,以及过多同一IP访问

004可以检测用户的User-Agent,检测到带有w3af或者sqlmap就会返回403,组织发包工具,扫描工具等。。

008-012负责封禁过多访问的同一IP。

接下来进行测试

三.  测试

Modsecurity.conf记录了它的log位置,我们先尝试三种SQL注入攻击:

正常例

尝试布尔盲注入

查看报警文件,是900002规则,防止了布尔攻击。

延时攻击也被403

sqlmap工具的所有扫描也惨遭403:

报警如下:

同一IP过度访问则会被永久封禁

尝试使用火狐浏览器访问网页,无法访问:

成功完成实验目标。

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

闽ICP备14008679号