HCNA安全-防火牆之NAT技術

HCNA安全-防火牆之NAT技術安全

爲什麼須要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是廣播地址

NAT技術基本原理

經過對IP報文頭中的源地址或者目的地址進行轉換,可使大量的私網IP地址經過共享少許的公網IP地址來訪問公網

NAT的分類

源NAT:地址池方式、出接口地址方式(Easy ip)

服務器映射:靜態NAT(NAT server)、目的NAT

源NAT技術

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模式

源NAT實驗

Untrust爲運營商,trust爲企業內網,如今企業內網用戶須要經過防火牆訪問互聯網

                 wKiom1jFaQTgpl97AACwIu6OtVw766.png-wh_50            

配置步驟:

配置防火牆各個接口的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

測試

spacer.gif

觀察防火牆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實驗

注意:在防火牆裏面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

測試

spacer.gif

[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

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轉換功能

spacer.gif

先容許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包

spacer.gif

spacer.gif

能夠看到防火牆開啓ALG功能後把應用層的數據的IP也進行了轉換

如今關閉防火牆的ALG功能後抓包

[FW]undo firewalldetect ftp

spacer.gif

如上圖,能夠看到關閉防火牆的ALG功能後,FTP數據層面的IP地址沒有被轉換爲公網IP地址,致使FTPserver相應請求時致使路由不可達,從而致使客戶端訪問失敗。

NAT和server-map表

NAT中生成server map表項的兩種狀況:

配置NAT server時:設備會自動生成server map表項,用於存放global地址與inside地址的映射關係

配置NAT no-pat時:設備會爲已經配置的多通道協議產生的有實際流量的數據流創建server-map表

NAT Server

內部服務器(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服務

spacer.gif

配置步驟

端口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

測試

spacer.gif

觀察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

目的NAT

場景:在移動終端訪問無線網時,若是其缺省的wap網關地址與所在地運營商的wap網關地址不一致時,能夠在終端與wap網關中間部署一臺設備,並配置目的NAT功能,使設備自動將終端發往錯誤WAP網關地址的報文自動轉發給正確的WAP網關

spacer.gif

實驗

如今DMZ區域的server1充當手機角色,fw1充當運營商防火牆,untrust區域的server2充當正確的wap網關,如今server1是一部從國外購買回來的手機,因爲內置的wap網關不正確(8.8.8.8)致使沒法接入運營商網絡,如今經過目的nat技術解決這一問題(把訪問8.8.8.8的地址轉換到100.100.100.200 server2上面)

spacer.gif

配置步驟

防火牆配置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

測試

spacer.gif

spacer.gif

上圖,ping 8.8.8.8的地址已經被轉換爲100.100.100.200

雙向NAT技術

雙向NAT的應用場景

NAT server+源NAT(又叫作域間雙向NAT)

域內NAT

域間雙向NAT

爲了簡化配置服務器到公網的路由,能夠在NAT Server基礎上增長源NAT配置,實際上就是服務器不配置網關地址能夠和外界進行通訊(奇葩想法,哪有服務器不配置網關的,那和內網其餘網段通訊呢?)

spacer.gif

域內雙向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,因此訪問失敗

spacer.gif

解決辦法:在防火牆的內接口進行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地址訪問)

spacer.gif

配置步驟

基礎的配置略過

防火牆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

公網客戶端測試

spacer.gif

內網客戶端經過公網IP訪問測試(未配置域內雙向NAT的狀況),發現訪問失敗

spacer.gif

發包是10.1.14.1發給10.1.12.200,可是回包倒是10.1.14.200回覆的syn+ack

spacer.gif

配置域內雙向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

測試內網客戶端訪問

spacer.gif

防火牆NAT雙出口實驗

需求:兩個不一樣運營商用戶須要訪問同一內網服務器資源

      內網用戶經過兩個運營商訪問互聯網

spacer.gif

配置步驟

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

spacer.gif

能夠看到匹配的是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訪問內部服務器

spacer.gif

[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訪問內部服務器

spacer.gif

[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

相關文章
相關標籤/搜索