天天看點

openssh指南 - cunshen

openssh指南

1:傳統的unix所提供的telnet,ftp,rlogin等标準服務有着諸多的安全隐患:沒有有效的認證機制、網絡連接配接中所有的傳輸資料(包括賬号密碼!)均為明文、容易導緻各種形式spoof 資料等。近期更是發現了各種版本的unix 系統的telnet,ftp都存在溢出問題,使攻擊者通過這些服務得到超級使用者的權限.

為了驗證這一點,可以作個試驗,我們從一台主機192.168.1.1上telnet登入到另外一台主機192.168.1.2。同時我們在這個網段的一台主機上起一個包分析軟體ngrep來看看能抓到什麼東西.

捕獲的包紀錄見文末的附1:

從捕獲的紀錄中我們看到在這個很短的包紀錄中就成功的抓到了登入的賬号:go,以及密碼:abcde!, 同時可以注意到解獲得所有的資料包均為明文傳輸!

2:為什麼要使用ssh,優點

一個好的替代方式就是使用ssh,ssh使用成熟的public/private key機制對網絡中資料包進行加密,使處于兩端的資料通信能夠在一個加密通道中進行,進而從根本上解決了網絡明文資料傳輸的問題,同樣是上面的例子,我們這次使用ssh從192.168.1.1.登入192.168.1.2,再次捕獲資料包看看:

Yiming.zz.ha.cn# ngrep host 192.168.1.1

interface: hme0 (192.168.1.0/255.255.255.224)

filter: ip and ( host 192.168.1.1 )

T 192.168.2.1:22 -> 192.168.1.1:44706 [AP]

...,...."{hB.E.?B..8bmA[.e餗........5.L0..%..).jLo..#D?S.........).(.....

.A.CO-1Q...-.......}...?d...=.;..;o..h......\'?...KA...n/]..].8...oORH?]?

>.?......#.m^..b>O..6頑...餝.C....-.Pm}.9..r\'.靋..#?_i.=..k.?B..0..3....

?.h.T\x|u{{...q?..HH5.OqN.y躔...?K...!c,.5.2(f.<9.?..L.+.扈...L).T=..U.U

.X.C...j

可以看到,不同與上面的明文傳輸,截獲的資料包都是經過加密的

除了加密通道中的資料外,使用ssh還可以得到一些額外的好處,比如:

端口轉發

資料壓縮

源代碼開放等。

3:ssh的工作原理

SSH(www.ssh.com)最初源于芬蘭的程式員Tatu,是完全免費的 (版本1.2.12之前),此後誕生了諸多版本的ssh,加上了各種限制,包括版權和加密算法等,同時用于商業版本的開始收費.是以很多人都轉而使用OpenSSH(www.openssh.org)。OpenSSH是SSH的替代軟體,它是完全免費的,而且沒有任何版權和加密算法的限制,進而得到了日益廣泛的應用.

目前openssh版本已到2.9,同時提供對ssh1,ssh2的支援.

我們已經知道ssh能對網絡中傳輸的資料進行加密,那麼在具體實作的時候用戶端連接配接伺服器端的認證是如何實作的呢?ssh提供了幾種認證方式,下面我們按在實作時的認證順序來逐一介紹:

第一種認證方式:如果系統提供了基于r的認證方式,同時在openssh中許可了這種認證方式,則使用者允許登入認證.需要注意的是這種認證方式在openssh中出于安全考慮預設是不允許的。

第二種認證方式:如果系統提供了基于r的認證方式,同時用戶端主機的host key在伺服器端的/etc/ssh_known_hosts中或是在對應使用者家目錄下$HOME/.ssh/known_hosts檔案内,則使用者允許繼續認證過程.

第三種認證方式:是基于rsa的認證,我們知道rsa是基于公鑰的加密方式的,這種方式加密和解密是依靠獨立的密鑰的,每個使用者都産生自己唯一的鑰匙對,公鑰分發出去,私鑰自己儲存,對欲加密的資料使用公鑰加密,需要解密時則使用對應的私鑰對已加密資料進行解密。這種算法實作安全保障的最重要的一點就是公鑰和私鑰之間沒有關聯,根據公鑰不可能推導出私鑰。為了使用rsa認證,使用者需要将自己的公鑰放在伺服器端自己家目錄下,儲存為$HOME/.ssh/authorized_keys,同時隻有伺服器中authorized_keys中列出的使用者才能進行認證。

采用這種認證方式時,當使用者發出登入請求,用戶端的ssh程式會告訴伺服器端自己打算使用哪個鑰匙對,然後伺服器端在自己的authorized_keys中檢查是否存在該使用者的公鑰,如果不存在,則拒絕該使用者,如果存在,則發給該使用者使用該使用者公鑰加密過的随機數字,我們上面講到過,隻用使用對應的私鑰才能對公鑰加密資料進行解密。隻用該使用者正确解密,認證過程才能繼續進行。 系統中的每個使用者都可以利用ssh-keygen生成自己的鑰匙對,并儲存在自己家目錄下的.ssh下,公鑰儲存為identity,私鑰儲存為identity.pub。上面講到過,為了實作rsa認證,使用者需要把自己的公鑰(identity.pub)拷貝到伺服器端家目錄下,并改名為authorized_keys。這樣的話使用者登入伺服器時,不需要輸入密碼即可以成功登入。

最後:如果上述條件均不滿足,則openssh進入基于普通的passwd認證方式,此時網絡上傳輸所有的資料都是加密的。

4:安裝

為了成功的安裝openssh,需要預先安裝zlib及openssl,相關的軟體可以在以下網址下載下傳,

Zlib:

http://www.freesoftware.com/pub/infozip/zlib/

OpenSSL

http://www.openssl.org/

上述軟體都安裝ok了以後,就可以進行openssh的安裝了,具體到安裝是比較簡單的,我們假設準備将這個軟體包安裝到opt目錄下。

解開gz包,

gzip -d openssh-1.2.2.tar.gz | tar xf -

cd openssh-1.2.2;

./configure --prefix=/opt/openssh --without-rsh

再依次執行make,make install編譯就結束了。

在編譯時,還有些常用的選項,如:--with-tcp-wrappers,這個選項是為了內建tcp_wrapper使用的,這樣編譯的話,管理者可以定義允許連接配接sshd的ip位址段。

編譯結束後,在/opt/openssh目錄下會生成etc,bin,sbin,man,libexec幾個目錄,其中sbin,bin,etc為最常用的目錄,這三個目錄下比較重要的檔案分别有sbin下的sshd,它就是ssh的守護程序,提供ssh服務。其次還有bin下的ssh,它為ssh用戶端程式,用來執行ssh連接配接請求。ssh-keygen,用來生成使用者的密鑰匙對及主機的host key。etc下有sshd及ssh的配置檔案,以及host key檔案。

5:指令使用方法

SSH的指令比較容易,我們這裡就不提了,有興趣的朋友可以自己MAN一下就可以了。

附1:

Yiming.zz.ha.cn# ngrep host 192.168.1.1

interface: hme0 (192.168.1.0/255.255.255.224)

filter: ip and ( host 192.168.1.1 )

T 192.168.1.2:23 -> 192.168.1.1:1026 [AP]

.?.?.?this is Yiming private box............login:

##

T 192.168.1.1:1026 -> 192.168.1.2:23 [AP]

...

#

T 192.168.1.2:23 -> 192.168.1.1:1026 [AP]

.?

##

T 192.168.1.1:1026 -> 192.168.1.2:23 [AP]

g

#

T 192.168.1.2:23 -> 192.168.1.1:1026 [AP]

g

##

T 192.168.1.1:1026 -> 192.168.1.2:23 [AP]

o

#

T 192.168.1.2:23 -> 192.168.1.1:1026 [AP]

o

##

T 192.168.1.1:1026 -> 192.168.1.2:23 [AP]

..

#

T 192.168.1.2:23 -> 192.168.1.1:1026 [AP]

T 192.168.1.2:23 -> 192.168.1.1:1026 [AP]

..

##

T 192.168.1.2:23 -> 192.168.1.1:1026 [AP]

Password:

##

T 192.168.1.1:1026 -> 192.168.1.2:23 [AP]

a

##

T 192.168.1.1:1026 -> 192.168.1.2:23 [AP]

b

##

T 192.168.1.1:1026 -> 192.168.1.2:23 [AP]

c

##

T 192.168.1.1:1026 -> 192.168.1.2:23 [AP]

d

##

T 192.168.1.1:1026 -> 192.168.1.2:23 [AP]

e

##

T 192.168.1.1:1026 -> 192.168.1.2:23 [AP]

..

#

T 192.168.1.2:23 -> 192.168.1.1:1026 [AP]

..

##

T 192.168.1.2:23 -> 192.168.1.1:1026 [AP]

##

T 192.168.1.2:23 -> 192.168.1.1:1026 [AP]

Last login: Sun Aug 26 09:32:08 from 192.168.1.1........This is yi

ming\'s private BOX....ANY question, pls mail [email protected].

...You have new mail...$