目錄
一、概念
1、前言
2、應用場景
3、ACL分類
基于ACL標識方法的劃分
基于對IPv4和IPv6支持情況的劃分
基于ACL規則定義方式的劃分
4、ACL的基本原理
ACL的組成
ACL的匹配機制
5、ACL常用匹配原則
6、ACL常用的匹配項?
生效時間段
IP承載的協議類型
源/目的IP地址及其通配符掩碼
源/目的MAC地址及其通配符掩碼
VLAN編號及其掩碼
TCP/UDP端口號
TCP標志信息
IP分片信息
7、ACL的生效時間段
產生背景
生效時間段模式
二、ACL配置
1.1示例拓撲圖
1.2交換機配置?
1.3路由器配置
1.4結果驗證
?三、總結
CSDN 原創主頁:不羈https://blog.csdn.net/2303_76492156?type=blog?
本文概念部分參考了華為社區技術專家的分享,配置內容則基于個人學習與實踐經驗整理而成,希望能為網絡通信安全領域的新手同行提供參考價值。
一、概念
1、前言
企業網絡中的設備進行通信時,需要保障數據傳輸的安全可靠和網絡的性能穩定。
訪問控制列表ACL(Access Control List)是由一條或多條規則組成的集合。所謂規則,是指描述報文匹配條件的判斷語句,這些條件可以是報文的源地址、目的地址、端口號等。
ACL本質上是一種報文過濾器,規則是過濾器的濾芯。設備基于這些規則進行報文匹配,可以過濾出特定的報文,并根據應用ACL的業務模塊的處理策略來允許或阻止該報文通過。
ACL可以定義一系列不同的規則,設備根據這些規則對數據包進行分類,并針對不同類型的報文進行不同的處理,從而可以實現對網絡訪問行為的控制、限制網絡流量、提高網絡性能、防止網絡攻擊等等。
2、應用場景
1、限制指定網段的主機可以訪問互聯網
2、限制指定網段的主機可以訪問內網資源
-
某企業為保證財務數據安全,禁止研發部門訪問財務服務器,但總裁辦公室不受限制。實現方式:
在Interface 1的入方向上部署ACL,禁止研發部門訪問財務服務器的報文通過。Interface 2上無需部署ACL,總裁辦公室訪問財務服務器的報文默認允許通過。
-
保護企業內網環境安全,防止Internet病毒入侵。實現方式:
在Interface 3的入方向上部署ACL,將病毒經常使用的端口予以封堵。
?ACL可以通過定義規則來允許或拒絕流量的通過。
ACL可以根據需求來定義過濾的條件以及匹配條件后所執行的動作。
3、ACL分類
基于ACL標識方法的劃分
劃分如下:
-
數字型ACL:傳統的ACL標識方法。創建ACL時,指定一個唯一的數字標識該ACL。
-
命名型ACL:通過名稱代替編號來標識ACL。
用戶在創建ACL時可以為其指定編號,不同的編號對應不同類型的ACL,如表1-1所示。同時,為了便于記憶和識別,用戶還可以創建命名型ACL,即在創建ACL時為其設置名稱。命名型ACL,也可以是“名稱 數字”的形式,即在定義命名型ACL時,同時指定ACL編號。如果不指定編號,系統則會自動為其分配一個數字型ACL的編號。
說明:
命名型ACL一旦創建成功,便不允許用戶再修改其名稱。如果刪除ACL名稱,則表示刪除整個ACL。
僅基本ACL與基本ACL6,以及高級ACL與高級ACL6,可以使用相同的ACL名稱;其他類型ACL之間,不能使用相同的ACL名稱。
命名型ACL一旦創建成功,便不允許用戶再修改其名稱。如果刪除ACL名稱,則表示刪除整個ACL。
僅基本ACL與基本ACL6,以及高級ACL與高級ACL6,可以使用相同的ACL名稱;其他類型ACL之間,不能使用相同的ACL名稱。
基于對IPv4和IPv6支持情況的劃分
劃分如下:
-
ACL4:通常直接叫做“ACL”,特指僅支持過濾IPv4報文的ACL。
-
ACL6:又叫做“IPv6 ACL”,特指僅支持過濾IPv6報文的ACL。
以上兩種ACL,以及既支持過濾IPv4報文又支持過濾IPv6報文的ACL,統一稱做“ACL”。各類型ACL對IPv4和IPv6的支持情況,如表所示。
基于ACL規則定義方式的劃分
如表所示,基于ACL規則定義方式的劃分如下。
分類 | 適用的IP版本 | 規則定義描述 | 編號范圍 |
---|---|---|---|
基本ACL | IPv4 | 僅使用報文的源IP地址、分片信息和生效時間段信息來定義規則。 | 2000~2999 |
高級ACL | IPv4 | 既可使用IPv4報文的源IP地址,也可使用目的IP地址、IP協議類型、ICMP類型、TCP源/目的端口、UDP源/目的端口號、生效時間段等來定義規則。 | 3000~3999 |
二層ACL | IPv4&IPv6 | 使用報文的以太網幀頭信息來定義規則,如根據源MAC(Media Access Control)地址、目的MAC地址、二層協議類型等。 | 4000~4999 |
用戶自定義ACL | IPv4&IPv6 | 使用報文頭、偏移位置、字符串掩碼和用戶自定義字符串來定義規則,即以報文頭為基準,指定從報文的第幾個字節開始與字符串掩碼進行“與”操作,并將提取出的字符串與用戶自定義的字符串進行比較,從而過濾出相匹配的報文。 | 5000~5999 |
用戶ACL | IPv4 | 既可使用IPv4報文的源IP地址,也可使用目的IP地址、IP協議類型、ICMP類型、TCP源端口/目的端口、UDP源端口/目的端口號等來定義規則。 | 6000~6031 |
基本ACL6 | IPv6 | 可使用IPv6報文的源IPv6地址、分片信息和生效時間段來定義規則。 | 2000~2999 |
高級ACL6 | IPv6 | 可以使用IPv6報文的源IPv6地址、目的IPv6地址、IPv6協議類型、ICMPv6類型、TCP源/目的端口、UDP源/目的端口號、生效時間段等來定義規則。 | 3000~3999 |
4、ACL的基本原理
ACL由一系列規則組成,通過將報文與ACL規則進行匹配,設備可以過濾出特定的報文。
ACL的組成
一條ACL的結構組成,如圖所示。
?
ACL編號:用于標識ACL,表明該ACL是數字型ACL。
根據ACL規則功能的不同,ACL被劃分為基本ACL、高級ACL、二層ACL和用戶ACL這幾種類型,每類ACL編號的取值范圍不同。關于每類ACL編號的詳細介紹,請參見ACL的分類。
除了可以通過ACL編號標識ACL,設備還支持通過名稱來標識ACL,就像用域名代替IP地址一樣,更加方便記憶。這種ACL,稱為命名型ACL。
命名型ACL實際上是“名字+數字”的形式,可以在定義命名型ACL時同時指定ACL編號。如果不指定編號,則由系統自動分配。例如,下面就是一個既有名字“deny-telnet-login”又有編號“3998”的ACL。
#???????????????????????????????????????????????????????????????????????????????
acl name deny-telnet-login 3998?????????????????????????????????????????????????
rule 0 deny tcp source 10.152.0.0 0.0.63.255 destination 10.64.0.97 0 destination-port eq telnet???????????????????????????????????????????????????????????????
rule 5 deny tcp source 10.242.128.0 0.0.127.255 destination 10.64.0.97 0 destination-port eq telnet????????????????????????????????????????????????????????????
# ????????
-
規則:即描述報文匹配條件的判斷語句。
-
規則編號:用于標識ACL規則。可以自行配置規則編號,也可以由系統自動分配。
ACL規則的編號范圍是0~4294967294,所有規則均按照規則編號從小到大進行排序。所以,如上圖中的rule 5排在首位,而規則編號最大的rule 4294967294排在末位。系統按照規則編號從小到大的順序,將規則依次與報文匹配,一旦匹配上一條規則即停止匹配。
-
動作:包括permit/deny兩種動作,表示允許/拒絕。
-
匹配項:ACL定義了極其豐富的匹配項。除了圖1-2中的源地址和生效時間段,ACL還支持很多其他規則匹配項。例如,二層以太網幀頭信息(如源MAC、目的MAC、以太幀協議類型)、三層報文信息(如目的地址、協議類型)以及四層報文信息(如TCP/UDP端口號)等。關于每種匹配項的詳細介紹,請參見ACL常用匹配項。
ACL的匹配機制
設備將報文與ACL規則進行匹配時,遵循“一旦命中即停止匹配”的機制,如圖所示。
?
首先系統會查找設備上是否配置了ACL。
-
如果ACL不存在,則返回ACL匹配結果為:不匹配。
-
如果ACL存在,則查找設備是否配置了ACL規則。
-
如果規則不存在,則返回ACL匹配結果為:不匹配。
-
如果規則存在,則系統會從ACL中編號最小的規則開始查找。
-
-
如果匹配上了permit規則,則停止查找規則,并返回ACL匹配結果為:匹配(允許)。
-
如果匹配上了deny規則,則停止查找規則,并返回ACL匹配結果為:匹配(拒絕)。
-
如果未匹配上規則,則繼續查找下一條規則,以此循環。如果一直查到最后一條規則,報文仍未匹配上,則返回ACL匹配結果為:不匹配。
從整個ACL匹配流程可以看出,報文與ACL規則匹配后,會產生兩種匹配結果:“匹配”和“不匹配”。
-
匹配(命中規則):指存在ACL,且在ACL中查找到了符合匹配條件的規則。
不論匹配的動作是“permit”還是“deny”,都稱為“匹配”,而不是只是匹配上permit規則才算“匹配”。
-
不匹配(未命中規則):指不存在ACL,或ACL中無規則,再或者在ACL中遍歷了所有規則都沒有找到符合匹配條件的規則。
以上三種情況,都叫做“不匹配”。
5、ACL常用匹配原則
配置ACL規則時,可以遵循以下原則:
-
如果配置的ACL規則存在包含關系,應注意嚴格條件的規則編號需要排序靠前,寬松條件的規則編號需要排序靠后,避免報文因命中寬松條件的規則而停止往下繼續匹配,從而使其無法命中嚴格條件的規則。
-
根據各業務模塊ACL默認動作的不同,ACL的配置原則也不同。例如,在默認動作為permit的業務模塊中,如果只希望deny部分IP地址的報文,只需配置具體IP地址的deny規則,結尾無需添加任意IP地址的permit規則;而默認動作為deny的業務模塊恰與其相反。詳細的ACL常用配置原則,如表所示。
說明:?
以下rule的表達方式僅是示意形式,實際配置方法請參考各類ACL規則的命令行格式。
rule permit xxx/rule permit xxxx:表示允許指定的報文通過,xxx/xxxx表示指定報文的標識,可以是源IP地址、源MAC地址、生效時間段等。xxxx表示的范圍與xxx表示的范圍是包含關系,例如xxx是某一個IP地址,xxxx可以是該IP地址所在的網段地址或any(表示任意IP地址);再如xxx是周六的某一個時段,xxxx可以是雙休日全天時間或一周七天全部時間。
rule deny xxx/rule deny xxxx:表示拒絕指定的報文通過。
rule permit:表示允許所有報文通過。
rule deny:表示拒絕所有報文通過。
以下rule的表達方式僅是示意形式,實際配置方法請參考各類ACL規則的命令行格式。
-
rule permit xxx/rule permit xxxx:表示允許指定的報文通過,xxx/xxxx表示指定報文的標識,可以是源IP地址、源MAC地址、生效時間段等。xxxx表示的范圍與xxx表示的范圍是包含關系,例如xxx是某一個IP地址,xxxx可以是該IP地址所在的網段地址或any(表示任意IP地址);再如xxx是周六的某一個時段,xxxx可以是雙休日全天時間或一周七天全部時間。
-
rule deny xxx/rule deny xxxx:表示拒絕指定的報文通過。
-
rule permit:表示允許所有報文通過。
-
rule deny:表示拒絕所有報文通過。
業務模塊的ACL默認動作 | permit所有報文 | deny所有報文 | permit少部分報文,deny大部分報文 | deny少部分報文,permit大部分報文 |
---|---|---|---|---|
permit | 無需應用ACL | 配置rule deny | 需先配置rule permit xxx,再配置rule deny xxxx或rule deny 說明:以上原則適用于報文過濾的情形。當ACL應用于流策略中進行流量監管或者流量統計時,如果僅希望對指定的報文進行限速或統計,則只需配置rule permit xxx。 | 只需配置rule deny xxx,無需再配置rule permit xxxx或rule permit 說明:如果配置rule permit并在流策略中應用ACL,且該流策略的流行為behavior配置為deny,則設備會拒絕所有報文通過,導致全部業務中斷。 |
deny |
|
| 只需配置rule permit xxx,無需再配置rule deny xxxx或rule deny | 需先配置rule deny xxx,再配置rule permit xxxx或rule permit |
舉例:
-
例1:在流策略中應用ACL,使設備對192.168.1.0/24網段的報文進行過濾,拒絕192.168.1.2和192.168.1.3主機地址的報文通過,允許192.168.1.0/24網段的其他地址的報文通過。
流策略的ACL默認動作為permit,該例屬于“deny少部分報文,permit大部分報文”的情況,所以只需配置rule deny xxx。
# acl number 2000 rule 5 deny source 192.168.1.2 0 rule 10 deny source 192.168.1.3 0 #
-
例2:在流策略中應用ACL,使設備對192.168.1.0/24網段的報文進行過濾,允許192.168.1.2和192.168.1.3主機地址的報文通過,拒絕192.168.1.0/24網段的其他地址的報文通過。
流策略的ACL默認動作為permit,該例屬于“permit少部分報文,deny大部分報文”的情況,所以需先配置rule permit xxx,再配置rule deny xxxx。
# acl number 2000 rule 5 permit source 192.168.1.2 0 rule 10 permit source 192.168.1.3 0 rule 15 deny source 192.168.1.0 0.0.0.255 #
-
例3:在Telnet中應用ACL,僅允許管理員主機(IP地址為172.16.105.2)能夠Telnet登錄設備,其他用戶不允許Telnet登錄。
Telnet的ACL默認動作為deny,該例屬于“permit少部分報文,deny大部分報文”的情況,所以只需配置rule permit xxx。
# acl number 2000 rule 5 permit source 172.16.105.2 0 # ???
-
例4:在Telnet中應用ACL,不允許某兩臺主機(IP地址為172.16.105.3和172.16.105.4)Telnet登錄設備,其他用戶均允許Telnet登錄。
Telnet的ACL默認動作為deny,該例屬于“deny少部分報文,permit大部分報文”的情況,所以需先配置rule deny xxx,再配置rule permit。
# acl number 2000 rule 5 deny source 172.16.105.3 0 rule 10 deny source 172.16.105.4 0 rule 15 permit # ???
-
例5:在FTP中應用ACL,不允許用戶在周六的00:00~8:00期間訪問FTP服務器,允許用戶在其他任意時間訪問FTP服務器。
FTP的ACL默認動作為deny,該例屬于“deny少部分報文,permit大部分報文”的情況,所以需先配置rule deny xxx,再配置rule permit xxxx。
# time-range t1 00:00 to 08:00 Sat time-range t2 00:00 to 23:59 daily # acl number 2000 rule 5 deny time-range t1 rule 10 permit time-range t2 #
6、ACL常用的匹配項?
設備支持的ACL匹配項種類非常豐富,其中最常用的匹配項包括以下幾種。
生效時間段
格式:time-range?time-name
所有ACL均支持根據生效時間段過濾報文。關于生效時間段的詳細介紹,請參見ACL的生效時間段。
IP承載的協議類型
格式:protocol-number?|?icmp?|?tcp?|?udp?|?gre?|?igmp?|?ip?|?ipinip?|?ospf
高級ACL支持基于協議類型過濾報文。常用的協議類型包括:ICMP(協議號1)、TCP(協議號6)、UDP(協議號17)、GRE(協議號47)、IGMP(協議號2)、IP(指任何IP層協議)、IPinIP(協議號4)、OSPF(協議號89)。協議號的取值可以是1~255。
例如,當設備某個接口下的用戶存在大量的攻擊者時,如果希望能夠禁止這個接口下的所有用戶接入網絡,則可以通過指定協議類型為IP來屏蔽這些用戶的IP流量來達到目的。配置如下:
rule deny ip //表示拒絕IP報文通過
再如,設備上打開透明防火墻功能后,在缺省情況下,透明防火墻會在域間丟棄所有入域間的報文,包括業務報文和協議報文。如果希望像OSPF這樣的動態路由協議報文能正常通過防火墻,保證路由互通,這時,通過指定協議類型為OSPF即可解決問題。
rule permit ospf? //表示允許OSPF報文通過
源/目的IP地址及其通配符掩碼
源IP地址及其通配符掩碼格式:source?{?source-address source-wildcard?|?any?}
目的IP地址及其通配符掩碼格式:
destination?{?destination-address destination-wildcard?|?any?}
基本ACL支持根據源IP地址過濾報文,高級ACL不僅支持源IP地址,還支持根據目的IP地址過濾報文。
將源/目的IP地址定義為規則匹配項時,需要在源/目的IP地址字段后面同時指定通配符掩碼,用來與源/目的IP地址字段共同確定一個地址范圍。
IP地址通配符掩碼與IP地址的反向子網掩碼類似,也是一個32比特位的數字字符串,用于指示IP地址中的哪些位將被檢查。各比特位中,“0”表示“檢查相應的位”,“1”表示“不檢查相應的位”,概括為一句話就是“檢查0,忽略1”。但與IP地址子網掩碼不同的是,子網掩碼中的“0”和“1”要求必須連續,而通配符掩碼中的“0”和“1”可以不連續。
通配符掩碼可以為0,相當于0.0.0.0,表示源/目的地址為主機地址;也可以為255.255.255.255,表示任意IP地址,相當于指定any參數。
舉一個IP地址通配符掩碼的示例,當希望來自192.168.1.0/24網段的所有IP報文都能夠通過,可以配置如下規則:
rule 5 permit ip source 192.168.1.0 0.0.0.255
規則中的通配符掩碼為0.0.0.255,表示只需檢查IP地址的前三組二進制八位數對應的比特位。因此,如果報文源IP地址的前24個比特位與參照地址的前24個比特位(192.168.1)相同,即報文的源IP地址是192.168.1.0/24網段的地址,則允許該報文通過。下表 展示了該例的地址范圍計算過程。
項目 | 十進制等價值 | 二進制等價值 |
---|---|---|
參照地址 | 192.168.1.0 | 11000000.10101000.00000001.00000000 |
通配符掩碼 | 0.0.0.255 | 00000000.00000000.00000000.11111111 |
確定的地址范圍 | 192.168.1.* *表示0~255之間的整數 | 11000000.10101000.00000001.xxxxxxxx x既可以是0,也可以是1 |
更多的IP地址與通配符掩碼共同確定的地址范圍示例,詳見下表。
IP地址 | IP地址通配符掩碼 | 確定的地址范圍 |
---|---|---|
0.0.0.0 | 255.255.255.255 | 任意IP地址 |
172.18.0.0 | 0.0.255.255 | 172.18.0.0/16網段的IP地址 |
172.18.5.2 | 0.0.0.0 | 僅172.18.5.2這一個主機地址 |
172.18.8.0 | 0.0.0.7 | 172.18.8.0/29網段的IP地址 |
172.18.8.8 | 0.0.0.7 | 172.18.8.8/29網段的IP地址 |
10.1.2.0 | 0.0.254.255(通配符掩碼中的1和0不連續) | 10.1.0.0/24~10.1.254.0/24網段之間且第三個字節為偶數的IP地址,如10.1.0.0/24、10.1.2.0/24、10.1.4.0/24、10.1.6.0/24等。 |
源/目的MAC地址及其通配符掩碼
源MAC地址及其通配符掩碼格式:source-mac?source-mac-address?[?source-mac-mask?]
目的地址及其通配符掩碼格式:destination-mac?dest-mac-address?[?dest-mac-mask?]
僅二層ACL支持基于源/目的MAC地址過濾報文。
將源/目的MAC地址定義為規則匹配項時,可以在源/目的MAC地址字段后面同時指定通配符掩碼,用來與源/目的MAC地址字段共同確定一個地址范圍。
MAC地址通配符掩碼的格式與MAC地址相同,采用十六進制數表示,共六個字節(48位),用于指示MAC地址中的哪些位將被檢查。與IP地址通配符掩碼不同的是,MAC地址通配符掩碼各比特位中,1表示“檢查相應的位”,0表示“不檢查相應的位”。如果不指定通配符掩碼,則默認掩碼為ffff-ffff-ffff,表示檢查MAC地址的每一位。
MAC地址與通配符掩碼共同確定的地址范圍示例,如表所示。
MAC地址 | MAC地址通配符掩碼 | 確定的地址范圍 |
---|---|---|
00e0-fc01-0101 | 0000-0000-0000 | 任意MAC地址 |
00e0-fc01-0101 | ffff-ffff-ffff | 僅00e0-fc01-0101這一個MAC地址 |
00e0-fc01-0101 | ffff-ffff-0000 | 00e0-fc01-0000~00e0-fc01-ffff |
VLAN編號及其掩碼
外層VLAN及其掩碼格式:vlan-id?vlan-id?[?vlan-id-mask?]
內層VLAN及其掩碼格式:cvlan-id?cvlan-id?[?cvlan-id-mask?]
二層ACL支持基于外層VLAN或內層VLAN編號過濾報文。
將VLAN編號定義為規則匹配項時,可以在VLAN編號字段后面同時指定VLAN掩碼,用來與VLAN編號字段共同確定一個VLAN范圍。
VLAN掩碼的格式是十六進制形式,取值范圍是0x0~0xFFF。如果不指定VLAN掩碼,則默認掩碼為0xFFF,表示檢查VLAN編號的每一位。
VLAN編號與掩碼共同確定的VLAN范圍示例,如表所示。
VLAN編號 | VLAN掩碼 | 確定的VLAN范圍 |
---|---|---|
10 | 0x000 | 任意VLAN |
10 | 0xFFF | 僅VLAN 10 |
10 | 0xFF0 | VLAN 1~VLAN 10 |
TCP/UDP端口號
源端口號格式:source-port?{?eq?port?|?gt?port?|?lt?port?|?range?port-start?port-end?}
目的端口號格式:destination-port?{?eq?port?|?gt?port?|?lt?port?|?range?port-start?port-end?}
在高級ACL中,當協議類型指定為TCP或UDP時,設備支持基于TCP/UDP的源/目的端口號過濾報文。
其中,TCP/UDP端口號的比較符含義如下:
-
eq?port:指定等于源/目的端口。
-
gt?port:指定大于源/目的端口。
-
lt?port:指定小于源/目的端口。
-
range?port-start?port-end:指定源/目的端口的范圍。port-start是端口范圍的起始,port-end是端口范圍的結束。
TCP/UDP端口號可以使用數字表示,也可以用字符串(助記符)表示。例如,rule deny tcp destination-port eq 80,可以用rule deny tcp destination-port eq www替代。
常見TCP和UDP端口號及其對應的服務名稱如下表所示。
常見TCP和UDP端口號及其對應的服務名稱如下表所示。
端口號 | 字符串 | 協議 | 說明 |
---|---|---|---|
7 | echo | Echo | Echo服務 |
9 | discard | Discard | 用于連接測試的空服務 |
13 | daytime | Daytime | 給請求主機發送日期和時間 |
19 | CHARgen | Character generator | 字符生成服務;發送無止境的字符流 |
20 | ftp-data | FTP data connections | FTP數據端口 |
21 | ftp | File Transfer Protocol(FTP) | 文件傳輸協議(FTP)端口 |
23 | telnet | Telnet | Telnet服務 |
25 | smtp | Simple Mail Transport Protocol (SMTP) | 簡單郵件傳輸協議 |
37 | time | Time | 時間協議 |
43 | whois | Nickname(WHOIS) | 目錄服務 |
49 | tacacs | TAC Access Control System (TACACS) | 用于基于TCP/IP驗證和訪問的訪問控制系統(TACACS登錄主機協議) |
53 | domain | Domain Name Service (DNS) | 域名服務 |
70 | gopher | Gopher | 信息檢索協議(互聯網文檔搜尋和檢索) |
79 | finger | Finger | 用于用戶聯系信息的Finger服務,查詢遠程主機在線用戶等信息 |
80 | www | World Wide Web (HTTP) | 用于萬維網(WWW)服務的超文本傳輸協議(HTTP),用于網頁瀏覽 |
101 | hostname | NIC hostname server | NIC機器上的主機名服務 |
109 | pop2 | Post Office Protocol v2 | 郵件協議-版本2 |
110 | pop3 | Post Office Protocol v3 | 郵件協議-版本3 |
111 | sunrpc | Sun Remote Procedure Call (RPC) | SUN公司的遠程過程調用(RPC)協議,用于遠程命令執行,被網絡文件系統(NFS)使用 |
119 | nntp | Network News Transport Protocol (NNTP) | 網絡新聞傳輸協議,承載USENET通信 |
179 | bgp | Border Gateway Protocol (BGP) | 邊界網關協議 |
194 | irc | Internet Relay Chat (IRC) | 互聯網中繼聊天(多線交談協議) |
512 | exec | Exec (rsh) | 用于對遠程執行的進程進行驗證 |
513 | login | Login (rlogin) | 遠程登錄 |
514 | cmd | Remote commands | 遠程命令,不必登錄的遠程shell(rshell)和遠程復制(rcp) |
515 | lpd | Printer service | 打印機(lpr)假脫機 |
517 | talk | Talk | 遠程對話服務和客戶 |
540 | uucp | Unix-to-Unix Copy Program | Unix到Unix復制服務 |
543 | klogin | Kerberos login | Kerberos版本5(v5)遠程登錄 |
544 | kshell | Kerberos shell | Kerberos版本5(v5)遠程shell |
端口號 | 字符串 | 協議 | 說明 |
---|---|---|---|
7 | echo | Echo | Echo服務 |
9 | discard | Discard | 用于連接測試的空服務 |
37 | time | Time | 時間協議 |
42 | nameserver | Host Name Server | 主機名服務 |
53 | dns | Domain Name Service (DNS) | 域名服務 |
65 | tacacs-ds | TACACS-Database Service | TACACS數據庫服務 |
67 | bootps | Bootstrap Protocol Server | 引導程序協議(BOOTP)服務端,DHCP服務使用 |
68 | bootpc | Bootstrap Protocol Client | 引導程序協議(BOOTP)客戶端,DHCP客戶使用 |
69 | tftp | Trivial File Transfer Protocol (TFTP) | 小文件傳輸協議 |
90 | dnsix | DNSIX Security Attribute Token Map | DNSIX安全屬性標記圖 |
111 | sunrpc | SUN Remote Procedure Call (SUN RPC) | SUN公司的遠程過程調用(RPC)協議,用于遠程命令執行,被網絡文件系統(NFS)使用 |
123 | ntp | Network Time Protocol (NTP) | 網絡時間協議,蠕蟲病毒會利用 |
137 | netbios-ns | NETBIOS Name Service | NETBIOS名稱服務 |
138 | netbios-dgm | NETBIOS Datagram Service | NETBIOS數據報服務 |
139 | netbios-ssn | NETBIOS Session Service | NETBIOS會話服務 |
161 | snmp | SNMP | 簡單網絡管理協議 |
162 | snmptrap | SNMPTRAP | SNMP陷阱 |
177 | xdmcp | X Display Manager Control Protocol (XDMCP) | X顯示管理器控制協議 |
434 | mobilip-ag | MobileIP-Agent | 移動IP代理 |
435 | mobilip-mn | MobileIP-MN | 移動IP管理 |
512 | biff | Mail notify | 異步郵件,可用來通知用戶有郵件到達 |
513 | who | Who | 登錄的用戶列表 |
514 | syslog | Syslog | UNIX系統日志服務 |
517 | talk | Talk | 遠程對話服務器和客戶端 |
520 | rip | Routing Information Protocol | RIP路由協議 |
TCP標志信息
格式:tcp-flag?{?ack?|?established?|?fin?|?psh?|?rst?|?syn?|?urg?}*
在高級ACL中,當協議類型指定為TCP時,設備支持基于TCP標志信息過濾報文。
TCP報文頭有6個標志位:
-
URG(100000):標識緊急指針有效
-
ACK(010000):標識確認序號有效
-
PSH(001000):標識接收方應該盡快將這個報文段上交給應用層
-
RST(000100):標識重建連接
-
SYN(000010):同步序號,用來發起一個連接
-
FIN(000001):標識發送方完成發送任務
TCP標志信息中的established,表示標志位為ACK(010000)或RST(000100)。
指定tcp-flag的ACL規則可以用來實現單向訪問控制。假設,要求192.168.1.0/24網段用戶可以主動訪問192.168.2.0/24網段用戶,但反過來192.168.2.0/24網段用戶不能主動訪問192.168.1.0/24。可通過在設備上連接192.168.2.0/24網段的接口入方向上,應用ACL規則來實現該需求。
由TCP建立連接和關閉連接的過程可知,只有在TCP中間連接過程的報文才會ACK=1或者RST=1。根據這個特點,配置如下兩種ACL規則,允許TCP中間連接過程的報文通過,拒絕該網段的其他TCP報文通過,就可以限制192.168.2.0/24網段主動發起的TCP連接。
-
類型一:配置指定ack和rst參數的ACL規則
rule 5 permit tcp source 192.168.2.0 0.0.0.255 tcp-flag ack? //允許ACK=1的TCP報文通過??????? rule 10 permit tcp source 192.168.2.0 0.0.0.255 tcp-flag rst?? //允許RST=1的TCP報文通過 rule 15 deny tcp source 192.168.2.0 0.0.0.255? //拒絕該網段的其他TCP報文通過 ????
-
類型二:配置指定established參數的ACL規則
rule permit tcp source 192.168.2.0 0.0.0.255 tcp-flag established? // established表示ACK=1或者RST=1,表示允許TCP中間連接過程的報文通過 rule deny tcp source 192.168.2.0 0.0.0.255???? //拒絕該網段的其他TCP報文通過 ???
IP分片信息
格式:none-first-fragment
基本ACL和高級ACL支持基于IP分片信息過濾報文。
IP分片除了首片報文外,還有后續分片報文,又叫做非首片分片報文。僅首片分片報文攜帶四層信息(如TCP/UDP端口號等),后續分片報文均不攜帶。網絡設備收到分片報文后,會判斷其是否是最后一個分片報文。如果不是,則為其分配內存空間,以便于最后一個分片報文到達后完成重組。黑客可以利用這一點,向接收方設備發起分片報文攻擊,始終不向接收方發送最后一個分片報文,使得接收方的內存得不到及時釋放(接收方會啟動一個分片重組的定時器,在定時器超時前如果無法完成重組,將向發送方發送ICMP重組超時差錯報文;如果定時器超時后仍未完成重組,則丟棄已存儲的分片報文)。在分片報文發送數量很多并且發送速度很快的情況下,接收方的內存很容易被占滿,從而導致接收方沒有足夠的內存資源處理其他正常的業務。
為了解決這個問題,可以配置指定none-first-fragment匹配項的ACL規則來阻塞非首片分片報文,從而達到防范分片報文攻擊的目的。
針對非分片報文、首片分片報文、非首片分片報文這三類報文,ACL的處理方式如表所示。
規則包含的匹配項 | 非分片報文 | 首片分片報文 | 非首片分片報文 |
---|---|---|---|
三層信息(如源/目的IP地址) | 三層信息匹配上,則返回匹配結果(permit/deny);未匹配上,則轉下一條規則進行匹配 | 三層信息匹配上,則返回匹配結果(permit/deny);未匹配上,則轉下一條規則進行匹配 | 三層信息匹配上,則返回匹配結果(permit/deny);未匹配上,則轉下一條規則進行匹配 |
三層信息 + 四層信息(如TCP/UDP端口號) | 三層和四層信息都匹配上,則返回匹配結果(permit/deny);未匹配上,則轉下一條規則進行匹配 | 三層和四層信息都匹配上,則返回匹配結果(permit/deny);未匹配上,則轉下一條規則進行匹配 | 不匹配,轉下一條規則進行匹配 |
三層信息 +?none-first-fragment | 不匹配,轉下一條規則進行匹配 | 不匹配,轉下一條規則進行匹配 | 三層信息匹配上,則返回匹配結果(permit/deny);未匹配上,則轉下一條規則進行匹配 |
例如,ACL 3012中存在以下規則:
#
acl number 3012 rule 5 deny tcp destination 192.168.2.2 0 none-first-fragment rule 10 permit tcp destination 192.168.2.2 0 destination-port eq www rule 15 deny ip
#
-
該報文是非分片報文或首片分片報文時:如果該報文的目的端口號是80(www對應的端口號是80),則報文與rule 10匹配,報文被允許通過;如果該報文的目的端口號不是80,則報文與rule 15匹配,報文被拒絕通過。
-
該報文是非首片分片報文時:該報文與rule 5匹配,報文被拒絕通過。
7、ACL的生效時間段
產生背景
ACL定義了豐富的匹配項,可以滿足大部分的報文過濾需求。但需求是不斷變化發展的,新的需求總是不斷涌現。例如,某公司要求,在上班時間只允許員工瀏覽與工作相關的幾個網站,下班或周末時間才可以訪問其他互聯網網站;再如,在每天20:00~22:00的網絡流量的高峰期,為防止P2P、下載類業務占用大量帶寬對其他數據業務的正常使用造成影響,需要對P2P、下載類業務的帶寬進行限制。
基于時間的ACL過濾就是用來解決上述問題的。管理員可以根據網絡訪問行為的要求和網絡的擁塞情況,配置一個或多個ACL生效時間段,然后在ACL規則中引用該時間段,從而實現在不同的時間段設置不同的策略,達到網絡優化的目的。
生效時間段模式
在ACL規則中引用的生效時間段存在兩種模式:
- 第一種模式——周期時間段:以星期為參數來定義時間范圍,表示規則以一周為周期(如每周一的8至12點)循環生效。
格式:time-range?time-name?start-time?to?end-time?{?days?} &<1-7>
- time-name:時間段名稱,以英文字母開頭的字符串。
- start-time?to?end-time:開始時間和結束時間。格式為[小時:分鐘] to [小時:分鐘]。
- days:有多種表達方式。
-
Mon、Tue、Wed、Thu、Fri、Sat、Sun中的一個或者幾個的組合,也可以用數字表達,0表示星期日,1表示星期一,……6表示星期六。
-
working-day:從星期一到星期五,五天。
-
daily:包括一周七天。
-
off-day:包括星期六和星期日,兩天。
-
- 第二種模式——絕對時間段:從某年某月某日的某一時間開始,到某年某月某日的某一時間結束,表示規則在這段時間范圍內生效。
格式:time-range?time-name?from?time1?date1?[?to?time2?date2?]
- time-name:時間段名稱,以英文字母開頭的字符串。
- time1/time2:格式為[小時:分鐘]。
- date1/date2:格式為[YYYY/MM/DD],表示年/月/日。
可以使用同一名稱(time-name)配置內容不同的多條時間段,配置的各周期時間段之間以及各絕對時間段之間的交集將成為最終生效的時間范圍。
例如,在ACL 2001中引用了時間段“test”,“test”包含了三個生效時間段:
# time-range test 8:00 to 18:00 working-day time-range test 14:00 to 18:00 off-day time-range test from 00:00 2014/01/01 to 23:59 2014/12/31 # acl number 2001 rule 5 permit time-range test
- 第一個時間段,表示在周一到周五每天8:00到18:00生效,這是一個周期時間段。
- 第二個時間段,表示在周六、周日下午14:00到18:00生效,這是一個周期時間段。
- 第三個時間段,表示從2014年1月1日00:00起到2014年12月31日23:59生效,這是一個絕對時間段。
時間段“test”最終描述的時間范圍為:2014年的周一到周五每天8:00到18:00以及周六和周日下午14:00到18:00。
二、ACL配置
1.1示例拓撲圖
配置要求:vlan2和vlan3在交換機內隔離,僅允許192.168.0.2訪問server網段10.10.1.1
1.2交換機配置?
1、交換機創建vlan 2 3 ,配置vlanif,給接口設置vlan
sys
vlan batch 2 to 3
int vlanif 2
ip address 192.168.0.1 255.255.255.0
int vlanif 3
ip address 192.168.1.1 255.255.255 0int g0/0/1
port link-type access
port default vlan 2 #僅允許vlan2 兩個vlan不互通int g0/0/2
port link-type access
port default vlan 3 #僅允許vlan3
2、交換機trunk模式連接路由器
int g0/0/24
port link-type trunk
quit
int g0/0/24
port trunk allow-pass vlan 2 3
1.3路由器配置
1、路由器配置ACL基本配置2000,給網段192.168.0.0/24設置permit,給192.168.1.0/24設置deny
acl 2000
rule 5 permit source 192.168.0.0 0.0.0.255 #規則5 放行192.168.0.0/24
rule 10 deny source 192.168.1.0 0.0.0.255 #規則10 拒絕192.168.1.0/24
rule 30 permit source 10.10.1.0 0.0.0.255 #規則30 放行10.10.1.0/24
dis this#
acl number 2000
rule 5 permit source 192.168.0.0 0.0.0.255
rule 10 deny source 192.168.1.0 0.0.0.255
rule 30 permit source 10.10.1.0 0.0.0.255
#return
?2、配置g0/0/0的子接口連接路由器,配置g0/0/1的acl表
#配置子接口
int g0/0/0.2 #配置子接口1 劃分 vlan 2
dot1q termination vid 2
ip address 192.168.0.1 255.255.255.0
int g0/0/0.3 #配置子接口2 劃分 vlan 3
dot1q termination vid 3
ip address 192.168.1.1 255.255.255.0#配置g0/0/1的acl
int g0/0/1
traffic-filter inbound ac 2000
ip address 10.10.1.1 255.255.255.0
dis this
1.4結果驗證
路由器ACL表中有10.10.1.0有流量通過,并且只有192.168.0.2主機可以訪問目標網段(注:此時10.10.1.2主機無法直接ping,概率是環境原因)
?三、總結
ACL(訪問控制列表)是網絡安全的重要組成部分,用于控制數據包的流入流出。以下是其配置核心點的總結:
-
分類:標準 ACL(基于源 IP 過濾,編號 1-99)和擴展 ACL(基于源 / 目的 IP、端口、協議過濾,編號 100-199)。
-
配置步驟:
- 創建 ACL:
acl number [id] [match-order config|auto]
- 添加規則:
rule [permit|deny] [source/destination/port/protocol]
- 應用到接口:
traffic-filter [inbound|outbound] acl [id]
- 創建 ACL:
-
規則順序:按配置順序匹配,默認隱含
deny any
結尾,需注意規則優先級。 -
注意事項:避免冗余規則,謹慎使用
permit any
,定期審計優化。 -
驗證命令:
display acl [id]
查看規則,display traffic-filter applied-record
檢查應用情況。
合理配置 ACL 可有效保護網絡資源,需結合網絡拓撲和安全需求制定策略。
---------------E-----------N-------------D---------------?