HCNA安全-防火墙之NAT技术安全
NAT技术主要应用是实现大量的私网地址对少许公网地址的转换,保障通讯在基础上节约IP地址资源服务器
私网地址不能再公网中路由,不然将致使通讯混乱网络
知识延伸session
ipv4的地址分类:app
为了便于对IP地址进行管理, 根据IPv4地址的第一个字节,IPv4地址能够分为如下五类。tcp
分类ide |
IP地址范围测试 |
公网IP范围ui |
私网IP范围url |
特殊地址 |
A |
0.0.0.0 – 127.255.255.255 |
1.0.0.0~9.255.255.255 11.0.0.0~126.255.255.255 |
10.0.0.0~10.255.255.255 |
0.0.0.0只能作源地址127.X.X.X是保留地址,用作环回测试 |
B |
128.0.0.0-191.255.255.255 |
128.0.0.0~172.15.255.255 172.32.0.0~191.255.255.255 |
172.16.0.0~172.31.255.255 |
169.254.x.x,本地保留地址 |
C |
192.0.0.0-223.255.255.255 |
192.0.0.0~192.168.255.255 192.169.0.0~223.255.255.255 |
192.168.0.0~192.168.255.255 |
|
D |
224.0.0.0-239.255.255.255 |
组播地址 |
||
E |
240.0.0.0-255.255.255.255 |
保留 |
保留 |
255.255.255.255是广播地址 |
经过对IP报文头中的源地址或者目的地址进行转换,可使大量的私网IP地址经过共享少许的公网IP地址来访问公网
源NAT:地址池方式、出接口地址方式(Easy ip)
服务器映射:静态NAT(NAT server)、目的NAT
NAT地址池是一些连续的IP地址集合,当来自私网的报文经过地址转换到公网IP时,将会选择地址池中的某个地址做为转换后的地址
配置命令:
[FW]nat address-groupisp1 //定义地址池名称
[FW-address-group-isp1]section1.1.1.1 1.1.1.100 //定义起始公网IP地址范围
[FW-address-group-isp1]modepat //配置NAT模式
Untrust为运营商,trust为企业内网,如今企业内网用户须要经过防火墙访问互联网
配置步骤:
配置防火墙各个接口的IP地址
[FW]int g1/0/0
[FW-GigabitEthernet1/0/0]ip add 10.1.11.254 24
[FW]int g1/0/2
[FW-GigabitEthernet1/0/2]ip add 10.1.12.254 24
配置企业边界路由器接口地址
[r2]int g0/0/0
[r2-GigabitEthernet0/0/0]ip add 10.1.11.2 24
[r2]int g0/0/1
[r2-GigabitEthernet0/0/1]ip add 10.1.14.254 24
配置运营商边界接口地址
[r3]int g0/0/2
[r3-GigabitEthernet0/0/2]ip add 10.1.12.3 24
[r3]int g0/0/0
[r3-GigabitEthernet0/0/0]ip add 100.100.100.3 24
防火墙接口加入安全区域
[FW]firewall zone untrust
[FW-zone-untrust]add interface g1/0/2
[FW]firewall zone trust
[FW-zone-trust]add interface g1/0/0
防火墙配置静态路由
[FW]ip route-static 0.0.0.0 0.0.0.0 10.1.12.3 //去往运营商
[FW]ip route-static 10.1.14.0 255.255.255.0 10.1.11.2 //去往内网
企业边界路由器配置路由
[r2]ip route-static 0.0.0.0 0.0.0.0 10.1.11.254
配置NAT地址池
[FW]nat address-group isp1
[FW-address-group-isp1]section 10.1.12.10 10.1.12.20
[FW-address-group-isp1]mode pat //当配置no-pat时会才会产生server-map
配置NAT策略
[FW]nat-policy
[FW-policy-nat]rule name permit_trust_untrust_nat
[FW-policy-nat-rule-permit_trust_untrust_nat]source-zonetrust
[FW-policy-nat-rule-permit_trust_untrust_nat]destination-zoneuntrust
[FW-policy-nat-rule-permit_trust_untrust_nat]actionnat address-group isp1
配置安全策略
[FW]security-policy
[FW-policy-security]rule namepermit_trust_untrust_icmp
[FW-policy-security-rule-permit_trust_untrust_icmp]source-zonetrust
[FW-policy-security-rule-permit_trust_untrust_icmp]destination-zoneuntrust
[FW-policy-security-rule-permit_trust_untrust_icmp]serviceicmp
[FW-policy-security-rule-permit_trust_untrust_icmp]actionpermit
测试
观察防火墙session表
[FW]dis firewall session table verbose
Current TotalSessions : 1
icmp ×××: public --> public ID: c487fe5eca997d0543858c173b5
Zone: trust--> untrust TTL: 00:00:20 Left: 00:00:14
Interface:GigabitEthernet1/0/2 NextHop:10.1.12.3 MAC: 00e0-fc87-780c
<--packets:5 bytes: 300 --> packets: 5 bytes: 300
10.1.14.1:256[10.1.12.10:2053] -->100.100.100.100:2048 PolicyName: permit_trust_untrust_icmp
注意:在防火墙里面EasyIP是根据路由表选择destination区域的出接口进行转换的,不是直接在接口下配置easyip
其余基础配置略过
[FW]nat-policy
[FW-policy-nat]rule name permit_trust_untrust_nat
[FW-policy-nat-rule-permit_trust_untrust_nat]source-zonetrust
[FW-policy-nat-rule-permit_trust_untrust_nat]destination-zoneuntrust
[FW-policy-nat-rule-permit_trust_untrust_nat]actionnat easy-ip
测试
[FW]dis firewall session table
Current TotalSessions : 1
icmp ×××: public --> public 10.1.14.1:256[10.1.12.254:2048]--> 100.100.100.100:2048
[FW]dis firewall session table v
[FW]dis firewall session table verbose
Current TotalSessions : 1
icmp ×××: public --> public ID: c487fddeb2b7140543858c256cf
Zone: trust--> untrust TTL: 00:00:20 Left: 00:00:12
Interface:GigabitEthernet1/0/2 NextHop:10.1.12.3 MAC: 00e0-fc87-780c
<--packets:5 bytes: 300 --> packets: 5 bytes: 300
10.1.14.1:256[10.1.12.254:2048] -->100.100.100.100:2048 PolicyName: permit_trust_untrust_icmp
NAT ALG:application level gateway,应用级网关,是特定的应用协议的转换代理,能够完成应用层数据中携带的地址及端口信息的转换
普通NAT实现了对UDP或TCP报文头中的的IP地址及端口转换功能,但对应用层数据载荷中的字段无能为力,在许多应用层协议中,好比多媒体协议(H.32三、SIP等)、FTP、SQLNET等,TCP/UDP载荷中带有地址或者端口信息,这些内容不能被NAT进行有效的转换,就可能致使问题。而NAT ALG技术能对多通道协议进行应用层报文信息的解析和地址转换,将载荷中须要进行地址转换的IP地址和端口或者需特殊处理的字段进行相应的转换和处理,从而保证应用层通讯的正确性。
例如:FTP应用就由数据链接和控制链接共同完成,并且数据链接的创建动态地由控制链接中的载荷字段信息决定,这就须要ALG来完成载荷字段信息的转换,以保证后续数据链接的正确创建
防火墙默认打开了ALG功能(和ASPF功能属于一个),如今trust区域访问untrust的ftp抓包观察nat转换功能
先容许trust到untrust的ftp服务
[FW]security-policy
[FW-policy-security]rule name permit_trust_untrust_icmp
[FW-policy-security-rule-permit_trust_untrust_icmp]disth
#
rule namepermit_trust_untrust_icmp
source-zonetrust
destination-zone untrust
service icmp
action permit
#
return
[FW-policy-security-rule-permit_trust_untrust_icmp]serviceftp
抓包分析
找到port包
能够看到防火墙开启ALG功能后把应用层的数据的IP也进行了转换
如今关闭防火墙的ALG功能后抓包
[FW]undo firewalldetect ftp
如上图,能够看到关闭防火墙的ALG功能后,FTP数据层面的IP地址没有被转换为公网IP地址,致使FTPserver相应请求时致使路由不可达,从而致使客户端访问失败。
NAT中生成server map表项的两种状况:
配置NAT server时:设备会自动生成server map表项,用于存放global地址与inside地址的映射关系
配置NAT no-pat时:设备会为已经配置的多通道协议产生的有实际流量的数据流创建server-map表
内部服务器(nat server)功能是使用一个公网地址来表明内部服务器对外地址,在防火墙上专门为内部的服务器配置一个对外的公网地址来表明私网地址,对于外网用户来讲防火墙上配置的外网地址就是服务器的地址
Nat server 名称 protocol tcp global 202.202.1.1 www inside 192.168.1.1 www [no –revrse] 这个参数若是加上后就不会产生反向的nat表项也就是说服务器不能主动发起去公网的访问,只能被动接受访问(通俗的讲就是不容许服务器上网)
注意:no-revrse参数加不加都不受nat-policy限制,可是受到security-policy的限制
需求:untrust用的用户须要访问dmz区域的http服务,要求经过nat server的方式配置,而且只容许www服务
配置步骤
端口ip地址配置以及加入dmz区域
[FW]int g1/0/1
[FW-GigabitEthernet1/0/1]ip add 10.1.13.254 24
[FW]firewall zone dmz
[FW-zone-dmz]add int g1/0/1
配置NAT server
[FW]nat server ftp_server protocol tcp global10.1.12.254 www inside 10.1.13.1 www no-reverse
配置安全策略
[FW]security-policy
[FW-policy-security]rule name permit_untrust_dmz_http
[FW-policy-security-rule-permit_untrust_dmz_http]source-zoneuntrust
[FW-policy-security-rule-permit_untrust_dmz_http]destination-zonedmz
[FW-policy-security-rule-permit_untrust_dmz_http]servicehttp
[FW-policy-security-rule-permit_untrust_dmz_http]actionpermit
测试
观察server map表项
[FW]dis firewall server-map
Current TotalServer-map : 1
Type: NatServer, ANY ->10.1.12.254:80[10.1.13.1:80], Zone:---, protocol:tcp
***: public-> public
场景:在移动终端访问无线网时,若是其缺省的wap网关地址与所在地运营商的wap网关地址不一致时,能够在终端与wap网关中间部署一台设备,并配置目的NAT功能,使设备自动将终端发往错误WAP网关地址的报文自动转发给正确的WAP网关
实验
如今DMZ区域的server1充当手机角色,fw1充当运营商防火墙,untrust区域的server2充当正确的wap网关,如今server1是一部从国外购买回来的手机,因为内置的wap网关不正确(8.8.8.8)致使没法接入运营商网络,如今经过目的nat技术解决这一问题(把访问8.8.8.8的地址转换到100.100.100.200 server2上面)
配置步骤
防火墙配置ACL
[FW]acl 3000
[FW-acl-adv-3000]rule 0 permit ip destination 8.8.8.80
容许server1访问外网(由于是实验环境)
[FW]nat-policy
[FW-policy-nat]rule name permit_dmz_untrust_icmp
[FW-policy-nat-rule-permit_dmz_untrust_icmp]source-zonedmz
[FW-policy-nat-rule-permit_dmz_untrust_icmp]destination-zoneuntrust
[FW-policy-nat-rule-permit_dmz_untrust_icmp]action nataddress-group isp1
[FW]security-policy
[FW-policy-security]rule name permit_dmz_untrust_icmp
[FW-policy-security-rule-permit_dmz_untrust_icmp]source-zonedmz
[FW-policy-security-rule-permit_dmz_untrust_icmp]destination-zoneuntrust
[FW-policy-security-rule-permit_dmz_untrust_icmp]serviceicmp
[FW-policy-security-rule-permit_dmz_untrust_icmp]actionpermit
配置目的NAT
[FW]firewall zone dmz
[FW-zone-dmz]destination-nat 3000 address100.100.100.200
测试
上图,ping 8.8.8.8的地址已经被转换为100.100.100.200
双向NAT的应用场景:
NAT server+源NAT(又叫作域间双向NAT)
域内NAT
为了简化配置服务器到公网的路由,能够在NAT Server基础上增长源NAT配置,实际上就是服务器不配置网关地址能够和外界进行通讯(奇葩想法,哪有服务器不配置网关的,那和内网其余网段通讯呢?)
场景:如图因为前期网络规划不合理,将用户网段和服务器网段处于同一个网段,防火墙配置NAT SERVER将192.168.1.1映射为202.202.1.1后给互联网提供服务,互联网用户经过域名解析到202.202.1.1,同时内网用户也须要使用域名的方式访问该服务器,而且也是使用公网DNS进行解析。当用户192.168.1.5经过域名访问192.168.1.1,首先数据包到达防火墙,防火墙查询nat server后发现目的地是192.168.1.1,因此该数据包并未出防火墙而是直接交给内网的192.168.1.1,而且此时192.168.1.5访问并无发生源目地址的转换,当数据包到达192.168.1.1之后,服务器会响应,查看源IP是192.168.1.5和本身属于同一网段,因此直接向192.168.1.5发送syn+ack报文可是192.168.1.5并不会接收,由于192.168.1.5是朝着202.202.1.1发送的syn报文,收到的syn+ack倒是192.168.1.1,因此访问失败
解决办法:在防火墙的内接口进行nat转换,把192.168.1.5访问192.168.1.1转换成接口地址,变成防火墙接口地址访问192.168.1.1
实验:
Trust区域的服务器10.1.14.200作NAT映射发布到公网,公网100.100.100.100经过域名访问(这里无dns服务器直接使用转换后的IP地址访问)这台内网服务器,同时内网的10.1.14.1客户端也经过发布后的公网IP地址访问此服务器(不能使用内网IP地址访问)
配置步骤
基础的配置略过
防火墙NAT server配置
[FW]nat server trust_http protocol tcp global10.1.12.200 www inside 10.1.14.200 www no-reverse
配置安全策略放行untrust到trust的访问
[FW-policy-security]rule namepermit_untrust_trust_http
[FW-policy-security-rule-permit_untrust_trust_http]source-zoneuntrust
[FW-policy-security-rule-permit_untrust_trust_http]destination-zonetrust
[FW-policy-security-rule-permit_untrust_trust_http]servicehttp
[FW-policy-security-rule-permit_untrust_trust_http]actionpermit
公网客户端测试
内网客户端经过公网IP访问测试(未配置域内双向NAT的状况),发现访问失败
发包是10.1.14.1发给10.1.12.200,可是回包倒是10.1.14.200回复的syn+ack
配置域内双向NAT
先配置源NAT
[FW]nat-policy
[FW-policy-nat]rule name permit_trust_trust_nat_http
[FW-policy-nat-rule-permit_trust_trust_nat_http]source-zonetrust
[FW-policy-nat-rule-permit_trust_trust_nat_http]destination-zonetrust
[FW-policy-nat-rule-permit_trust_trust_nat_http]servicehttp
[FW-policy-nat-rule-permit_trust_trust_nat_http]actionnat easy-ip
配置安全策略放行trust到trust的http流量
[FW]security-policy
[FW-policy-security]rule name permit_trust_trust_http
[FW-policy-security-rule-permit_trust_trust_http]source-zonetrust
[FW-policy-security-rule-permit_trust_trust_http]destination-zonetrust
[FW-policy-security-rule-permit_trust_trust_http]servicehttp
[FW-policy-security-rule-permit_trust_trust_http]actionpermit
测试内网客户端访问
需求:两个不一样运营商用户须要访问同一内网服务器资源
内网用户经过两个运营商访问互联网
配置步骤
1基础配置(接口IP、路由协议略过)
2建立zone
[FW]firewall zone name isp1
[FW-zone-isp1]set priority 10
[FW]firewall zone name isp2
[FW-zone-isp2]set priority 20
3各接口加入相应的zone
[FW]firewall zone isp1
[FW-zone-isp1]add int g1/0/2
[FW-zone-isp1]quit
[FW]firewall zone isp2
[FW-zone-isp2]add int g1/0/0
[FW-zone-isp2]quit
[FW]firewall zone dmz
[FW-zone-dmz]add int g1/0/3
[FW-zone-dmz]quit
[FW]firewall zone trust
[FW-zone-trust]add int g1/0/1
3配置静态默认路由(暂时不考虑策略路由的问题)
[FW]ip route-static 0.0.0.0 0.0.0.0 200.1.1.1
[FW]ip route-static 0.0.0.0 0.0.0.0 100.1.1.2
4配置NAT地址池
[FW]nat address-group isp1
[FW-address-group-isp1]section 200.1.1.10 200.1.1.20
[FW-address-group-isp1]mode pat
[FW-address-group-isp1]quit
[FW]nat address-group isp2
[FW-address-group-isp2]section 100.1.1.10 100.1.1.20
[FW-address-group-isp2]mode pat
[FW-address-group-isp2]quit
5配置源NAT策略
配置isp1线路的nat
[FW]nat-policy
[FW-policy-nat]rule name permit_trust_isp1_nat
[FW-policy-nat-rule-permit_trust_isp1_nat]source-zonetrust
[FW-policy-nat-rule-permit_trust_isp1_nat]destination-zoneisp1
[FW-policy-nat-rule-permit_trust_isp1_nat]action nataddress-group isp1
配置isp2线路的nat
[FW]nat-policy
[FW-policy-nat]rule name permit_trust_isp2_nat
[FW-policy-nat-rule-permit_trust_isp2_nat]source-zonetrust
[FW-policy-nat-rule-permit_trust_isp2_nat]destination-zoneisp2
[FW-policy-nat-rule-permit_trust_isp2_nat]action nataddress-group isp2
6配置安全策略放行trust到isp1和isp2的流量
[FW]security-policy
[FW-policy-security]rule namepermit_trust_isp1_isp2_any
[FW-policy-security-rule-permit_trust_isp1_isp2_any]source-zonetrust
[FW-policy-security-rule-permit_trust_isp1_isp2_any]destinationisp1 isp2
[FW-policy-security-rule-permit_trust_isp1_isp2_any]actionpermit
测试源nat是否成功
① 断开isp1链路后访问202.1.1.200
能够看到匹配的是isp2的安全策略
<FW>dis firewall session table verbose
Current TotalSessions : 1
http ×××: public --> public ID: c487f45fee596e014ff58c5450c
Zone: trust--> isp2 TTL: 00:00:10 Left: 00:00:08
Interface:GigabitEthernet1/0/0 NextHop:100.1.1.2 MAC: 00e0-fce0-19da
<--packets:4 bytes: 471 --> packets: 6 bytes: 401
10.0.1.10:2054[100.1.1.10:2052] -->202.1.1.200:80 PolicyName: permit_trust_isp1_isp2_any
②恢复isp1线路后观察数据走向以及匹配的安全策略
能够看到仍是匹配的isp2的安全策略,若是想让线路负载分担就须要使用策略路由(后续在介绍)
[FW]dis firewall session table verbose
Current TotalSessions : 1
http ×××: public --> public ID: c387f45fee598c0c9d58c547c8
Zone: trust--> isp1 TTL: 00:00:10 Left: 00:00:09
Interface:GigabitEthernet1/0/2 NextHop:200.1.1.1 MAC: 00e0-fcce-7e9a
<--packets:5 bytes: 511 --> packets: 6 bytes: 401
10.0.1.10:2057[200.1.1.10:2050] -->202.1.1.200:80 PolicyName: permit_trust_isp1_isp2_any
7配置NAT server
[FW]nat server http_isp1 zone isp1 protocol tcp global200.1.1.100 www inside 10.0.2.200 www no-reverse
[FW]nat server http_isp2 zone isp2 protocol tcp global100.1.1.100 www inside 10.0.2.200 www no-reverse
8配置安全策略放行isp1和isp2访问dmz
[FW]security-policy
[FW-policy-security]rule namepermit_isp1_isp2_dmz_http
[FW-policy-security-rule-permit_isp1_isp2_dmz_http]source-zoneisp1 isp2
[FW-policy-security-rule-permit_isp1_isp2_dmz_http]destination-zonedmz
[FW-policy-security-rule-permit_isp1_isp2_dmz_http]servicehttp
[FW-policy-security-rule-permit_isp1_isp2_dmz_http]actionpermit
9测试访问
① 经过200.1.1.100访问内部服务器
[FW]dis firewall session table verbose
Current TotalSessions : 1
http ×××: public --> public ID: c487f45fee5841034c058c54f6d
Zone: isp1--> dmz TTL: 00:00:10 Left: 00:00:07
Interface:GigabitEthernet1/0/3 NextHop:10.0.2.200 MAC: 5489-980f-492a
<--packets:4 bytes: 471 --> packets: 6 bytes: 401
202.1.1.100:2061 -->200.1.1.100:80[10.0.2.200:80] PolicyName: permit_isp1_isp2_dmz_http
②经过100.1.1.100访问内部服务器
[FW]dis firewall session table verbose
Current TotalSessions : 1
http ×××: public --> public ID: c387f45fee585f021a58c54fb5
Zone: isp2--> dmz TTL: 00:00:10 Left: 00:00:08
Interface:GigabitEthernet1/0/3 NextHop:10.0.2.200 MAC: 5489-980f-492a
<--packets:4 bytes: 471 --> packets: 6 bytes: 401
202.1.1.100:2063 -->100.1.1.100:80[10.0.2.200:80] PolicyName: permit_isp1_isp2_dmz_http