Linux下基於密鑰的安全驗證明現方法
-------OpenSSH+WinSCP+putty密鑰生成器+putty
實驗背景:
小諾公司目前已使用Linux搭建了各個服務器(FTP、DNS、Apache、Sendmail、Samba),因爲這些服務器都被放置在一個安全的地方,通常是不容許任何人進入的,公司如今須要經過遠程客戶端安全的訪問這些服務器。
SSH是標準的網絡協議,可用於大多數UNIX操做系統,可以實現字符界面的遠程登陸管理,它默認使用22號端口,採用密文的形式在網絡中傳輸數據,相對於經過明文傳輸的Telnet,具備更高的安全性。
SSH提供了口令和密鑰兩種用戶驗證方式,這二者都是經過密文傳輸數據的,不一樣的是,口令用戶驗證方式傳輸的是用戶的帳戶名和密碼,這要求輸入的密碼具備足夠的複雜度才能具備更高的安全性。而基於密鑰的安全驗證必須爲用戶本身建立一對密鑰,並把共有的密鑰放在須要訪問的服務器上。當須要鏈接到SSH服務器上時,客戶端軟件就會向服務器發出請求,請求使用客戶端的密鑰進行安全驗證。服務器收到請求以後,先在該用戶的根目錄下尋找共有密鑰,而後把它和發送過來的公有密鑰進行比較。若是兩個密鑰一致,服務器就用公有的密鑰加密「質詢」,並把它發送給客戶端軟件(puetty)。客戶端收到質詢以後,就能夠用本地的私人密鑰解密再把它發送給服務器。這種方式是至關安全的。
實驗網絡拓撲:
實驗步驟:
1、 安裝並配置OpenSSH軟件
在RHEL4系統中OpenSSH服務器和客戶端軟件是默認安裝的,所以不須要用戶手動安裝。若是沒有安裝,與OpenSSH服務相關的軟件包都包括再第二張安裝光盤中,可經過rpm命令進行安裝。
在RHEL4中,與OpenSSH服務相關的配置文件都保存在目錄「/etc/ssh」中,其中sshd_config是SSH服務器的配置文件,ssh_config是SSH客戶機的配置文件。本實驗經過在Windows使用puetty登陸,所以不須要配置ssh_config。只須要配置sshd_config便可。
在sshd_config文件中將下面的三行註釋去掉便可。
RSAAuthentication yes 開啓RSA加密功能
PubkeyAuthentication yes 開啓公鑰驗證功能
AuthorizedKeysFile 指定公鑰的文件名稱以及保存位置
配置完成以後,須要重啓sshd服務程序,以便新的配置生效。
在SSH服務器端(客戶機端也能夠,最好在客戶機端生成,而後將公鑰上傳到對應的目錄中,這樣比較安全)生成公鑰和私鑰對。
ssk-keygen命令用於生成當前用戶的密鑰對。
-t rsa 命令選項指定密鑰的類型爲rsa。
-b 1024 命令選項指定密鑰的長度爲1024位。
在ssh-keygen命令生成密鑰的執行過程當中,須要用戶回答相關的設置信息,第一個爲私鑰的默認路徑,第二個爲私鑰的密碼,第三個爲私鑰的再次密碼確認。
ssh-keygen命令執行完畢後會在用戶宿主目錄的「.ssh」目錄中生成兩個文件,其中id_rsa是用戶私鑰文件,id_rsa.pub是用戶的公鑰文件,這兩個文件是經過ssh_keygen命令一次生成,而且須要配對使用的。
因爲生成的公鑰名稱與指定的公鑰名稱不符,所以須要將生成的文件名換成authorized_keys便可。
2、 安全使用WinSCP軟件導出用戶私鑰
因爲須要將私鑰文件id_rsa拷貝到用戶的主機上,並且還要刪除服務器上的私鑰,這樣能夠保證私鑰的惟一性。若是經過Samba或者FTP服務器均可能形成私鑰的丟失,所以須要採用安全的方式訪問Linux服務器。WinSCP是Windows下的scp和sftp客戶端程序,安裝完WinSCP軟件以後,開啓WinSCP軟件會出現與PuTTY相似的配置對話框,在該對話框中輸入SSH服務器的主機名(IP地址)和端口號,用戶名和密碼(口令),並選擇「登陸」按鈕進入登陸,鏈接的方式是經過密文傳輸的,安全性極高。
經過WinSCP軟件登陸上Linux以後,能夠將用戶的私鑰id_rsa先拷貝到本身的主機上,而後將Linux上的私鑰刪除便可以防後患。
3、 使用PuTTY密鑰生成器生成Windows識別的密鑰。
因爲Linux下生成的密鑰直接在Windows下是不能使用的,所以須要使用puTTYgen在Windows客戶端生成對應的私鑰。
將Linux服務器上下載下來的私鑰導入到PuTTY服務器上,選擇密鑰位數爲1024,類型爲SSH-2 RSA和服務器上命令ssh-keygen設置的參數對應。
單擊「生成」按鈕,而後輸入密鑰使用的密碼。
生成以後,單擊「保存私鑰」到本機上,會生成一個擴展名爲ppk文件退出便可。
4、 安裝並配置PuTTY軟件
在windows中須要安裝第三方軟件來實現SSH客戶端的功能。PuTTY是Windows下最流行的SSH客戶端軟件,而且仍是綠色軟件,專門爲SSH設置使用的,可以無償使用。下面是打開以後的主界面。
在會話一欄輸入主機名稱對應的IP地址,端口號爲22,協議類型爲SSH。
在認證一欄中導入PuTTY密鑰生成器生成的密鑰。
而後保存會話並打開。輸入用戶名root,而後輸入私鑰的密鑰便可。
因爲SSH採用密文的傳輸方式,所以默認運行root用戶直接進入SSH登陸,出於安全的須要也能夠設置禁止root用戶直接進行SSH登陸。
在sshd_config配置文件中將「permitRootLogin yes」前面的註釋去掉,並將「yes」改成「no」便可。對sshd_config配置以後,從新啓動sshd服務便可。
在PuTTY上設置一個使用Linux口令登陸能夠發現登陸失敗,這就是「PermitRootLogin no」形成的。