SSH2
SSH:安全外殼協議
一、SSH介紹
什么是SSH?
ssh 傳統的網絡服務程序,如:ftp、pop和telnet在本質上都是不安全的,因為它們在網絡上用明文傳送口令和數據,別有用心的人非常容易就可以截獲這些口令和數據。而且,這些服務程序的安全驗證方式也是有其弱點的,就是很容易受到“中間人”(man-in-the-middle)這種方式的攻擊。所謂“中間人”的攻擊方式,就是“中間人”冒充真正的服務器接收你的傳給服務器的數據,然后再冒充你把數據傳給真正的服務器。服務器和你之間的數據傳送被“中間人”一轉手做了手腳之后,就會出現很嚴重的問題。
SSH的英文全稱是SecureShell。通過使用SSH,你可以把所有傳輸的數據進行加密,這樣“中間人”這種攻擊方式就不可能實現了,而且也能夠防止DNS和IP欺騙。還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替telnet,又可以為ftp、pop、甚至ppp提供一個安全的“通道”。
最初SSH是由芬蘭的一家公司開發的。但是因為受版權和加密算法的限制,現在很多人都轉而使用OpenSSH。OpenSSH是SSH的替代軟件,而且是免費的,可以預計將來會有越來越多的人使用它而不是SSH。
SSH是由客戶端和服務端的軟件組成的,有兩個不兼容的版本分別是:1.x和2.x。用SSH2.x的客戶程序是不能連接到SSH1.x的服務程序上去的。OpenSSH2.x同時支持SSH1.x和2.x。
SSH的安全驗證是如何工作的
從客戶端來看,SSH提供兩種級別的安全驗證。
第一種級別(基于口令的安全驗證)只要你知道自己帳號和口令,就可以登錄到遠程主機。所有傳輸的數據都會被加密,但是不能保證你正在連接的服務器就是你想連接的服務器。可能會有別的服務器在冒充真正的服務器,也就是受到“中間人”這種方式的攻擊。
第二種級別(基于密匙的安全驗證)需要依靠密匙,也就是你必須為自己創建一對密匙,并把公用密匙放在需要訪問的服務器上。如果你要連接到SSH服務器上,客戶端軟件就會向服務器發出請求,請求用你的密匙進行安全驗證。服務器收到請求之后,先在你在該服務器的家目錄下尋找你的公用密匙,然后把它和你發送過來的公用密匙進行比較。如果兩個密匙一致,服務器就用公用密匙加密“質詢”(challenge)并把它發送給客戶端軟件??蛻舳塑浖盏健百|詢”之后就可以用你的私人密匙解密再把它發送給服務器。
用這種方式,你必須知道自己密匙的口令。但是,與第一種級別相比,第二種級別不需要在網絡上傳送口令。
第二種級別不僅加密所有傳送的數據,而且“中間人”這種攻擊方式也是不可能的(因為他沒有你的私人密匙)。但是整個登錄的過程可能需要10秒。
二、SSL介紹(SecuresocketLayer&SecuritySocketLayer)
一個應用程序的安全需求在很大程度上依賴于將如何使用該應用程序和該應用程序將要保護什么。不過,用現有技術實現強大的、一般用途的安全通常是可能的。認證就是一個很好的示例。
當顧客想從Web站點購買某個產品時,顧客和Web站點都要進行認證。顧客通常是以提供名字和密碼的方式來認證他自己。另一方面,Web站點通過交換一塊簽名數據和一個有效的X.509證書(作為SSL握手的一部分)來認證它自己。顧客的瀏覽器驗證該證書并用所附的公用密鑰驗證簽名數據。一旦雙方都認證了,則交易就可以開始了。
SSL能用相同的機制處理服務器認證(就如在上面的示例中)和客戶機認證。Web站點典型地對客戶機認證不依賴SSL—要求用戶提供密碼是較容易的。而SSL客戶機和服務器認證對于透明認證是完美的,對等機—如p2p應用程序中的對等機之間一定會發生透明認證。
安全套接字層(SecureSocketsLayer(SSL)),SSL是一種安全協議,它為網絡(例如因特網)的通信提供私密性。SSL使應用程序在通信時不用擔心被竊聽和篡改。SSL實際上是共同工作的兩個協議:“SSL記錄協議”(SSLRecordProtocol)和“SSL握手協議”(SSLHandshakeProtocol)。“SSL記錄協議”是兩個協議中較低級別的協議,它為較高級別的協議,例如SSL握手協議對數據的變長的記錄進行加密和解密。SSL握手協議處理應用程序憑證的交換和驗證。
當一個應用程序(客戶機)想和另一個應用程序(服務器)通信時,客戶機打開一個與服務器相連接的套接字連接。然后,客戶機和服務器對安全連接進行協商。作為協商的一部分,服務器向客戶機作自我認證??蛻魴C可以選擇向服務器作或不作自我認證。一旦完成了認證并且建立了安全連接,則兩個應用程序就可以安全地進行通信。按照慣例,我將把發起該通信的對等機看作客戶機,另一個對等機則看作服務器,不管連接之后它們充當什么角色。
名為A和B的兩臺對等機想安全地進行通信。在我們簡單的p2p應用程序的環境中,對等機A想查詢對等機B上的一個資源。每個對等機都有包含其專用密鑰的一個數據庫(名為keystore)和包含其公用密鑰的證書。密碼保護數據庫的內容。該數據庫還包含一個或多個來自被信任的對等機的自簽名證書。對等機A發起這項事務,每臺對等機相互認證,兩臺對等機協商采用的密碼及其長度并建立一個安全通道。完成這些操作之后,每個對等機都知道它正在跟誰交談并且知道通道是安全的。SSL(SecuresocketLayer)安全套接層協議主要是使用公開密鑰體制和X.509數字證書技術保護信息傳輸的機密性和完整性,它不能保證信息的不可抵賴性,主要適用于點對點之間的信息傳輸,常用WebServer方式。
安全套接層協議(SSL,SecuritySocketLayer)是網景(Netscape)公司提出的基于WEB應用的安全協議,它包括:服務器認證、客戶認證(可選)、SSL鏈路上的數據
完整性和SSL鏈路上的數據保密性。對于電子商務應用來說,使用SSL可保證信息的真實性、完整性和保密性。但由于SSL不對應用層的消息進行數字簽名,因此不能提供交易的不可否認性,這是SSL在電子商務中使用的最大不足。有鑒于此,網景公司在從Communicator4.04版開始的所有瀏覽器中引入了一種被稱作“表單簽名(FormSigning)”的功能,在電子商務中,可利用這一功能來對包含購買者的訂購信息和付款指令的表單進行數字簽名,從而保證交易信息的不可否認性。綜上所述,在電子商務中采用單一的SSL協議來保證交易的安全是不夠的,但采用"SSL 表單簽名"模式能夠為電子商務提供較好的安全性保證。
------------------------------------------------------------------------------------------------
(SSH:SecureShellProtocol)
安全外殼協議(SSH)是一種在不安全網絡上提供安全遠程登錄及其它安全網絡服務的協議。SecureShell,又可記為SSH,最初是UNIX系統上的一個程序,后來又迅速擴展到其他操作平臺。SSH是一個好的應用程序,在正確使用時,它可以彌補網絡中的漏洞。除此以外,SSH之所以酷,還有以下原因:SSH客戶端適用于多種平臺。幾乎所有的UNIX平臺—包括HP-UX、Linux、AIX、Solaris、DigitalUNIX、Irix、SCO,以及其他平臺—都可以運行SSH。而且,已經有一些客戶端(其中有些為測試版)可以運行于UNIX操作平臺以外,包括OS/2、VMS、BeOS、Java、Windows95/98和WindowsNT。這樣,你就可以在幾乎所有的平臺上運行SSH客戶端程序了。對非商業用途它是免費的。許多SSH版本可以獲得源代碼,并且只要不用于商業目的,都可以免費得到。而且,UNIX版本也提供了源代碼,這就意味著任何人都可以對它進行修改。但是,如果你選擇它用于商業目的,那么無論使用何種版本的SSH,你都得確認已經注冊并獲得了相應權限。絕大多數SSH的客戶端和守護進程都有一些注冊限制。惟一的SSH通用公共注冊(GeneralPublicLicense,GPL)版本是lsh,它目前還是測試版。通過Internet傳送密碼安全可靠。這是SSH被認可的優點之一。如果你考察一下接入ISP(InternetServiceProvider,Internet服務供應商)或大學的方法,一般都是采用Telnet或POP郵件客戶進程。因此,每當要進入自己的賬號時,你輸入的密碼將會以明碼方式發送(即沒有保護,直接可讀),這就給攻擊者一個盜用你賬號的機會—最終你將為他的行為負責。對應用的支持。由于SSH的源代碼是公開的,所以在UNIX世界里它獲得了廣泛的認可。Linux,其源代碼也是公開的,大眾可以免費獲得,并同時獲得了類似的認可。這就使得所有開發者(或任何人)都可以通過補丁程序或bug修補來提高其性能,甚至還可以增加功能。這也第一部分獲得并安裝SSH意味著其性能可以不斷得到提高而無須得到來自原始創作者的直接技術支持。SSH替代了不安全的遠程應用程序。SSH是設計用來替代伯克利版本的r命令集的;它同時繼承了類似的語法。其結果是,使用者注意不到使用SSH和r命令集的區別。利用它,你還可以干一些很酷的事。通過使用SSH,你在不安全的網絡中發送信息時不必擔心會被監聽。你也可以使用POP通道和Telnet方式,通過SSH可以利用PPP通道創建一個虛擬個人網絡(VirtualPrivateNetwork,VPN)。SSH也支持一些其他的身份認證方法,如Kerberos和安全ID卡等。
但是因為受版權和加密算法的限制,現在很多人都轉而使用OpenSSH。OpenSSH是SSH的替代軟件,而且是免費的,可以預計將來會有越來越多的人使用它而不是SSH。
SSH是由客戶端和服務端的軟件組成的,有兩個不兼容的版本分別是:1.x和2.x。用SSH2.x的客戶程序是不能連接到SSH1.x的服務程序上去的。OpenSSH2.x同時支持SSH1.x和2.x。
SSH主要有三部分組成:
傳輸層協議[SSH-TRANS]提供了服務器認證,保密性及完整性。此外它有時還提供壓縮功能。SSH-TRANS通常運行在TCP/IP連接上,也可能用于其它可靠數據流上。SSH-TRANS提供了強力的加密技術、密碼主機認證及完整性保護。該協議中的認證基于主機,并且該協議不執行用戶認證。更高層的用戶認證協議可以設計為在此協議之上。
用戶認證協議[SSH-USERAUTH]用于向服務器提供客戶端用戶鑒別功能。它運行在傳輸層協議SSH-TRANS上面。當SSH-USERAUTH開始后,它從低層協議那里接收會話標識符(從第一次密鑰交換中的交換哈希H)。會話標識符唯一標識此會話并且適用于標記以證明私鑰的所有權。SSH-USERAUTH也需要知道低層協議是否提供保密性保護。
連接協議[SSH-CONNECT]將多個加密隧道分成邏輯通道。它運行在用戶認證協議上。它提供了交互式登錄話路、遠程命令執行、轉發TCP/IP連接和轉發X11連接。
一旦建立一個安全傳輸層連接,客戶機就發送一個服務請求。當用戶認證完成之后,會發送第二個服務請求。這樣就允許新定義的協議可以與上述協議共存。連接協議提供了用途廣泛的各種通道,有標準的方法用于建立安全交互式會話外殼和轉發(“隧道技術”)專有TCP/IP端口和X11連接。
通過使用SSH,你可以把所有傳輸的數據進行加密,這樣"中間人"這種攻擊方式就不可能實現了,而且也能夠防止DNS欺騙和IP欺騙。使用SSH,還有一個額外的好處就是傳輸的數據是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替Telnet,又可以為FTP、PoP、甚至為PPP提供一個安全的"通道"。
SSH分為兩部分:客戶端部分和服務端部分。
服務端是一個守護進程(daemon),他在后臺運行并響應來自客戶端的連接請求。服務端一般是sshd進程,提供了對遠程連接的處理,一般包括公共密鑰認證、密鑰交換、對稱密鑰加密和非安全連接。
客戶端包含ssh程序以及像scp(遠程拷貝)、slogin(遠程登陸)、sftp(安全文件傳輸)等其他的應用程序。
他們的工作機制大致是本地的客戶端發送一個連接請求到遠程的服務端,服務端檢查申請的包和IP地址再發送密鑰給SSH的客戶端,本地再將密鑰發回給服務端,自此連接建立。剛才所講的只是SSH連接的大致過程,SSH1.x和SSH2.x在連接協議上還有著一些差異。
SSH被設計成為工作于自己的基礎之上而不利用超級服務器(inetd),雖然可以通過inetd上的tcpd來運行SSH進程,但是這完全沒有必要。啟動SSH服務器后,sshd運行起來并在默認的22端口進行監聽(你可以用#ps-waux|grepsshd來查看sshd是否已經被正確的運行了)如果不是通過inetd啟動的SSH,那么SSH就將一直等待連接請求。當請求到來的時候SSH守護進程會產生一個子進程,該子進程進行這次的連接處理。
?
轉載于:https://www.cnblogs.com/songhx95cg/p/4776219.html
總結
- 上一篇: Maven构建Struts2框架的注意事
- 下一篇: c语言,gdb