interface FastEthernet0/0 ip address 172.16.18.200 255.255.255.0 ip nat inside the interface connected to inside world ! interface BRI0/0 ip address negotiated ip nat outside the interface connected to outside network encapsulation ppp no ip split-horizon dialer string 163 dialer load-threshold 150 inbound dialer-group 1 isdn switch-type basic-net3
ip nat inside source list 1 interface BRI0/0 overload access-list 1 permit 172.16.18.0 0.0.0.255
4、用一個(gè)出口地址映射內(nèi)部多臺(tái)主機(jī) 應(yīng)用于internet上的大型網(wǎng)站有多臺(tái)主機(jī)對(duì)應(yīng)同一個(gè)系統(tǒng)的同一個(gè)出口地址。 可以用sh ip nat translation 和debug ip nat 命令來(lái)檢查NAT的狀態(tài)。
3、CBAC受到的限制 (1)僅適用于IP數(shù)據(jù)流:只有TCP和UDP包被檢測(cè),其它如ICMP等不能被CBAC檢測(cè),只能通過(guò)基本的access lists過(guò)濾。 (2)假如我們?cè)谂渲肅BAC時(shí)重新更改access lists,要注重:假如access lists禁止TFTP數(shù)據(jù)流進(jìn)入一個(gè)接口,我們將不能通過(guò)那個(gè)接口從網(wǎng)絡(luò)啟動(dòng)路由器(netboot)。 (3)CBAC忽略ICMP unreachable 信息。 (4)當(dāng)CBAC檢查FTP傳輸時(shí),它只答應(yīng)目的端口為1024—65535范圍的數(shù)據(jù)通道。 (5)假如FTP客戶(hù)端/服務(wù)器認(rèn)證失敗,CBAC將不會(huì)打開(kāi)一條數(shù)據(jù)通道。 (6)IPSec 和CBAC的兼容性:假如CBAC和IPSec配置于同一臺(tái)路由器上,只要對(duì)數(shù)據(jù)包的檢查是在內(nèi)部網(wǎng)接口上進(jìn)行的,而數(shù)據(jù)包加密是終止在外部網(wǎng)接口上的,那么I Psec和CBAC就能共存在該邊界路由器上。在這種方式下,檢查的是不加密的數(shù)據(jù)流。 4、CBAC所需的內(nèi)存和性能 有一些參數(shù)會(huì)影響CBAC所需的內(nèi)存和性能: (1)CBAC對(duì)每條連接使用600 byte的內(nèi)存; (2)在檢查數(shù)據(jù)包的過(guò)程中,CBAC使用額外的CPU資源; (3)盡管CBAC通過(guò)對(duì)access lists的高效存儲(chǔ)(對(duì)access list進(jìn)行散列索引,然后評(píng)估該散列)來(lái)最小化其對(duì)資源的需求,它在access list檢查過(guò)程中仍要使用一定的CPU資源。 5、配置CBAC 第一步,CBAC用timeout 和threshold值來(lái)治理會(huì)話(huà),配置判定是否在會(huì)話(huà)還未完全建立的時(shí)候終止連接。這些參數(shù)全局性地應(yīng)用于所有會(huì)話(huà)。具有firewall feature的cisco router12.0以上版本的IOS缺省是起了IP INSPECT 抵御DoS進(jìn)攻的。當(dāng)half-open會(huì)話(huà)數(shù)量大到一定的程度往往意味著正在有DOS攻擊發(fā)生或某人正在做端口掃描,CBAC既監(jiān)測(cè)half-open會(huì)話(huà)總數(shù)也監(jiān)測(cè)會(huì)話(huà)企圖建立的速率。以下是缺省配置: HpXg_1#sh ip inspect all Session audit trail is disabled(相關(guān)命令是ip inspect audit trail,是用來(lái)打開(kāi)自動(dòng)跟蹤審計(jì)功能并將信息傳送到console口,缺省是disabled.) Session alert is enabled one-minute thresholds are [400:500] connections(相關(guān)命令是ip inspect one-minute high 500和ip inspect one-minute low 400,是將引起或?qū)е侣酚善鏖_(kāi)始或停止刪除half-open會(huì)話(huà)的新增未建立會(huì)話(huà)的速率,即每分鐘500/400個(gè)half-open會(huì)話(huà)) max-incomplete sessions thresholds are [400:500](相關(guān)命令是ip inspect max-incomplete high 500,表示將引起路由器開(kāi)始刪除half-open會(huì)話(huà)的已經(jīng)存在的half-open會(huì)話(huà)數(shù)500個(gè);ip inspect max-incomplete low 400表示將導(dǎo)致路由器開(kāi)始停止刪除half-open會(huì)話(huà)的已經(jīng)存在的half-open會(huì)話(huà)數(shù)) max-incomplete tcp connections per host is 50. Block-time 0 minute.(相關(guān)命令:ip inspect tcp max-incomplete host 50 block-time 0表示將引起路由器開(kāi)始丟棄到同一目的主機(jī)地址的超過(guò)50個(gè)的half-open會(huì)話(huà)。假如block-time值為0表示到某個(gè)目的主機(jī)的每條連接請(qǐng)求,C BAC會(huì)刪除到該主機(jī)的最老的已存在的half-open會(huì)話(huà),并讓該SYN包通過(guò);假如block-time值大于0表示CBAC將刪除到該目的主機(jī)的所有已存在的h alf-open連接,并阻攔所有新的連接請(qǐng)求直到block-time值超時(shí))。 tcp synwait-time is 30 sec(ip inspect tcp synwait-time 30:表示路由器在阻斷會(huì)話(huà)前等待TCP會(huì)話(huà)達(dá)到連接建立狀態(tài)的時(shí)間) tcp finwait-time is 5 sec(ip inspect tcp finwait-time 5:表示防火墻檢測(cè)到一個(gè)FIN標(biāo)志后仍繼續(xù)治理TCP會(huì)話(huà)的時(shí)間長(zhǎng)度) tcp idle-time is 3600 sec(ip inspect tcp idle-time 3600:在沒(méi)有TCP連接后仍繼續(xù)治理TCP會(huì)話(huà)的時(shí)間長(zhǎng)度) udp idle-time is 30 sec(ip inspect udp idle-time 30:在UDP會(huì)話(huà)停止后仍繼續(xù)治理UDP會(huì)話(huà)信息的時(shí)間長(zhǎng)度) dns-timeout is 5 sec(ip inspect dns-timeout 5:DNS名字查詢(xún)停止后仍繼續(xù)被治理的時(shí)間) 設(shè)置timeout值可以通過(guò)丟棄超過(guò)時(shí)限的會(huì)話(huà)來(lái)有效阻止DoS攻擊釋放系統(tǒng)資源,設(shè)置threshold值可以通過(guò)限制half-open會(huì)話(huà)的數(shù)量來(lái)阻止D oS攻擊。CBAC提供三種threshold值來(lái)抵御DOS攻擊:1、最大half-open 的TCP或UDP會(huì)話(huà)的數(shù)量。2、基于時(shí)間的half-open會(huì)話(huà)數(shù)量。3、每個(gè)host可以打開(kāi)的TCP half-open會(huì)話(huà)的數(shù)量。對(duì)于超過(guò)threshold值的連接,CBAC會(huì)初始化舊的half-open連接,釋放資源接受新的要求同步的數(shù)據(jù)包。 第二步:配置access list access-list 101 permit icmp any any echo access-list 101 permit icmp any any echo-reply access-list 101 permit icmp any any unreachable access-list 101 permit icmp any any time-exceeded access-list 101 permit icmp any any packet-too-big access-list 101 permit icmp any any traceroute(以上命令答應(yīng)ping包通過(guò),主要用來(lái)排錯(cuò),假如沒(méi)有必要上述命令可以不做) access-list 101 permit any any eq smtp(答應(yīng)在郵件服務(wù)器上的安全驗(yàn)證) access-list 101 deny ip any any log(CBAC要求禁止其他所有進(jìn)入的ip包) 第三步:根據(jù)實(shí)際環(huán)境定義一個(gè)檢查規(guī)則。 ip inspect name CBAC fragment maximum 256 timeout 1 (此命令12.1以后的版本出現(xiàn),防止分段攻擊) ip inspect name CBAC smtp ip inspect name CBAC ftp ip inspect name CBAC http ip inspect name CBAC tcp (進(jìn)入的數(shù)據(jù)包必須與先前流出的數(shù)據(jù)包有相同的源/目的地址和端口號(hào)(源和目的對(duì)調(diào)),否則就被丟棄) ip inspect name CBAC udp timeout 5(假如配置了timeout值,那么應(yīng)答數(shù)據(jù)包是在最后的UDP請(qǐng)求包被送出后的預(yù)定時(shí)間范圍內(nèi)收到的,就被答應(yīng)通過(guò)防火墻返回) 第四步:把檢查規(guī)則定義到一個(gè)接口上。 interface BRI0/0 ip address negotiated ip access-group 101 in ip nat outside ip inspect CBAC out
做完以上配置后,實(shí)際運(yùn)行中路由器顯示的log如下: 04:20:27: %FW-6-SESS_AUDIT_TRAIL: http session initiator (172.16.18.1:1426) sent 656 bytes -- responder (202.108.36.156:80) sent 30740 bytes 04:20:39: %SEC-6-IPACCESSLOGP: list 101 denied tcp 202.104.128.164(2933) -> 202.104.47.135(80), 1 packet 04:20:48: %SEC-6-IPACCESSLOGP: list 101 denied tcp 64.4.13.87(1863) -> 202.104.47.135(1026), 1 packet 04:22:52: %SEC-6-IPACCESSLOGP: list 101 denied tcp 202.104.128.164(2933) -> 202.104.47.135(80), 1 packet 04:23:03: %FW-6-SESS_AUDIT_TRAIL: tcp session initiator (172.16.18.1:1433) sent 77 bytes -- responder (202.108.44.205:110) sent 45379 bytes 04:23:09: %FW-6-SESS_AUDIT_TRAIL: tcp session initiator (172.16.18.1:1435) sent 61 bytes -- responder (202.104.32.234:110) sent 1056 bytes 04:23:22: %FW-6-SESS_AUDIT_TRAIL: udp session initiator (172.16.18.1:1431) sent 29 bytes -- responder (202.96.128.68:53) sent 240 bytes 04:23:35: %SEC-6-IPACCESSLOGP: list 101 denied tcp 202.104.180.199(1262) -> 202.104.47.135(80)! 最后,可以用debug ip inspect detail來(lái)調(diào)試CBAC。