Cisco路由器的安全配置技巧

字號:

目前大多數(shù)的企事業(yè)單位和部門連Internet網(wǎng),通常都是一臺路由器與ISP連結(jié)實(shí)現(xiàn)。這臺路由器就是溝通外部Internet和內(nèi)部網(wǎng)絡(luò)的橋梁,如果這臺路由器能夠合理進(jìn)行安全設(shè)置,那么就可以對內(nèi)部的網(wǎng)絡(luò)提供一定安全性或?qū)σ延械陌踩嗔艘粚悠琳稀,F(xiàn)在大多數(shù)的路由器都是Cisco公司的產(chǎn)品或與其功能近似,本文在這里就針對Cisco路由器的安全配置進(jìn)行管理。
    考慮到路由器的作用和位置,路由器配置的好壞不僅影響本身的安全也影響整個網(wǎng)絡(luò)的安全。目前路由器(以Cisco為例)本身也都帶有一定的安全功能,如訪問列表、加密等,但是在缺省配置時,這些功能大多數(shù)都是關(guān)閉的。需要進(jìn)行手工配置。怎樣的配置才能的滿足安全的需要,且不降低網(wǎng)絡(luò)的性能?本文從以下幾個部分分別加以說明:
    一. 口令管理
    口令是路由器是用來防止對于路由器的非授權(quán)訪問的主要手段,是路由器本身安全的一部分。的口令處理方法是將這些口令保存在TACACS+或RADIUS認(rèn)證服務(wù)器上。但是幾乎每一個路由器都要有一個本地配置口令進(jìn)行權(quán)限訪問。如何維護(hù)這部分的安全?
    1. 使用enable secret
    enable secret 命令用于設(shè)定具有管理員權(quán)限的口令。并且如果沒有enable secret,則當(dāng)一個口令是為控制臺TTY設(shè)置的,這個口令也能用于遠(yuǎn)程訪問。這種情況是不希望的。還有一點(diǎn)就是老的系統(tǒng)采用的是enable passWord,雖然功能相似,但是enable password采用的加密算法比較弱。
    2. 使用service password-encryption
    這條命令用于對存儲在配置文件中的所有口令和類似數(shù)據(jù)(如CHAP)進(jìn)行加密。避免當(dāng)配置文件被不懷好意者看見,從而獲得這些數(shù)據(jù)的明文。但是service password-encrypation的加密算法是一個簡單的維吉尼亞加密,很容易被破譯。這主要是針對enable password命令設(shè)置的口令。而enable secret命令采用的是MD5算法,這種算法很難進(jìn)行破譯的。但是這種MD5算法對于字典式攻擊還是沒有辦法。
    所以不要以為加密了就可以放心了,的方法就是選擇一個長的口令字,避免配置文件被外界得到。且設(shè)定enable secret和service password-encryption。
    二. 控制交互式訪問
    任何人登錄到路由器上都能夠顯示一些重要的配置信息。一個攻擊者可以將路由器作為攻擊的中轉(zhuǎn)站。所以需要正確控制路由器的登錄訪問。盡管大部分的登錄訪問缺省都是禁止的。但是有一些例外,如直連的控制臺終端等。
    控制臺端口具有特殊的權(quán)限。特別注意的是,當(dāng)路由器重啟動的開始幾秒如果發(fā)送一個Break信號到控制臺端口,則利用口令恢復(fù)程式可以很容易控制整個系統(tǒng)。這樣如果一個攻擊者盡管他沒有正常的訪問權(quán)限,但是具有系統(tǒng)重啟(切斷電源或系統(tǒng)崩潰)和訪問控制端口(通過直連終端、Modem、終端服務(wù)器)的能力就可以控制整個系統(tǒng)。所以必須保證所有連結(jié)控制端口的訪問的安全性。
    除了通過控制臺登錄路由器外還有很多的方法,根據(jù)配置和操作系統(tǒng)版本的不同,可以支持如Telnet、rlogin、Ssh以及非基于IP的網(wǎng)絡(luò)協(xié)議如LAT、MOP、X.29和V.120等或者M(jìn)odem撥號。所有這些都涉及到TTY,本地的異步終端和撥號Modem用標(biāo)準(zhǔn)的"TTYs"。遠(yuǎn)地的網(wǎng)絡(luò)連結(jié)不管采用什么協(xié)議都是虛擬的TTYs,即"VTYs"。要控制路由器的訪問,就是控制這些TTYs或VTYs,加上一些認(rèn)證或利用login、no password命令禁止訪問。
    1.控制TTY
    缺省的情況下一個遠(yuǎn)端用戶可以連結(jié)到一個TTY,稱為"反向Telnet",允許遠(yuǎn)端用戶和連接到這個TTY上的終端或Modem進(jìn)行交互。但是這些特征允許一個遠(yuǎn)端用戶連接到一個本地的異步終端口或一個撥入的Modem端口,從而構(gòu)造一個假的登錄過程來偷盜口令或其他的非法活動。所以禁止這項功能,可以采用transport input none設(shè)置任何異步或Modem不接收來自網(wǎng)絡(luò)用戶的連結(jié)。如果可能,不要用相同的Modem撥入和撥出,且禁止反向Telnet撥入。
    2.控制VTY
    為了保證安全,任何VTY應(yīng)該僅允許指定的協(xié)議建立連結(jié)。利用transport input命令。如一個VTY只支持Telnet服務(wù),可以如下設(shè)置transport input telnet。如果路由器操作系統(tǒng)支持SSH,只支持這個協(xié)議,避免使用明文傳送的Telnet服務(wù)。如下設(shè)置:transport input ssh。也可以利用ip access-class限制訪問VTY的ip地址范圍。
    因?yàn)閂TYs的數(shù)目有一定的限制,當(dāng)所有的VTYs用完了,就不能再建立遠(yuǎn)程的網(wǎng)絡(luò)連結(jié)了。這就有可能被利用進(jìn)行Dos(拒絕服務(wù)攻擊)。這里攻擊者不必登錄進(jìn)入,只要建立連結(jié),到login提示符下就可以,消耗到所有的VTYs。對于這種攻擊的一個好的防御方法就是利用ip access-class命令限制最后一個VTYs的訪問地址,只向特定管理工作站打開。而其他的VTYs不限制,從而既保證了靈活性,也保證關(guān)鍵的管理工作不被影響。另一個方法是利用exec-timeout命令,配置VTY的超時。避免一個空閑的任務(wù)一直占用VTY。類似的也可以用service tcp-keepalives-in 保證Tcp建立的入連結(jié)是活動的,從而避免惡意的攻擊或遠(yuǎn)端系統(tǒng)的意外崩潰導(dǎo)致的資源獨(dú)占。更好的保護(hù)VTY的方法是關(guān)閉所有非基于IP的訪問,且使用IPSec加密所有的遠(yuǎn)端與路由器的連結(jié)。
    三. 管理服務(wù)配置
    許多的用戶利用協(xié)議如Snmp或Http來管理路由器。但是利用這些協(xié)議管理服務(wù)時,就會存在一定的安全問題。
    1. Snmp
    Snmp是最經(jīng)常用于路由器的管理的協(xié)議。目前使用最多的Snmp 版本1,但是這個版本的Snmp存在著很多的安全問題:
    A. 使用明文認(rèn)證,利用"community"字符串。 
    B. 在周期性輪循時,重復(fù)的發(fā)送這些"community"。
    C. 采用容易被欺騙的基于數(shù)據(jù)包的協(xié)議。
    所以盡量采用Snmp V2,因?yàn)樗捎没贛D5的數(shù)字認(rèn)證方式,并且允許對于不同的管理數(shù)據(jù)進(jìn)行限制。如果一定要使用Snmp V1,則要仔細(xì)的配置。如避免使用缺省的community如public,private等。避免對于每個設(shè)備都用相同的community,區(qū)別和限制只讀和讀寫commnity。對于Snmp V2,則可能的話對于不同的路由器設(shè)定不同的MD5安全值。還有就是使用訪問列表限定可以使用Snmp管理的范圍。
    2. Http:
    最近的路由器操作系統(tǒng)支持Http協(xié)議進(jìn)行遠(yuǎn)端配置和監(jiān)視。而針對Http的認(rèn)證就相當(dāng)于在網(wǎng)絡(luò)上發(fā)送明文且對于Http沒有有效的基于挑戰(zhàn)或一次性的口令保護(hù)。這使得用Http進(jìn)行管理相當(dāng)危險。
    如果選擇使用Http進(jìn)行管理,用ip http access-class命令限定訪問地址且用ip http authentication命令配置認(rèn)證。的http認(rèn)證選擇是利用TACACS+或RADIUS服務(wù)器