【eNSP 项目实战】防火墙用户认证实验

📅 2026/7/29 16:03:09 👁️ 阅读次数 📝 编程学习
【eNSP 项目实战】防火墙用户认证实验

## 先看最终效果

本项目最终实现的不是“能 ping 通”这么简单,而是让不同部门用户走不同认证和访问路径:

| 用户/部门 | 所属网段 | 认证方式 | 访问权限 |
| --- | --- | --- | --- |
| 高管 Client1 | 172.16.1.90/24 | 免认证 | 可访问 DMZ 和外部网络 |
| 财务 Client2 | 172.16.1.100/24 | 访问 DMZ 不认证 | 只能访问 DMZ 指定业务,不能访问外网 |
| 运维 Client3 | 172.16.1.0/24 DHCP | Portal 认证 | 可访问 DMZ,非工作时间可访问外网 |
| 技术部 PC1 | 172.16.2.100/24 | 访问 DMZ 匿名认证 | 可访问 Web/OA,不能访问外网 |
| 市场部 PC2 | 172.16.2.0/24 DHCP | DMZ 匿名,外网 Portal | 可访问 OA,认证后访问外网 |

一句话总结:FW1 同时承担网关、DHCP 服务器、认证入口和安全策略执行点。终端拿到地址后,访问不同区域时由 FW1 判断是否需要认证,以及认证后能访问什么资源。

## 一、实验拓扑

本次作业拓扑如下:

从拓扑可以看出,网络被划分成 4 类区域:

| 区域 | 设备 | 网段 | 作用 |
| --- | --- | --- | --- |
| DMZ | OA Server、Web Server、DNS Server、SW1 | 10.0.0.0/24 | 企业服务器区 |
| Trust_A | 企业部门 A、SW3 | 172.16.1.0/24 | 高管、财务、运维 |
| Trust_B | 企业部门 B、SW4 | 172.16.2.0/24 | 技术、市场 |
| Untrust | 百度服务器 | 100.1.1.0/24 | 外部网络模拟区 |

域名规划:

| 域名 | 解析目标 | 用途 |
| --- | --- | --- |
| `www.aliyun.com` | 10.0.0.20 | DMZ Web Server |
| `www.baidu.com` | 100.1.1.1 | 外部百度服务器 |

## 二、需求拆解

这类题最怕直接上手配命令。正确做法是先把需求拆成 7 个模块:

1. 交换机 VLAN 和接口类型配置。
2. 防火墙接口、子接口和 IP 地址配置。
3. 防火墙 DHCP 地址池配置。
4. 防火墙安全区域配置。
5. 地址对象和服务对象配置。
6. 管理员 Telnet 登录配置。
7. 用户认证策略和安全策略配置。

其中最核心的是第 7 步。认证策略负责识别“这个人是谁”,安全策略负责决定“这个人能去哪里”。只配认证不配安全策略,访问不会自动放通;只配安全策略不配认证,用户身份也不会被正确区分。

## 三、IP 地址与区域规划

| 对象 | 区域/VLAN | IP 地址 | 网关/DNS | 说明 |
| --- | --- | --- | --- | --- |
| FW1 GE1/0/0 | DMZ | 10.0.0.254/24 | - | DMZ 网关 |
| FW1 GE1/0/1.1 | Trust_A / VLAN 10 | 172.16.1.254/24 | - | 部门 A 网关 |
| FW1 GE1/0/1.2 | Trust_B / VLAN 20 | 172.16.2.254/24 | - | 部门 B 网关 |
| FW1 GE1/0/2 | Untrust | 100.1.1.10/24 | - | 外部出口 |
| OA Server | DMZ | 10.0.0.10/24 | 10.0.0.254 | OA 系统 |
| Web Server | DMZ | 10.0.0.20/24 | 10.0.0.254 | `www.aliyun.com` |
| DNS Server | DMZ | 10.0.0.30/24 | 10.0.0.254 | DNS 解析 |
| 百度服务器 | Untrust | 100.1.1.1/24 | 100.1.1.10 | `www.baidu.com` |
| Client1 | VLAN 10 | DHCP 固定 172.16.1.90/24 | DNS 10.0.0.30 | 高管 |
| Client2 | VLAN 10 | 静态 172.16.1.100/24 | DNS 10.0.0.30 | 财务 |
| Client3 | VLAN 10 | DHCP 动态 | DNS 10.0.0.30 | 运维 |
| PC1 | VLAN 20 | 静态 172.16.2.100/24 | DNS 10.0.0.30 | 技术 |
| PC2 | VLAN 20 | DHCP 动态 | DNS 10.0.0.30 | 市场 |

## 四、交换机配置

### 1. SW2 汇聚交换机

SW2 上联 FW1,下联部门 A 和部门 B。GE0/0/1 到 FW1 配置为 Trunk,放行 VLAN 10 和 VLAN 20。

```text
<Huawei> system-view
[Huawei] sysname SW2

[SW2] vlan batch 10 20

[SW2] interface GigabitEthernet0/0/1
[SW2-GigabitEthernet0/0/1] port link-type trunk
[SW2-GigabitEthernet0/0/1] port trunk allow-pass vlan 10 20
[SW2-GigabitEthernet0/0/1] quit

[SW2] interface GigabitEthernet0/0/2
[SW2-GigabitEthernet0/0/2] port link-type access
[SW2-GigabitEthernet0/0/2] port default vlan 10
[SW2-GigabitEthernet0/0/2] quit

[SW2] interface GigabitEthernet0/0/3
[SW2-GigabitEthernet0/0/3] port link-type access
[SW2-GigabitEthernet0/0/3] port default vlan 20
[SW2-GigabitEthernet0/0/3] quit

[SW2] save
```

### 2. SW3 部门 A 接入交换机

SW3 承载企业部门 A,Client1、Client2、Client3 都划入 VLAN 10。

```text
<Huawei> system-view
[Huawei] sysname SW3

[SW3] vlan batch 10

[SW3] port-group group-member GigabitEthernet0/0/1 GigabitEthernet0/0/2 GigabitEthernet0/0/3 GigabitEthernet0/0/4
[SW3-port-group] port link-type access
[SW3-port-group] port default vlan 10
[SW3-port-group] quit

[SW3] save
```

### 3. SW4 部门 B 接入交换机

SW4 承载企业部门 B,PC1、PC2 划入 VLAN 20。

```text
<Huawei> system-view
[Huawei] sysname SW4

[SW4] vlan batch 20

[SW4] port-group group-member GigabitEthernet0/0/1 GigabitEthernet0/0/2 GigabitEthernet0/0/3
[SW4-port-group] port link-type access
[SW4-port-group] port default vlan 20
[SW4-port-group] quit

[SW4] save
```

### 4. SW1 DMZ 交换机

SW1 只承载 DMZ 服务器,可以统一放到 VLAN 30,便于管理。

```text
<Huawei> system-view
[Huawei] sysname SW1

[SW1] vlan batch 30

[SW1] port-group group-member GigabitEthernet0/0/1 GigabitEthernet0/0/2 GigabitEthernet0/0/3 GigabitEthernet0/0/4
[SW1-port-group] port link-type access
[SW1-port-group] port default vlan 30
[SW1-port-group] quit

[SW1] save
```

## 五、防火墙接口配置

FW1 是整张拓扑的核心。它一边接 DMZ,一边接 Trust_A/Trust_B,一边接 Untrust,还负责 DHCP、认证和安全策略。

```text
<USG6000V> system-view
[USG6000V] sysname FW1

[FW1] interface GigabitEthernet1/0/0
[FW1-GigabitEthernet1/0/0] ip address 10.0.0.254 255.255.255.0
[FW1-GigabitEthernet1/0/0] undo shutdown
[FW1-GigabitEthernet1/0/0] quit

[FW1] interface GigabitEthernet1/0/1
[FW1-GigabitEthernet1/0/1] undo shutdown
[FW1-GigabitEthernet1/0/1] quit

[FW1] interface GigabitEthernet1/0/1.1
[FW1-GigabitEthernet1/0/1.1] vlan-type dot1q 10
[FW1-GigabitEthernet1/0/1.1] ip address 172.16.1.254 255.255.255.0
[FW1-GigabitEthernet1/0/1.1] quit

[FW1] interface GigabitEthernet1/0/1.2
[FW1-GigabitEthernet1/0/1.2] vlan-type dot1q 20
[FW1-GigabitEthernet1/0/1.2] ip address 172.16.2.254 255.255.255.0
[FW1-GigabitEthernet1/0/1.2] quit

[FW1] interface GigabitEthernet1/0/2
[FW1-GigabitEthernet1/0/2] ip address 100.1.1.10 255.255.255.0
[FW1-GigabitEthernet1/0/2] undo shutdown
[FW1-GigabitEthernet1/0/2] quit
```

检查接口:

```text
[FW1] display ip interface brief
```

## 六、DHCP 地址池配置

防火墙作为 DHCP Server,为 Client1、Client3、PC2 分配地址。Client2 和 PC1 使用静态地址,因此需要从地址池中排除,避免冲突。

```text
[FW1] dhcp enable

[FW1] ip pool dhcp-a
[FW1-ip-pool-dhcp-a] network 172.16.1.0 mask 255.255.255.0
[FW1-ip-pool-dhcp-a] gateway-list 172.16.1.254
[FW1-ip-pool-dhcp-a] dns-list 10.0.0.30
[FW1-ip-pool-dhcp-a] excluded-ip-address 172.16.1.100
[FW1-ip-pool-dhcp-a] static-bind ip-address 172.16.1.90 mac-address xxxx-xxxx-xxxx
[FW1-ip-pool-dhcp-a] quit

[FW1] ip pool dhcp-b
[FW1-ip-pool-dhcp-b] network 172.16.2.0 mask 255.255.255.0
[FW1-ip-pool-dhcp-b] gateway-list 172.16.2.254
[FW1-ip-pool-dhcp-b] dns-list 10.0.0.30
[FW1-ip-pool-dhcp-b] excluded-ip-address 172.16.2.100
[FW1-ip-pool-dhcp-b] quit

[FW1] interface GigabitEthernet1/0/1.1
[FW1-GigabitEthernet1/0/1.1] dhcp select global
[FW1-GigabitEthernet1/0/1.1] quit

[FW1] interface GigabitEthernet1/0/1.2
[FW1-GigabitEthernet1/0/1.2] dhcp select global
[FW1-GigabitEthernet1/0/1.2] quit
```

`xxxx-xxxx-xxxx` 需要替换为 Client1 实际 MAC 地址。可以在 eNSP 终端网卡信息中查看,或者先让设备 DHCP 获取地址后,在 FW1 上查看地址池记录。

常用验证命令:

```text
[FW1] display ip pool all used
[FW1] display ip pool name dhcp-a used
[FW1] display ip pool name dhcp-b used
```

## 七、安全区域配置

本项目建议用独立安全区域区分部门 A 和部门 B,不要把两个部门都简单丢进同一个 Trust。这样后面的认证策略和安全策略会清晰很多。

```text
[FW1] firewall zone name Trust_A
[FW1-zone-Trust_A] set priority 70
[FW1-zone-Trust_A] add interface GigabitEthernet1/0/1.1
[FW1-zone-Trust_A] quit

[FW1] firewall zone name Trust_B
[FW1-zone-Trust_B] set priority 80
[FW1-zone-Trust_B] add interface GigabitEthernet1/0/1.2
[FW1-zone-Trust_B] quit

[FW1] firewall zone dmz
[FW1-zone-dmz] add interface GigabitEthernet1/0/0
[FW1-zone-dmz] quit

[FW1] firewall zone untrust
[FW1-zone-untrust] add interface GigabitEthernet1/0/2
[FW1-zone-untrust] quit
```

注意:VLAN 10、VLAN 20 的网关在 FW1 子接口上,所以安全区域要添加子接口 `GE1/0/1.1` 和 `GE1/0/1.2`,不要只添加母接口 `GE1/0/1`。

## 八、地址对象配置

地址对象是后续策略的“积木”。先把对象建清楚,策略看起来才不会乱。

```text
[FW1] ip address-set DMZ_Server type object
[FW1-object-address-set-DMZ_Server] address 0 10.0.0.10 mask 32
[FW1-object-address-set-DMZ_Server] address 1 10.0.0.20 mask 32
[FW1-object-address-set-DMZ_Server] address 2 10.0.0.30 mask 32
[FW1-object-address-set-DMZ_Server] quit

[FW1] ip address-set OA_Server type object
[FW1-object-address-set-OA_Server] address 0 10.0.0.10 mask 32
[FW1-object-address-set-OA_Server] quit

[FW1] ip address-set Web_Server type object
[FW1-object-address-set-Web_Server] address 0 10.0.0.20 mask 32
[FW1-object-address-set-Web_Server] quit

[FW1] ip address-set DNS_Server type object
[FW1-object-address-set-DNS_Server] address 0 10.0.0.30 mask 32
[FW1-object-address-set-DNS_Server] quit

[FW1] ip address-set Baidu_Server type object
[FW1-object-address-set-Baidu_Server] address 0 100.1.1.1 mask 32
[FW1-object-address-set-Baidu_Server] quit

[FW1] ip address-set Client1_Manager type object
[FW1-object-address-set-Client1_Manager] address 0 172.16.1.90 mask 32
[FW1-object-address-set-Client1_Manager] quit

[FW1] ip address-set Client2_FD type object
[FW1-object-address-set-Client2_FD] address 0 172.16.1.100 mask 32
[FW1-object-address-set-Client2_FD] quit

[FW1] ip address-set DeptA_Net_For_Auth type object
[FW1-object-address-set-DeptA_Net_For_Auth] address 0 172.16.1.0 mask 24
[FW1-object-address-set-DeptA_Net_For_Auth] quit

[FW1] ip address-set PC1_TD type object
[FW1-object-address-set-PC1_TD] address 0 172.16.2.100 mask 32
[FW1-object-address-set-PC1_TD] quit

[FW1] ip address-set DeptB_Net_For_Auth type object
[FW1-object-address-set-DeptB_Net_For_Auth] address 0 172.16.2.0 mask 24
[FW1-object-address-set-DeptB_Net_For_Auth] quit
```

其中 `DeptA_Net_For_Auth` 和 `DeptB_Net_For_Auth` 只建议用于认证策略触发范围,不建议直接拿来做最终放行授权。运维、市场这类 DHCP 用户的最终权限应优先使用认证用户组匹配。

如果实验镜像不支持 `address 0 ... mask 32` 这种编号写法,可以用设备 `?` 查看当前版本语法。有些版本支持直接写:

```text
address 10.0.0.10 mask 32
```

## 九、DNS Server 配置

DNS 是认证和业务访问的基础。没有 DNS,`www.aliyun.com` 和 `www.baidu.com` 无法按域名访问。

在 DNS Server 上添加解析记录:

| 域名 | IP 地址 |
| --- | --- |
| `www.aliyun.com` | 10.0.0.20 |
| `www.baidu.com` | 100.1.1.1 |

终端 DNS 都填写 `10.0.0.30`。DHCP 地址池中已经通过 `dns-list 10.0.0.30` 自动下发 DNS。

## 十、用户组织与认证方式设计

建议在 FW1 Web 页面中完成用户认证配置。原因很简单:不同 USG/eNSP 镜像的用户管理 CLI 差异较大,而 Web 页面对象、用户组、认证策略更直观。

### 1. 认证域与用户组

创建认证域 `openlab`,在该域下建立如下组织结构:

```text
/openlab
/A
/manager 高管
/DevOps 运维
/FD 财务
/B
/TD 技术
/MD 市场
```

### 2. 用户账号规划

| 用户 | 用户组 | 初始密码 | 绑定要求 | 登录限制 |
| --- | --- | --- | --- | --- |
| `user_001` | `/openlab/A/manager` | `admin@123` | 绑定 Client1 IP/MAC | 不允许多人同时登录 |
| `DevOps_001` | `/openlab/A/DevOps` | `admin@123` | 可按实验需要绑定 | 不允许多人同时登录 |
| `FD_001` | `/openlab/A/FD` | `admin@123` | 绑定 172.16.1.100 与 MAC | 不允许多人同时登录 |
| `TD_001` 至 `TD_003` | `/openlab/B/TD` | `admin@123` | 不强制绑定 | 允许多人同时登录 |
| `MD_001` 至 `MD_005` | `/openlab/B/MD` | `admin@123` | 不强制绑定 | 不允许多人同时登录,有效期 10 天 |

建议开启“首次登录强制修改密码”,这样更符合真实企业账号管理流程。

### 3. 认证策略设计

| 源用户/部门 | 源区域 | 目的区域 | 认证动作 |
| --- | --- | --- | --- |
| 高管 Client1 | Trust_A | 任意区域 | 免认证 |
| 运维 Client3 | Trust_A | DMZ、Untrust | Portal 认证 |
| 财务 Client2 | Trust_A | DMZ | 不认证 |
| 技术 PC1 | Trust_B | DMZ | 匿名认证 |
| 市场 PC2 | Trust_B | DMZ | 匿名认证 |
| 市场 PC2 | Trust_B | Untrust | Portal 认证 |

认证策略的顺序建议:精确用户在前,网段类策略在后;Portal 认证策略要放在匿名认证或不认证策略之前,避免流量提前命中宽泛规则。

## 十一、管理员 Telnet 配置

实验要求管理员 PC 固定为 `172.16.1.10/24`,只允许部门 A 网段通过 Telnet 管理 FW1。

```text
[FW1] telnet server enable

[FW1] aaa
[FW1-aaa] manager-user vtyadmin
[FW1-aaa-manager-user-vtyadmin] password cipher admin@123
[FW1-aaa-manager-user-vtyadmin] service-type telnet
[FW1-aaa-manager-user-vtyadmin] level 15
[FW1-aaa-manager-user-vtyadmin] quit
[FW1-aaa] quit

[FW1] user-interface vty 0 4
[FW1-ui-vty0-4] authentication-mode aaa
[FW1-ui-vty0-4] protocol inbound telnet
[FW1-ui-vty0-4] quit
```

还需要在安全策略中放行 Trust_A 到 Local 的 Telnet 访问。这样终端即使能路由到 FW1,也不会绕过防火墙的管理访问控制。

## 十二、时间对象配置

本实验有两个明显的时间控制点:

- 运维非工作时间访问外网。
- 周末禁止非运维访问 DMZ。

```text
[FW1] time-range workday_offtime
[FW1-time-range-workday_offtime] period-range 00:00:00 to 08:00:00 working-day
[FW1-time-range-workday_offtime] period-range 18:00:00 to 23:59:59 working-day
[FW1-time-range-workday_offtime] quit

[FW1] time-range weekend_all_day
[FW1-time-range-weekend_all_day] period-range 00:00:00 to 23:59:59 sat
[FW1-time-range-weekend_all_day] period-range 00:00:00 to 23:59:59 sun
[FW1-time-range-weekend_all_day] quit
```

如果 `sat`、`sun` 不识别,在设备中输入 `period-range 00:00:00 to 23:59:59 ?` 查看当前版本支持的星期写法。

## 十三、安全策略设计

安全策略的核心原则是:基础服务先放行,周末拒绝提前拦截,部门业务按最小权限放行,最后依赖默认拒绝兜底。

建议策略顺序如下:

| 顺序 | 策略名称 | 源 | 目的 | 服务/时间 | 动作 |
| --- | --- | --- | --- | --- | --- |
| 1 | `allow_admin_telnet` | 管理员/Trust_A | Local | Telnet | permit |
| 2 | `allow_dhcp_to_local` | Trust_A、Trust_B | Local | DHCP | permit |
| 3 | `allow_dns_to_dmz` | Trust_A、Trust_B | DNS Server | DNS | permit |
| 4 | `deny_weekend_nonops_dmz` | 非运维用户 | DMZ | 周末全天 | deny |
| 5 | `allow_devops_dmz` | 运维 | DMZ_Server | any | permit |
| 6 | `allow_manager_fd_dmz_web` | 高管、财务 | OA/Web | HTTP/HTTPS | permit |
| 7 | `allow_devops_untrust_offtime` | 运维 | Untrust | 非工作时间 | permit |
| 8 | `allow_manager_untrust` | 高管 | Untrust | any | permit |
| 9 | `allow_td_web` | 技术 | Web Server | HTTP/HTTPS | permit |
| 10 | `allow_td_md_oa` | 技术、市场 | OA Server | HTTP/HTTPS | permit |
| 11 | `allow_md_untrust` | 市场 | Untrust | HTTP/HTTPS | permit |
| 12 | 默认规则 | any | any | any | deny |

### 安全策略 CLI 示例

不同 USG 版本对 `source-user`、本地用户组路径和服务对象的语法有差异。下面给出的是策略结构示例,实际实验中可以在 Web 页面按同样逻辑创建。`source-user` 的目的,是让 DHCP 动态地址用户也能按认证身份授权,而不是按整个网段粗放放行。

```text
[FW1] security-policy

[FW1-policy-security] rule name allow_admin_telnet
[FW1-policy-security-rule-allow_admin_telnet] source-zone Trust_A
[FW1-policy-security-rule-allow_admin_telnet] destination-zone local
[FW1-policy-security-rule-allow_admin_telnet] source-address 172.16.1.10 mask 255.255.255.255
[FW1-policy-security-rule-allow_admin_telnet] service telnet
[FW1-policy-security-rule-allow_admin_telnet] action permit
[FW1-policy-security-rule-allow_admin_telnet] quit

[FW1-policy-security] rule name allow_dns_to_dmz
[FW1-policy-security-rule-allow_dns_to_dmz] source-zone Trust_A Trust_B
[FW1-policy-security-rule-allow_dns_to_dmz] destination-zone dmz
[FW1-policy-security-rule-allow_dns_to_dmz] destination-address address-set DNS_Server
[FW1-policy-security-rule-allow_dns_to_dmz] service dns
[FW1-policy-security-rule-allow_dns_to_dmz] action permit
[FW1-policy-security-rule-allow_dns_to_dmz] quit

[FW1-policy-security] rule name deny_weekend_nonops_dmz
[FW1-policy-security-rule-deny_weekend_nonops_dmz] source-zone Trust_A Trust_B
[FW1-policy-security-rule-deny_weekend_nonops_dmz] destination-zone dmz
[FW1-policy-security-rule-deny_weekend_nonops_dmz] time-range weekend_all_day
[FW1-policy-security-rule-deny_weekend_nonops_dmz] action deny
[FW1-policy-security-rule-deny_weekend_nonops_dmz] quit

[FW1-policy-security] rule name allow_devops_dmz
[FW1-policy-security-rule-allow_devops_dmz] source-zone Trust_A
[FW1-policy-security-rule-allow_devops_dmz] destination-zone dmz
[FW1-policy-security-rule-allow_devops_dmz] source-user user-group /openlab/A/DevOps
[FW1-policy-security-rule-allow_devops_dmz] destination-address address-set DMZ_Server
[FW1-policy-security-rule-allow_devops_dmz] action permit
[FW1-policy-security-rule-allow_devops_dmz] quit

[FW1-policy-security] rule name allow_manager_fd_dmz_web
[FW1-policy-security-rule-allow_manager_fd_dmz_web] source-zone Trust_A
[FW1-policy-security-rule-allow_manager_fd_dmz_web] destination-zone dmz
[FW1-policy-security-rule-allow_manager_fd_dmz_web] source-address address-set Client1_Manager
[FW1-policy-security-rule-allow_manager_fd_dmz_web] source-address address-set Client2_FD
[FW1-policy-security-rule-allow_manager_fd_dmz_web] destination-address address-set OA_Server
[FW1-policy-security-rule-allow_manager_fd_dmz_web] destination-address address-set Web_Server
[FW1-policy-security-rule-allow_manager_fd_dmz_web] service http
[FW1-policy-security-rule-allow_manager_fd_dmz_web] service https
[FW1-policy-security-rule-allow_manager_fd_dmz_web] action permit
[FW1-policy-security-rule-allow_manager_fd_dmz_web] quit

[FW1-policy-security] rule name allow_devops_untrust_offtime
[FW1-policy-security-rule-allow_devops_untrust_offtime] source-zone Trust_A
[FW1-policy-security-rule-allow_devops_untrust_offtime] destination-zone untrust
[FW1-policy-security-rule-allow_devops_untrust_offtime] source-user user-group /openlab/A/DevOps
[FW1-policy-security-rule-allow_devops_untrust_offtime] time-range workday_offtime
[FW1-policy-security-rule-allow_devops_untrust_offtime] action permit
[FW1-policy-security-rule-allow_devops_untrust_offtime] quit

[FW1-policy-security] rule name allow_manager_untrust
[FW1-policy-security-rule-allow_manager_untrust] source-zone Trust_A
[FW1-policy-security-rule-allow_manager_untrust] destination-zone untrust
[FW1-policy-security-rule-allow_manager_untrust] source-address address-set Client1_Manager
[FW1-policy-security-rule-allow_manager_untrust] action permit
[FW1-policy-security-rule-allow_manager_untrust] quit

[FW1-policy-security] rule name allow_td_web
[FW1-policy-security-rule-allow_td_web] source-zone Trust_B
[FW1-policy-security-rule-allow_td_web] destination-zone dmz
[FW1-policy-security-rule-allow_td_web] source-address address-set PC1_TD
[FW1-policy-security-rule-allow_td_web] destination-address address-set Web_Server
[FW1-policy-security-rule-allow_td_web] service http
[FW1-policy-security-rule-allow_td_web] service https
[FW1-policy-security-rule-allow_td_web] action permit
[FW1-policy-security-rule-allow_td_web] quit

[FW1-policy-security] rule name allow_td_md_oa
[FW1-policy-security-rule-allow_td_md_oa] source-zone Trust_B
[FW1-policy-security-rule-allow_td_md_oa] destination-zone dmz
[FW1-policy-security-rule-allow_td_md_oa] source-address address-set PC1_TD
[FW1-policy-security-rule-allow_td_md_oa] source-user user-group /openlab/B/MD
[FW1-policy-security-rule-allow_td_md_oa] destination-address address-set OA_Server
[FW1-policy-security-rule-allow_td_md_oa] service http
[FW1-policy-security-rule-allow_td_md_oa] service https
[FW1-policy-security-rule-allow_td_md_oa] action permit
[FW1-policy-security-rule-allow_td_md_oa] quit

[FW1-policy-security] rule name allow_md_untrust
[FW1-policy-security-rule-allow_md_untrust] source-zone Trust_B
[FW1-policy-security-rule-allow_md_untrust] destination-zone untrust
[FW1-policy-security-rule-allow_md_untrust] source-user user-group /openlab/B/MD
[FW1-policy-security-rule-allow_md_untrust] service http
[FW1-policy-security-rule-allow_md_untrust] service https
[FW1-policy-security-rule-allow_md_untrust] action permit
[FW1-policy-security-rule-allow_md_untrust] quit

[FW1-policy-security] default action deny
[FW1-policy-security] quit
```

这里的 `deny_weekend_nonops_dmz` 示例写得比较宽泛。真实配置时,建议在 Web 页面中按用户组排除运维组,或者把运维放行策略放在周末拒绝策略前面,并确保周末仍可进行运维检修。

## 十四、Web 页面配置路线

用户认证部分更推荐用 Web 页面完成,步骤如下:

1. 登录 FW1 Web 页面,默认账号可使用 `admin / admin@123`。
2. 进入“网络”配置接口和子接口 IP。
3. 进入“网络 > DHCP”创建 `dhcp-a` 和 `dhcp-b` 地址池。
4. 进入“对象 > 地址”创建 DMZ、部门用户、外部服务器地址对象。
5. 进入“用户 > 认证域”创建 `openlab`。
6. 进入“用户 > 用户组”创建 A、B 以及 manager、DevOps、FD、TD、MD 子组。
7. 进入“用户 > 本地用户”创建各部门账号,并设置密码、绑定 IP/MAC、并发登录限制和账号有效期。
8. 进入“策略 > 认证策略”按部门和目的区域配置免认证、匿名认证、Portal 认证。
9. 进入“策略 > 安全策略”按上文顺序创建安全策略。
10. 保存配置并逐项验证。

## 十五、验证矩阵

### 1. DHCP 验证

| 测试对象 | 预期结果 |
| --- | --- |
| Client1 | 获取固定地址 `172.16.1.90/24` |
| Client3 | 获取 `172.16.1.0/24` 地址池中的动态地址 |
| PC2 | 获取 `172.16.2.0/24` 地址池中的动态地址 |
| Client2 | 静态地址 `172.16.1.100/24` 不与 DHCP 冲突 |
| PC1 | 静态地址 `172.16.2.100/24` 不与 DHCP 冲突 |

命令:

```text
[FW1] display ip pool all used
```

### 2. DNS 验证

在终端上访问或解析:

```text
ping www.aliyun.com
ping www.baidu.com
```

预期解析结果:

| 域名 | 解析地址 |
| --- | --- |
| `www.aliyun.com` | 10.0.0.20 |
| `www.baidu.com` | 100.1.1.1 |

### 3. 认证与访问验证

| 测试项 | 源主机 | 目标 | 预期结果 |
| --- | --- | --- | --- |
| 高管访问 DMZ | Client1 | OA/Web | 不弹认证,允许 |
| 高管访问外网 | Client1 | `www.baidu.com` | 不弹认证,允许 |
| 财务访问 DMZ | Client2 | OA/Web | 不弹认证,允许 |
| 财务访问外网 | Client2 | `www.baidu.com` | 拒绝 |
| 运维访问 DMZ | Client3 | OA/Web/DNS | 弹 Portal,认证后允许 |
| 运维非工作时间访问外网 | Client3 | `www.baidu.com` | 弹 Portal,认证后允许 |
| 技术访问 Web | PC1 | `www.aliyun.com` | 匿名认证,允许 |
| 技术访问外网 | PC1 | `www.baidu.com` | 拒绝 |
| 市场访问 OA | PC2 | OA Server | 匿名认证,允许 |
| 市场访问外网 | PC2 | `www.baidu.com` | 弹 Portal,认证后允许 |
| 周末非运维访问 DMZ | Client1/Client2/PC1/PC2 | DMZ | 拒绝 |

### 4. 防火墙侧查看命令

```text
[FW1] display security-policy rule all
[FW1] display firewall session table
[FW1] display user-manage online-user
[FW1] display clock
```

测试时间策略时,可以临时调整防火墙系统时间。每次调整后建议清理旧会话:

```text
[FW1] reset firewall session table
```

## 十六、常见踩坑点

### 1. DHCP 拿不到地址

优先看三件事:

- SW2 到 FW1 是否是 Trunk,是否放行 VLAN 10、VLAN 20。
- FW1 子接口是否配置了 `dhcp select global`。
- 地址池是否配置了正确网关、掩码和 DNS。

### 2. 能 ping 网关,不能访问服务器

这种情况通常是安全区域或策略问题:

- FW1 子接口是否加入了正确区域。
- 源区域和目的区域是否写反。
- DNS、HTTP、HTTPS 服务是否放行。
- 是否命中了周末拒绝策略。

### 3. 域名解析失败

重点检查:

- 终端 DNS 是否为 `10.0.0.30`。
- DNS Server 是否添加了 `www.aliyun.com` 和 `www.baidu.com` 记录。
- Trust 到 DMZ 的 DNS 策略是否放行。

### 4. Portal 不弹认证页面

常见原因:

- 认证策略没有命中,流量被不认证或匿名认证策略提前匹配。
- 安全策略没有允许认证后的访问流量。
- 终端访问的是 IP,但认证策略按域名或对象匹配不一致。
- 浏览器缓存或旧会话影响测试,需要清理会话表。

### 5. 周末策略不生效

重点检查防火墙时间:

```text
[FW1] display clock
```

时间策略依赖 FW1 本机时间。如果设备日期不是周六或周日,周末拒绝策略不会命中。

## 十七、项目总结

这个实验的价值在于把防火墙从“网络边界设备”升级成了“身份感知访问控制设备”。普通安全策略只能判断源 IP、目的 IP、服务和区域;用户认证加入后,防火墙可以进一步知道访问者属于哪个部门、哪个用户组,从而做到更精细的权限控制。

本项目最终完成了:

- 部门 A 与部门 B 的 VLAN 隔离。
- FW1 子接口作为 VLAN 10、VLAN 20 网关。
- FW1 为不同部门下发 DHCP 地址。
- DMZ、Trust_A、Trust_B、Untrust 安全区域划分。
- DNS 域名解析 `www.aliyun.com` 与 `www.baidu.com`。
- 管理员 Telnet 登录限制。
- 高管、财务、运维、技术、市场的差异化认证策略。
- 基于部门、区域、服务、时间的安全策略控制。

这类实验真正要掌握的是配置顺序和策略逻辑:先做网络连通,再做地址对象,再做认证,最后用安全策略收口。只要这条主线清晰,后面遇到 Portal 不弹、域名不通、DHCP 不分配、策略不命中,都能快速定位。