一個動態ACL的案例
所在的單位有一臺路由器將兩個乙太網段連到了internet上,路由器是通過串列埠0連
到internet上的,而乙太網分別通過埠E 0和E 1連到路由器上。假設我們希望允許任
何使用者都能通過I P訪問1 9 8 . 7 8 . 4 6 . 1 2伺服器,並允許2 0 5 . 1 3 1 . 1
7 5 . 0網路上的使用者通過We b瀏覽(h t t p)和F T P訪問I n t e r n e t。
useranme test password cisco
!
int serial 0
ip add 175.10.1.1 255.255.255.0
ip access-group 100 in
!
access-list 100 permit tcp any host 175.10.1.1 eq telnet
access-list 100 permit udp any eq 53 205.131.175.0 0.0.0.255 gt 1023
established
access-list 100 permit tcp any eq 21 205.131.175.0 0.0.0.255 gt 1023
established
access-list 100 permit tcp any eq 20 205.131.175.0 0.0.0.255 gt 1023
access-list 100 dynamic test timeout 180 permit ip any host 198.76.46.12 log
!
logging buffered 64000
!
line vty 0 2
login local
autocommand access-enable host timeout 10
line vty 3 4
login local
rotary 1
首先,我們注意到訪問表被應用到了串列埠上。將擴充套件訪問表應用到離過濾源最近的
地方,這是一種很好的方法。在本例中,我們的目的是要過濾I n t e r n e t上的主機
,所以串列埠是路由器上離被過濾主機最近的埠。訪問表應用的方向是向內的,因
為從路由器的角度看來, I n t e r n e t來的報文是流向路由器的。如果我們將訪問
表應用成向外的訪問,則過濾的報文將是離開序列介面而通往I n t e r n e t的報文,
而這並非我們所希望的。另外,我們還建立了一個使用者名稱“ t e s t”,它可以用來訪
問路由器。在實際應用中,我們應該為每個使用者建立一對用
戶名和口令。現在,讓我們再分析訪問表的每一個表項。
第一個表項允許從任何源I P地址來的報文到達主機1 7 5 . 1 0 . 1 . 1,如果其目標
埠為t e l n e t(2 3)的話。這樣,我們實際上允許了向內的t e l n e t連線到路
由器的序列介面。我們可以允許向內的t e l n e t,連線到路由器的其他I P地址,但
只允許向內訪問路由器的序列介面是一種最佳的選擇。
第二個表項允許從任何源I P地址來的報文,如果其源埠是域名系統( domain
namesystem, DNS)(UDP 53),且目標網路位於2 0 5 . 1 3 1 . 1 7 5 . 0 / 2 4,
目的埠大於1 0 2 3的話。這將允許D N S應答到達2 0 5 . 1 3 1 . 1 7 5 . 0 / 2
4網路。所有有效D N S請求的源埠應該為1 0 2 4或更大,因此有效D N S的應答就應
傳送到此1 0 2 4或更高的埠。如果我們不指定目的埠大於1 0 2 3,則攻擊者可以
從源埠5 3傳送U D P報文到達我們的網路,從而導致對內部伺服器的拒絕服務(denia
l-of-service, DOS)攻擊。大量的伺服器埠都處於小於1 0 2 4的保留區間內,所以
我們應阻塞目的埠小於1 0 2 4的報文,以關閉潛在的安全漏洞。
第三和第四個表項允許具有如下特徵的報文進入:源埠為W W W(TCP 80 )或F T P(
TCP 21),目標位於2 0 5 . 1 3 1 . 1 7 5 . 0 / 2 4網路,目標埠大於1 0 2 3,
且T C P頭中設定了A C K和R S T位。這兩個表項允許由內部主機發起的W W W和F T P會
話的返回報文。指定源埠和目的埠的原因與第二個表項相同。使用e s t a b l i
s h e d意味著只有設定了應答位( A C K)和復位位(R S T)的報文才能夠匹配並允
許通過訪問表項。只有那些已經建立了T C P會話的報文才會設定這些位,這樣增加了訪
問表的安全層次。值得注意的是,攻擊者很容易在向內的報文中手工設定這些位,所以
這種檢測是十分簡單的。但是,如果內部網路採用正確的T C P / I P協議棧,
它們就會忽略這些帶A C K和R S T位的向內報文,因為它們不是主機上合法的T C P會話
的一部分,這就是為什麼e s t a b l i s h e d關鍵字仍然十分重要的原因。注意,這
種檢驗對U D P報文是無用的,這就是為什麼在第二個訪問表項中沒有該關鍵字的原因。
第五個表項允許那些從源埠為2 0的任何主機向內報文到達網路2 0 5 . 1 3 1 . 1
7 5 . 0 / 2 4的主機,
如果其目的埠大於1 0 2 3的話,允許了那些由內部主機發起的F T P部分資料的報文
連線到內部主機。F T P協議實現的標準實現需要F T P伺服器發回一個到源F T P客戶機
連線。該連線的初始報文沒有設定A C K或R S T位,所以我們在表項中不能使用e s t
a b l i s h e d關鍵字。有一種版本的F T P稱為被動模式( passive mode)的F T P
,或稱為PA S C,它不需要伺服器發起一個向源F T P客戶機的連線。在這種模式的F
T P中,客戶機需要發起到F T P伺服器非2 0埠的另一個連線。該埠是大於1 0 2 3
的一種隨機選擇。我們允許所有大於1023 TCP埠的報文通過,是因為我們不能進一步
確定F T P伺服器會選擇哪一個埠(被動模式F T P伺服器的資料埠不為2 0,這與普
通模式F T P是不同的)。儘管我們不能讓該表項如我們所希望的那樣確切, e s t a
b l i s h e d關鍵字仍能使該表項比允許外部發起向內部網路的會話要安全一些。
第六個表項(也是最後一個表項)為動態訪問表項,它允許來自被認證主機的報文到達
伺服器1 9 8 . 7 8 . 4 6 . 1 2。我們定義的絕對超時時間為3小時( 1 8 0分鐘),
並對該表項進行了日誌記錄(我們還開啟了路由器緩衝區的日誌)。通過將匹配動態表
項的報文進行記錄,我們可以跟蹤使用者的行為,並建立一個普通的基線。這樣,我們可
以發現不正常的行為,並由此判斷這是否是由攻擊者產生的。我們還將動態訪問表項的
空閒時間設定成了1 0分鐘,這是在v t y線配置中通過a u t o c o m m a n d設定的。
最好是將這兩個值都設上,這樣我們能減少動態表項處於
活躍狀態的時間,因此也減少了攻擊者衝破動態表項的可能性。
空閒計時器在每有一個報文匹配動態訪問表項時進行復位。而絕對計時器是不復位的。
即使一個會話仍然處於活躍狀態,如果絕對超時達到,動態表項就會被刪除,從而使用者
需要再經過一個認證過程。如果他們有經過路由器的活躍會話,這些會話將被終止。正
因如此,我們建議將絕對超時設定得相對大一些,一般為一個小時或更長一些的時間。
但我們應該將空閒時間設定得小一些,一般為1 0分鐘或更短的時間。我們認為,不應將
到internet上的,而乙太網分別通過埠E 0和E 1連到路由器上。假設我們希望允許任
何使用者都能通過I P訪問1 9 8 . 7 8 . 4 6 . 1 2伺服器,並允許2 0 5 . 1 3 1 . 1
7 5 . 0網路上的使用者通過We b瀏覽(h t t p)和F T P訪問I n t e r n e t。
useranme test password cisco
!
int serial 0
ip add 175.10.1.1 255.255.255.0
ip access-group 100 in
!
access-list 100 permit tcp any host 175.10.1.1 eq telnet
access-list 100 permit udp any eq 53 205.131.175.0 0.0.0.255 gt 1023
established
access-list 100 permit tcp any eq 21 205.131.175.0 0.0.0.255 gt 1023
established
access-list 100 permit tcp any eq 20 205.131.175.0 0.0.0.255 gt 1023
access-list 100 dynamic test timeout 180 permit ip any host 198.76.46.12 log
!
logging buffered 64000
!
line vty 0 2
login local
autocommand access-enable host timeout 10
line vty 3 4
login local
rotary 1
首先,我們注意到訪問表被應用到了串列埠上。將擴充套件訪問表應用到離過濾源最近的
地方,這是一種很好的方法。在本例中,我們的目的是要過濾I n t e r n e t上的主機
,所以串列埠是路由器上離被過濾主機最近的埠。訪問表應用的方向是向內的,因
為從路由器的角度看來, I n t e r n e t來的報文是流向路由器的。如果我們將訪問
表應用成向外的訪問,則過濾的報文將是離開序列介面而通往I n t e r n e t的報文,
而這並非我們所希望的。另外,我們還建立了一個使用者名稱“ t e s t”,它可以用來訪
問路由器。在實際應用中,我們應該為每個使用者建立一對用
戶名和口令。現在,讓我們再分析訪問表的每一個表項。
第一個表項允許從任何源I P地址來的報文到達主機1 7 5 . 1 0 . 1 . 1,如果其目標
埠為t e l n e t(2 3)的話。這樣,我們實際上允許了向內的t e l n e t連線到路
由器的序列介面。我們可以允許向內的t e l n e t,連線到路由器的其他I P地址,但
只允許向內訪問路由器的序列介面是一種最佳的選擇。
第二個表項允許從任何源I P地址來的報文,如果其源埠是域名系統( domain
namesystem, DNS)(UDP 53),且目標網路位於2 0 5 . 1 3 1 . 1 7 5 . 0 / 2 4,
目的埠大於1 0 2 3的話。這將允許D N S應答到達2 0 5 . 1 3 1 . 1 7 5 . 0 / 2
4網路。所有有效D N S請求的源埠應該為1 0 2 4或更大,因此有效D N S的應答就應
傳送到此1 0 2 4或更高的埠。如果我們不指定目的埠大於1 0 2 3,則攻擊者可以
從源埠5 3傳送U D P報文到達我們的網路,從而導致對內部伺服器的拒絕服務(denia
l-of-service, DOS)攻擊。大量的伺服器埠都處於小於1 0 2 4的保留區間內,所以
我們應阻塞目的埠小於1 0 2 4的報文,以關閉潛在的安全漏洞。
第三和第四個表項允許具有如下特徵的報文進入:源埠為W W W(TCP 80 )或F T P(
TCP 21),目標位於2 0 5 . 1 3 1 . 1 7 5 . 0 / 2 4網路,目標埠大於1 0 2 3,
且T C P頭中設定了A C K和R S T位。這兩個表項允許由內部主機發起的W W W和F T P會
話的返回報文。指定源埠和目的埠的原因與第二個表項相同。使用e s t a b l i
s h e d意味著只有設定了應答位( A C K)和復位位(R S T)的報文才能夠匹配並允
許通過訪問表項。只有那些已經建立了T C P會話的報文才會設定這些位,這樣增加了訪
問表的安全層次。值得注意的是,攻擊者很容易在向內的報文中手工設定這些位,所以
這種檢測是十分簡單的。但是,如果內部網路採用正確的T C P / I P協議棧,
它們就會忽略這些帶A C K和R S T位的向內報文,因為它們不是主機上合法的T C P會話
的一部分,這就是為什麼e s t a b l i s h e d關鍵字仍然十分重要的原因。注意,這
種檢驗對U D P報文是無用的,這就是為什麼在第二個訪問表項中沒有該關鍵字的原因。
第五個表項允許那些從源埠為2 0的任何主機向內報文到達網路2 0 5 . 1 3 1 . 1
7 5 . 0 / 2 4的主機,
如果其目的埠大於1 0 2 3的話,允許了那些由內部主機發起的F T P部分資料的報文
連線到內部主機。F T P協議實現的標準實現需要F T P伺服器發回一個到源F T P客戶機
連線。該連線的初始報文沒有設定A C K或R S T位,所以我們在表項中不能使用e s t
a b l i s h e d關鍵字。有一種版本的F T P稱為被動模式( passive mode)的F T P
,或稱為PA S C,它不需要伺服器發起一個向源F T P客戶機的連線。在這種模式的F
T P中,客戶機需要發起到F T P伺服器非2 0埠的另一個連線。該埠是大於1 0 2 3
的一種隨機選擇。我們允許所有大於1023 TCP埠的報文通過,是因為我們不能進一步
確定F T P伺服器會選擇哪一個埠(被動模式F T P伺服器的資料埠不為2 0,這與普
通模式F T P是不同的)。儘管我們不能讓該表項如我們所希望的那樣確切, e s t a
b l i s h e d關鍵字仍能使該表項比允許外部發起向內部網路的會話要安全一些。
第六個表項(也是最後一個表項)為動態訪問表項,它允許來自被認證主機的報文到達
伺服器1 9 8 . 7 8 . 4 6 . 1 2。我們定義的絕對超時時間為3小時( 1 8 0分鐘),
並對該表項進行了日誌記錄(我們還開啟了路由器緩衝區的日誌)。通過將匹配動態表
項的報文進行記錄,我們可以跟蹤使用者的行為,並建立一個普通的基線。這樣,我們可
以發現不正常的行為,並由此判斷這是否是由攻擊者產生的。我們還將動態訪問表項的
空閒時間設定成了1 0分鐘,這是在v t y線配置中通過a u t o c o m m a n d設定的。
最好是將這兩個值都設上,這樣我們能減少動態表項處於
活躍狀態的時間,因此也減少了攻擊者衝破動態表項的可能性。
空閒計時器在每有一個報文匹配動態訪問表項時進行復位。而絕對計時器是不復位的。
即使一個會話仍然處於活躍狀態,如果絕對超時達到,動態表項就會被刪除,從而使用者
需要再經過一個認證過程。如果他們有經過路由器的活躍會話,這些會話將被終止。正
因如此,我們建議將絕對超時設定得相對大一些,一般為一個小時或更長一些的時間。
但我們應該將空閒時間設定得小一些,一般為1 0分鐘或更短的時間。我們認為,不應將
空閒時間的設定大於3 0鍾。
本文轉自 蕭湘月 51CTO部落格,原文連結:http://blog.51cto.com/sniffer/21191,如需轉載請自行聯絡原作者
相關文章
- Vue一個案例引發的動態元件與全域性事件繫結總結Vue元件事件
- 反腐層ACL - 一個有效的盾牌 - Manuel López Torrent
- Vue一個案例引發「動畫」的使用總結Vue動畫
- php中的動態變數的一個應用PHP變數
- Kafka ACL實現架構以及實操案例剖析Kafka架構
- MySQL:一個奇怪的hang案例MySql
- 【乾貨】JDK動態代理的實現原理以及如何手寫一個JDK動態代理JDK
- 動態網頁 —— 逆向分析法 + 案例網頁
- 域名繫結動態IP實戰案例
- Bootstrap一個小案例boot
- 求一個ot的專案例項
- 【MySQL】NOT EXISTS優化的一個案例MySql優化
- 一個簡單的MVP模式案例MVP模式
- Mybatis order by 動態傳參出現的一個小bugMyBatis
- ACL
- 使用js動態建立一個有不少於10萬個節點的樹JS
- 建立一個受動漫啟發的NFT生態系統
- 使用Netty和動態代理實現一個簡單的RPCNettyRPC
- 如何連結兩個名字一樣動態庫
- 又雙叒叕是一個動態簡歷
- ACL主席:ACL不是AI會議AI
- 一個簡單例子教會你C++動態庫的用法單例C++
- C# 編寫一個小巧快速的 Windows 動態桌面軟體C#Windows
- 當我需要動態生成 graphql 的 template 時,做了一個騷操作
- Angular 如何根據一個 class 的定義和資料,動態建立一個該類的例項Angular
- 11 個最好的 JavaScript 動態效果庫JavaScript
- 一個具有啟示性的最新 NFT 案例
- SD & ACL
- MySQL:Innodb 一個死鎖案例MySql
- 通過一個案例理解 JWTJWT
- 讓我們打一場動態代理的官司–Java動態代理Java
- Struts2中Action動態呼叫DMI出現的一個問題
- Vue一個案例引發的遞迴元件的使用Vue遞迴元件
- 一個簡單案例的Vue2.0原始碼Vue原始碼
- 3個案例講清如何構建“What-if分析”,教你輕鬆玩轉動態引數
- 節點操作(刪除,複製)/案例1:刪除留言板的留言 /案例2:動態生成表格
- 一個案例入門補環境
- kubernetes部署第一個應用案例
- 動態載入的一些坑