openssh網(wǎng)絡(luò)安全分析

1 背景

SSH協(xié)議出現(xiàn)之前,在網(wǎng)絡(luò)設(shè)備管理上廣泛應(yīng)用的一種方式是Telnet。Telnet協(xié)議的優(yōu)勢在于通過它可以遠(yuǎn)程地登錄到網(wǎng)絡(luò)設(shè)備上,對網(wǎng)絡(luò)設(shè)備進(jìn)行配置专酗,為網(wǎng)絡(luò)管理員異地管理網(wǎng)絡(luò)設(shè)備提供了極大的方便。但是盗扇,Telnet協(xié)議存在三個致命的弱點:

A祷肯、明文傳輸:數(shù)據(jù)傳輸采用明文方式,傳輸?shù)臄?shù)據(jù)沒有任何機(jī)密性可言疗隶。

B佑笋、認(rèn)證機(jī)制脆弱。用戶的認(rèn)證信息在網(wǎng)絡(luò)上以明文方式傳輸抽减,很容易被竊聽允青; Telnet 只支持傳統(tǒng)的密碼認(rèn)證方式,很容易被攻擊卵沉。

C、“偽服務(wù)器欺騙”:客戶端無法真正識別服務(wù)器的身份法牲,攻擊者很容易進(jìn)行“偽服務(wù)器欺騙”史汗。SSH協(xié)議正是為了克服Telnet協(xié)議存在的問題而誕生的。

D拒垃、數(shù)據(jù)傳輸過程被篡改停撞,無法保證傳輸過程數(shù)據(jù)完整性

2 安全措施

ssh如果解決上述幾個安全問題?我們一個個來分析

2.1明文傳輸問題

通過 在 通信雙方建立“加密通道”悼瓮,保證傳輸?shù)臄?shù)據(jù)不被竊聽戈毒。并且需要有合適的手段保證通信雙方秘鑰的安全

2.1.1使用加密通道保證數(shù)據(jù)不被竊聽

所謂加密通道,是指發(fā)送方在發(fā)送數(shù)據(jù)前横堡,使用加密密鑰對數(shù)據(jù)進(jìn)行加密埋市,然后將

數(shù)據(jù)發(fā)送給對方;接收方接收到數(shù)據(jù)后命贴,利用解密密鑰從密文中獲取明文道宅。

加解密算法分為兩類:? 對稱密鑰算法:數(shù)據(jù)加密和解密時使用相同的密鑰和相同的算法食听。? 非對稱密鑰算法:數(shù)據(jù)加密和解密時使用不同的密鑰,一個是公開的公鑰污茵,

一個是由用戶秘密保存的私鑰樱报。

由于非對稱密鑰算法比較耗時,一般多用于數(shù)字簽名以及身份認(rèn)證泞当。SSH加密通道

上的數(shù)據(jù)加解密使用對稱密鑰算法迹蛤,目前主要支持的算法有DES、3DES襟士、AES

等盗飒,這些算法都可以有效地防止交互數(shù)據(jù)被竊聽,而且由于采用了初始化向量保

護(hù)敌蜂,可以防止類似于密碼流復(fù)用等密碼分析工具的攻擊箩兽。

2.1.2使用密鑰交換算法保證密鑰本身的安全

對稱密鑰算法要求解密密鑰和加密密鑰完全一致,才能順利從密文中解密得到明

文章喉。因此汗贫,要建立加密通道,必須先在通信雙方部署一致的加解密密鑰秸脱。部署加解

密密鑰的方式有多種:手工配置和第三方機(jī)構(gòu)分配等落包。手工配置的方式擴(kuò)展性差,

只適合一些小型的本地網(wǎng)絡(luò)摊唇;使用第三方機(jī)構(gòu)分配密鑰的方式咐蝇,需要額外的第三方

服務(wù)器,而且密鑰在網(wǎng)絡(luò)中傳輸容易被竊聽巷查。

SSH協(xié)議使用一種安全的方式在通信雙方部署密鑰:密鑰交換算法有序。利用密鑰交換

算法可以在通信雙方動態(tài)地產(chǎn)生密鑰,這個密鑰只能被通信的雙方獲得岛请,任何第三

者都無法竊聽旭寿,這就在源頭上保證了加解密使用密鑰的安全性,很好地解決了密鑰

分發(fā)問題崇败。

2.1.3 openssh中傳輸數(shù)據(jù)加密算法/秘鑰交換算法的配置

1盅称、傳輸數(shù)據(jù)加密算法配置

支持的數(shù)據(jù)加密算法有:

3des-cbc

aes128-cbc

aes192-cbc

aes256-cbc

aes128-ctr

aes192-ctr

aes256-ctr

aes128-gcm@openssh.com

aes256-gcm@openssh.com

chacha20-poly1305@openssh.com

默認(rèn)使用的算法:

chacha20-poly1305@openssh.com,

aes128-ctr,aes192-ctr,aes256-ctr,

aes128-gcm@openssh.com,aes256-gcm@openssh.com

可以通過關(guān)鍵字 “Ciphers”指定使用的算法,多個算法間后室,需要使用逗號相隔

有三種方式指定算法

方式一:Ciphers 關(guān)鍵字后接算法名稱缩膝,比如:Ciphers aes256-ctr,aes192-ctr表示只使用

aes256-ctr岸霹,aes192-ctr兩種算法

方式二:Ciphers 關(guān)鍵字后接算法名稱疾层,并且算法名稱前帶上“+”,表示在默認(rèn)算法基礎(chǔ)上松申,新增“+”后的算法

方式三:Ciphers 關(guān)鍵字后接算法名稱云芦,并且算法名稱前帶上“-”俯逾,表示在默認(rèn)算法基礎(chǔ)上,裁剪“-”后的算法

2.密鑰交換算法配置

支持的密鑰交換算法有:

curve25519-sha256

curve25519-sha256@libssh.org

diffie-hellman-group1-sha1

diffie-hellman-group14-sha1

diffie-hellman-group-exchange-sha1

diffie-hellman-group-exchange-sha256

ecdh-sha2-nistp256

ecdh-sha2-nistp384

ecdh-sha2-nistp521

默認(rèn)使用的密鑰交換算法有:

curve25519-sha256,curve25519-sha256@libssh.org,

ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,

diffie-hellman-group-exchange-sha256,

diffie-hellman-group14-sha1

可以通過關(guān)鍵字 “

KexAlgorithms”指定使用的算法舅逸,多個算法間桌肴,需要使用?逗號相隔

有三種方式指定算法

方式一:KexAlgorithms關(guān)鍵字后接算法名稱,比如:KexAlgorithms

diffie-hellman-group-exchange-sha256琉历,diffie-hellman-group14-sha1

表示只使用diffie-hellman-group-exchange-sha256坠七,diffie-hellman-group14-sha1

兩種算法

方式二:KexAlgorithms關(guān)鍵字后接算法名稱苏章,并且算法名稱前帶上“+”阳似,表示在默認(rèn)算法基礎(chǔ)上朽肥,新增“+”后的算法

方式三:KexAlgorithms關(guān)鍵字后接算法名稱币厕,并且算法名稱前帶上“-”,表示在默認(rèn)算法基礎(chǔ)上栋齿,裁剪“-”后的算法

2.2認(rèn)證機(jī)制脆弱問題(服務(wù)端認(rèn)證客戶端)

2.2.1密碼認(rèn)證

傳統(tǒng)的方式甘晤,采用的是密碼認(rèn)證模式:用戶在ssh客戶端輸入賬號狐血、密碼撮弧,openssh完成對登錄用戶進(jìn)行密碼認(rèn)證潘懊。用戶的身份信息等關(guān)鍵數(shù)據(jù)都保存在認(rèn)證服務(wù)器上

2.2.2公鑰認(rèn)證

由于密碼認(rèn)證方式的認(rèn)證強(qiáng)度較弱,SSH協(xié)議引入了公鑰認(rèn)證方式贿衍。目前授舟,openssh

可以利用RSA和DSA兩種非對稱密鑰算法實現(xiàn)公鑰認(rèn)證。

公鑰認(rèn)證的過程分為兩個部分::

(1)? 公鑰驗證:客戶端首先將自己本地密鑰對的公鑰部分贸辈,按照字符串格式發(fā)送

到服務(wù)器释树。服務(wù)器使用本地保存的客戶端公鑰,與報文中攜帶的客戶端公鑰

進(jìn)行比較擎淤,驗證客戶端持有公鑰的正確性奢啥。

(2)? 數(shù)字簽名驗證:如果公鑰驗證成功,客戶端繼續(xù)使用自己本地密鑰對的私鑰

部分嘴拢,對特定報文進(jìn)行摘要運(yùn)算扫尺,將所得的結(jié)果(即數(shù)字簽名)發(fā)送給服務(wù)

器,向服務(wù)器證明自己的身份炊汤;服務(wù)器使用預(yù)先配置的該用戶的公鑰,對客

戶端發(fā)送過來的數(shù)字簽名進(jìn)行驗證弊攘。

公鑰驗證和數(shù)字簽名驗證中任何一個驗證失敗抢腐,都會導(dǎo)致本次公鑰認(rèn)證失敗。

2.2.3 openssh中服務(wù)端認(rèn)證客戶端相關(guān)配置

2.2.3.1 配置項目

AuthenticationMethods

PubkeyAuthentication:是否使用公鑰認(rèn)證襟交,默認(rèn)為yes

UsePAM:該關(guān)鍵字只有在移植版中支持迈倍,PAM為“可插拔認(rèn)證模塊”,用于

PubkeyAcceptedKeyTypes:公鑰認(rèn)證算法

ecdsa-sha2-nistp256-cert-v01@openssh.com, ecdsa-sha2-nistp384-cert-v01@openssh.com, ecdsa-sha2-nistp521-cert-v01@openssh.com, ssh-ed25519-cert-v01@openssh.com, ssh-rsa-cert-v01@openssh.com, ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, ssh-ed25519,ssh-rsa

公鑰認(rèn)證配置方法:

1. 首先捣域,在客戶端生成一個對鑰:

# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Enter passphrase (empty for no passphrase):

Enter same passphrase again:

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

fa:49:6c:0a:90:0e:0f:57:2e:21:79:f6:65:7f:8d:42

這里我們用的是rsa算法,我們也可以使用dsa算法:

ssh-keygen -t dsa

從上面可以看到啼染,提示輸入私鑰的保護(hù)密碼宴合,我們也可以不選,直接ENTER就行了迹鹅!

現(xiàn)在密鑰已經(jīng)生成:

id_rsa(私鑰) id_rsa.pub(公鑰)

如果是dsa算法生成的話:

id_dsa id_dsa.pub

2. 我們將公鑰傳到服務(wù)器的.ssh目錄下.

scp id_rsa.pub user@hostname:/home/user/.ssh/authorized_keys

3. 將/etc/ssh/sshd_config

中的rsa認(rèn)證功能打開.(去掉注釋)

RSAAuthentication yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

然后重新啟動sshd就行了.

如果是dsa算法的話同理.

2.2.4 參考

疑問:公鑰認(rèn)證卦洽,是否使用了PAM?還是openssh自己搞的斜棚?

可插拔認(rèn)證模塊的介紹:

http://www.infoq.com/cn/articles/wjl-linux-pluggable-authentication-module

http://www.infoq.com/cn/articles/linux-pam-one

ChrootDirectory:

Specifies

2.3 對“偽服務(wù)器欺騙”的防御

2.3.1 ?原理

用戶認(rèn)證機(jī)制只實現(xiàn)了服務(wù)器端對客戶端的認(rèn)證阀蒂,而客戶端無法認(rèn)證服務(wù)器端,因

此存在著“偽服務(wù)器欺騙”的安全隱患弟蚀。


圖4 偽服務(wù)器欺騙

如圖4所示蚤霞,當(dāng)客戶端主機(jī)需要與服務(wù)器建立連接時,第三方攻擊者冒充真正的服

務(wù)器义钉,與客戶端進(jìn)行數(shù)據(jù)交互昧绣,竊取客戶端主機(jī)的安全信息,并利用這些信息去登

錄真正的服務(wù)器捶闸,獲取服務(wù)器資源夜畴,或?qū)Ψ?wù)器進(jìn)行攻擊。

為了防止類似這樣的偽服務(wù)器欺騙鉴嗤,SSH協(xié)議支持客戶端對服務(wù)器端進(jìn)行認(rèn)證斩启。服

務(wù)器端在密鑰交換階段,使用自己的私鑰對一段固定格式的數(shù)據(jù)進(jìn)行數(shù)字簽名醉锅,并

將該簽名發(fā)往客戶端兔簇,客戶端使用本地保存的服務(wù)器公鑰,對簽名進(jìn)行鑒別硬耍,從而

達(dá)到認(rèn)證服務(wù)器的目的垄琐。

2.3.3 openssh中相關(guān)配置

HostKey

HostKeyAlgorithms

ecdsa-sha2-nistp256-cert-v01@openssh.com, ecdsa-sha2-nistp384-cert-v01@openssh.com, ecdsa-sha2-nistp521-cert-v01@openssh.com, ssh-ed25519-cert-v01@openssh.com, ssh-rsa-cert-v01@openssh.com, ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521, ssh-ed25519,ssh-rsa

2.4數(shù)據(jù)傳輸過程被篡改

2.4.1 openssh中相關(guān)配置

Macs

支持的消息認(rèn)證碼(Mac)算法有:

hmac-md5

hmac-md5-96

hmac-sha1hmac-sha1-96

hmac-sha2-256

hmac-sha2-512

umac-64@openssh.com

umac-128@openssh.com

hmac-md5-etm@openssh.com

hmac-md5-96-etm@openssh.com

hmac-sha1-etm@openssh.com

hmac-sha1-96-etm@openssh.com

hmac-sha2-256-etm@openssh.com

hmac-sha2-512-etm@openssh.com

umac-64-etm@openssh.com

umac-128-etm@openssh.com

默認(rèn)使用的密鑰交換算法有:

umac-64-etm@openssh.com,umac-128-etm@openssh.com,

hmac-sha2-256-etm@openssh.com,hmac-sha2-512-etm@openssh.com,

hmac-sha1-etm@openssh.com,

umac-64@openssh.com,umac-128@openssh.com,

hmac-sha2-256,hmac-sha2-512,hmac-sha1

可以通過關(guān)鍵字 “Macs”指定使用的算法,多個算法間经柴,需要使用?逗號相隔

有三種方式指定算法

方式一:Macs關(guān)鍵字后接算法名稱狸窘,比如:KexAlgorithms

hmac-sha2-256,hmac-sha2-512

表示只使用hmac-sha2-256坯认,hmac-sha2-512

兩種算法

方式二:Macs關(guān)鍵字后接算法名稱翻擒,并且算法名稱前帶上“+”,表示在默認(rèn)算法基礎(chǔ)上牛哺,新增“+”后的算法

方式三:Macs關(guān)鍵字后接算法名稱陋气,并且算法名稱前帶上“-”,表示在默認(rèn)算法基礎(chǔ)上引润,裁剪“-”后的算法

2.5總結(jié)

openssh通過 以下4類算法巩趁,保證傳輸過程網(wǎng)絡(luò)安全:

A、傳輸數(shù)據(jù)加密:傳輸加密算法淳附,密鑰協(xié)商算法议慰,

B蠢古、公鑰認(rèn)證算法

C、Mac算法

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末别凹,一起剝皮案震驚了整個濱河市草讶,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌番川,老刑警劉巖到涂,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異颁督,居然都是意外死亡践啄,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門沉御,熙熙樓的掌柜王于貴愁眉苦臉地迎上來屿讽,“玉大人,你說我怎么就攤上這事吠裆》ヌ福” “怎么了?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵试疙,是天一觀的道長诵棵。 經(jīng)常有香客問我,道長祝旷,這世上最難降的妖魔是什么履澳? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮怀跛,結(jié)果婚禮上距贷,老公的妹妹穿的比我還像新娘。我一直安慰自己吻谋,他們只是感情好忠蝗,可當(dāng)我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著漓拾,像睡著了一般阁最。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上骇两,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天闽撤,我揣著相機(jī)與錄音,去河邊找鬼脯颜。 笑死,一個胖子當(dāng)著我的面吹牛贩据,可吹牛的內(nèi)容都是我干的栋操。 我是一名探鬼主播闸餐,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼矾芙!你這毒婦竟也來了舍沙?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤剔宪,失蹤者是張志新(化名)和其女友劉穎拂铡,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體葱绒,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡感帅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了地淀。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片失球。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖帮毁,靈堂內(nèi)的尸體忽然破棺而出实苞,到底是詐尸還是另有隱情,我是刑警寧澤烈疚,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布黔牵,位于F島的核電站,受9級特大地震影響爷肝,放射性物質(zhì)發(fā)生泄漏猾浦。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一阶剑、第九天 我趴在偏房一處隱蔽的房頂上張望跃巡。 院中可真熱鬧,春花似錦牧愁、人聲如沸素邪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兔朦。三九已至,卻和暖如春磨确,著一層夾襖步出監(jiān)牢的瞬間沽甥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工乏奥, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留摆舟,地道東北人。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像恨诱,于是被迫代替她去往敵國和親媳瞪。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容