標籤:des http 使用 os io strong 檔案 資料
/* 傳統的網路服務程式,如:ftp、pop和telnet在本質上都是不安全的,因為它們在網路上用明文傳送口令和資料,別有用心的人非常容易就可以截獲這些口令和資料。而且,這些服務程式的安全驗證方式也是有其弱點的, 就是很容易受到“中間人”(man-in-the-middle)這種方式的攻擊。所謂“中間人”的攻擊方式, 就是“中間人”冒充真正的伺服器接收你傳給伺服器的資料,然後再冒充你把資料傳給真正的伺服器。伺服器和你之間的資料傳送被“中間人”一轉手做了手腳之後,就會出現很嚴重的問題。通過使用SSH,你可以把所有傳輸的資料進行加密,這樣"中間人"這種攻擊方式就不可能實現了,而且也能夠防止DNS欺騙和IP欺騙。使用SSH,還有一個額外的好處就是傳輸的資料是經過壓縮的,所以可以加快傳輸的速度。SSH有很多功能,它既可以代替Telnet,又可以為FTP、PoP、甚至為PPP提供一個安全的"通道"。
從用戶端來看,SSH提供兩種層級的安全驗證。
第一種層級(基於口令的安全驗證) 只要你知道自己帳號和口令,就可以登入到遠程主機。所有傳輸的資料都會被加密,但是不能保證你正在已連線的服務器就是你想已連線的服務器。可能會有別的伺服器在冒充真正的伺服器,也就是受到“中間人”這種方式的攻擊。
第二種層級(基於密匙的安全驗證) 需要依靠密匙,也就是你必須為自己建立一對密匙,並把公用密匙放在需要訪問的伺服器上。如果你要串連到SSH伺服器上,用戶端軟體就會向伺服器發出請求,請求用你的密匙進行安全驗證。伺服器收到請求之後,先在該伺服器上你的主目錄下尋找你的公用密匙,然後把它和你發送過來的公用密匙進行比較。如果兩個密匙一致,伺服器就用公用密匙加密“質詢”(challenge)並把它發送給用戶端軟體。用戶端軟體收到“質詢”之後就可以用你的私人密匙解密再把它發送給伺服器。 用這種方式,你必須知道自己密匙的口令。但是,與第一種層級相比,第二種層級不需要在網路上傳送口令。 第二種層級不僅加密所有傳送的資料,而且“中間人”這種攻擊方式也是不可能的(因為他沒有你的私人密匙)。但是整個登入的過程可能需要10秒。 SSH 主要由三部分組成:
傳輸層協議 [SSH-TRANS] 提供了伺服器認證,保密性及完整性。此外它有時還提供壓縮功能。 SSH-TRANS 通常運行在TCP/IP串連上,也可能用於其它可靠資料流上。 SSH-TRANS 提供了強力的加密技術、密碼主機認證及完整性保護。該協議中的認證基於主機,並且該協議不執行使用者認證。更高層的使用者認證協議可以設計為在此協議之上。
使用者認證協議 [SSH-USERAUTH] 用於向伺服器提供用戶端使用者鑒別功能。它運行在傳輸層協議 SSH-TRANS 上面。當SSH-USERAUTH 開始後,它從低層協議那裡接收工作階段識別項(從第一次金鑰交換中的交換雜湊H )。工作階段識別項唯一標識此會話並且適用於標記以證明私密金鑰的所有權。 SSH-USERAUTH 也需要知道低層協議是否提供保密性保護。
連線協定 [SSH-CONNECT] 將多個加密隧道分成邏輯通道。它運行在使用者認證協議上。它提供了互動式登入話路、遠程命令執行、轉寄 TCP/IP 串連和轉寄 X11 串連。*/
安裝SSH(非必要)
yum install ssh
啟動SSH
service sshd start
設定開機運行
chkconfig sshd on
SSH相關設定檔的修改 首先修改SSH的設定檔。如下: [[email protected] ~]# vi /etc/ssh/sshd_config ← 用vi開啟SSH的設定檔 #Protocol 2,1 ← 找到此行將行頭“#”刪除,再將行末的“,1”刪除,只允許SSH2方式的串連 ↓Protocol 2 ← 修改後變為此狀態,僅使用SSH2 #ServerKeyBits 768 ← 找到這一行,將行首的“#”去掉,並將768改為1024 ↓ServerKeyBits 1024 ← 修改後變為此狀態,將ServerKey強度改為1024位元 #PermitRootLogin yes ← 找到這一行,將行首的“#”去掉,並將yes改為no ↓PermitRootLogin no ← 修改後變為此狀態,不允許用root進行登入 #PasswordAuthentication yes ← 找到這一行,將yes改為no ↓PasswordAuthentication no ← 修改後變為此狀態,不允許密碼方式的登入 #PermitEmptyPasswords no ← 找到此行將行頭的“#”刪除,不允許空密碼登入 ↓PermitEmptyPasswords no ← 修改後變為此狀態,禁止空密碼進行登入 然後儲存並退出。(vi儲存退出的命令為ZZ) 因為我們只想讓SSH服務為管理系統提供方便,所以在不通過外網遠端管理系統的情況下,只允許內網用戶端通過SSH登入到伺服器,以最大限度減少不安全因素。設定方法如下: [[email protected] ~]# vi /etc/hosts.deny ← 修改屏蔽規則,在文尾添加相應行 ## hosts.deny This file describes the names of the hosts which are# *not* allowed to use the local INET services, as decided# by the ‘/usr/sbin/tcpd’ server.## The portmap line is redundant, but it is left to remind you that# the new secure portmap uses hosts.deny and hosts.allow. In particular# you should know that NFS uses portmap!sshd: ALL ← 添加這一行,屏蔽來自所有的SSH串連請求 [[email protected] ~]# vi /etc/hosts.allow ← 修改允許規則,在文尾添加相應行 ## hosts.allow This file describes the names of the hosts which are# allowed to use the local INET services, as decided# by the ‘/usr/sbin/tcpd’ server.# sshd: 192.168.0. ← 添加這一行,只允許來自內網的SSH串連請求
重啟動SSH啟動 在修改完SSH的設定檔後,需要重新啟動SSH服務才能使新的設定生效。 [[email protected] ~]# /etc/rc.d/init.d/sshd restart ← 重新啟動SSH伺服器 Stopping sshd: [ OK ]Starting sshd: [ OK ] ← SSH伺服器重新啟動成功 這時,在遠程終端(自用PC等等)上,用SSH用戶端軟體以正常的密碼的方式是無法登入伺服器的。為了在客戶能夠登入到伺服器,我們接下來建立SSH用的公開金鑰與私密金鑰,以用於用戶端以“鑰匙”的方式登入SSH伺服器。 SSH2的公開金鑰與私密金鑰的建立 登入狀態一個一般使用者,基於這個使用者建立公開金鑰與私密金鑰。(這裡以centospub使用者為例) [[email protected] ~]# su – centospub ← 登入狀態一般使用者centospub [[email protected] ~]$ ssh-keygen -t rsa ← 建立公開金鑰與私密金鑰Generating public/private rsa key pair.Enter file in which to save the key (/home/kaz/.ssh/id_rsa): ← 鑰匙的檔案名稱,這裡保持預設直接斷行符號Created directory ‘/home/kaz/.ssh’Enter passphrase (empty for no passphrase): ← 輸入口令Enter same passphrase again: ← 再次輸入口令Your identification has been saved in /home/kaz/.ssh/id_rsa.Your public key has been saved in /home/kaz/.ssh/id_rsa.pub.The key fingerprint is:tf:rs:e3:7s:28:59:5s:93:fe:33:84:01:cj:65:3b:8e [email protected] 然後確認一下
公開金鑰與密鑰的建立,以及對應於用戶端的一些處理。 [[email protected] ~]$ cd ~/.ssh ← 進入使用者SSH設定檔的目錄 [[email protected] .ssh]$ ls -l ← 列出檔案total 16-rw——- 1 centospub centospub 951 Sep 4 19:22 id_rsa ← 確認私密金鑰已被建立-rw-r–r– 1 centospub centospub 241 Sep 4 19:22 id_rsa.pub ← 確認公開金鑰已被建立 [[email protected] .ssh]$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys ← 公開金鑰內容輸出到相應檔案中 [[email protected] .ssh]$ rm -f ~/.ssh/id_rsa.pub ← 刪除原來的公開金鑰檔案 [[email protected] .ssh]$ chmod 400 ~/.ssh/authorized_keys ← 將建立立的公開金鑰檔案屬性設定為400 然後,將私密金鑰通過安全的方式轉移到欲通過SSH串連到伺服器的PC上。這裡,以通過3.5寸磁碟為介質為例: [email protected] .ssh]$ exit ← 退出一般使用者的登入(返回root的登入) [[email protected] ~]# mount /mnt/floppy/ ← 載入軟碟機 [[email protected] ~]# mv /home/centospub/.ssh/id_rsa /mnt/floppy/ ← 將剛剛建立的私密金鑰移動到磁碟片 [[email protected] ~]# umount /mnt/floppy/ ← 卸載磁碟片
如果出現中文亂碼的情況,一般只需把Putty或SecureCRT中的編碼改為utf8就可以了。