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