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