网络对抗原理实验4-搭建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过度访问则会被永久封禁

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

成功完成实验目标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值