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