亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 1424 | 回復(fù): 0
打印 上一主題 下一主題

SSH權(quán)威指南(一) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2011-12-19 13:56 |只看該作者 |倒序?yàn)g覽
 

本書是一本介紹通信安全的書籍,如果你想保障你的通信安全,本書能給你一個(gè)很好的解決方案。本書從ssh協(xié)議介紹起,到具體的開源實(shí)現(xiàn)和商業(yè)實(shí)現(xiàn)。但本書同時(shí)介紹開源實(shí)現(xiàn)和商業(yè)實(shí)現(xiàn),給人感覺比較亂。

注意:由于openssh是開源軟件,各版間的配置方法和設(shè)置參數(shù)可能會(huì)不同,所以設(shè)置時(shí)要以最新版的手冊(cè)為準(zhǔn),不要硬套書本的設(shè)置。

第一章 SSH簡(jiǎn)介

ssh(secure shell)是一種通用,功能強(qiáng)大的基于軟件的網(wǎng)絡(luò)安全解決方案,計(jì)算機(jī)每次向網(wǎng)絡(luò)發(fā)送數(shù)據(jù)時(shí),SSH都會(huì)自動(dòng)對(duì)其進(jìn)行加密。數(shù)據(jù)到達(dá)目的地時(shí),SSH自動(dòng)對(duì)加密數(shù)據(jù)進(jìn)行解密。整個(gè)過程都是透明的。它使用了現(xiàn)代的安全加密算法,足以勝任大型公司的任務(wù)繁重的應(yīng)用程序的要求。

SSH協(xié)議內(nèi)容涉及認(rèn)證AUTHENTICATION,加密ENCRYPTION,和網(wǎng)絡(luò)上傳輸數(shù)據(jù)的完整性INTEGRITY。

SSH特性概述

1、遠(yuǎn)程登錄

$ ssh -l root host.example.com

2、安全文件傳輸

$ scp myfile metoo@secondacount.com

3、安全執(zhí)行遠(yuǎn)程命令,能確保傳輸?shù)臄?shù)據(jù)安全。

4、密鑰和代理

基于密鑰的認(rèn)證方法不用記住多個(gè)帳號(hào)密碼。

5、訪問控制,能授權(quán)別人訪問自已帳號(hào)。

6、端口轉(zhuǎn)發(fā)

$ ssh -L 3002:localhost:119 xxx.xxx.com

相關(guān)安全技術(shù)

rsh命令族,rsh,rlogin and rcp。連接不加密,認(rèn)證模型十分脆弱。

PGP加密程序。它是基于文件的。

Kerberos認(rèn)證系統(tǒng),用于網(wǎng)絡(luò)可能被監(jiān)視,而且計(jì)算機(jī)不是中心控制的環(huán)境;诼槭±砉

學(xué)院的Athena項(xiàng)目。它SSH不是,SSH是輕量級(jí)的,容易部署。Kerberos使用前必須構(gòu)建

一些重要基礎(chǔ)。

IPSEC,Internet安全協(xié)議。

SRP,安全遠(yuǎn)程密碼協(xié)議,是Stanford大學(xué)開發(fā)的。是一種專用的認(rèn)證協(xié)議。

SSL,安全套接字。

stunnel,是一種SSL工具,它為UNIX環(huán)境現(xiàn)有的基于TCP的服務(wù)(POP,IMAP等)增加

SSL保護(hù),而不用修改服務(wù)器源程序。

第二章 SSH客戶端的基本用法

最常用功能,1、經(jīng)由安全連接登錄到遠(yuǎn)程計(jì)算機(jī)。2、通過安全連接在計(jì)算機(jī)間拷貝文件。

當(dāng)你第一次連接SSH服務(wù)器時(shí),出現(xiàn)問答時(shí)要回答“yes”,把已知名主機(jī)的密鑰的公共部

分拷貝一份存在本地。之后你每次連接這臺(tái)服務(wù)器,就用這個(gè)公鑰來驗(yàn)證遠(yuǎn)程主機(jī)。最好是

能在首次連接前就能獲得這個(gè)公鑰,否則第一次連接服務(wù)器時(shí)你可能已受到中間人攻擊。

使用密鑰進(jìn)行認(rèn)證,SSH支持公鑰認(rèn)證,可以使用加密密鑰,密鑰比密碼更安全。

SSH證書使用一對(duì)密鑰,一個(gè)私鑰,一個(gè)公鑰,私鑰只保存你獨(dú)有的一些秘密信息。SSH

用其向服務(wù)器證明自已的身份。公鑰是公開的,可以隨便將其放入SSH服務(wù)器上自已的帳

號(hào)中,在認(rèn)證時(shí),進(jìn)行私鑰和公鑰協(xié)商,如果匹配,那么身份就得以證明,認(rèn)證就成功。

在使用公鑰認(rèn)證以前,首先要進(jìn)行一些設(shè)置:

1、需要一對(duì)密鑰,還需要使用一個(gè)口令來保護(hù)自已的私鑰。

使用ssh-keygen程序生成一對(duì)密鑰。如果不存在SSH目錄,程序?yàn)樽詣?dòng)創(chuàng)建本地SSH目錄

~/.ssh,并將所生成的密鑰分成兩個(gè)文件存儲(chǔ),公有部份identity.pub,私有部分identity,或

id_dsa_1024_a,id_dsa_1024_a.pub(ssh2)。

2、需要在SSH服務(wù)器上安裝自已的公鑰。

通過配置SSH目錄中的一個(gè)文件實(shí)現(xiàn),對(duì)于SSH1 AND OPENSSH來說該文件是

~/.ssh/authorized_keys。對(duì)SSH2來說是~/.ssh2/authorization。OPENSSH中的SSH-2連接自

3.0版本起也一同使用authorized_keys文件。3.0版本前的使用authorized_keys2。把用戶本

地機(jī)器生成identity.pub文件內(nèi)容加入其中。對(duì)SSH2來說,用戶需編輯兩個(gè)文件,一個(gè)客

戶端一個(gè)在服務(wù)器端,

在客戶端,要?jiǎng)?chuàng)建或編輯文件~/.ssh2/identification并在其中插入一行,說明自已的私鑰文件

名: IdKey id_dsa_1024_a.

在服務(wù)器端,要?jiǎng)?chuàng)建或編輯文件~/.ssh2/authorization,該文件包含有公鑰信息,每行一個(gè),

但和SSH1的authorized_keys文件不同(authorized_keys中包含有公鑰的拷貝),authorization

中只給出公鑰文件名:Key id_dsa_1024_a.pub。最后,把這個(gè)文件從本地機(jī)器上拷貝到服務(wù)

器~/.ssh2中。為安全起見,要確保ssh目錄的安全,只有所有者才有權(quán)寫入。如果遠(yuǎn)程用戶

的SSH配置文件的權(quán)限設(shè)置不當(dāng),服務(wù)器可能會(huì)拒絕進(jìn)行認(rèn)證。

公鑰認(rèn)證比密碼認(rèn)證更安全,因?yàn)椋?

1、 公鑰認(rèn)證需要兩個(gè)加密部份(磁盤上的identify文件和用戶頭腦中的口令),入侵都必須

2、 具備兩種條件才行。密碼認(rèn)證只需要一個(gè)部份,那就是密碼,它可能更容易被竊取。

3、 在公鑰認(rèn)證中,口令和密鑰都不用發(fā)給遠(yuǎn)程主機(jī),只要把前面討論的認(rèn)證者發(fā)給遠(yuǎn)程主

4、 機(jī)就可以了,因此,并沒有秘密信息傳出客戶端。

3、機(jī)器生成的密鑰是不可能猜測(cè)出來的,而人生成的密碼容易受到字典攻擊。

通過禁用密碼認(rèn)證并只允許使用密鑰認(rèn)證能極大提高主機(jī)的安全性。

如果要修改密鑰

如果已經(jīng)生成一個(gè)密鑰對(duì),并把公鑰拷貝到多個(gè)SSH服務(wù)器上了,用戶有一天決定修改自

已的身份,因?yàn)樵龠\(yùn)行ssh-keygen。這樣,就會(huì)覆蓋identify and identify.pub文件,用戶之

前的公鑰就沒用了,必須把新公鑰再次拷貝到各個(gè)服務(wù)器上。這是很頭疼的,所以建議:

1、 不能局限于僅僅使用一個(gè)密鑰對(duì),可隨意生一此密鑰對(duì),將其保存在不同的文件中,并

2、 將其用作不同的用途。

3、 如果只是想修改口令,就不必重新生成一個(gè)密鑰對(duì),ssh-keygen有一個(gè)命令行選項(xiàng)可以

4、 替換現(xiàn)有的密鑰口令。ssh1 and openssh是-p,對(duì)于ssh2是-e。這樣,因?yàn)樗借沒變,所以

5、 公鑰依然不效,中需使用新口令對(duì)私鑰進(jìn)行解密就可以了。

ssh代理

它可以把私鑰保存在內(nèi)存中,為認(rèn)證提供服務(wù),不用重復(fù)輸入密碼。直到用戶退出為止。代

理程序是ssh-agent。可手工運(yùn)行也可編輯~/.login 或~/.xsession來自動(dòng)運(yùn)行。

$ ssh-agent $SHELL 其中SHELL是用戶登錄shell的環(huán)境變量。運(yùn)行該命令后,打開另外

一個(gè)shell,在這個(gè)shell中可以訪問代理。

接著用ssh-add命令裝入私鑰。這樣,使用ssh and scp命令就不用再提醒輸入口令了?诹

裝入內(nèi)存中。如果用戶正運(yùn)行x window系統(tǒng),并設(shè)置了DISPLAY環(huán)境變量,而標(biāo)準(zhǔn)輸入

不是終端,那么ssh-add就使用一個(gè)圖形化X程序ssh-askpass來讀取口令。要強(qiáng)制ssh-add

使用X來讀取口令,請(qǐng)?jiān)诿钚兄休斎雜sh-add < /dev/null。

-l 參數(shù)顯示內(nèi)存中的密鑰

-d 參數(shù)從代理中刪除密鑰 $ ssh-add -d ~/.ssh/id_xxx.pub

-D 是刪除所有密鑰

-t 對(duì)加載的密鑰設(shè)置超時(shí)時(shí)間,超時(shí)代理將自動(dòng)卸載密鑰。

-L -U 對(duì)代理進(jìn)行加鎖和解鎖,當(dāng)你離開計(jì)算機(jī)而不想退出登錄時(shí)有用。

代理轉(zhuǎn)發(fā)

可能通過代理轉(zhuǎn)發(fā)功能,可以用SCP把文件從遠(yuǎn)程SSH服務(wù)器上拷貝到第三方SSH主機(jī)上。

條件是你在第三方SSH主機(jī)上必須有一個(gè)帳號(hào)。具體操作是這樣的:

1、 在本地主機(jī)上運(yùn)行命令:# scp pat@shell.isp.com:print-me

2、 psmith@other.host.net:other-print-me

2、這個(gè)scp進(jìn)程與本地代理進(jìn)行聯(lián)系,并讓用戶和shell.isp.com進(jìn)行認(rèn)證。

3、自動(dòng)在shell.isp.com上執(zhí)行第二個(gè)scp,用來把文件拷貝到other.host.net主機(jī)上。

3、 由于啟用了代理轉(zhuǎn)發(fā)(SSH1 AND SSH2默認(rèn)是打開的,openssh默認(rèn)是關(guān)閉的),因此

4、 shell.isp.com上的SSH服務(wù)器就充當(dāng)一個(gè)代理。

5、第二個(gè)scp進(jìn)程通過聯(lián)系shell.isp.com上的代理試圖讓用戶和other.host.net進(jìn)行認(rèn)證。

5、 shell.isp.net上ssh服務(wù)器秘密與用戶的本地代理進(jìn)行通信,從而構(gòu)建出一個(gè)認(rèn)證者來提

6、 供用戶的證書并將其傳回服務(wù)器。

7、服務(wù)器為第二個(gè)scp進(jìn)程驗(yàn)證用戶的身份,other.host.net上的認(rèn)證獲得成功。

8、開始拷貝文件。

由于代理轉(zhuǎn)發(fā)不會(huì)把私鑰發(fā)送到遠(yuǎn)程主機(jī)上,而是把認(rèn)證返回第一臺(tái)機(jī)進(jìn)行處理,因此密鑰

是安全的。

不用密碼或口令進(jìn)行連接方式

1、使用代理的公鑰認(rèn)證。

2、可信主機(jī)認(rèn)證。

3、Kerberos認(rèn)證。

在后文中將會(huì)討論這些方式的優(yōu)缺點(diǎn)。

sftp

它是在SSH上的一個(gè)獨(dú)立文件傳輸工具,操作與ftp類似,可以在一個(gè)會(huì)話中調(diào)用多個(gè)命令

進(jìn)行文件拷貝和處理,而scp每次調(diào)用時(shí)都要打開一個(gè)會(huì)話。sftp不區(qū)分ascii and binary傳

輸模式,只使用二進(jìn)制模式,因此,如果使用它在windows and unix之間拷貝ascii文件,

那么就不能正確轉(zhuǎn)換行結(jié)束符。

第三章 SSH內(nèi)幕

SSH協(xié)議的主要特性和優(yōu)點(diǎn):

1、 使用強(qiáng)加密技術(shù)來保證數(shù)據(jù)的私密性。端到端通信用隨機(jī)密鑰進(jìn)行加密,隨機(jī)密鑰為會(huì)

話進(jìn)行安全協(xié)商,會(huì)話結(jié)束后被丟棄。支持的算法有ARCFOUR,Blowfish,DES,IDEA,3DES等。

2、通信完整性,確保通信不會(huì)被修改。SSH-2基于MD5 AND SHA-1的加密hash算法。

3、認(rèn)證,即發(fā)送者和接收者的身份證明。客戶機(jī)和服務(wù)器雙向認(rèn)證。

4、授權(quán),即對(duì)賬號(hào)進(jìn)行訪問控制。

5、使用轉(zhuǎn)發(fā)或隧道技術(shù)對(duì)其它基于tcp/ip的會(huì)話進(jìn)行加密。支持三種轉(zhuǎn)發(fā),tcp端口轉(zhuǎn)發(fā),

X轉(zhuǎn)發(fā),代理轉(zhuǎn)發(fā)。

SSH可以防止的攻擊

1、網(wǎng)絡(luò)竊聽,SSH通信是加密的,即使截獲會(huì)話內(nèi)容,也不能將其解密。

2、名字服務(wù)和IP偽裝,SSH通過加密驗(yàn)證服務(wù)器主機(jī)身份可避免這類風(fēng)險(xiǎn)。

3、連接劫持,SSH的完整性檢測(cè)負(fù)責(zé)確定會(huì)話在傳輸過程是否被修改,如果被修改過,就

關(guān)閉連接。

4、 中間人攻擊,SSH利用兩種方法防止這種攻擊,第一種是服務(wù)器主機(jī)認(rèn)證。除非攻擊者

已經(jīng)成功攻擊了服務(wù)器主機(jī),獲得服務(wù)器的私有主機(jī)密鑰。第二種是限制使用容易受到

這種攻擊的認(rèn)證方法,密碼認(rèn)證容易受到中間人攻擊,而公鑰和基于主機(jī)的/RhostsRSA

則對(duì)中間人攻擊可以免疫。

5、插入攻擊,這種攻擊可以客戶和服務(wù)器之間發(fā)送的正文數(shù)據(jù)流之間插入任意數(shù)據(jù)。ssh1

1.2.25后和openssh的所有版本都專門進(jìn)行了設(shè)計(jì),來檢測(cè)并防止這種攻擊。這種檢測(cè)程序

增大了插入攻擊的難度,但是并不能完全防止。ssh2使用強(qiáng)加密完整性檢測(cè)手段來防止這個(gè)

問題。可以用3DES算法來防止這種攻擊。

SSH不能防止的攻擊

1、 密碼崩潰,密碼認(rèn)證是一種脆弱的認(rèn)證形式,盡量使用公鑰認(rèn)證方式。如果必須要密碼

認(rèn)證,可考慮使用S/Key之類的一次性密碼機(jī)制。

2、 IP AND TCP攻擊,由于SSH是在TCP之上進(jìn)行操作的,因此容易受到針對(duì)TCP和IP

缺陷而發(fā)起的攻擊。SYN flood,TCP不同步和TCP劫持等。只能通過更低層的防護(hù)措施

來保護(hù)。

3、流量分析。

4、隱秘通道。

5、粗心大意。安全是一個(gè)過程,而不是一個(gè)產(chǎn)品,不要認(rèn)為裝上SSH就安全了。

第四章 SSH的安裝和編譯時(shí)配置

第五章 服務(wù)器范圍的配置

sshd可以在三個(gè)層次上進(jìn)行配置,第一層次是上面的安裝和編譯時(shí)配置;第二層次是本章的

服務(wù)器范圍配置;第三層次是每賬號(hào)配置(第八章),前者是服務(wù)器編譯時(shí)就指定了包含哪

些特定功能,不包含哪些功能,后者則是由終端用戶來修改自已賬號(hào)所使用的服務(wù)器的行為。

以普通用戶身份運(yùn)行SSH服務(wù)器

1、得到管理員許可。

2、生成一個(gè)主機(jī)密鑰。

$ ssh-keygen -N '' -b 1024 -f ~/myserver/hostkey 生成hostkey and hostkey.pub兩個(gè)文件

3、選擇端口號(hào)。 要選擇大于或等1024的端口,因?yàn)橹挥谐?jí)用戶才有權(quán)使用小于

1024的端口 。

4、創(chuàng)建服務(wù)器配置文件(可選) 可創(chuàng)建自已的配置文件,否則,服務(wù)就使用內(nèi)建的特性或使

用服務(wù)器范圍的配置文件。

啟動(dòng)服務(wù)器方式:$ sshd -h ~/myserver/hostkey -p 2345 -f ~/myserver/config

由普通用戶運(yùn)行的服務(wù)器有一些缺點(diǎn):

1、由于不是由root的uid下運(yùn)行,因此只能連接到用戶自已的賬號(hào)上。

2、它需手工調(diào)用,不能自啟動(dòng)。

3、 日志用戶沒權(quán)看到,因?yàn)榉⻊?wù)器把它寫到syslog日志系統(tǒng)中,但可用調(diào)試模式運(yùn)行服務(wù)

4、 器,這樣信息就顯示在終端機(jī)上。

服務(wù)器配置文件

SSH1 AND OPENSSH的配置文件通常是/etc/sshd_config,而SSH2的配置文件通常是

/etc/ssh2/sshd2_config。

以非缺省的配置文件來調(diào)用sshd,可以使用命令 -f 選項(xiàng)。$ sshd -f /usr/local/ssh/my_config。

以*號(hào)作為標(biāo)號(hào)的語名都會(huì)被sshd忽略。

修改完配置后,修改不會(huì)馬上影響到服務(wù)器,可重啟服務(wù)器或發(fā)送SIGHUP信號(hào)。$ kill -HUP

`cat /etc/sshd.pid`

如果在命令行改動(dòng)了配置,用SIGHUP信號(hào)重啟服務(wù)器不能覆蓋命令行的配置,它的優(yōu)先

級(jí)高。

主機(jī)密鑰,sshd主機(jī)密鑰向SSH客戶端唯一地標(biāo)識(shí)SSH服務(wù)器。主機(jī)密鑰保存在一對(duì)文件

中,一個(gè)文件包含私鑰,一個(gè)文件包含公鑰。對(duì)于SSH1 AND OPENSSH,它是

/etc/ssh_host_key。文件位置可用HostKey關(guān)鍵字修改 HostKey /usr/local/ssh/key。服務(wù)器的

公鑰保存在.pub文件中。

OPENSSH服務(wù)器有一個(gè)SSH-2的主機(jī)密鑰,缺省是在/etc/ssh_host_dsa_key。其位置可用

HostDsaKey /usr/local/openssh/key2修改。

對(duì)于SSH2,如果服務(wù)器是由超級(jí)用戶運(yùn)行,缺省私鑰文件是/etc/ssh2/hostkey。如果是其它

用戶運(yùn)行,則在~/.ssh2/hostkey。可用HostKeyFile /etc/local/ssh/key修改。公鑰是hostkey.pub

文件,可用publicHostKeyFile關(guān)鍵字修改。

可以用命令行選項(xiàng)指定私鑰文件:$ sshd -h /usr/local/ssh/key。

隨機(jī)數(shù)種子文件

如果用戶的系統(tǒng)中有一個(gè)隨機(jī)位源,如/dev/urandom,那么OPENSSH就不能創(chuàng)建隨機(jī)數(shù)種

子文件。

服務(wù)器配置文件

通常是/etc/sshd_config /etc/ssh2/ssh2_config,可以用-f 選項(xiàng)重新指定其配置文件?捎糜谝

臺(tái)機(jī)器運(yùn)行多個(gè)sshd的情況。

每賬號(hào)認(rèn)證文件。~/.ssh/authorized_keys 。

文件權(quán)限

由于配置文件的權(quán)限設(shè)置錯(cuò)誤,會(huì)降低系統(tǒng)的安全性,所以可以設(shè)置StrictModes YES/NO

關(guān)鍵字,對(duì)sshd的重要文件和目錄的權(quán)限進(jìn)行檢查,如果檢查失敗,服務(wù)器就拒絕對(duì)該用

戶的SSH連接。

在多宿主主機(jī)上,使用ListenAddress xxx.xxx.xxx.xxx來限制SSH只監(jiān)聽一個(gè)網(wǎng)絡(luò)接口。

空閑連接時(shí)間,IdleTimeout xx 如果是0代表什么都不做,保持連接。否則,超時(shí)就斷開連

接,可以用s,m,h,d,w表示。

KeepAlive YES/NO 可以斷開失效的連接,比如客戶端崩潰。

失敗的登錄

LogingGraceTime 60 限定用戶必須在60秒內(nèi)成功進(jìn)行認(rèn)證。 0值表禁用。命令行選項(xiàng)用

-g

PasswordGuesses 5 如果連接請(qǐng)求使用密碼認(rèn)證,那么sshd2就只允許客戶端嘗試五次。

(SSH2)

限制并發(fā)連接

MaxConnections 32 最大32個(gè)連接(SSH2)

逆向IP映射

SSH2服務(wù)器可以根據(jù)客戶端地址進(jìn)行逆向DNS查詢,以確保客戶端的地址就是這個(gè)地址。

如果檢查失敗,連接拒絕。

RequireReverseMapping yes (ssh2)

轉(zhuǎn)發(fā)

AllowTcp-Forwarding yes

X11Forwarding yes

服務(wù)器密鑰生成

該密鑰用來對(duì)客戶端/服務(wù)器之間的通信進(jìn)行保護(hù)。是臨時(shí)的,永遠(yuǎn)不會(huì)保存在磁盤上。服

務(wù)器在啟動(dòng)時(shí)生成這個(gè)密鑰。并以固定的周期重新生成。缺省長(zhǎng)度是768位,最小為512,

可以ServerKeyBits 2048 指定長(zhǎng)度。用KeyRegenerationInterval 1200指定周期。 命令行選

項(xiàng):-k

加密算法

Ciphers any 允許所有支持算法。其它算法包括

3des-cbc,blowfish-cbc,twofish-cbc,arcfour,none

mac算法

MAC關(guān)鍵字可以讓用戶選擇sshd2進(jìn)行完整性檢測(cè)所使用的算法,稱為消息認(rèn)證代碼。用

于sshd2的有hmac-sha1,hmac-md5,hmac-md5-96。

在OPENSSH中,用戶可以用Protocol關(guān)鍵字選擇支持SSH-1 AND SSH-2,1 代表SSH-1,2 代

表SSH-2, 1,2 代表都支持。

允許用戶登錄:認(rèn)證和訪問控制

1、認(rèn)證負(fù)責(zé)對(duì)發(fā)起連接請(qǐng)求的用戶的身份進(jìn)行驗(yàn)證。

密碼認(rèn)證

PasswordAuthentication yes AllowedAuthentications password (ssh2)

公鑰認(rèn)證

RSAAuthentication yes (ssh1,openssh/1)

AllowedAuthentications publickey (ssh2)

DEAAuthentication yes (openssh/2)

Rhosts認(rèn)證,可信主機(jī)認(rèn)證通過檢查遠(yuǎn)程主機(jī)名和相關(guān)用戶名來實(shí)現(xiàn)對(duì)客戶端的身份認(rèn)證。

RhostsAuthentication yes (ssh1,openssh)

IgnoreRhosts yes (ssh1,ssh2,openssh)不使用系統(tǒng)的hosts.equiv and ~/.rhosts,使用SSH專用

的/etc/shosts.equiv and ~/.shosts

強(qiáng)可信主機(jī)認(rèn)證。

RhostsRSAAuthentication yes ssh1,openssh

AllowedAuthentications hostbased ssh2

提取已知名主機(jī)的公鑰

UserKnownHosts no ssh2

IgnoreUserKnownHosts yes openssh

PGP認(rèn)證

Kerberos認(rèn)證

S/key認(rèn)證

SecurID認(rèn)證

PAM認(rèn)證

2、訪問控制負(fù)責(zé)允許或禁止來自特定用戶、機(jī)器在或INTERNET域的SSH連接到服務(wù)器

上。

通常,只要設(shè)置正確,任何賬號(hào)都可以接收SSH連接,這種訪問權(quán)限可以使用服務(wù)器關(guān)鍵

字AllowUsers and DenyUsers覆蓋。

AllowUsers smith

如果配置文件中單獨(dú)出現(xiàn)一個(gè)AllowUsers,后面沒有任何內(nèi)容,就表示禁止所有沒提到的用

戶連接,如果沒有AllowUsers這個(gè)關(guān)鍵字,則所有用戶都可連接。DenyUsers表示禁止連接。

可用通配符,

可以用組訪問控制AllowGroups DenyGroups

主機(jī)名訪問控制

AllowHosts hostname

DenyHosts hostname

超級(jí)用戶的訪問控制

sshd對(duì)超級(jí)用戶專門使用一種特殊的訪問機(jī)制,PermiRootLogin來允許或禁止使用SSH來

訪問root賬號(hào)。

顯示用戶的歡迎信息

PrintMotd yes/no default is yes

顯示郵件信息

CheckMail yes/no default is yes

空密碼

PermitEmptyPasswords yes/no 如果使用密碼認(rèn)證,并且有個(gè)賬號(hào)沒有設(shè)定密碼,那么服務(wù)

器就可以拒絕訪問這個(gè)賬號(hào)

如果系統(tǒng)中存在/etc/nologin,那么sshd就只允許root用戶登錄,其它都不能登錄。因此,touch

/etc/nologin是把訪問權(quán)只授給系統(tǒng)管理員的一種快速方法。這樣并不需要重新配置ssh。也

不需要重啟ssh。

子系統(tǒng)

定義和調(diào)用遠(yuǎn)程命令的一個(gè)抽象層,用戶可以通過在客戶端命令行中給出命令來調(diào)用遠(yuǎn)程命

令,如:ssh server.examply.com /bin/tar c /home 這個(gè)命令調(diào)用tar,遠(yuǎn)程把/home拷貝到磁帶上。

子系統(tǒng)是服務(wù)器機(jī)器上預(yù)定義的一組遠(yuǎn)程命令,這樣就可以方便地執(zhí)行。在服務(wù)器配置文檔

中定義:subsystem backups /bin/tar c /home,要在服務(wù)器上運(yùn)行該命令,可以使用 -s 選項(xiàng)。

ssh -s backups server.example.com。缺省情況下,sshd_config中定義了一個(gè)子系統(tǒng),subsystem

sftp 。不要?jiǎng)h除這個(gè)子系統(tǒng),這是scp2和sftp必須的。

日志

Fascisl Logging mode 把調(diào)試信息打印到系統(tǒng)日志文件中,可以使用FascistLogging關(guān)鍵字

啟用。

調(diào)試模式 可以使用-d命令選項(xiàng)啟用

安靜模式 只能輸出嚴(yán)重錯(cuò)誤,而不能輸出 普通日志,可以使用QuietMode關(guān)鍵字或-q

命令行啟用。

openssh中的日志配置關(guān)鍵字是SyslogFacility and LogLevel。SyslogFacility設(shè)置syslog的

facility(KERN,DAEMON,USER,AUTH,MAIL等),LogLevel記錄日志提供的詳細(xì)程度,該

值從低到高順序是:QUIET,FATAL,ERROR,INFO,VERBOSE,DEBUG,使用DEBUG會(huì)侵犯用

戶的隱私權(quán),這個(gè)級(jí)別只能用于診斷,而不能用于普通操作。

第六章 密鑰管理與代理

一個(gè)身份標(biāo)識(shí)由兩部份組成,分別稱為私鑰(Private Key)和公鑰(Public Key),合稱一個(gè)

密鑰對(duì)。

SSH1,SSH2 AND OPENSSH身份標(biāo)識(shí)文件的格式各不相同。

SSH1缺省設(shè)置中,私鑰存儲(chǔ)在文件identity中,公鑰存儲(chǔ)在文件identity.pub中。這個(gè)密鑰

對(duì)存放在~/.ssh目錄下,在使用前,把公鑰拷貝到服務(wù)器上的一個(gè)認(rèn)證文件里,如SSH1 AND

OPENSSH中的~/.ssh/authorized_keys,此后,當(dāng)客戶請(qǐng)求連接到你的服務(wù)器上的帳號(hào)時(shí),就

會(huì)用一個(gè)私鑰作為證明身份的標(biāo)識(shí),服務(wù)器則在authorized_keys文件中尋找與之匹配的公

鑰。

SSH2密鑰對(duì)文件的命名通常是根據(jù)該密鑰使用的加密算法的性質(zhì)來起的,例如一個(gè)用DSA

加密的1024位密鑰生成時(shí)其缺省文件名是id_dsa_1024_a and id_dsa_1024_a.pub。用戶必須

把私鑰放在identification文件中,缺省是~/.ssh2/目錄,一個(gè)私鑰在這個(gè)文件中占一行,在公

鑰認(rèn)證中,每一行的開頭都有一個(gè)關(guān)鍵字IdKey,后跟一個(gè)私鑰文件名。如:

IdKey id_dsa_1024_a

IdKey my-other-ssh2-key

在服務(wù)器端的認(rèn)證文件~/.ssh2/authorization中,SSH2不包含公鑰的實(shí)際拷貝,只是把公鑰

文件列出來,前面用關(guān)鍵字kEY標(biāo)識(shí)。如:

Key id_dsa_1024_a.pub

Key something-else.pub

這樣維護(hù)起來更容易,更方便。

OPENSSH對(duì)SSH-1連接使用的標(biāo)識(shí)和授權(quán)文件與SSH1完全相同,對(duì)于SSH-2連接,缺省

的密鑰則存儲(chǔ)在~/.ssh/id_dsa(private key)和~/.ssh/id_dsa.pub(public key)中,服務(wù)器上的授權(quán)

文件是~/.ssh/authorized_keys。

創(chuàng)建身份標(biāo)識(shí)用ssh-keygen命令。

OPENSSH的ssh-keygen可以支持SSH1中相應(yīng)程序的所有功能和選項(xiàng),它還新增了為SSH-2

連接生成DSA密鑰的能力。

$ ssh-keygen -t dsa -b 1024

-e -x 選項(xiàng)可把OPENSSH格式的密鑰存儲(chǔ)格式轉(zhuǎn)換成SSH2格式 (直接回車,按提示輸入轉(zhuǎn)

換文件名)

-i -X 選項(xiàng)把SSH2格式的密鑰轉(zhuǎn)換成OPENSSH格式。這樣可用SSH2客戶端連接

OPENSSH服務(wù)器。(直接回車,按提示輸入轉(zhuǎn)換文件名)

-y 如果不小心刪掉了OPENSSH的公鑰,可用-y恢復(fù)。

-l 可計(jì)算出公鑰的指紋,指紋是鑒別位置不同的兩個(gè)密鑰是否相同的常用的一種密碼學(xué)技

術(shù)。這項(xiàng)技術(shù)用于不可能逐位對(duì)比兩個(gè)密鑰的情況。OPENSSH AND SSH2都能計(jì)算指紋。

它是根據(jù)密鑰計(jì)算出來一個(gè)長(zhǎng)度較短的值,它是原理與校驗(yàn)和類似,用于驗(yàn)證一串信息(在

我們的例子中是密鑰)的不可替換性。

啟動(dòng)代理

1、單shell方式,使用當(dāng)前登錄的shell. $ eval `ssh-agent`

2、子shell方式,派生出一個(gè)子shell,并繼承父shell的某些環(huán)境變量。 $ ssh-agent $SHELL

不要想當(dāng)然運(yùn)行 $ ssh-agent,這樣客戶端是無法有代理聯(lián)系的。刪除代理用kill命令就可以

了。

SSH-1 與 SSH-2代理的兼容性

SSH-1的代理不能處理SSH-2的代理,SSH-2的代理卻可以處理SSH-1的代理請(qǐng)求。

第七章 客戶端的高級(jí)用法

$ ssh -a -p 220 -c blowfish -l sally -i myself server.example.com 可通過配置文件簡(jiǎn)化命令

輸入

Host myserver

ForwardAgent no

Port 220

Cipher blowfish

User sally

IdentifyFile myself

HostName server.example.com

配置了該文件后,就可以在客戶端簡(jiǎn)單地輸入

$ ssh myserver

全局文件和本地文件

全局文件通常是由管理員創(chuàng)建的,用來維護(hù)整臺(tái)計(jì)算機(jī)上的客戶行為。該文件通常位于

/etc/ssh_config or /etc/ssh2/ssh2_config。每個(gè)客戶也可以在自已賬號(hào)中創(chuàng)建本地客戶配置文

件,通常是~/.ssh/config or ~/.ssh2/ssh2_config。本地配置文件優(yōu)先級(jí)高于全局配置文件。命

令行選項(xiàng)的優(yōu)先級(jí)又高于本地配置文件。

scp有關(guān)命令參數(shù)

-r 遞歸拷貝目錄

-p 保持文件權(quán)限和時(shí)間戳

-u 拷貝完成后刪除源文件

-d 防止覆蓋文件

-n 描述操作

-q 不顯示統(tǒng)計(jì)信息

第八章 每賬號(hào)服務(wù)器配置

這種配置可以讓SSH服務(wù)器區(qū)分每個(gè)服務(wù)器上的各個(gè)用戶。利用服務(wù)器目標(biāo)賬號(hào)的認(rèn)證文

件(authorized_keys)配置。局限有兩點(diǎn),它不能覆蓋編譯時(shí)配置和服務(wù)器范圍配置所采用

的安全措施,第二,如果使用公鑰認(rèn)證,每賬號(hào)配置是十分靈活的,如果采用可信主機(jī)和密

碼認(rèn)證,提供的選擇范圍就很小。

基于公鑰的配置

1、認(rèn)證文件的完全格式 依次包含三項(xiàng)內(nèi)容,一些選項(xiàng),公鑰和注釋。多個(gè)選項(xiàng)用逗號(hào)分

開。

2、用于限制客戶端可以在服務(wù)器上調(diào)用的程序的強(qiáng)制命令。如客戶端請(qǐng)求執(zhí)行/bin/ls命令,

而服務(wù)器端強(qiáng)制命令卻運(yùn)行/bin/who命令,它十分有用,可用于加強(qiáng)安全性,了為授權(quán)提供

方便。如要讓你的助手每次連接上來都運(yùn)行email命令程序pine,則可以這樣:

command= "/usr/local/bin/pine" ...key...。最多可給每個(gè)密鑰關(guān)聯(lián)一個(gè)強(qiáng)制命令,要關(guān)聯(lián)多個(gè)命

令可把這些命令放入遠(yuǎn)程主機(jī)的一個(gè)腳本中,并將該腳本作為強(qiáng)制命令運(yùn)行。如果強(qiáng)制命令

有shell出口,那會(huì)存在安全問題,等于沒有強(qiáng)制,客戶可以運(yùn)行任何程序。以下規(guī)則可以

用來判斷一個(gè)程序是否適合用作強(qiáng)制命令。

a、 避免使用具有shell出口的程序(如:文件編輯器vi,Emacs; 分頁程序 more,less;調(diào)用分

b、 頁的man,新聞閱讀程序rn,郵件閱讀程序pine以及調(diào)試程序adb,非交互的程序find,xargs

c、 等)。

b、避免使用編譯器,解釋器或其它可以讓用戶生成并運(yùn)行任意執(zhí)行代碼的程序。

c、可創(chuàng)建或刪除文件的程序,如cp,mv,rm,scp,ftp等。

d、避免使用setuid or setgid的程序,特別是setuid 是root的程序。

d、 如果使用腳本作為強(qiáng)制命令,就要遵循編寫安全腳本的傳統(tǒng)規(guī)則,在一個(gè)腳本之內(nèi),要

限制使用相對(duì)路徑作為搜索路徑,應(yīng)該使用絕對(duì)路徑來調(diào)用所有的程序;不要盲目地把

用戶提供的字符串作為命令來執(zhí)行;不要讓腳本執(zhí)行任何setuid的工作。不要調(diào)用具有

shell出口的程序。

e、考慮使用受限shell。

f. 為一個(gè)單獨(dú)的、專用的SSH密鑰(不要用你登錄的那個(gè)密鑰)關(guān)聯(lián)一個(gè)強(qiáng)制命令。這樣

不會(huì)影響你的登錄能力就可以方便地禁用該密鑰。

g、禁用不必要的SSH特性。如no-port-forwarding,no-agent-forwarding,no-pty(禁用tty分配)。

幾個(gè)常用的強(qiáng)制命令介紹:

使用定制消息拒絕連接:command="/bin/echo Sorry,buddy,but you've terminated!" ...key... 千萬

不要用more and less之類的分頁程序

顯示命令菜單:利用腳本

檢查客戶端的原始程序:command="/bin/echo you tried to invoke

$SSH_ORIGINAL_COMMAND" ...key... $SSH_ORIGINAL_COMMAND環(huán)境變量保存著

客戶連接時(shí)運(yùn)行的原始命令。

限制客戶端的原始命令,創(chuàng)建一個(gè)腳本,該腳本根據(jù)$SSH_ORIGINAL_COMMAND內(nèi)容選

擇不同的操作。

把客戶端的原始命令記錄在日志中:也是根據(jù)$SSH_ORIGINAL_COMMAND變量來做的一

個(gè)腳本。腳本內(nèi)容如一:

#!/bin/sh

if [ -n "$SSH_ORIGINAL_COMMAND" ]

then

echo "`/bin/date`: $SSH_ORIGINAL_COMMAND" >> $HOME/ssh-command-log

exec $SSH_ORIGINAL_COMMAND

fi

3、限制來自特定主機(jī)的連接。由from選項(xiàng)完成。from="client.example.com" ...key...。強(qiáng)制

連接必須來自client.example.com。否則斷開。from="!client.example.com" ...key...表示拒絕該

地址的連接。支持通配符。SSH2不支持該功能。但可以通過$SSH2_CLIENT變量提取客戶

ip,編寫強(qiáng)制命令腳本達(dá)到同樣效果。

4、為遠(yuǎn)程程序設(shè)置環(huán)境變量。environment="EDITOR=emacs" ...key...,為每個(gè)連接修改默認(rèn)的

環(huán)境變量。

5、設(shè)置空閑超時(shí)時(shí)間,這樣如果客戶端用戶不再發(fā)送數(shù)據(jù)就強(qiáng)制將其斷開。idle-timeout=5m,

該選項(xiàng)會(huì)覆蓋服務(wù)器范圍配置。

6、對(duì)到達(dá)的SSH連接禁用某些特性,例如端口轉(zhuǎn)發(fā)和tty分配。禁用tty分配會(huì)使客戶端沒

有交互會(huì)話的能力。$SSH_TTY變量可顯示tty情況。

用戶的rc文件

ssh服務(wù)器會(huì)在每個(gè)連接到達(dá)時(shí)調(diào)用shell腳本/etc/sshrc,用戶可把一些登錄后想運(yùn)行的腳本

寫到這個(gè)文件中。用戶可以在自已的目錄下定義類似的腳本,如果有自定義的~/.ssh/rc則

/etc/sshrc則不會(huì)執(zhí)行。 (e129)

您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP