訪問列表的種類劃分 目前的路由器一般都支持兩種類型的訪問表:基本訪問表和擴(kuò)展訪問表。
基本訪問表控制基于網(wǎng)絡(luò)地址的信息流,且只允許過濾源地址。
擴(kuò)展訪問表通過網(wǎng)絡(luò)地址和傳輸中的數(shù)據(jù)類型進(jìn)行信息流控制,允許過濾源地址、目的地址和上層應(yīng)用數(shù)據(jù)。
表1列出了路由器所支持的不同訪問表的號碼范圍。
由于篇幅所限,本文只對標(biāo)準(zhǔn)訪問列表和擴(kuò)展訪問列表進(jìn)行討論。
標(biāo)準(zhǔn)IP訪問表 標(biāo)準(zhǔn)IP訪問表的基本格式為:
access-list [list number][permit|deny][host/any][sourceaddress][wildcard-mask][log]
下面對標(biāo)準(zhǔn)IP訪問表基本格式中的各項參數(shù)進(jìn)行解釋:
1.list number---表號范圍
標(biāo)準(zhǔn)IP訪問表的表號標(biāo)識是從1到99。
2.permit/deny----允許或拒絕
關(guān)鍵字permit和deny用來表示滿足訪問表項的報文是允許通過接口,還是要過濾掉。permit表示允許報文通過接口,而deny表示匹配標(biāo)準(zhǔn)IP訪問表源地址的報文要被丟棄掉。
3.source address----源地址
對于標(biāo)準(zhǔn)的IP訪問表,源地址是主機(jī)或一組主機(jī)的點(diǎn)分十進(jìn)制表示,如:198.78.46.8。
4.host/any----主機(jī)匹配
host和any分別用于指定單個主機(jī)和所有主機(jī)。host表示一種精確的匹配,其屏蔽碼為0.0.0.0。例如,假定我們希望允許從198.78.46.8來的報文,則使用標(biāo)準(zhǔn)的訪問控制列表語句如下:
access-list 1 permit 198.78.46.8 0.0.0.0
如果采用關(guān)鍵字host,則也可以用下面的語句來代替:
access-list 1 permit host 198.78.46.8
也就是說,host是0.0.0.O通配符屏蔽碼的簡寫。
與此相對照,any是源地證/目標(biāo)地址0.O.O.O/255.255.255.255的簡寫。假定我們要拒絕從源地址198.78.46.8來的報文,并且要允許從其他源地址來的報文,標(biāo)準(zhǔn)的IP訪問表可以使用下面的語句達(dá)到這個目的:
access-list 1 deny host 198.78.46.8
access-list 1 permit any
注意,這兩條語句的順序;訪問表語句的處理順序是由上到下的。如果我們將兩個語句順序顛倒,將permit語句放在deny語句的前面,則我們將不能過濾來自主機(jī)地址198.78.46.8的報文,因為permit語句將允許所有的報文通過。所以說訪問表中的語句順序是很重要的,因為不合理語句順序?qū)诰W(wǎng)絡(luò)中產(chǎn)生安全漏洞,或者使得用戶不能很好地利用公司的網(wǎng)絡(luò)策略。
5.wi1dcardmask------通配符屏蔽碼
Cisco訪問表功能所支持的通配符屏蔽碼與子網(wǎng)屏蔽碼的方式是剛好相反的,也就是說,二進(jìn)制的O表示一個"匹配"條件,二進(jìn)制的1表示一個"不關(guān)心"條件。假設(shè)組織機(jī)構(gòu)擁有一個C類網(wǎng)絡(luò)198.78.46.0,若不使用子網(wǎng),則當(dāng)配置網(wǎng)絡(luò)中的每一個工作站時,使用于網(wǎng)屏蔽碼255.255.255.O。在這種情況下,1表示一個 "匹配",而0表示一個"不關(guān)心"的條件。因為Cisco通配符屏蔽碼與子網(wǎng)屏蔽碼是相反的,所以匹配源網(wǎng)絡(luò)地址198.78.46.0中的所有報文的通配符屏蔽碼為:0.0.O.255。
6.Log----日志記錄
log關(guān)鍵字只在IOS版本11.3中存在。如果該關(guān)鍵字用于訪問表中,則對那些能夠匹配訪問表中的permit和deny語句的報文進(jìn)行日志記錄。日志信息包含訪問表號、報文的允許或拒絕、源IP地址以及在顯示了第一個匹配以來每5分鐘間隔內(nèi)的報文數(shù)目。使用log關(guān)鍵字,會使控制臺日志提供測試和報警兩種功能。
系統(tǒng)管理員可以使用日志來觀察不同活動下的報文匹配情況,從而可以測試不同訪問表的
設(shè)計情況。當(dāng)其用于報警時,管理員可以察看顯示結(jié)果,以定位那些多次嘗試活動被拒絕的訪問表語句。執(zhí)行一個訪問表語句的多次嘗試活動被拒絕,很可能表明有潛在的
黑客攻擊活動。
擴(kuò)展的IP訪問控制列表 顧名思義,擴(kuò)展的IP訪問表用于擴(kuò)展報文過濾能力。一個擴(kuò)展的IP訪問表允許用戶根據(jù)如下內(nèi)容過濾報文:源和目的地址、
協(xié)議、源和目的端口以及在特定報文字段中允許進(jìn)行特殊位比較等等。一個擴(kuò)展的IP訪問表的一般語法格或如下所示:
下面簡要介紹各個關(guān)鍵字的功能:
1.list number----表號范圍
擴(kuò)展IP訪問表的表號標(biāo)識從l00到199。
2.protocol-----協(xié)議
協(xié)議項定義了需要被過濾的協(xié)議,例如IP、TCP、UDP、1CMP等等。協(xié)議選項是很重要的,因為在
TCP/IP協(xié)議棧中的各種協(xié)議之間有很密切的關(guān)系,如果管理員希望根據(jù)特殊協(xié)議進(jìn)行報文過濾,就要指定該協(xié)議。
另外,管理員應(yīng)該注意將相對重要的過濾項放在靠前的位置。如果管理員設(shè)置的命令中,允許IP地址的語句放在拒絕TCP地址的語句前面,則后一個語句根本不起作用。但是如果將這兩條語句換一下位置,則在允許該地址上的其他協(xié)議的同時,拒絕了TCP協(xié)議。
3.源端口號和目的端口號
源端口號可以用幾種不同的方法來指定。它可以顯式地指定,使用一個數(shù)字或者使用一個可識別的助記符。例如,我們可以使用80或者h(yuǎn)ttp來指定Web的超文本傳輸協(xié)議。對于TCP和UDP,讀者可以使用操作符 "<"(小于)、">"(大于)"="(等于)以及""(不等于)來進(jìn)行設(shè)置。
目的端口號的指定方法與源端口號的指定方法相同。讀者可以使用數(shù)字、助記符或者使用操作符與數(shù)字或助記符相結(jié)合的格式來指定一個端口范圍。
下面的實(shí)例說明了擴(kuò)展IP訪問表中部分關(guān)鍵字使用方法:
access-list 101 permit tcp any host 198.78.46.8 eq smtp
access-list 101 permit tcp any host 198.78.46.3 eq www
第一個語句允許來自任何主機(jī)的TCP報文到達(dá)特定主機(jī)198.78.46.8的smtp服務(wù)端口(25);第二個語句允許任何來自任何主機(jī)的TCP報文到達(dá)指定的主機(jī)198.78.46.3的www或http服務(wù)端口(80)。
4.選項
擴(kuò)展的IP訪問表支持很多選項。其中一個常用的選項有l(wèi)og,它已在前面討論標(biāo)準(zhǔn)訪問表時介紹過了。另一個常用的選項是fistahlishfid,該選項只用于TCP協(xié)議并且只在TCP通信流的一個方向上來響應(yīng)由另一端發(fā)起的會話。為了實(shí)現(xiàn)該功能,使用estab1ished選項的訪問表語句檢查每個 TCP報文,以確定報文的ACK或RST位是否已設(shè)置。
例如,考慮如下擴(kuò)展的IP訪問表語句:
access-list 101 permit tcp any host 198.78.46.8 established
該語句的作用是:只要報文的ACK和RST位被設(shè)置,該訪問表語句就允許來自任何源地址的TCP報文流到指定的主機(jī)198.78.46.8。這意味著主機(jī)198.78.46.8此前必須發(fā)起TCP會話。
5.其他關(guān)鍵字
deny/permit、源地址和通配符屏蔽碼、目的地址和通配符屏蔽碼以及host/any的使用均與標(biāo)準(zhǔn)IP訪問表中的相同。
表2是對部分關(guān)鍵字的具體解釋。
表 2:
管理和使用訪問表 在一個接口上配置訪問表需要三個步驟:
(1)定義訪問表;
(2)指定訪問表所應(yīng)用的接口;
(3)定義訪問表作用于接口上的方向。
我們已經(jīng)討論了如何定義標(biāo)準(zhǔn)的和擴(kuò)展的IP訪問表,下面將討論如何指定訪問表所用的接口以及接口應(yīng)用的方向。
一般地,采用interface命令指定一個接口。例如,為了將訪問表應(yīng)用于串口0,應(yīng)使用如下命令指定此端口:
interface serial0
類似地,為將訪問表應(yīng)用于路由器的
以太網(wǎng)端口上時,假定端口為Ethernet0,則應(yīng)使用如下命令來指定此端口:
interface ethernet0
在上述三個步驟中的第三步是定義訪問表所應(yīng)用的接口方向,通常使用ip access-group命令來指定。其中,列表號標(biāo)識訪問表,而關(guān)鍵字in或out則指明訪問表所使用的方向。方向用于指出是在報文進(jìn)入或離開路由器接口時對其進(jìn)行過濾。如下的實(shí)例將這三個步驟綜合在一起:
intface serial0
ip access-group 107 in
access-list 107 remark allow traffic to tom‘s pc
access-list 107 ip any host 198.78.46.8
access-list 107 remark allow only web traffic to webserver
access-list 107 tcp any host 198.78.46.12 eq 80
access-list 107 remark block everything else
access-list 107 deny any any
在本例中,先使用interface命令指定串行端口0,并使用ipaccess-group命令來將訪問表l07中的語句應(yīng)用于串行接口的向內(nèi)方向上。最后,輸入6個訪問表語句,其中三條訪問表語句使用關(guān)鍵字remark,以提供關(guān)于列表中后繼語句的注解說明。注意訪問表中的最后一條語句,它表示了每個訪問表相關(guān)的隱含denyall設(shè)置,并且如果不顯式地列出是不會看到該語句的。如果讀者希望從路由器的控制臺端口相連的終端上直接輸入這些命令和語句,則應(yīng)該先使用EXEC特權(quán)命令。這個終端會話過程的實(shí)例如下圖所示:
此外,當(dāng)讀者配置訪問表后使用IOS的show命令查看列表時,有時很容易被顯示出來的內(nèi)容所迷惑,這是由于當(dāng)通配符屏蔽碼位被置為1(無關(guān))時,1OS將該訪問表表項的IP地址部分的該位設(shè)置為二進(jìn)制0。
例如,輸入如下的配置命令,用于創(chuàng)建一個擴(kuò)展的IP訪問表,并將其列表內(nèi)容顯示出來:
在本例中,由于C類地址的通配符屏蔽碼的主機(jī)子段被設(shè)置為全1(255),所以網(wǎng)絡(luò)198.78.46.0上的主機(jī)地址198.78.46.20被自動轉(zhuǎn)換為網(wǎng)段地址。