引言
在工作环境中,普通防火墙在网络层与传输层对工作环境进行保护与隔离。但黑客能够通过SQL 注入、XSS 跨站、文件上传等手段绕过传统防火墙入侵公司资产,这时候就需要Web应用防火墙对应用进行保护与监控。
实验环境
准备四台机器:
奇安信网神防火墙:net0(192.168.212.113 网关: 192.168.212.1)net1(172.16.11.30 网关:172.16.11.1),net2(192.168.100.254 网关:192.168.100.254)
山石网科Web应用防火墙:net0(172.16.11.104 网关:172.16.11.1),net1(192.168.100.0 网关:192.168.100.254)
kali管理机:net0(172.16.11.194 网关:172.16.11.1)net1(192.168.212.106 网关: 192.168.212.1),net2(192.168.100.0 网关:192.168.100.254)
模拟资产target-a:net0(192.168.100.0 网关:192.168.100.254)
拓扑图

网络防火墙初始化
# 使用默认账号密码登录
账号:admin 密码:!1fw@2soc#3vpn
# 查看管理接口
show interface发现管理口ge1的IP为192.168.212.113

在kali管理机浏览器访问:https://192.168.212.113,使用默认账号登录

修改密码进入管理页面

系统配置→部署向导→路由模式
由于需要通过防火墙分离内外网络,所以将防火墙作为三层设备使用,部署与网络边界处,将接口作为内网网络的网关。

将ge2(172.16.11.30/24)配置为外网接口,ge3(192.168.100.254)配置为内网接口

可信任主机暂时不用配置

安全策略默认配置,之后会进行修改

配置无误应用即可

进入网络配置→接口
发现接口配置成功,还需添加安全域
ge2为外网安全域为untrust 管理方式为ping(用于测试网络连通性)
ge3为内网安全与为trust 管理方式为ping (用于测试网络连通性)

配置DHCP服务器
由于内网还未配置DHCP服务器,所以我们优先为内网配置DHCP,方便IP自动下发给内网资产。
网络配置→DHCP→DHCP服务器→添加

地址池:接口地址池 (接口作为DHCP服务器)
接口:ge3(内网接口)
网关地址:192.168.100.254 (ge3内网接口IP作为DHCP网关)
DNS:223.5.5.5 (公网DNS)
网络地址:192.168.100.0/24 (内网网络地址)
地址池:192.168.100.100-192.168.100.200 (DHCP从100开始下发到200为止)
查看模拟资产 target-a IP已经成功下发

kali管理机内网网卡IP也成功下发

测试网络连通性:系统配置→诊断工具→检测工具
kali管理机网络连通

模拟资产target-a资产网络连通

安全策略配置
策略配置→安全策略
因为部署向导已经配置了默认安全策略,但该策略存在极高风险,需要禁用该策略并重新配置新策略。
匹配范围无限制:源 / 目的安全域、源 / 目的地址、服务 / 应用全部为any,意味着所有流量都能匹配该规则
动作完全放行:表示所有匹配流量无限制通过,防火墙完全失去访问控制能力

将内网服务映射到外网需要配置NAT网络转换,在此之前需要添加安全策略,核心用于管控外网(WAN)到内网(LAN)的流量,用于保护与监控内网资产。
策略组:选择默认策略组
源安全域:untrust(外网)
目的安全域:trust(内网)
源地址:any (允许所有网络均可访问)
目的地址:内网(trust内网接口网段)
服务:HTTP,HTTPS(因为内网模拟资产为web服务,所以选择http,https,避免选择any,遵循最小协议策略)
应用:any (因为服务已经限制了,所以应用可以选择any,如果工作环境需要限制,可以根据实际情况设置)
流量日志:记录日志(方便取证)
WAF初始化
# 使用默认账号密码登录
账号:hillstone 密码:hillstone
# 登陆后修改密码
# 查看管理接口
show interface

管理接口ip为172.16.11.52,使用浏览器访问https://172.16.11.52,使用默认账户与修改后的密码登录。

成功登陆后,系统会自动让我们配置业务接口,我们这里选择部署单臂模式。
单臂模式(也叫旁路 / 旁挂模式)是 WAF 的常见部署方式,设备仅通过一个物理接口接入网络,无需串联在业务链路中,对现有网络拓扑改动极小。
适用场景:
不希望中断现有业务,快速上线 WAF 防护
网络架构复杂,无法做透明 / 串联部署
仅需对特定业务流量做引流防护
# 由于这里WAF访问控制内网,所以选择内网网络接口与信任域(trust)
WAN接口:ethernet0/1 安全域:trust
# 因为网络防火墙已为内网配置了DHCP服务器,选择自动获取IP
# 由于WAF在内网中,真实环境里WAF前一定存在网络防火墙或Nginx反向代理,WAF直接看到的是代理IP,而非客户端真是IP,需抬起此选项
WAF前有7层代理:是 
由于在内网环境中需要访问内网服务,所以直接将内网网关作为主DNS

查看网络接口:网络→接口
发现IP成功下发,编辑ethernet0/1 配置管理方式ping(方便测试网络连通性)

测试网络连通性:系统→诊断工具→测试工具
模拟资产target-a网络成功连通

kali管理机网络成功连通

网关网络成功连通

Web站点配置
开启站点防护:站点→新建

站点状态:防护
虚拟路由器:trust-vr(内网虚拟路由器)
站点类型:HTTP
服务:192.168.100.103(WAF内网接口)
端口:80
域:any(允许所有域名 / IP 访问这台后端服务器,因为会配置NAT地址转换,该服务器不会暴露到外部网络)
仅告警:开启(用于后续验证,正常业务需关闭)
类型:使用全局配置
添加防护业务:负载均衡
负载均衡算法:IP Hash(对客户端的源 IP 地址进行哈希计算,将计算结果映射到固定的后端服务器上,确保同一个客户端 IP 的所有请求,始终转发到同一台后端服务器。)
负载服务器:192.168.100.102:80 (模拟资产target-a)
使用kali管理机浏览器访问http://192.168.100.103,发现配置成功。

尝试用kali管理机攻击该站点
dirsearch -u http://192.168.100.103发现WAF成功监控到kali管理机攻击。


网络防火墙NAT策略配置
因为WAF防火墙依旧在内网防护内网资产,在实际环境中客户不可能直接通过内网访问业务,所以我们需要在网络防火墙配置NAT网络地址转换,将内网业务映射到外部网络。
配置策略→NAT策略→目的NAT
源地址类型:地址对象
源地址:any (允许来自任意地址的流量都通过目的地址)
目的地址类型:IP地址
目的地址:172.168.11.30(网络防火墙外网接口,所有流量都会通过该接口)
服务:HTTP,HTTPS(内网资产为web服务,所以遵循最小规则配置)
入接口:ge2(外网接口)
转换地址:192.168.100.103(WAF防火墙的业务接口,将所有通过外网接口的流量都传输到WAF业务接口来访问内网业务)
端口:不转换(不进行端口映射)
使用kali管理机浏览器访问http://172.16.11.30,发现NAT网络配置成功。

再次使用kali管理机攻击业务
dirsearch -u http://172.16.11.30发现WAF成功监控到kali管理机攻击。
