郭建偉
對于路由器、交換機(jī)等網(wǎng)絡(luò)設(shè)備來說,進(jìn)入其管理界面,可以對其進(jìn)行各種配置。因此,如果任由一般人隨意登錄,那么就會給網(wǎng)絡(luò)管理造成不利影響。例如隨意修改各種參數(shù),造成網(wǎng)絡(luò)設(shè)備無法正常運(yùn)行等。所以,只能由管理人員進(jìn)行登錄。那么,為網(wǎng)絡(luò)設(shè)備設(shè)置嚴(yán)格的登錄權(quán)限,就顯得尤為重要了。
設(shè)置特權(quán)密碼
這里以常用的思科網(wǎng)絡(luò)設(shè)備為例進(jìn)行說明,設(shè)置合適的密碼,對于登錄安全是極為重要的。例如密碼的長度不能小于10位,必須滿足復(fù)雜性要求(包括大小寫、數(shù)字和特殊字符),在字典中不能找到該密碼,并且密碼需要定期更新等。當(dāng)?shù)卿浺慌_網(wǎng)絡(luò)設(shè)備(例如交換機(jī)、路由器等)時,可能存在多種密碼,包括Enable password、Enable secret password和vty password等。前兩種密碼對從用戶模式進(jìn)入特權(quán)模式進(jìn)行控制,所不同的是第一種密碼是明文的,第二種是經(jīng)過特殊哈希處理的。
在默認(rèn)情況下,Enable密碼是空的。在交換機(jī)控制界面中執(zhí)行“config t”命令進(jìn)入特權(quán)模式,執(zhí)行“enable password xxx”命令,來設(shè)置Enable密碼,其中的“xxx”為具體的密碼。執(zhí)行“sh run | in enable”命令,可以看到以明文顯示的密碼。執(zhí)行“enable secret xxx”命令,設(shè)置Enable Secret密碼。執(zhí)行“sh run”命令,在返回信息中的“enable secret 4”和“enable password”欄中看到上述兩個密碼,可以看到Enable Secret密碼處于MD5散列狀態(tài)。注意,MD5哈希和加密是存在區(qū)別的,哈希算法用于保證數(shù)據(jù)的完整性,例如對于1MB和10MB大小的兩個文件來說,經(jīng)過MD5哈希計算,都可以得到固定長度的散列值。
設(shè)置VTY密碼
只要原始的文件數(shù)據(jù)發(fā)生細(xì)微的變化,經(jīng)過MD5哈希計算后其散列值就會發(fā)生變化。MD5哈希具有不可逆的特點(diǎn),無法由某個哈希值反推出原始的密碼。除了以上密碼外,其實(shí)在vty、aux、console下也可以配置密碼,不過最常用的是在vty下的密碼。當(dāng)管理員在局域網(wǎng)中通過Telnet或者SSH連接某個網(wǎng)絡(luò)設(shè)備時,會要求輸入vty密碼來獲得虛擬控制臺。在特權(quán)模式下執(zhí)行“l(fā)in vty 0 4”命令,執(zhí)行“password xxx”命令,來設(shè)置vty密碼。執(zhí)行“l(fā)ogin”和“transport input telnet”命令,只允許以Telnet方式登錄。執(zhí)行“sh valn brief”命令,來查看VLAN配置情況。例如所有的接口都處于VLAN1中,那么就可以基于VLAN1來創(chuàng)建vty接口。
特權(quán)模式級別
執(zhí)行“int ethernet 0/0”和“no switchport”命令,將該端口設(shè)置為三層接口。執(zhí)行“ip address xxx.xxx.xxx.xxx 255.255.225.0”和“no shut”命令,為其配置具體的IP并打開該端口。管理員在客戶機(jī)上執(zhí)行“telnet xxx.xxx.xxx.xxx”命令,來連接交換機(jī)。在認(rèn)證界面中輸入上述vty密碼,進(jìn)入交換機(jī)用戶模式。執(zhí)行“show privi”命令,顯示當(dāng)前用戶級別為1,級別從0到15,等級越高,權(quán)限越大能用的命令也越多。執(zhí)行“enable”命令,輸入Enable secret密碼進(jìn)入特權(quán)模式。由此看見,Enable的MD5哈希密碼要優(yōu)先于明文密碼。執(zhí)行“no enable secret xxx”命令,可以禁用Enable secret密碼。這樣,就可以使用Enable密碼。出于安全考慮,可以將該明文密碼進(jìn)行隱形,避免別人使用“sh run”命令來查看該密碼。
密碼的安全等級
在特權(quán)模式下執(zhí)行“service password-encryption”命令,可以對Enable密碼進(jìn)行加密處理。執(zhí)行“sh run”命令,在返回信息中顯示其已經(jīng)變成了加密串。其實(shí),不僅是Enable密碼。其他的諸如vty等密碼也會進(jìn)行加密處理。雖然存在各種密碼,但是其安全等級是不同的,例如對于明文的Enable密碼來說,其等級為0。對于Enable secret密碼來說,因?yàn)槠鋼碛胁豢赡娴奶匦?,所以其等級?,該密碼是極為可靠的。對于加密后的Enable密碼來說,因?yàn)槠鋵?shí)際上存在被破解的風(fēng)險,其對應(yīng)的等級為7。因此,在網(wǎng)絡(luò)設(shè)備上應(yīng)該啟用Enable secret密碼。對于VPN Key的加密,也會涉及到密碼的設(shè)定,其等級為6,具有不可逆的特點(diǎn)。
例如,在路由器命令行管理界面中進(jìn)入特權(quán)模式,執(zhí)行“crypto isakmp policy 10”命令,標(biāo)識所要創(chuàng)建的策略。執(zhí)行“encryption des”“hash md5”“authentication pre-share”“exit”命令,之后執(zhí)行“crypto isakmp key xxx address xxx.xxx.xxx.xxx”命令,創(chuàng)建VPN Key。這樣,當(dāng)對方和自己建立VPN IPSec連接時,必須使用同樣的VPN Key,才可以建立連接通道。執(zhí)行“sh run”命令,在“crypto isakmp key”欄中可以看到上述密碼,該密碼無法使用上述方法進(jìn)行加密。
對VPN密碼加密
當(dāng)然,可以使用另外的方法,對VPN密碼進(jìn)行加密。執(zhí)行“key config-key password-encrypt xxxxxx”命令,其中的“xxxxxx”為密鑰,執(zhí)行“password encrypt aes”命令,使用AES加密算法。執(zhí)行“crypto isakmp key xxx address xxx.xxx.xxx.xxx”命令,創(chuàng)建VPN Key。這樣,該VPN Key就會進(jìn)行加密處理。執(zhí)行“sh run”命令,在返回信息中顯示“crypt isakmp key”的等級為6,原來的密碼已經(jīng)變成了加密串。這樣,當(dāng)出現(xiàn)各種故障時,即使將設(shè)備的配置文件發(fā)送給別人進(jìn)行分析,也不必?fù)?dān)心泄漏密碼。
注意,該VPN Key擁有密鑰保護(hù),和上述加密Enable密碼是不同的,后者可以直接進(jìn)行破解,而后者必須獲得密鑰才可以破解。只要密鑰足夠復(fù)雜,則解密很難進(jìn)行,所以其安全性是很高的。在默認(rèn)情況下,在配置密碼時對長度是沒有要求的,這顯然會對安全造成不利影響。在全局配置模式下執(zhí)行“security passswords min-length 10”命令,表示將密碼最小長度限制為10個,這樣在設(shè)置密碼時其長度必須不小于10位。
解決Console線程安全風(fēng)險
在有些情況下,當(dāng)使用Console線連接到交換機(jī),當(dāng)?shù)卿浿髨?zhí)行了一些命令后,如果管理員暫時離開,沒有退出登錄界面的話,那么別人只要插上Console線,無須輸入密碼就可以直接登錄,對路由器等網(wǎng)絡(luò)設(shè)備進(jìn)行管理,因?yàn)镃onsole線程已經(jīng)處于開啟狀態(tài),這對于設(shè)備的安全是極為不利的。
對于這種問題,有兩種解決方式,其一是在Console下配置超時時間,當(dāng)超過預(yù)設(shè)時間后,即可退出登錄狀態(tài)。其二是養(yǎng)成良好的使用習(xí)慣,在離開設(shè)備時及時退出登錄狀態(tài)。對于前一種方式來說,例如執(zhí)行“l(fā)ine vty 0 4”“exec-timeout 1 0”等命令,可以將超時設(shè)置為1分鐘0秒,這樣即使管理員離開后沒有退出登錄狀態(tài),設(shè)備也會在超時后自動管理界面。
使用SSH加密傳輸
前面談到,可以使用Telnet來連接交換機(jī)等設(shè)備,其網(wǎng)絡(luò)連接過程其實(shí)是不安全的。如果有人使用Wireshark等網(wǎng)絡(luò)嗅探工具來執(zhí)行抓包操作,那么就可以毫不費(fèi)力地將所有的連接數(shù)據(jù)捕獲,其中的密碼等敏感信息會徹底暴露。因此使用Telnet、HTTP、FTP等明文協(xié)議是很不安全的,使用SSH加密傳輸可以有效解決該問題。其配置步驟是利用設(shè)備的Hostname和Domain-name來生成RSA非對稱密鑰,之后利用該密鑰對進(jìn)行加解密操作。例如在路由器上進(jìn)入全局配置模式,執(zhí)行“hostname”命令,設(shè)置設(shè)備名稱。
執(zhí)行“ip domain-name xxx”命令設(shè)置域名,注意該Domain-name域名可以不存在或者不可用,但是必須進(jìn)行設(shè)置。執(zhí)行“crypto key generate rsa modulus 1024”命令,創(chuàng)建RSA的2014位密鑰對。執(zhí)行“crypto key mypubkey rsa”命令,會顯示創(chuàng)建的RSA密鑰對。之后配置SSH連接參數(shù),執(zhí)行“l(fā)ine vty 0 4”命令,允許0到4個用戶同時登錄。執(zhí)行“l(fā)ogin local”命令,使用本地的數(shù)據(jù)庫對登錄用戶進(jìn)行身份驗(yàn)證。執(zhí)行“transport input ssh”命令,啟用SSH登錄功能,執(zhí)行“exec-timeout 1 0”命令,將超時時間設(shè)置為1分鐘。執(zhí)行“username user1 password hello”命令,創(chuàng)建名為“user1”的賬戶,其密碼為“hello”。
執(zhí)行“do sh ru”命令,在返回信息中的“Username”行中顯示用戶名和密碼信息,其密碼經(jīng)過加密處理,等級為7。注意,任何的網(wǎng)絡(luò)設(shè)備都可以作為SSH的客戶端使用,例如在路由器上配置了SSH后,可以使用PC、服務(wù)器、路由器、交換機(jī)等網(wǎng)絡(luò)設(shè)備通過SSH對其進(jìn)行連接。例如在某臺路由器上執(zhí)行“ssh -l user1 xxx.xxx.xxx.xxx”命令,連接到目標(biāo)設(shè)備后,輸入該賬戶的密碼,就可以登錄到該設(shè)備上。即使有人使用嗅探工具進(jìn)行抓包,也只能得到無法破譯的數(shù)據(jù)。