一個動態ACL的案例

weixin_33766168發表於2017-12-10
所在的單位有一臺路由器將兩個乙太網段連到了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分鐘或更短的時間。我們認為,不應將

空閒時間的設定大於3 0鍾。



本文轉自 蕭湘月 51CTO部落格,原文連結:http://blog.51cto.com/sniffer/21191,如需轉載請自行聯絡原作者

相關文章