學習目標:Router是一般網管人員較少有機會,也較不願去修改其設定的設備,但
如果能充分控制Router對於網路安全會有莫大幫助,本章將以網路上佔有率最高之
Router品牌-Cisco之產品來實作Router之設定與管理。
一、Router 的功用
1. 找出Packet 接下來應該要怎麼走(找出Routing 路徑)
2. 隔絕Broadcast
3. 過濾封包
二、選擇Router 時須注意事項
1. 所欲申請之線路
2. 界面(LAN Port 及WAN 之數量)
3. 與上游Router 之相容性
三、基本觀念
1. 記憶體相關: Cisco Router 內部共有三種記憶體:
(1) EEPROM,或稱為Flash,係用來存放Cisco Router
所用之作業系統(IOS)。
(2) NVRAM,用來存放開機時之設定檔(Startupconfig),
NVRAM 內之資料在電源切斷時並不會
流失。
(3) RAM,用來存放執行中的設定(Running-config)。
如果想將執行中的設定檔變為開機時設定檔,須執行
copy running-config startup-config
反之,若修改設定檔後欲將之還原為開機時設定,須執行
copy startup-conf running-config
2. TFTP: 由於Router 之記憶體有限,故僅提供行編輯器,並不提供全螢
幕之編輯工具,因此在修改時十分不便,因此建議在
UNIX 架設TFTP Server 將設定檔存放在TFTP Server
上,修改時先在UNIX 上編輯完畢,再透過TFTP Server
下載設定檔。另外,如果要升級Router 所使用之IOS
也必須透過TFTP Server。TFTP Server 為簡易之FTP
Server,不提供身分認證,通常用來作網路開機等。有
關TFTP Server 之架設及管理,將在稍後說明。
四、Router 之基本設定
1.初次設定: 一般在購買Router 時都會由廠商先行設定,故在此不作
詳細說明,簡言之,在初次設定時,因為Router 本身未
經設定,沒有網路位址,必須使用RS-232 線(通常購買時會附)及TELIX 等終端機模擬軟體來連線進入Router
內部執行設定,在連線進入Router 後,會出現對話式的
初次設定程式,通常只要一一回答問題即可。有關使用
RS-232 線及終端及模擬軟體連線之方式,請參照購買
Router 時所附之手冊。
2. 後續設定: 在初步設定之後,Router 本身應該有一個IP 位址,這時
候,我們只要使用Netterm 之類的TELNET 軟體,就可
以連線進入Router,在連線進入後,會出現如下的提示:
User Access Verification
Password:
這時候鍵入Router 的第一層密碼(如果不知道密碼的話,
請向購買的廠商查詢。在通過第一層認證後,在提示符號
後鍵入? ,可以看到命令說明。舉例來說,我們可以鍵
入
show version
來查看IOS 版本及Router 硬體,我們也可以鍵入
show flash
來查看Flash ROM 狀況。另外,我們可以鍵入
show interface
來查看網路界面狀況。
IOS 的認證分為兩層,在通過第一層認證後,可以查看系
統情形,但無法作設定,如果要進行設定,必須通過第二
層認證,進入Privileged Mode。要進入Privileged Mode,
請鍵入
enable
在鍵入第二層密碼後(同樣的,如果不知道密碼的話,
請向購買的廠商查詢),會進入Privileged Mode。這時候,
系統的提示符號也會從 > 變為 #
在提示符號之後鍵入
setup
會出現
--- System Configuration Dialog ---
At any point you may enter a question mark '?' for help.
Use ctrl-c to abort configuration dialog at any prompt.
Default settings are in square brackets '[]'.
Continue with configuration dialog? [yes]:
接著只要依序回答問題即可,只是要注意到,在
Configure IP 時會問到是否要Configre IGRP 以及RIP 時,
應該要回答NO,因為一般而言。各校都是直接連接縣網,
只要使用Static Route 即可。
在設定完畢之後,系統會顯示出設定檔,問您是否要採用,
此時,回達Yes 即可。
此外,您也可以鍵入
configure
進行設定。在鍵入configure 後,會出現
Configuring from terminal, memory, or network [terminal]?
的選項,問您要從terminal、memory或是network 進行
configure。從terminal 就是您一行一行的鍵入IOS 指令,
而從memory進行configure 就等於執行copy startup-config
running-config。此外, 選擇從Network 執行configure 就
等於是執行copy tftp running- config。
五、TFTP Server 的架設與管理
一般的UNIX 系統都內建有TFTP Server,只是預設是不啟動的。以
FreeBSD 而言,TFTP Server 的程式應該是在/usr//libexec/tftpd。tftpd 是由inetd
所啟動,所以,請您編輯/etc/inetd,會看到
#tftp dgram udp wait nobody /usr/libexec/tftpd tftpd /tftpboot
請您將行首的# 拿掉,然後在/usr//libexec/tftpd 之後加入-s 路徑名稱,以指
定tftpd 將存放檔案的目錄。在編輯完inetd.conf 後,請重新執行inetd 或是乾脆
將電腦reboot。另外,要注意到,tftpd 只接受上傳已經存在的檔案,如果您要
上傳某個檔案,請先到目錄中touch 該檔案名稱,先將檔案製造出來,然後將
該檔案權限設定好後,再上傳該檔案。詳細資料請
man tftpd
六、Access List
Cisco 的IOS 提供了相當完整的存取控制功能。對於我們只用到其中的
IP Access List 功能,其餘協定的存取控制功能則不在討論範圍。IOS 的Access
List 又可分為standard access list 及extend access list。Standard ip access list 只
能就來源的ip 位址加以限制,而extend ip access list 則可以就來源及目的ip 位
址、協定以及port 來作限制。另外IOS 使用數字編號來區分access list 的類
別。Standard ip access list 的編號是0 -99,而編號100-199 則為extend ip access
list。在使用access list 功能時我們必須先定義access list,定義Standard ip access
list 的語法是:
access-list 編號permit/deny 來源位址(網路遮罩)
舉例來說,假使我們想要拒絕來自192.168.1.0 這個class ip 的主機連線,我們
就可以這樣定義:
access-list 1 deny 192.168.1.0 0.0.0.255
要注意的是在定義access list 時使用的netmask 與我們一般切割子網域的
netmask 不同,在這裡0代表must match,1 代表don't care。也就是說設定0.0.0.255 代
表IP 位址第四個數字可以為0 到255 間的任何數。如果設定0.0.3.255 則代表第三
個數字可以為1、2、3 三個數字,而第四個數字則可以為0 到255 間的任何數。
而定義Extend ip access list 的語法則是:
access-list 編號permit/deny 協定來源位址(網路遮罩) [port] 目的位
址(網路遮罩)[port]
IP 協定包含了TCP、UDP 以及ICMP 協定﹐所以在使用前您必須了解您所要過濾的功能是使用哪一種協定。
Access list 可以做到一些基本的網路防護功能﹐﹐以下將舉以一些實例來說
明。要注意到﹐Access list 的功能隨著IOS 的改版一直在做加強﹐也就是說﹐
如果您的IOS 版本太舊﹐可能無法做到某些功能。
例一:
在網路上﹐駭客們要入侵一部網路主機時﹐為了怕被追查出來源﹐常常會
使用IP 偽裝的技術﹐也就是使用假的IP﹐通常駭客們最常使用的假IP 有兩種﹐
一是被攻擊端的IP﹐另一種則是在RFC1918 裡定義用來作Private IP 的三段IP
位址﹐分別是
10.0.0.0 -10.255.255.255
172.16.0.0 - 172.36.255.255
192.168.0.0 - 192.168.255.255
以本校為例﹐本校所使用的IP 是203.68.238.0 這一段Class C 的IP。我們可以
在Internet 的入口處將上述各段IP 攔截下來﹐因為在理論上﹐這些IP 是不會
從Internet 上進入本校的。所以我們可以定義這樣的Access List
access-list 101 deny ip 203.68.238.0 0.0.0.255 any
access-list 101 deny ip 10.0.0.0 0.255.255.255 any
access-list 101 deny ip 172.16.0.0 0.15.255.255 any
access-list 101 deny ip 192.168.0.0 0.0.255.255 any
access-list 101 permit ip any any
.在定義完Access List 後﹐我們必須指定在哪個界面上使用這個Access list ﹐在
本例中應該是用在serial0 上面﹐而且是不讓來自上述IP 的封包往內傳﹐所以
語法應該如下:
interface serial0
ip access-group 101 in
例二:
在網路上有一種攻擊手法叫做Ping to death﹐他的原理很簡單﹐只要找幾部
MS-Windows 的機器﹐開一個DOS 視窗﹐然後執行
ping –t 目標位址
MS-Windows 機器就會不停的向該主機送出echo request﹐直到指令被人為中斷
為止。而如果發出echo request 的機器夠多的話﹐該部主機就會因為忙於回覆echo
request,而耗盡資源。防止這樣的攻擊也很簡單﹐以本校為例只要設定下列access
list 即可:
access-list 101 deny icmp any 203.68.238.0 0.0.0.255 echo
定義這樣的access list 並將它使用在由internet 往內的界面會使得外界機器
無法對內部機器作ping 的動作﹐也就無法使用ping to death 的攻擊。
例三:
前一陣子網路上很流行SYN flooding 的攻擊手法﹐它的原理是:當我們要
和網路上某部主機連線時﹐首先兩部主機會進行handshake 的動作﹐甲方會先
送出設定SYN bit 的封包﹐而乙方在收到封包之後﹐會回應設定SYN 以及ACK
bit 的封包﹐然後等待甲方在一定的時間內回應設定ACK 的封包。如果甲方一
直沒有回應﹐乙方就會將這個連接設定為逾時。但是在等待甲方回應的過程中﹐這些連線還是會耗費乙方的資源﹐如果甲方惡意的送出大量這樣的封包﹐乙方
的資源很快就會被耗盡。也就導致所謂的DoS (Denial of Service)。在IOS 11.3
版之後提供了TCP Intercept 的功能﹐可以有效防止這樣的攻擊。TCP Intercept
的運作原理是Router 會介入並檢查TCP 連線﹐這個功能有兩種模式: intercept
及watch。在intercept 模式中﹐Router 會介入往內的連線要求﹐並且以模擬Server
的動作和Client 端建立連線﹐並模擬Client 端和Server 建立連線。如果兩邊都
沒有問題﹐Router 就將兩端連接起來。而為了防止本身的資源被耗盡﹐Router
上可以設定同時存在未完成連線的上限。而在watch 模式中Router 只是被動的
監視未完成的連線﹐然後在一定的時間到達後將其關閉。啟動TCP Intercept 要
兩道手續﹐首先﹐定義一個access list 允許連接到所要保護的主機﹐語法如下:
access-list 編號 permit tcp any 目標(網路遮罩)
然後使用ip tcp intercept 指令來啟動TCP Intercept﹐語法如下:
ip tcp intercept list 編號
舉例而言﹐如果您要保護的SERVER IP 為198.78.46.20﹐您應該下這樣的指令:
ip tcp intercept list 101
access-list 101 permit tcp any host 198.78.46.0
例四:
前幾個例子都是防止外人入侵內部網路﹐這一個例子則是要強迫內部網路
使用者都透過我們的Proxy Server 上網﹐以節省網路頻寬﹐並可透過Proxy Server
來達到過濾網站的功能﹐以本校為例﹐本校的Proxy Server IP 為203.68.238.6﹐
設定如下:
access-list 100 permit tcp host 203.68.238.6 any eq www
#准許Proxy Server 存取外界WWW
access-list 100 permit tcp host 203.68.238.6 any eq 3128
#准許Proxy Server 存取外界其它Proxy Server
access-list 100 permit udp host 203.68.238.6 any eq 3130
#准許Proxy Server 存取外界其他Proxy Server
access-list 100 deny tcp 203.68.238.0 0.0.0.255 any eq www
#禁止內部網路機器直接存取外界WWW
access-list 100 deny tcp 203.68.238.0 0.0.0.255 any eq 3128
#禁止內部網路機器存取外界其它Proxy Server
access-list 100 deny udp 203.68.238.0 0.0.0.255 any eq 3130
#防止內部網路有人架設Proxy Server 存取外界Proxy Server
access-list 100 permit ip any any
允許其他類型連線。
iterface serial 0
acess-list 100 out
要注意到﹐當Router 在檢查封包時﹐使用的是First Match 的方法﹐也就是
說﹐會就Access list 中所訂定之過濾條件由上往下過濾﹐當一發現適用的條件
就直接決定放行或丟棄該封包。而以下的條件就不在檢查。因此訂立過濾條件
的順序很重要﹐一個不小心就會讓網路出錯。另外﹐Access list 的預設是---除非
在list 中明定放行﹐否則一律丟棄﹐因此﹐建議在最後要加上permit ip any any 的設定﹐以免網路全面癱瘓。
最後介紹一個不是Access List﹐但是非常有用的指令。在網路上有一種攻
擊的手法是對某一網域的廣播位址作ping 的動作﹐這樣的動作會使得該網域的
所有機器都收到Echo request﹐而所有的機器也都會回應Echo reply﹐這樣很容
易會造成網路癱瘓﹐如果有駭客冒用A 網域IP 對B 網域作上述動作的話﹐會
造成A、B 兩網域都癱瘓(B 網域會因為收到太多的Echo Reply 而癱瘓)。要
防止這樣的攻擊﹐只要在Router 對每一界面下:
no ip directed broadcasts
即可。
參考書目
CISCO ROUTER CONFIGURATION:Allan Leniwand﹐Bruce Pinsky﹐Mark
Culpepper﹐Macmillan Technical Publishing
Sys Admin, November 1999 P29-34, Router Access Lists, by Gilbert Held
Sys Admin, March 2000, P61-65, Router-Based Network Defense, by Gilbert Held
轉載自
沒有留言:
張貼留言