文章目录
前言:
- 防火墙技术是通过有机结合各类用于安全管理与筛选的软件和硬件设备,帮助计算机网络于其内、外网之间构建一道相对隔绝的保护屏障,以保护用户资料与信息安全性的一种技术。
- 防火墙技术的功能主要在于及时发现并处理计算机网络运行时可能存在的安全风险、数据传输等问题,其中处理措施包括隔离与保护,同时可对计算机网络安全当中的各项操作实施记录与检测,以确保计算机网络运行的安全性,保障用户资料与信息的完整性,为用户提供更好、更安全的计算机网络使用体验。
- 而NAT 技术是用来解决当今IP地址资源枯竭的一种技术,同时也是IPv4向IPv6的一种过渡
一、防火墙简介
1.1 华为防火墙工作模式
-
华为防火墙有三种工作模式
① 路由模式
- 当防火墙处于内部网路和外部网络中间时,需要将防火墙的内部网络、外部网络、DMZ三个区域分配不同地址段的时候使用
- 这个时候防火墙首先是台路由器,然后在提供其他的防火墙功能
② 透明模式
- 华为防火墙通过二层和外相连接时候,则防火墙处于透明模式下
③ 混合模式
- 既处于路由接口模式又处于透明模式下,则防火墙是混合模式
- 目前只用于透明模式下的双机热备的特殊应用中。别的环境不用
1.2 华为防火墙安全区域
-
华为防火墙有五种区域
① Local区域:通常定义防火墙本身,优先级为100,防火墙除了转发大的流量外,自己也有收发流量,如控制流量、动态路由协议等,这些报文通常是从Local区域发送的,安全等级最高。
② trust区域:主要用于连接公司内部网络,优先级为85,安全等级较高
③ DMZ:非军事化区域,优先级为50,是介于军事管事区和公共区域之间的一个区域,安全等级中
④ untrust区域:外部区域,优先级为5,安全等级低
⑤ 自定义区域:用户自定义区域,默认最多16个区域,默认没有优先级,用户自定义优先级
-
默认情况下,华为防火墙拒绝任何区域之间的流量,如需放行指定流量,需要管理员设置策略
1.3 华为防火墙的inbound和outbound
-
inbound:数据由等级低的区域流向等级高的区域,如untrust(优先级5)区域流向trust(优先级85)区域
-
outbound:数据由等级高的区域流向等级低的区域,如DMZ(优先级50)区域流向untrust(优先级5)
-
防火墙流量控制是根据优先级来的,规则为:流量从高到低直接放行,从低到高需要设置规则
-
此外,华为防火墙的外网口是不允许ping通的
1.4 华为防火墙安全策略
- 传统的防火墙都是基于5元组:源IP、目标IP、协议号、源端口号、目标端口号
- 新一代的防火墙除了传统的5元组之外,还加入了应用、内容、时间、用户、威胁、位置进行深层次探测
- 默认情况下,华为防火墙的策略有以下特点:
- 任何2个安全区域的优先级不能相同
- 本域内不同接口间的报文不过滤直接转发
- 接口没有加入域之前不能转发包
- 在USG6600系列防火墙上默认是没有安全策略的,也就是说,不管是什么区域之间项目访问,都必须要配置安全策略,除非是同一区域内的报文传递
二、NAT概述
2.1 NAT分类
-
① NAT no-PAT
类似思科的动态转化,多对多,只转换IP地址,不转换端口,不能节约公网IP地址,实际应用场景较少,主要适用于需要上网的用户较少,而公网IP地址相对充裕的场景
-
② NAPT(网络地址端口转换)
类似思科的PAT,NATP即转换报文的源地址,又转换源端口,转换后地址不能是外网接口IP地址,属于多对多或者多对一的转换,可以节省公网IP地址,使用场景较多
-
③ Easy-IP (出接口地址)
因其转换方式非常简单,所以也被称为Easy-IP、和NAPT一样,即转换源IP地址,又转换源端口。区别是出接口地址方式转换后的地址只能是NAT设备外网接口所配置的IP地址,属于多对一转换,可以节约IP地址
-
NAT Server
静态一对一发布,主要用于内部服务器需要对internet提供服务时使用
-
Smart NAT(只能转换)
与源IP地址、源端口和协议类型有关的一种转换,将源IP地址和源端口转换为固定公网IP地址和端口,能解决一些特殊应用在普遍NAT种无法实现的问题
-
三元组NAT
与源地址、源端口和协议类型有关的一种转换,将源IP地址和源端口转换为固定公网IP地址和端口,能解决一些特殊应用在普遍NAT中无法实现的问题,主要应用外部访问局域网的一些P2P应用
三、黑洞路由
3.1 黑洞路由的产生
- 在特定的NAT转换时,可能会产生环路及无效ARP,关于其如何产生,大概就是,在有些NAT的转换方式中,是为了解决内网连接Internet,而映射出了一个公有IP,那么,若此时有人通过internet来访问这个映射出来的公有IP,就会产生这种情况。解决这个问题的办法就是配置黑洞路由(将internet主动访问映射出来的地址流量指定到空接口null0)
3.2 黑洞路由应用场景
3.3 黑洞路由配置命令
-
解决方法:
配置黑洞路由,将internet主动访问映射出来的地址的流量指定到空接口null0中
ip route-static 100.2.2.10 32 NULL 0
四、Server-map表
4.1 Server-map表简介
- 状态话防火墙中会有一张会话表,用来记录的是内网访问外网时的一个连接信息,当外网返回的数据匹配到会话表的记录时,直接放行相关返回流量。
- server-map表不用手动配置,是自动生成的
4.2 Server-map和会话表的区别
-
会话表记录的是连接信息,包括连接状态
-
server-map表记录的不是当前的连接信息,而是通过分析当前连接的报文后得到的信息,该信息用来解决接下来的数据流通过防火墙的问题。可以将Server-map表的作用理解为通过未雨绸缪解决将来的问题
-
如像FTP这种的多端口协议,在从一开始的三次握手,到最后完成数据的传输,其过程中,可能端口会发生改变等问题
server-map正好可以解决这种问题
-
然而在NAT中也需要这个server-map表,就是在有数据流量通过NAT的方式穿越防火墙时,serve-map表会记录其源地址和转换后地址的对应关系,从而使后续流量可以不用查看NAT策略
直接匹配到server-map表,从而实现高效的NAT转换,若用户通过互联网访问转换后的地址时,也可以匹配到server-map表,从而高效的将数据转发到内网真实主机(必须保证安全策略允许通过)
4.3 server-map表的形成
-
server-map表不用手动配置,是自动生成的,在NAT中,不是所有的表都可以生成server-map表的,可见下表:
-
当防火墙上配置某些NAT后,在防火墙上会生成Server-map,默认生成两个Server-map条目,分别是正向条目和反向条目
正向条目:携带端口信息,用来使internet用户访问内网中的服务器时直接通过server-map表来进行目标地址转换
反向条目:不携带端口信息,且目标地址是任意的,用来使服务器可以访问internet
4.4 FTP传输方式
4.4.1 port(主动模式)
- 工作原理: FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,客户端随机开放一个端口(1024以上),发送 PORT命令到FTP服务器,告诉服务器客户端采用主动模式并开放端口;FTP服务器收到PORT主动模式命令和端口号后,通过服务器的20端口和客户端开放的端口连接,发送数据
- 以下为port工作原理图:
4.4.2 PASV (被动模式)
- 工作原理:FTP客户端连接到FTP服务器的21端口,发送用户名和密码登录,登录成功后要list列表或者读取数据时,发送PASV命令到FTP服务器, 服务器在本地随机开放一个端口(1024以上),然后把开放的端口告诉客户端, 客户端再连接到服务器开放的端口进行数据传输
- 以下为PASV工作原理图:
4.4.3 两种模式对比
-
从运行原理来看,主动模式和被动模式不同点如下:
① 传输数据的连接方式
主动模式传送数据时是“服务器”连接到“客户端”的端口
被动模式传送数据是“客户端” 连接到 “服务端” 的端口
② 端口开放
主动模式需要客户端必须开放端口给服务器,很多客户端都是在防火墙内,开放端口给FTP服务器访问比较困难
被动模式只需要服务器端开放端口给客户端连接就可以了
4.5 NAT对报文的处理流程
五、防火墙NAT配置实验
此实验IP地址配置过程省略,各IP地址已表在拓扑图中
5.1 实验拓扑图
5.2 实验需求
- ① ISP为公司分配的公网地址:100.2.2.8/29
- ② 技术部属于trust区域,通过Easy-ip访问internet
- ③ 行政部属于trust区域,通过NAPT访问internet(使用100.2.2.12/29)
- ④ 财务部属于trust区域,通过no-pat访问internet(使用100.2.2.10/29 ~ 100.2.2.11/29)
- ⑤ DMZ区域种的两台服务器配置NAT-Server发布,分别提供FTP服务及Web服务(使用100.2.2.9/29)
- ⑥ 防火墙的g1/0/0属于UNtrust区域
5.3 服务器配置
-
分别在FTP、WEB服务器中配置文件根目录,设置文件在该目录中,便于client登录查询
-
在两个文件夹中随便创建空文件以便后续查看
- 在Client配置服务器地址
将IP地址均分配为100.2.2.9
5.4 路由器R1配置
- 除按照拓扑图配置接口外,只需要配置一条静态路由指向防火墙即可
[R1]ip route-static 100.2.2.8 29 100.1.1.2
5.5 配置FW1防火墙
- ① 登录防火墙密码
Username:admin #华为防火墙默认用户名为admin
Password: #输入初始密码:Admin@123
The password needs to be changed. Change now? [Y/N]: y
Please enter old password: #输入初始密码
Please enter new password: #输出自定义的新密码,例如huawei@123
Please confirm new password: #重新输入新密码
Info: Your password has been changed. Save the change to survive a reboot. ************************************************************************** Copyright (C) 2014-2018 Huawei Technologies Co., Ltd. ** All rights reserved. ** Without the owner's prior written consent, ** no decompiling or reverse-engineering shall be allowed. **************************************************************************
<USG6000V1>
-
② 划分接口所属区域:
将内网区接口加入trust区域
将外网接口加入到untrust区域
将两台服务器加入到dmz区域
#将连接PC的接口加入到trust区域
[USG6000V1]firewall zone trust
[USG6000V1-zone-trust]add in g1/0/4
[USG6000V1-zone-trust]add in g1/0/3
[USG6000V1-zone-trust]add in g1/0/2
[USG6000V1-zone-trust]q
#将连接服务器的接口加入dmz区域
[USG6000V1]firewall zone dmz
[USG6000V1-zone-dmz]add in g1/0/1
[USG6000V1-zone-dmz]q
#将连接外网的接口加入到untrust区域
[USG6000V1]firewall zone untrust
[USG6000V1-zone-untrust]add in g1/0/0
- ③ 配置到达Client的静态路由
[USG6000V1]ip route-static 0.0.0.0 0.0.0.0 100.1.1.1
5.5.1 配置技术部防火墙NAT规则
- ① 配置安全策略
注:easy-ip类型的NAT不会产生server-map
#定义安全策略
[USG6000V1]security-policy
#新建安全策略(easy)
[USG6000V1-policy-security]rule name easy
#源区域--trust
[USG6000V1-policy-security-rule-easy]source-zone trust
#目的区域--untrust
[USG6000V1-policy-security-rule-easy]destination-zone untrust
#动作---允许放行
[USG6000V1-policy-security-rule-easy]action permit
[USG6000V1-policy-security-rule-easy]q
[USG6000V1-policy-security]q
- ② 配置NAT策略
#定义NAT策略
[USG6000V1]nat-policy
#定义NAT策略名(easypolicy)
[USG6000V1-policy-nat]rule name easypolicy
#源地址为192.168.3.0 24网段
[USG6000V1-policy-nat-rule-easypolicy]source-address 192.168.3.0 24
#定义源区域--trust
[USG6000V1-policy-nat-rule-easypolicy]source-zone trust
#定义目标区域--untrust
[USG6000V1-policy-nat-rule-easypolicy]destination-zone untrust
#开启NAT转换,类型为easy-ip
[USG6000V1-policy-nat-rule-easypolicy]action source-nat easy-ip
[USG6000V1-policy-nat-rule-easypolicy]q
[USG6000V1-policy-nat]q
5.5.2 配置行政部防火墙NAT规则
- 配置NAT地址组
#定义NAT组(地址池)组名为natp
[USG6000V1]nat address-group napt
#定义组中的ip地址(可配置范围,例如:100.2.2.12 100.2.2.20)
[USG6000V1-address-group-napt]section 0 100.2.2.12
#模式为pat(pat:端口、地址转换都可以做)
[USG6000V1-address-group-napt]mode pat
[USG6000V1-address-group-napt]q
- 配置NAT策略
#定义NAT策略
[USG6000V1]nat-policy
#定义NAT策略名(napt)
[USG6000V1-policy-nat]rule name napt
#定义需要转换的源地址
[USG6000V1-policy-nat-rule-napt]source-address 192.168.2.0 24
#定义源区域--trust
[USG6000V1-policy-nat-rule-napt]source-zone trust
#定义目标区域--untrust
[USG6000V1-policy-nat-rule-napt]destination-zone untrust
#关联nat地址组(池)napt
[USG6000V1-policy-nat-rule-napt]action source-nat address-group napt
-
配置黑洞路由
针对NAPT类型需要配置黑洞路由,地址为nat组中定义的(公网)地址组的IP地址
[USG6000V1] ip route-static 100.2.2.12 32 NULL 0
5.5.3 配置财务部的防火墙NAT规则
- 配置NAT地址组
#定义nat地址组(池),组名为natnopat
[USG6000V1]nat address-group natnopat
#定义地址池中的IP段
[USG6000V1-address-group-natnopat]section 0 100.2.2.10 100.2.2.11
#配置模式为本地no-pat模式(会形成Server-map)
[USG6000V1-address-group-natnopat]mode no-pat local
[USG6000V1-address-group-natnopat]q
- 配置NAT策略
#定义NAT策略
[USG6000V1]nat-policy
#定义NAT策略名(nopat)
[USG6000V1-policy-nat]rule name nopat
#定义需要转换的源地址
[USG6000V1-policy-nat-rule-nopat]source-address 192.168.1.0 24
#定义源区域--trust
[USG6000V1-policy-nat-rule-nopat]source-zone trust
#定义目标区域--untrust
[USG6000V1-policy-nat-rule-nopat]destination-zone untrust
#关联nat地址组(池)natnopat
[USG6000V1-policy-nat-rule-nopat]action source-nat address-group natnopat
[USG6000V1-policy-nat-rule-nopat]q
[USG6000V1-policy-nat]q
-
配置黑洞路由
针对no pat类型需要配置黑洞路由,地址为natnopat组中定义的(公网)地址组的成员
[USG6000V1]ip route-static 100.2.2.10 32 NULL 0
[USG6000V1]ip route-static 100.2.2.11 32 NULL 0
5.5.4 配置DMZ区域防火墙NAT规则
- 配置安全策略
#定义安全策略
[USG6000V1]security-policy
#定义安全策略名为 todmz
[USG6000V1-policy-security]rule name todmz
#源区域--untrust
[USG6000V1-policy-security-rule-todmz]source-zone untrust
#目标区域--dmz
[USG6000V1-policy-security-rule-todmz]destination-zone dmz
#定义目标地址段为 192.168.0.0 24
[USG6000V1-policy-security-rule-todmz]destination-address 192.168.0.0 24
#定义ftp服务、http服务
[USG6000V1-policy-security-rule-todmz]service ftp
[USG6000V1-policy-security-rule-todmz]service http
#允许通行
[USG6000V1-policy-security-rule-todmz]action permit
- 配置NAT服务
#(全局适用)端口映射,使用ftp协议访问100.2.2.9 21端口时,访问的是内网192.168.0.2 21 端口的设备
[USG6000V1]nat server ftp protocol tcp global 100.2.2.9 21 inside 192.168.0.2 21
(全局适用)端口映射,使用http协议访问100.2.2.9 80端口时,访问的是内网192.168.0.3 80 端口的设备
[USG6000V1]nat server http protocol tcp global 100.2.2.9 80 inside 192.168.0.3 80
5.6 验证
- ① 查看server-map表和会话表
#查看会话表
[USG6000V1]dis firewall session table
2020-02-25 08:30:08.800
Current Total Sessions : 4
ftp VPN: public --> public 200.1.1.2:2058 +-> 100.2.2.9:21[192.168.0.2:21]
ftp VPN: public --> public 200.1.1.2:2060 +-> 100.2.2.9:21[192.168.0.2:21]
ftp VPN: public --> public 200.1.1.2:2056 +-> 100.2.2.9:21[192.168.0.2:21]
ftp VPN: public --> public 200.1.1.2:2053 +-> 100.2.2.9:21[192.168.0.2:21]
#查看server-map表
[USG6000V1]dis firewall server-map
2020-02-25 10:36:06.470
Current Total Server-map : 4
Type: Nat Server, ANY -> 100.2.2.9:80[192.168.0.3:80], Zone:---, protocol:tc
p
Vpn: public -> public
Type: Nat Server, ANY -> 100.2.2.9:21[192.168.0.2:21], Zone:---, protocol:tc
p
Vpn: public -> public
Type: Nat Server Reverse, 192.168.0.2[100.2.2.9] -> ANY, Zone:---, protocol:
tcp
Vpn: public -> public, counter: 1
Type: Nat Server Reverse, 192.168.0.3[100.2.2.9] -> ANY, Zone:---, protocol:
tcp
Vpn: public -> public, counter: 1
注:由于老化时间,有可能会导致会话表清空
-
② 分别在技术部、行政部、财务部 ping client服务器
-
技术部 ping client服务器
-
行政部 ping client服务器
-
财务部 ping client 服务器
-
③ 在client 中访问两台服务器