如圖所示:

inside主機基本配置
inside>en
inside#conf t
inside(config)#int f0/0
inside(config-if)#ip add 10.1.1.2 255.255.255.0
inside(config-if)#no shutdown
inside(config-if)#exit
inside(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1
inside(config)#enable password cisco
inside(config)#line vty 0 4
inside(config-line)#pass
inside(config-line)#password cisco
inside(config-line)#login
inside(config-line)#exit
inside(config)#
outside主機基本配置
outside>en
outside#conf t
outside(config)#int f0/0
outside(config-if)#ip add 20.1.1.2 255.255.255.0
outside(config-if)#no shutdown
outside(config-if)#exit
outside(config)#ip route 0.0.0.0 0.0.0.0 20.1.1.1
outside(config)#enable pass cisco
outside(config)#line vty 0 4
outside(config-line)#password cisco
outside(config-line)#login
outside(config-line)#exit
outside(config)#
CISCO ASA配置
ciscoasa> en
Password:
ciscoasa# conf t
ciscoasa(config)# int e0/0
ciscoasa(config-if)# nameif inside
INFO: Security level for "inside" set to 100 by default.
ciscoasa(config-if)# security-level 100
ciscoasa(config-if)# ip add 10.1.1.1 255.255.255.0
ciscoasa(config-if)# no shutdown
ciscoasa(config-if)# int e0/1
ciscoasa(config-if)# nameif outside
INFO: Security level for "outside" set to 0 by default.
ciscoasa(config-if)# security-level 0
ciscoasa(config-if)# ip add 20.1.1.1 255.255.255.0
ciscoasa(config-if)#
基本測試
inside#ping 10.1.1.1
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.1, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 8/27/52 ms
inside#
outside#ping 20.1.1.1
Sending 5, 100-byte ICMP Echos to 20.1.1.1, timeout is 2 seconds:
Success rate is 80 percent (4/5), round-trip min/avg/max = 12/34/64 ms
outside#
inside主機和outside主機都能ping通網關。
inside主機向outside主機發起telnet連接配接
inside#telnet 20.1.1.2
Trying 20.1.1.2 ... Open
User Access Verification
ASA預設從高安全級别到低安全級别的通路是允許的,telnet連接配接屬于tcp 連接配接,
ciscoasa# show conn detail
1 in use, 1 most used
Flags: A - awaiting inside ACK to SYN, a - awaiting outside ACK to SYN,
B - initial SYN from outside, C - CTIQBE media, D - DNS, d - dump,
E - outside back connection, F - outside FIN, f - inside FIN,
G - group, g - MGCP, H - H.323, h - H.225.0, I - inbound data,
i - incomplete, J - GTP, j - GTP data, K - GTP t3-response
k - Skinny media, M - SMTP data, m - SIP media, n - GUP
O - outbound data, P - inside back connection, q - SQL*Net data,
R - outside acknowledged FIN,
R - UDP SUNRPC, r - inside acknowledged FIN, S - awaiting inside SYN,
s - awaiting outside SYN, T - SIP, t - SIP transient, U - up
X - inspected by service module
TCP outside:20.1.1.2/23 inside:10.1.1.2/11001 flags UIO
outside#show users
Line User Host(s) Idle Location
* 0 con 0 idle 00:00:00
130 vty 0 idle 00:00:15 10.1.1.2
Interface User Mode Idle Peer Address
從低安全級别到高安全級别的通路,其結果是無法通路。
outside#telnet 10.1.1.2
Trying 10.1.1.2 ...
% Connection timed out; remote host not responding
如果讓outside主機能夠通路inside主機,需在防火牆上寫入站規則:
ciscoasa(config)# access-list out-to-in permit ip host 20.1.1.2 host 10.1.1.2
ciscoasa(config)# access-group out-to-in in interface outside
ciscoasa(config)#
測試
Trying 10.1.1.2 ... Open
入站規則也可以這樣寫
ciscoasa(config)# access-list out-to-in permit tcp host 20.1.1.2 host 10.1.1.2 eq 23
如果在ASA防火牆上做控制出站的規則,可以這樣寫
ciscoasa(config)# access-list in-to-out deny ip 10.1.1.0 255.255.255.0 any
ciscoasa(config)# access-list in-to-out permit ip any any
ciscoasa(config)# access-group in-to-out in interface inside
Trying 20.1.1.2 ...
% Connection refused by remote host
關于ICMP封包穿越ASA防火牆的實驗
從内部主機ping防火牆inside接口
R1#ping 10.1.1.1
Success rate is 80 percent (4/5), round-trip min/avg/max = 4/20/36 ms
R1#
關閉到inside接口的ping
ciscoasa(config)# icmp deny any echo inside
.....
Success rate is 0 percent (0/5)
從内部主機,ping到ASA防火牆的inside接口,由于使用了ICMP ACL,是以導緻ping失敗
檢視ICMP的ACL
ciscoasa# show run icmp
icmp unreachable rate-limit 1 burst-size 1
icmp deny any echo inside
ciscoasa#
開啟到ASA防火牆的inside接口的ping
ciscoasa(config)# clear configure icmp
檢查是否可以再次ping到防火牆的inside接口
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 12/20/28 ms
配置防火牆的outside接口,使它拒絕所有Ping請求,而允許所有不可達的消息
ciscoasa(config)# icmp deny any echo outside
ciscoasa(config)# icmp permit any unreachable outside
R2#ping 20.1.1.1
儲存配置
ciscoasa(config)# write memory
注意在GNS3上模拟ASA,儲存配置的指令不可用。
預設情況下,禁止ICMP封包穿越ASA防火牆,在本拓撲中R1 ping R2是不通的,防火牆在outside接口上拒絕傳回的ICMP封包。預設情況下,ASA對icmp協定無狀态化處理,即不會将ICMP流量存在Conn表中。
如果需要做排錯或維護任務,可暫時允許ICMP封包穿越ASA防火牆。
ciscoasa(config)# access-list aclicmp permit icmp any any
ciscoasa(config)# access-group aclicmp in interface outside
R1#ping 20.1.1.2
Sending 5, 100-byte ICMP Echos to 20.1.1.2, timeout is 2 seconds:
Success rate is 100 percent (5/5), round-trip min/avg/max = 20/32/56 ms
如何在ASA防火牆上配置靜态路由
ASA支援靜态和預設路由,動态路由
R1#conf t
R1(config)#int f0/0
R1(config-if)#ip add 10.1.1.2 255.255.255.0
R1(config-if)#no shutdown
R1(config-if)#exit
R1(config)#enable password cisco
R1(config)#line vty 0 4
R1(config-line)#password cisco
R1(config-line)#login
R1(config-line)#exit
R1(config)#ip route 0.0.0.0 0.0.0.0 10.1.1.1
R2>en
R2#conf t
R2(config)#interface f1/0
R2(config-if)#ip add 30.1.1.2 255.255.255.0
R2(config-if)#no shutdown
R2(config-if)#exit
R2(config)#int f0/0
R2(config-if)#ip add 20.1.1.1 255.255.255.0
R2(config)#
R2(config)#enable password cisco
R2(config)#line vty 0 4
R2(config-line)#password cisco
R2(config-line)#login
R2(config-line)#exit
R3#conf t
R2(config)#ip route 0.0.0.0 0.0.0.0 30.1.1.1
R3(config)#int f0/0
R3(config-if)#ip add 20.1.1.2 255.255.255.0
R3(config-if)#no shu
R3(config-if)#no shutdown
R3(config-if)#exit
R3(config)#enable password cisco
R3(config)#line vty 0 4
R3(config-line)#password cisco
R3(config-line)#login
R3(config-line)#exit
R3(config)#ip route 0.0.0.0 0.0.0.0 20.1.1.1
R1#telnet 30.1.1.2
Trying 30.1.1.2 ... Open
R1#telnet 20.1.1.2
連接配接R3主機,失敗。原因是ASA不知道20.1.1.0/24網段
在ASA防火牆上寫靜态路由
ciscoasa(config)# route outside 20.1.1.0 255.255.255.0 30.1.1.2
如果在防火牆上寫預設路由可以這樣寫
ciscoasa(config)# route outside 0 0 30.1.1.2
按照以上理論測試帶有DMZ區域的實驗。
總結:
防火牆技術分為三種:包過濾防火牆,代理防火牆,狀态包過濾;
包過濾防火牆:使用ACL控制進入或離開的網絡流量,ACL可以比對包的類型或其他參數(如源IP位址,目的ip位址,端口号等)來制定。該類防火牆有以下不足,ACL制定和維護都比較困難;可以使用IP欺騙很容易繞過ACL;
代理防火牆:也叫做代理伺服器。他在OSI的高層檢查資料包,然後和制定的規則相比較,如果資料包的内容符合規則并且被允許,那麼代理伺服器就代替源主機向目的位址發送請求,從外部主機收到請求後,在轉發給被保護的源請求主機。代理防火牆的缺點就是性能問題,由于代理防火牆會對每個經過它的包都會做深度檢查,即使這個包以前檢查過,是以對系統和網絡的性能都有很大的影響。
狀态包過濾防火牆:Cisco ASA就是使用的狀态包過濾防火牆,該防火牆會維護每個會話的狀态資訊,這些狀态資訊寫在狀态表裡,狀态表的條目有源位址,目的位址,端口号,TCP序列号資訊以及每個tcp或udp的其他的标簽資訊。所有進入或外出的流量都會和狀态表中的連接配接狀态進行比較,隻有狀态表中的條目比對的時候才允許流量通過。防火牆收到一個流量後,首先檢視是否已經存在于連接配接表中,如果沒有存在,則看這個連接配接是否符合安全政策,如果符合,則處理後将該連接配接寫入狀态表;如果不符合安全政策,那麼就将包丢棄。狀态表也叫Fast path,防火牆隻處理第一個包,後續的屬于該連接配接的包都會直接按照Fast Path轉發,是以性能就有很高的提升。
防火牆功能和許可證:
防火牆出廠的時候自帶有一些基本的功能,如果需要增加一些額外的功能,那麼就需要購買許可證(license)激活相應的功能。可以使用show version指令檢視目前防火牆擁有的功能清單:
防火牆的許可證類型有:
Unrestricted(UR)--無限制的許可證使得該防火牆所能支援的所有特性全部打開。如無限制的活動連接配接數,打開防火牆所支援的所有端口,可以使用防火牆的Failover(故障切換功能)等等。
Restricted(R)--限制版,限制防火牆開啟的特性,比如限制活動連接配接數,使防火牆不支援Failover,限制防火牆支援的最大接口數等;
Failover(FO)--該版本使得防火牆可以作為Secondary裝置參與Failover(故障切換);
Failover-active/active(FO-AA)--該版本使得防火牆可以作為secondary裝置參與active/active Failover ,同時還要求另一個防火牆使用UR版。
Cisco ASA 安全算法
ASA 處理TCP連接配接的安全算法
1. 一個内部主機的第一個IP資料包導緻一個轉換槽的産生,這個資訊會被保留在記憶體中,用來檢查以後的資料包,做位址轉換,然後防火牆利用TCP内的相關資訊來建立一個連接配接槽
2. 這個連接配接被标記為“未完成”是一個TCP的半開連接配接。
3. 防火牆随機産生一個用于連接配接的初始序列号,,并且将資料包轉發到外連接配接口。
4. 在這一步,防火牆期待從目的主機收到一個同步确認包(syn/ack),然後防火牆将收到的包的相關資訊依照連接配接槽記憶體儲的資訊進行比對,計算資訊的先後順序,并将傳回的資料包轉發到内部主機。
5. 内部主機通過發送一個ACK完成了連接配接建立和3次握手。
6. 防火牆上的連接配接槽被标記為connected或者active-established。這時就可以發送資料了。連接配接的“未完成”計數器也将被重置。
以上是防火牆處理TCP連接配接的安全算法。
ASA處理UDP連接配接的安全算法
1. 防火牆從内部主機收到第一ip資料包,在檢驗已經配置好的轉換設定後,防火牆将會建立一個轉換槽,它将儲存這個資訊在記憶體中用來檢查以後的資料包流。然後,防火牆利用UDP内的相關資訊建立一個UDP連接配接槽。
2. 在使用者配置的UDP timeout時間内,防火牆将會維護這個UDP連接配接槽。但是當UDP連接配接槽的idle時間超出所配置的UDP timeout時間,就會從連接配接表中删除。
3. 在UDP的timeout周期内,防火牆執行适應性安全算法(ASA)對 從目的主機收到的UDP資料包進行全狀态檢查。
4. 如果傳回的UDP資料包完全比對并且沒有逾時,那麼這個資料将被傳回内部主機。
最後要注意,ASA的所有安全政策都是應用到狀态連接配接中,是以要首先生成一個連接配接表,然後才會比較安全政策等内容。
UDP的一些特性
1. UDP是一個不可靠(無連接配接的),但卻很高效的傳輸協定,其不可靠展現在它不提供傳輸的确認。
2. 僞造UDP資料包很容易,因為他沒有握手和序列的機制。由于沒有狀态機制,是以傳輸的發起者或者目前的狀态經常不确定。
3. UDP不提供傳輸保障
4. 沒有連接配接的建立和中止。
5. UDP沒有擁塞管理和避免機制
6. 使用UDP的服務通常被分為兩類:
請求-回應,或稱之為乒乓服務。例如域名服務(DNS)
流服務,例如視訊,VOIP,網絡檔案系統(NFS)
配置接口參數:
1. Security level 對asa/pix來講,每個接口都必須有一個安全級别,安全級别是0到100之間的數字,0代表低安全級别,100代表高安全級别;
2. 預設情況下,所有從高安全級别接口到低安全級别接口的流量都是允許的,所有從低安全級别接口到高安全級别接口的流量都是被拒絕的,都需要使用ACL來允許想要允許的流量;當然,高安全級别接口到低安全級别接口的流量也可以通過ACL來控制。
3. 預設情況下,相同安全級别接口之間不允許通信,可以使用指令:
Hostname(config)#same-security-traffic permit inter-interface
允許相同安全級别接口之間互相通信:
4. 對于防火牆的任何接口,都必須配置以下内容:
Name
Ip address
Security level
靜态路由
在防火牆模式下,ASA支援靜态和預設路由,ASA隻支援RIP和OSPF,是以如果你的網絡運作的是其他的路由協定,那麼就要使用靜态路由,使用靜态路由可以節省CPU的負載。ASA在相同的接口,最多支援3條等價靜态路由。
Hostname(config)#route 接口名稱 目标網段 掩碼 下一跳位址
配置ACL
一個ACL是由多個通路控制條目(Access Control Entries,ACE)組成,一個ACE指明一個permit或deny規則,一個ACE可以根據協定,指定的源位址和目的位址、端口号、ICMP類型等來定義,ACE的執行是按照順序執行的,一旦發現比對的ACE,那麼就不會再繼續往下比對。
對于TCP和UDP連接配接,不需要使用ACL來允許傳回的流量進入,因為防火牆的安全算法會生成一個連接配接表來允許這些流量的傳回;對于無連接配接流量,比如ICMP,需要使用ACL來明确允許傳回的流量進入防火牆,或者可以打開ICMP審查引擎。
關于ACL相關指令參考書上的指令。
多區域預設的通路規則:
Inside可以通路outside。
Inside可以通路dmz
Dmz可以通路outside
Dmz不能通路inside
Outside不能通路inside
Outside不能通路dmz.