Secure Shell(SSH)簡介
談到網絡安全訪問,相信大家首先想到的就是安全Shell,也就是Secure Shell,通常簡寫為SSH。這是因為SSH安裝容易、使用簡單,而且比較常見,一般的Unix系統、Linux系統、FreeBSD系統都附帶有支持SSH的應用程序包。
1、什么是SSH ?
傳統的網絡服務程序,如FTP、 Pop和Telnet在傳輸機制和實現原理上是沒有考慮安全機制的,其本質上都是不安全的;因為它們在網絡上用明文傳送數據、用戶帳號和用戶口令,別有用 心的人通過竊聽等網絡攻擊手段非常容易地就可以截獲這些數據、用戶帳號和用戶口令。而且,這些網絡服務程序的簡單安全驗證方式也有其弱點,那就是很容易受 到"中間人"(man-in-the-middle)這種攻擊方式的攻擊。所謂"中間人"的攻擊方式,就是"中間人"冒充真正的服務器接收你的傳給服務器的數據,然后再冒充你把數據傳給真正的服務器。服務器和你之間的數據傳送被"中間人"一轉手做了手腳之后,就會出現很嚴重的問題。
SSH是英文Secure Shell的簡寫形式。通過使用SSH,你可以把所有傳輸的數據進行加密,這樣"中間人"這種攻擊方式就不可能實現了,而且也能夠防止DNS欺騙和IP欺 騙。使用SSH,還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替Telnet,又可以為 FTP、Pop、甚至為PPP提供一個安全的"通道"。
最初的SSH是由芬蘭的一家公司開發的。但是因為受版權和加密算法的限制,現在很多人都轉而使用OpenSSH。OpenSSH是SSH的替代軟件包,而且是免費的,可以預計將來會有越來越多的人使用它而不是SSH。
最后,SSH在運行方式上也很有特色。不像其他的TCP/IP應用,SSH被設計為工作于自己的基礎之上,而不是利用包裝(wrappers)或通過Internet守護進程inetd。但是許多人想通過TCP包裝來運行SSH守護進程。雖然你可以通過tcpd(從inetd上運行啟動)來運行SSH進程,但這完全沒有必要。
2、SSH協議的內容
SSH協議是建立在應用層和傳輸層基礎上的安全協議,它主要由以下三部分組成,共同實現SSH的安全保密機制。
傳輸層協議,它提供諸如認證、信任和完整性檢驗等安全措施,此外它還可以任意地提供數據壓縮功能。通常情況下,這些傳輸層協議都建立在面向連接的TCP數據流之上。
用戶認證協議層,用來實現服務器的跟客戶端用戶之間的身份認證,它運行在傳輸層協議之上。
連接協議層,分配多個加密通道至一些邏輯通道上,它運行在用戶認證層協議之上。
當安全的傳輸層連接建立之后,客戶端將發送一個服務請求。當用戶認證層連接建立之后將發送第二個服務請求。這就允許新定義的協議可以和以前的協 議共存。連接協議提供可用作多種目的通道,為設置安全交互Shell會話和傳輸任意的TCP/IP端口和X11連接提供標準方法。
3、SSH的安全驗證
從客戶端來看,SSH提供兩種級別的安全驗證。
第一種級別(基于口令的安全驗證),只要你知道自己的帳號和口令,就可以登錄到遠程主機,并且所有傳輸的數據都會被加密。但是,這種驗證方式不 能保證你正在連接的服務器就是你想連接的服務器??赡軙袆e的服務器在冒充真正的服務器,也就是受到"中間人"這種攻擊方式的攻擊。
第二種級別(基于密匙的安全驗證),需要依靠密匙,也就是你必須為自己創建一對密匙,并把公有密匙放在需要訪問的服務器上。如果你要連接到 SSH服務器上,客戶端軟件就會向服務器發出請求,請求用你的密匙進行安全驗證。服務器收到請求之后,先在你在該服務器的用戶根目錄下尋找你的公有密匙, 然后把它和你發送過來的公有密匙進行比較。如果兩個密匙一致,服務器就用公有密匙加密"質詢"(challenge)并把它發送給客戶端軟件??蛻舳塑浖?nbsp;收到"質詢"之后就可以用你的私人密匙解密再把它發送給服務器。
與第一種級別相比,第二種級別不需要在網絡上傳送用戶口令。另外,第二種級別不僅加密所有傳送的數據,而"中間人"這種攻擊方式也是不可能的(因為他沒有你的私人密匙)。但是整個登錄的過程可能慢一些。
4、SSH的應用
首先,SSH最常見的應用就是,用它來取代傳統的Telnet、FTP等網絡應用程序,通過SSH登錄到遠方機器執行你想進行的工作與命令。在 不安全的網路通訊環境中,它提供了很強的驗證(authentication)機制與非常安全的通訊環境。實際上,SSH開發者的原意是設計它來取代原 UNIX系統上的rcp、rlogin、rsh等指令程序的;但經過適當包裝后,發現它在功能上完全可以取代傳統的Telnet、FTP等應用程序。
傳統 BSD 風格的 r 系列指令(如 rcp,rsh,rlogin)往往都被視為不安全的,很容易就被各種網絡攻擊手段所破解,幾乎所有找得到有關UNIX安全的書或文件,都會一而再、再而 三地警告系統管理者,留心r系列指令的設定,甚至要求系統管理者將r系列指令通通關閉。
而用來替代r系列指令的SSH,則在安全方面做了極大的強化,不但對通訊內容可以進行極為安全的加密保護,同時也強化了對身份驗證的安全機制, 它應用了在密碼學(Cryptography)中已發展出來的數種安全加密機制,如 Symmetric Key Cryptography,Asymmetric Key Cryptography, One-way Hash Function,Random-number Generation等,來加強對于身份驗證與通訊內容的安全保護。通訊時資料的加密有IDEA,three-key triple DES,DES,RC4-128,TSS,Blowfish 等數種多種安全加密算法可供選擇,加密的key則是通過 RSA 進行交換的。資料的加密可以對抗IP spoofing,RSA這種非對稱性的加密機制則可用來對抗DNS spoofing與IP routing spoofing,同時RSA也可以進行對主機身份的驗證。
其次,通過使用用SSH可以在本地主機和遠程服務器之間設置"加密通道",并且這樣設置的"加密通道"可以跟常見的Pop應用程序、X應用程序、Linuxconf應用程序相結合,提供安全保障。
SSH的"加密通道"是通過"端口轉發"來實現的。你可以在本地端口(沒有用到的)和在遠程服務器上運行的某個服務的端口之間建立"加密通 道"。然后只要連接到本地端口。所有對本地端口的請求都被SSH加密并且轉發到遠程服務器的端口。當然只有遠程服務器上運行SSH服務器軟件的時候"加密 通道"才能工作。