SSH簡單原理及在Cisco IOS設備上啟用SSH
SSH(Secure Shell)是什么呢?權威的說法是:‘Secure shell is a de facto standard for remote logins and encrypted file transfers.’。SSH由芬蘭赫爾辛基大學的Tatu Ylonen在1995年發明,其主要目的就是通過認證和加密手段在互聯網提供一條安全的連接(并不僅是Terminal),默認運行于TCP 22號端口。目前有兩種協議版本:SSH-1和SSH-2。
要理解SSH首先要明白它的幾把Key: Host Key / Server Key / Session Key / User Key
具體見下表: Name Lifetime Created by Type Purpose Host key Persistent Administrator Public Identify a server/machine Server key One hour Server Public Encrypt the session key(SSH1 only) Session key One session Client (and server) Secret Protect communications User key Persistent User Public Identify a user to the server
SSH簡單的運行過程如下:
1、Client端向Server端發起SSH連接請求。
2、Server端向Client端發起版本協商。
3、協商結束后Server端發送Host Key公鑰 Server Key公鑰,隨機數等信息。到這里所有通信是不加密的。
4、Client端返回確認信息,同時附帶用公鑰加密過的一個隨機數,用于雙方計算Session Key。
5、進入認證階段。從此以后所有通信均加密。
6、認證成功后,進入交互階段。
我這里寫的極其簡單,有興趣參考這本書:SSH the Secure Shell 2nd Edition
或者參看RFC:http://www.ietf.org/rfc/rfc4251.txt
也可看看這里:http://m.ekrvqnd.cn/art/200511/12308.htm
在Cisco IOS設備上啟用SSH
Cisco 在SSH的支持上動作遲緩,12.0開始引入SSH-1,12.1開始引入SSH-2,至今都只實現了一個精簡版的SSH,很多東西都不支持,比如 BlowFish算法。Cisco似乎并不是很熱心于SSH帶來的安全性。可能在Cisco的邏輯中,對網絡設備的訪問處于嚴格受限專網當中,想從中進行 Sniffer非常不容易。我也親見過許多大型運營商的DCN網里面完全采用了Telnet,似乎也沒有什么大的問題。因為,如果入侵者是處心積慮的高手,SSH也存在著問題,比如man-in-the-middle攻擊,處理起來就會加大管理成本。還是那句話,安全是沒有絕對的。
對于沒有專網,同時在限定訪問地址范圍內存在Sniffer可能性的網絡設備,開啟SSH還是有必要的,下面就是配置步驟:
1、設定IOS設備主機名
Router(config)#host SSH-Test
2、設定IOS設備所在域名
SSH-Test(config)#ip domain-name test.com
3、建立RSA公鑰(這是我們前面提到的哪一個Key?)
SSH-Test(config)#crypto key generate rsa
這時系統會提示你輸入modulus的長度,默認為512,取值范圍是360-2048,越長安全性越好,但Key的生成時間也會越長,這是個2500上的耗時參考表:
Router 360 bits 512 bits 1024 bits 2048 bits (maximum) Cisco 2500 11 seconds 20 seconds 4 minutes 38 seconds more than 1 hour
注意,這條命令是一次性的,不會被保存到startup-config中。但是在執行這條命令后再保存配置,所生成的RSA Key會被保存到nvram的Private-Config中。
RSA Key可以用這條命令查看:
SSH-Test#sh crypto key mypubkey rsa
4、設置ssh訪問特性(可選)
SSH-Test(config)#ip ssh time-out 60
!ssh會話超時時間,以秒為單位
SSH-Test(config)#ip ssh authentication-retries 3
!ssh登錄認證重試次數
5、開啟本地用戶認證
SSH-Test(config)#username test password test
SSH-Test(config)#line vty 0 4
SSH-Test(config-line)#login local
!也可以用aaa new-model命令
6、限定只能用SSH登錄
SSH-Test(config)#line vty 0 4
SSH-Test(config-line)#transport input ssh
7、用access-class限定特定IP可以向本設備發起SSH連接
略
好了,可以用PuTTY測試一下了。
補充:
1、Cisco上的3DES Feature是要花錢買的,如果你用的是普通DES加密的時候,PuTTY會提示你,確認即可。
2、將Cisco IOS作為SSH客戶端時,使用ssh命令即可,參數很簡單。注意從一個3DES設備訪問一個DES設備的時候,要用-c參數將加密算法改為DES。
3、開啟SSH服務后,banner login將不被顯示,banner motd將在登錄后顯示。
【編輯推薦】