Cyber_Security_Notes/B. 第二阶段/拓扑练习/0902_NAPT.md
2024-09-02 17:19:19 +08:00

444 lines
16 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# NAPT
![image-20240902111523228](https://picgo-noriu.oss-cn-beijing.aliyuncs.com/Images/image-20240902111523228.png)
### 一、IP & Routing
- **PC、Client、Server**
- **AR1**
```
[AR1]int g0/0/0
[AR1-GigabitEthernet0/0/0]ip add 192.168.1.254 24
[AR1-GigabitEthernet0/0/0]int g0/0/1
[AR1-GigabitEthernet0/0/1]ip add 100.1.1.1 29
[AR1-GigabitEthernet0/0/1]quit
[AR1]ip route-static 0.0.0.0 0 100.1.1.2
```
- **IPX-dx**
```
[ISP-dx]int g0/0/0
[ISP-dx-GigabitEthernet0/0/0]ip add 100.1.1.2 29
[ISP-dx-GigabitEthernet0/0/0]int g0/0/1
[ISP-dx-GigabitEthernet0/0/1]ip add 200.1.1.254 24
```
### 二、NAPT单一公网地址
#### 1、配置
- **AR1**
```
[AR1]acl 2000
[AR1-acl-basic-2000]rule 10 permit source 192.168.1.0 0.0.0.255
[AR1-acl-basic-2000]quit
[AR1]nat address-group 1 100.1.1.3 100.1.1.3 //单一公网地址
[AR1]int g0/0/1
[AR1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1
```
*解析:*
> 见 `0902_动态NAT.md`
#### 2、测试
- **PC PING Server**
```
PC>ping 200.1.1.1
Ping 200.1.1.1: 32 data bytes, Press Ctrl_C to break
From 200.1.1.1: bytes=32 seq=1 ttl=253 time=63 ms
From 200.1.1.1: bytes=32 seq=2 ttl=253 time=78 ms
From 200.1.1.1: bytes=32 seq=3 ttl=253 time=62 ms
From 200.1.1.1: bytes=32 seq=4 ttl=253 time=47 ms
From 200.1.1.1: bytes=32 seq=5 ttl=253 time=63 ms
--- 200.1.1.1 ping statistics ---
5 packet(s) transmitted
5 packet(s) received
0.00% packet loss
round-trip min/avg/max = 47/62/78 ms
```
- **Client** *【success】*
![image-20240902113419644](https://picgo-noriu.oss-cn-beijing.aliyuncs.com/Images/image-20240902113419644.png)
> 多访问几次HTTP服务
- **AR1**
> [AR1]dis nat session all //显示NAT会话表
```
<AR1>dis nat session all
NAT Session Table Information:
Protocol : TCP(6)
SrcAddr Port Vpn : 192.168.1.3 520
DestAddr Port Vpn : 200.1.1.1 20480
NAT-Info
New SrcAddr : 100.1.1.3
New SrcPort : 10241
New DestAddr : ----
New DestPort : ----
Protocol : TCP(6)
SrcAddr Port Vpn : 192.168.1.3 1032
DestAddr Port Vpn : 200.1.1.1 20480
NAT-Info
New SrcAddr : 100.1.1.3
New SrcPort : 10243
New DestAddr : ----
New DestPort : ----
Protocol : TCP(6)
SrcAddr Port Vpn : 192.168.1.3 776
DestAddr Port Vpn : 200.1.1.1 20480
NAT-Info
```
***解析: (以第一块信息为例)***
- NAT会话表的信息提供了关于当前活跃的NAT会话的详细信息。以下是输出内容的解释
- **Protocol**: 传输控制协议TCP其协议号为6。
- **SrcAddr Port Vpn**: 源地址和源端口号以及VPN实例。在这里源地址是192.168.1.3源端口号是520。
- **DestAddr Port Vpn**: 目的地址和目的端口号以及VPN实例。这里的目的地址是200.1.1.1目的端口号是20480。
**NAT-Info** 部分显示了NAT转换后的信息
- **New SrcAddr**: 转换后的源地址这里是100.1.1.3这是地址组1中配置的公网IP地址。
- **New SrcPort**: 转换后的源端口号这里是10241。这表明源端口号也发生了转换这在NAT过程中是常见的称为端口映射Port Mapping或端口转发Port Forwarding
- **New DestAddr** 和 **New DestPort**: 目的地址和目的端口号在NAT转换过程中通常保持不变因此这里显示为"----"。
> 这意味着来自192.168.1.3的源地址和端口号520的数据包在经过NAT转换后会使用新的源地址100.1.1.3和新的端口号10241去访问目的地址200.1.1.1的端口号20480。这种转换允许内部网络中的主机通过公网IP地址访问外部网络。
>
### 三、NAPT复数公网地址
#### 1、配置
- **AR1**
> 删除之前的配置信息
```
[AR1]int g0/0/1
[AR1-GigabitEthernet0/0/1]undo nat outbound 2000 address-group 1
[AR1-GigabitEthernet0/0/1]quit
[AR1]undo acl 2000
[AR1]undo nat address-group 1
```
- **AR1**
```
[AR1]acl 2000
[AR1-acl-basic-2000]rule 10 permit source 192.168.1.0 0.0.0.255
[AR1-acl-basic-2000]quit
[AR1]nat address-group 1 100.1.1.3 100.1.1.5 //复数公网地址
[AR1]int g0/0/1
[AR1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1
```
*解析:*
- `[AR1]nat address-group 1 100.1.1.3 100.1.1.5`创建或修改编号为1的NAT地址组将包含从100.1.1.3到100.1.1.5的IP地址范围
#### 2、测试
- **AR1**
```
<AR1>dis nat session all
NAT Session Table Information:
Protocol : TCP(6)
SrcAddr Port Vpn : 192.168.1.5 264
DestAddr Port Vpn : 200.1.1.1 20480
NAT-Info
New SrcAddr : 100.1.1.3
New SrcPort : 10240
New DestAddr : ----
New DestPort : ----
Protocol : TCP(6)
SrcAddr Port Vpn : 192.168.1.4 264
DestAddr Port Vpn : 200.1.1.1 20480
NAT-Info
New SrcAddr : 100.1.1.5
New SrcPort : 10250
New DestAddr : ----
New DestPort : ----
Protocol : TCP(6)
SrcAddr Port Vpn : 192.168.1.3 2568
DestAddr Port Vpn : 200.1.1.1 20480
NAT-Info
New SrcAddr : 100.1.1.4
New SrcPort : 10244
New DestAddr : ----
New DestPort : ----
```
### 四、Easy IP网段内无冗余IP
![image-20240902141522705](https://picgo-noriu.oss-cn-beijing.aliyuncs.com/Images/image-20240902141522705.png)
| 网段 | 网络地址 | 可用主机地址 | 广播地址 | 子网掩码 |
| ------------- | --------- | ---------------------- | --------- | --------------- |
| 100.1.1.0 /30 | 100.1.1.0 | 100.1.1.1 && 100.1.1.2 | 100.1.1.3 | 255.255.255.252 |
#### 1、配置
- **重启AR1ISP-dx**
- **AR1**
```
// IP
[AR1]int g0/0/0
[AR1-GigabitEthernet0/0/0]ip add 192.168.1.254 24
[AR1-GigabitEthernet0/0/0]int g0/0/1
[AR1-GigabitEthernet0/0/1]ip add 100.1.1.1 30
[AR1-GigabitEthernet0/0/1]quit
// Routing
[AR1]ip route-static 0.0.0.0 0 100.1.1.2
// ACL
[AR1]acl 2000
[AR1-acl-basic-2000]rule 10 permit source 192.168.1.0 0.0.0.255
[AR1-acl-basic-2000]quit
// NAPT
[AR1]int g0/0/1
[AR1-GigabitEthernet0/0/1]nat outbound 2000
```
- **IPX-dx**
```
[ISP-dx]int g0/0/0
[ISP-dx-GigabitEthernet0/0/0]ip add 100.1.1.2 30
[ISP-dx-GigabitEthernet0/0/0]int g0/0/1
[ISP-dx-GigabitEthernet0/0/1]ip add 200.1.1.254 24
```
#### 2、测试
- **AR1**
```
<AR1>dis nat session all
```
### 五、NAT-ServerNAT服务器映射
![image-20240902151900787](https://picgo-noriu.oss-cn-beijing.aliyuncs.com/Images/image-20240902151900787.png)
![image-20240902151333560](https://picgo-noriu.oss-cn-beijing.aliyuncs.com/Images/image-20240902151333560.png)
#### 1、配置
- **通配**
- **重启AR1ISP-dx**
- **AR1**
```
// IP
[AR1]int g0/0/0
[AR1-GigabitEthernet0/0/0]ip add 192.168.1.254 24
[AR1-GigabitEthernet0/0/0]int g0/0/1
[AR1-GigabitEthernet0/0/1]ip add 100.1.1.1 29
[AR1-GigabitEthernet0/0/1]quit
// Routing
[AR1]ip route-static 0.0.0.0 0 100.1.1.2
// ACL
[AR1]acl 2000
[AR1-acl-basic-2000]rule 10 permit source 192.168.1.0 0.0.0.255
[AR1-acl-basic-2000]quit
// NATP
[AR1]nat address-group 1 100.1.1.3 100.1.1.5
[AR1]int g0/0/1
[AR1-GigabitEthernet0/0/1]nat outbound 2000 address-group 1
```
- **ISP-dx**
```
[ISP-dx]int g0/0/0
[ISP-dx-GigabitEthernet0/0/0]ip add 100.1.1.2 29
[ISP-dx-GigabitEthernet0/0/0]int g0/0/1
[ISP-dx-GigabitEthernet0/0/1]ip add 200.1.1.254 24
```
- **NAT-Server**
- **AR1**
```
[AR1]int g0/0/1
[AR1-GigabitEthernet0/0/1]nat server protocol tcp global 100.1.1.6 80 inside 192.168.1.50 80
```
*解析:*
- `nat server`这是开始配置NAT服务器映射的命令。
- `protocol tcp`指定映射的协议类型为TCP传输控制协议这是用于大多数网络服务的协议如HTTP、HTTPS、FTP等。
- `global 100.1.1.6 80`指定映射到公网的IP地址和端口号。这里公网IP地址是100.1.1.6端口号是80。这意味着从外部网络访问100.1.1.6的TCP端口80时请求将被转发到内部网络。
- `inside 192.168.1.50 80`指定内部网络的IP地址和端口号。这里内部服务器的IP地址是192.168.1.50端口号也是80。这意味着内部服务器正在使用TCP端口80提供服务。
> 这条命令配置了一个NAT服务器映射它将外部网络对公网IP地址100.1.1.6的TCP端口80的访问请求映射到内部网络中IP地址为192.168.1.50的服务器的TCP端口80。这样外部网络用户就可以通过访问100.1.1.6:80来访问位于内部网络的服务器192.168.1.50:80上的服务。这种配置通常用于将内部的服务器如Web服务器暴露给外部网络同时隐藏内部网络的拓扑结构。
#### 2、测试
- **Client4 访问 内网ServerHTTP**
![image-20240902154749488](https://picgo-noriu.oss-cn-beijing.aliyuncs.com/Images/image-20240902154749488.png)
- **Client4 PING 内网Server2**
![image-20240902162424380](https://picgo-noriu.oss-cn-beijing.aliyuncs.com/Images/image-20240902162424380.png)
**3、拓展 - 映射ICMP协议**
- **AR1**
```
[AR1]int g0/0/1
[AR1-GigabitEthernet0/0/1]nat server protocol icmp global 100.1.1.6 inside 192.168.1.50
```
### 六、TCP端口的NAT映射
![image-20240902163025720](https://picgo-noriu.oss-cn-beijing.aliyuncs.com/Images/image-20240902163025720.png)
#### 1、配置
- **在 `五、NAT-ServerNAT服务器映射` 的环境下**
- **AR1**
```
[AR1]int g0/0/1
[AR1-GigabitEthernet0/0/1]nat server protocol tcp global 100.1.1.6 6969 inside 192.168.1.100 80
[AR1-GigabitEthernet0/0/1]nat server protocol tcp global 100.1.1.6 21 inside 192.168.1.100 21
```
*解析:*
1. `[AR1-GigabitEthernet0/0/1]nat server protocol tcp global 100.1.1.6 6969 inside 192.168.1.100 80`
- `nat server`表示这是一条NAT服务器配置命令。
- `protocol tcp`指定要转换的协议类型为TCP。
- `global 100.1.1.6 6969`指定全局地址和端口号。这里的全局地址是100.1.1.6端口号是6969。全局地址是公网地址用于在互联网上标识这台设备。
- `inside 192.168.1.100 80`指定内部地址和端口号。这里的内部地址是192.168.1.100端口号是80。内部地址通常是局域网地址不需要在互联网上公开。
> 这条命令的作用是将内部网络中的`192.168.1.100`主机的80端口映射到公网地址`100.1.1.6`的6969端口。这样外部网络中的用户可以通过访问`100.1.1.6:6969`来访问内部网络的`192.168.1.100:80`服务。
2. `[AR1-GigabitEthernet0/0/1]nat server protocol tcp global 100.1.1.6 21 inside 192.168.1.100 21`
- 这条命令与上一条命令类似也是配置NAT服务器。
- `global 100.1.1.6 21`这次将100.1.1.6的21端口映射到内部网络。
- `inside 192.168.1.100 21`内部网络的192.168.1.100主机的21端口。
> 这条命令的作用是将内部网络中的`192.168.1.100`主机的21端口映射到公网地址`100.1.1.6`的21端口。这样外部网络中的用户可以通过访问`100.1.1.6:21`来访问内部网络的`192.168.1.100:21`服务通常这个端口用于FTP服务。
> 总结这两条命令都是在路由器上配置了TCP端口的NAT映射使得内部网络的服务可以对外提供服务同时隐藏了内部网络的真实地址。
#### 2、测试
- **Client4 访问 内网Server3HTTP**
![image-20240902164008738](https://picgo-noriu.oss-cn-beijing.aliyuncs.com/Images/image-20240902164008738.png)
- **Client4 访问 内网Server3FTP**
![image-20240902164458178](https://picgo-noriu.oss-cn-beijing.aliyuncs.com/Images/image-20240902164458178.png)
### 七、ALG应用层网关
#### 1、配置
- **AR1**
```
[AR1]nat alg ftp enable
[AR1]nat alg all enable
```
*解析:*
1. `[AR1]nat alg ftp enable`
- 这条命令启用了FTP协议的ALG功能。
- `nat alg ftp`指定要配置的是FTP协议的ALG。
- `enable`启用FTP协议的ALG功能。
> FTP协议的ALG特别重要因为FTP在数据传输时会使用动态端口。当FTP客户端发起一个连接时它会先通过21端口建立控制连接然后在传输数据时FTP服务器会告诉客户端使用哪个端口来建立数据连接。由于这个数据连接端口是动态分配的如果防火墙没有正确配置它可能会阻止数据传输。启用FTP ALG后路由器能够理解FTP协议自动为数据连接打开必要的端口从而允许FTP数据传输穿越NAT。
2. `[AR1]nat alg all enable`
- 这条命令启用了所有支持的应用层网关ALG功能。
- `nat alg all`指定要配置的是所有支持的应用层协议的ALG。
- `enable`启用所有支持的ALG功能。
> 当执行这条命令时路由器将为所有支持的应用层协议启用ALG功能。这包括但不限于FTP、SIP、H.323等协议。启用所有ALG功能可以确保各种应用层协议都能在NAT环境下正常工作但这也可能带来额外的性能开销因为路由器需要解析和监控更多的协议数据。
> 需要注意的是虽然ALG可以提高网络应用的兼容性和可用性但它们也可能引入安全风险因为ALG需要解析应用层的数据。如果ALG的实现不完善攻击者可能会利用这些缺陷来绕过安全策略或发动攻击。因此在启用ALG之前应仔细考虑网络的安全需求和可能的风险。
#### 2、ALG 的工作原理
1. **协议识别**ALG 能够识别特定的应用层协议,如 FTP、SIP、H.323 等。
2. **会话监控**ALG 监控应用层协议的会话,理解协议的动态行为,如端口映射和连接请求。
3. **动态端口映射**:对于需要动态打开端口的协议(如 FTPALG 可以动态地在防火墙上打开端口,允许数据传输。
4. **协议解析**ALG 解析协议数据,以便能够理解协议内容,并根据安全策略做出决策。
5. **状态维护**ALG 维护应用层协议的状态信息,确保只有合法的会话被允许通过。
#### 3、ALG 的优点
- **增强安全性**ALG 可以针对特定应用层协议提供更精细的安全控制。
- **支持复杂协议**对于一些复杂的应用层协议ALG 可以帮助它们正确地穿越防火墙。
- **减少配置复杂性**通过自动处理协议的动态端口需求ALG 减少了网络管理员手动配置防火墙的复杂性。
#### 4、ALG 的缺点
- **性能影响**ALG 需要解析应用层的数据,这可能会增加处理延迟,对网络性能产生影响。
- **安全漏洞**:如果 ALG 的实现存在缺陷,可能会引入安全漏洞。
- **协议依赖性**ALG 通常需要针对每种协议进行定制,这可能导致维护困难,尤其是在面对大量不同协议的情况下。
#### 5、常见 ALG 应用场景
- **FTP**ALG 可以帮助 FTP 协议穿越防火墙,因为 FTP 协议在传输数据时需要打开额外的端口。
- **VoIPSIP、H.323**ALG 可以帮助 VoIP 协议穿越防火墙,确保语音和视频通话的顺利进行。
- **远程桌面RDP**ALG 可以帮助远程桌面协议穿越防火墙,允许远程访问。
#### 6、结论
> ALG 是网络防火墙技术的一个重要补充它使得防火墙能够更好地支持特定的应用层协议。然而随着网络技术的发展ALG 的使用也在逐渐减少,部分原因是许多现代应用协议已经设计得更加防火墙友好,或者通过其他技术(如 VPN来穿越防火墙。此外ALG 可能会引入新的安全风险,因此它们的使用需要谨慎评估。