国产一级一区二区_segui88久久综合9999_97久久夜色精品国产_欧美色网一区二区

掃一掃
關注微信公眾號

SSH權威指南(1)
2005-11-26   

本書是一本介紹通信安全的書籍,如果你想保障你的通信安全,本書能給你一個很好的解決方案。本書從ssh協議介紹起,到具體的開源實現和商業實現。但本書同時介紹開源實現和商業實現,給人感覺比較亂。
注意:由于openssh是開源軟件,各版間的配置方法和設置參數可能會不同,所以設置時要以最新版的手冊為準,不要硬套書本的設置。
第一章 SSH簡介
ssh(secure shell)是一種通用,功能強大的基于軟件的網絡安全解決方案,計算機每次向網絡發送數據時,SSH都會自動對其進行加密。數據到達目的地時,SSH自動對加密數據進行解密。整個過程都是透明的。它使用了現代的安全加密算法,足以勝任大型公司的任務繁重的應用程序的要求。
SSH協議內容涉及認證AUTHENTICATION,加密ENCRYPTION,和網絡上傳輸數據的完整性INTEGRITY。
SSH特性概述
1、遠程登錄
$ ssh -l root host.example.com
2、安全文件傳輸
$ scp myfile metoo@secondacount.com
3、安全執行遠程命令,能確保傳輸的數據安全。
4、密鑰和代理
基于密鑰的認證方法不用記住多個帳號密碼。
5、訪問控制,能授權別人訪問自已帳號。
6、端口轉發
$ ssh -L 3002:localhost:119 xxx.xxx.com
相關安全技術
rsh命令族,rsh,rlogin and rcp。連接不加密,認證模型十分脆弱。
PGP加密程序。它是基于文件的。
Kerberos認證系統,用于網絡可能被監視,而且計算機不是中心控制的環境。基于麻省理工
學院的Athena項目。它SSH不是,SSH是輕量級的,容易部署。Kerberos使用前必須構建
一些重要基礎。
IPSEC,Internet安全協議。
SRP,安全遠程密碼協議,是Stanford大學開發的。是一種專用的認證協議。
SSL,安全套接字。
stunnel,是一種SSL工具,它為UNIX環境現有的基于TCP的服務(POP,IMAP等)增加
SSL保護,而不用修改服務器源程序。
第二章 SSH客戶端的基本用法
最常用功能,1、經由安全連接登錄到遠程計算機。2、通過安全連接在計算機間拷貝文件。
當你第一次連接SSH服務器時,出現問答時要回答“yes”,把已知名主機的密鑰的公共部
分拷貝一份存在本地。之后你每次連接這臺服務器,就用這個公鑰來驗證遠程主機。最好是
能在首次連接前就能獲得這個公鑰,否則第一次連接服務器時你可能已受到中間人攻擊。
使用密鑰進行認證,SSH支持公鑰認證,可以使用加密密鑰,密鑰比密碼更安全。
SSH證書使用一對密鑰,一個私鑰,一個公鑰,私鑰只保存你獨有的一些秘密信息。SSH
用其向服務器證明自已的身份。公鑰是公開的,可以隨便將其放入SSH服務器上自已的帳
號中,在認證時,進行私鑰和公鑰協商,如果匹配,那么身份就得以證明,認證就成功。
在使用公鑰認證以前,首先要進行一些設置:
1、需要一對密鑰,還需要使用一個口令來保護自已的私鑰。
使用ssh-keygen程序生成一對密鑰。如果不存在SSH目錄,程序為自動創建本地SSH目錄
~/.ssh,并將所生成的密鑰分成兩個文件存儲,公有部份identity.pub,私有部分identity,或
id_dsa_1024_a,id_dsa_1024_a.pub(ssh2)。
2、需要在SSH服務器上安裝自已的公鑰。
通過配置SSH目錄中的一個文件實現,對于SSH1 AND OPENSSH來說該文件是
~/.ssh/authorized_keys。對SSH2來說是~/.ssh2/authorization。OPENSSH中的SSH-2連接自
3.0版本起也一同使用authorized_keys文件。3.0版本前的使用authorized_keys2。把用戶本
地機器生成identity.pub文件內容加入其中。對SSH2來說,用戶需編輯兩個文件,一個客
戶端一個在服務器端,
在客戶端,要創建或編輯文件~/.ssh2/identification并在其中插入一行,說明自已的私鑰文件
名: IdKey id_dsa_1024_a.
在服務器端,要創建或編輯文件~/.ssh2/authorization,該文件包含有公鑰信息,每行一個,
但和SSH1的authorized_keys文件不同(authorized_keys中包含有公鑰的拷貝),authorization
中只給出公鑰文件名:Key id_dsa_1024_a.pub。最后,把這個文件從本地機器上拷貝到服務
器~/.ssh2中。為安全起見,要確保ssh目錄的安全,只有所有者才有權寫入。如果遠程用戶
的SSH配置文件的權限設置不當,服務器可能會拒絕進行認證。
公鑰認證比密碼認證更安全,因為:
1、 公鑰認證需要兩個加密部份(磁盤上的identify文件和用戶頭腦中的口令),入侵都必須
2、 具備兩種條件才行。密碼認證只需要一個部份,那就是密碼,它可能更容易被竊取。
3、 在公鑰認證中,口令和密鑰都不用發給遠程主機,只要把前面討論的認證者發給遠程主
4、 機就可以了,因此,并沒有秘密信息傳出客戶端。
3、機器生成的密鑰是不可能猜測出來的,而人生成的密碼容易受到字典攻擊。
通過禁用密碼認證并只允許使用密鑰認證能極大提高主機的安全性。
如果要修改密鑰
如果已經生成一個密鑰對,并把公鑰拷貝到多個SSH服務器上了,用戶有一天決定修改自
已的身份,因為再運行ssh-keygen。這樣,就會覆蓋identify and identify.pub文件,用戶之
前的公鑰就沒用了,必須把新公鑰再次拷貝到各個服務器上。這是很頭疼的,所以建議:
1、 不能局限于僅僅使用一個密鑰對,可隨意生一此密鑰對,將其保存在不同的文件中,并
2、 將其用作不同的用途。
3、 如果只是想修改口令,就不必重新生成一個密鑰對,ssh-keygen有一個命令行選項可以
4、 替換現有的密鑰口令。ssh1 and openssh是-p,對于ssh2是-e。這樣,因為私鑰沒變,所以
5、 公鑰依然不效,中需使用新口令對私鑰進行解密就可以了。
ssh代理
它可以把私鑰保存在內存中,為認證提供服務,不用重復輸入密碼。直到用戶退出為止。代
理程序是ssh-agent。可手工運行也可編輯~/.login 或~/.xsession來自動運行。
$ ssh-agent $SHELL 其中SHELL是用戶登錄shell的環境變量。運行該命令后,打開另外
一個shell,在這個shell中可以訪問代理。
接著用ssh-add命令裝入私鑰。這樣,使用ssh and scp命令就不用再提醒輸入口令了。口令
裝入內存中。如果用戶正運行x window系統,并設置了DISPLAY環境變量,而標準輸入
不是終端,那么ssh-add就使用一個圖形化X程序ssh-askpass來讀取口令。要強制ssh-add
使用X來讀取口令,請在命令行中輸入ssh-add < /dev/null。
-l  參數顯示內存中的密鑰
-d  參數從代理中刪除密鑰 $ ssh-add -d ~/.ssh/id_xxx.pub
-D  是刪除所有密鑰
-t  對加載的密鑰設置超時時間,超時代理將自動卸載密鑰。
-L -U 對代理進行加鎖和解鎖,當你離開計算機而不想退出登錄時有用。
代理轉發
可能通過代理轉發功能,可以用SCP把文件從遠程SSH服務器上拷貝到第三方SSH主機上。
條件是你在第三方SSH主機上必須有一個帳號。具體操作是這樣的:
1、 在本地主機上運行命令:# scp pat@shell.isp.com:print-me
2、 psmith@other.host.net:other-print-me
2、這個scp進程與本地代理進行聯系,并讓用戶和shell.isp.com進行認證。
3、自動在shell.isp.com上執行第二個scp,用來把文件拷貝到other.host.net主機上。
3、 由于啟用了代理轉發(SSH1 AND SSH2默認是打開的,openssh默認是關閉的),因此
4、 shell.isp.com上的SSH服務器就充當一個代理。
5、第二個scp進程通過聯系shell.isp.com上的代理試圖讓用戶和other.host.net進行認證。
5、 shell.isp.net上ssh服務器秘密與用戶的本地代理進行通信,從而構建出一個認證者來提
6、 供用戶的證書并將其傳回服務器。
7、服務器為第二個scp進程驗證用戶的身份,other.host.net上的認證獲得成功。
8、開始拷貝文件。
由于代理轉發不會把私鑰發送到遠程主機上,而是把認證返回第一臺機進行處理,因此密鑰
是安全的。
不用密碼或口令進行連接方式
1、使用代理的公鑰認證。
2、可信主機認證。
3、Kerberos認證。
在后文中將會討論這些方式的優缺點。
sftp
它是在SSH上的一個獨立文件傳輸工具,操作與ftp類似,可以在一個會話中調用多個命令
進行文件拷貝和處理,而scp每次調用時都要打開一個會話。sftp不區分ascii and binary傳
輸模式,只使用二進制模式,因此,如果使用它在windows and unix之間拷貝ascii文件,
那么就不能正確轉換行結束符。
第三章 SSH內幕
SSH協議的主要特性和優點:
1、 使用強加密技術來保證數據的私密性。端到端通信用隨機密鑰進行加密,隨機密鑰為會
話進行安全協商,會話結束后被丟棄。支持的算法有ARCFOUR,Blowfish,DES,IDEA,3DES等。
2、通信完整性,確保通信不會被修改。SSH-2基于MD5 AND SHA-1的加密hash算法。
3、認證,即發送者和接收者的身份證明。客戶機和服務器雙向認證。
4、授權,即對賬號進行訪問控制。
5、使用轉發或隧道技術對其它基于tcp/ip的會話進行加密。支持三種轉發,tcp端口轉發,
X轉發,代理轉發。
SSH可以防止的攻擊
1、網絡竊聽,SSH通信是加密的,即使截獲會話內容,也不能將其解密。
2、名字服務和IP偽裝,SSH通過加密驗證服務器主機身份可避免這類風險。
3、連接劫持,SSH的完整性檢測負責確定會話在傳輸過程是否被修改,如果被修改過,就
關閉連接。
4、 中間人攻擊,SSH利用兩種方法防止這種攻擊,第一種是服務器主機認證。除非攻擊者
已經成功攻擊了服務器主機,獲得服務器的私有主機密鑰。第二種是限制使用容易受到
這種攻擊的認證方法,密碼認證容易受到中間人攻擊,而公鑰和基于主機的/RhostsRSA
則對中間人攻擊可以免疫。
5、插入攻擊,這種攻擊可以客戶和服務器之間發送的正文數據流之間插入任意數據。ssh1
1.2.25后和openssh的所有版本都專門進行了設計,來檢測并防止這種攻擊。這種檢測程序
增大了插入攻擊的難度,但是并不能完全防止。ssh2使用強加密完整性檢測手段來防止這個
問題。可以用3DES算法來防止這種攻擊。
SSH不能防止的攻擊
1、 密碼崩潰,密碼認證是一種脆弱的認證形式,盡量使用公鑰認證方式。如果必須要密碼
認證,可考慮使用S/Key之類的一次性密碼機制。
2、 IP AND TCP攻擊,由于SSH是在TCP之上進行操作的,因此容易受到針對TCP和IP
缺陷而發起的攻擊。SYN flood,TCP不同步和TCP劫持等。只能通過更低層的防護措施
來保護。
3、流量分析。
4、隱秘通道。
5、粗心大意。安全是一個過程,而不是一個產品,不要認為裝上SSH就安全了。
第四章 SSH的安裝和編譯時配置
第五章 服務器范圍的配置
sshd可以在三個層次上進行配置,第一層次是上面的安裝和編譯時配置;第二層次是本章的
服務器范圍配置;第三層次是每賬號配置(第八章),前者是服務器編譯時就指定了包含哪
些特定功能,不包含哪些功能,后者則是由終端用戶來修改自已賬號所使用的服務器的行為。
以普通用戶身份運行SSH服務器
1、得到管理員許可。
2、生成一個主機密鑰。
$ ssh-keygen -N '' -b 1024 -f ~/myserver/hostkey 生成hostkey and hostkey.pub兩個文件
3、選擇端口號。 要選擇大于或等1024的端口,因為只有超級用戶才有權使用小于
1024的端口 。
4、創建服務器配置文件(可選) 可創建自已的配置文件,否則,服務就使用內建的特性或使
用服務器范圍的配置文件。
啟動服務器方式:$ sshd -h ~/myserver/hostkey -p 2345 -f ~/myserver/config
由普通用戶運行的服務器有一些缺點:
1、由于不是由root的uid下運行,因此只能連接到用戶自已的賬號上。
2、它需手工調用,不能自啟動。
3、 日志用戶沒權看到,因為服務器把它寫到syslog日志系統中,但可用調試模式運行服務
4、 器,這樣信息就顯示在終端機上。
服務器配置文件
SSH1 AND OPENSSH的配置文件通常是/etc/sshd_config,而SSH2的配置文件通常是
/etc/ssh2/sshd2_config。
以非缺省的配置文件來調用sshd,可以使用命令 -f 選項。$ sshd -f /usr/local/ssh/my_config。
以*號作為標號的語名都會被sshd忽略。
修改完配置后,修改不會馬上影響到服務器,可重啟服務器或發送SIGHUP信號。$ kill -HUP
`cat /etc/sshd.pid`
如果在命令行改動了配置,用SIGHUP信號重啟服務器不能覆蓋命令行的配置,它的優先
級高。
主機密鑰,sshd主機密鑰向SSH客戶端唯一地標識SSH服務器。主機密鑰保存在一對文件
中,一個文件包含私鑰,一個文件包含公鑰。對于SSH1 AND OPENSSH,它是
/etc/ssh_host_key。文件位置可用HostKey關鍵字修改 HostKey /usr/local/ssh/key。服務器的
公鑰保存在.pub文件中。
OPENSSH服務器有一個SSH-2的主機密鑰,缺省是在/etc/ssh_host_dsa_key。其位置可用
HostDsaKey /usr/local/openssh/key2修改。
對于SSH2,如果服務器是由超級用戶運行,缺省私鑰文件是/etc/ssh2/hostkey。如果是其它
用戶運行,則在~/.ssh2/hostkey。可用HostKeyFile /etc/local/ssh/key修改。公鑰是hostkey.pub
文件,可用publicHostKeyFile關鍵字修改。
可以用命令行選項指定私鑰文件:$ sshd -h /usr/local/ssh/key。
隨機數種子文件
如果用戶的系統中有一個隨機位源,如/dev/urandom,那么OPENSSH就不能創建隨機數種
子文件。
服務器配置文件
通常是/etc/sshd_config /etc/ssh2/ssh2_config,可以用-f 選項重新指定其配置文件。可用于一
臺機器運行多個sshd的情況。
每賬號認證文件。~/.ssh/authorized_keys 。
文件權限
由于配置文件的權限設置錯誤,會降低系統的安全性,所以可以設置StrictModes YES/NO
關鍵字,對sshd的重要文件和目錄的權限進行檢查,如果檢查失敗,服務器就拒絕對該用
戶的SSH連接。
在多宿主主機上,使用ListenAddress xxx.xxx.xxx.xxx來限制SSH只監聽一個網絡接口。
空閑連接時間,IdleTimeout xx 如果是0代表什么都不做,保持連接。否則,超時就斷開連
接,可以用s,m,h,d,w表示。
KeepAlive YES/NO 可以斷開失效的連接,比如客戶端崩潰。
失敗的登錄
LogingGraceTime  60 限定用戶必須在60秒內成功進行認證。 0值表禁用。命令行選項用
-g
PasswordGuesses 5 如果連接請求使用密碼認證,那么sshd2就只允許客戶端嘗試五次。
(SSH2)
限制并發連接
MaxConnections 32 最大32個連接(SSH2)
逆向IP映射
SSH2服務器可以根據客戶端地址進行逆向DNS查詢,以確保客戶端的地址就是這個地址。
如果檢查失敗,連接拒絕。
RequireReverseMapping yes (ssh2)
轉發
AllowTcp-Forwarding yes 
X11Forwarding yes
服務器密鑰生成
該密鑰用來對客戶端/服務器之間的通信進行保護。是臨時的,永遠不會保存在磁盤上。服
務器在啟動時生成這個密鑰。并以固定的周期重新生成。缺省長度是768位,最小為512,
可以ServerKeyBits  2048 指定長度。用KeyRegenerationInterval 1200指定周期。 命令行選
項:-k
加密算法
Ciphers any 允許所有支持算法。其它算法包括
3des-cbc,blowfish-cbc,twofish-cbc,arcfour,none
mac算法
MAC關鍵字可以讓用戶選擇sshd2進行完整性檢測所使用的算法,稱為消息認證代碼。用
于sshd2的有hmac-sha1,hmac-md5,hmac-md5-96。
在OPENSSH中,用戶可以用Protocol關鍵字選擇支持SSH-1 AND SSH-2,1 代表SSH-1,2 代
表SSH-2,  1,2 代表都支持。
允許用戶登錄:認證和訪問控制
1、認證負責對發起連接請求的用戶的身份進行驗證。
密碼認證
PasswordAuthentication yes AllowedAuthentications password (ssh2)
公鑰認證
RSAAuthentication yes  (ssh1,openssh/1)
AllowedAuthentications publickey (ssh2)
DEAAuthentication yes (openssh/2)
Rhosts認證,可信主機認證通過檢查遠程主機名和相關用戶名來實現對客戶端的身份認證。
RhostsAuthentication yes (ssh1,openssh)
IgnoreRhosts yes   (ssh1,ssh2,openssh)不使用系統的hosts.equiv and ~/.rhosts,使用SSH專用
的/etc/shosts.equiv and ~/.shosts
強可信主機認證。
RhostsRSAAuthentication yes ssh1,openssh
AllowedAuthentications hostbased ssh2
提取已知名主機的公鑰
UserKnownHosts no ssh2
IgnoreUserKnownHosts yes openssh
PGP認證
Kerberos認證
S/key認證
SecurID認證
PAM認證
2、訪問控制負責允許或禁止來自特定用戶、機器在或INTERNET域的SSH連接到服務器
上。
通常,只要設置正確,任何賬號都可以接收SSH連接,這種訪問權限可以使用服務器關鍵
字AllowUsers and DenyUsers覆蓋。
AllowUsers smith
如果配置文件中單獨出現一個AllowUsers,后面沒有任何內容,就表示禁止所有沒提到的用
戶連接,如果沒有AllowUsers這個關鍵字,則所有用戶都可連接。DenyUsers表示禁止連接。
可用通配符,
可以用組訪問控制AllowGroups DenyGroups
主機名訪問控制
AllowHosts hostname
DenyHosts hostname
超級用戶的訪問控制
sshd對超級用戶專門使用一種特殊的訪問機制,PermiRootLogin來允許或禁止使用SSH來
訪問root賬號。
顯示用戶的歡迎信息
PrintMotd yes/no default is yes
顯示郵件信息
CheckMail yes/no default is yes
空密碼
PermitEmptyPasswords yes/no 如果使用密碼認證,并且有個賬號沒有設定密碼,那么服務
器就可以拒絕訪問這個賬號
如果系統中存在/etc/nologin,那么sshd就只允許root用戶登錄,其它都不能登錄。因此,touch
/etc/nologin是把訪問權只授給系統管理員的一種快速方法。這樣并不需要重新配置ssh。也
不需要重啟ssh。
子系統
定義和調用遠程命令的一個抽象層,用戶可以通過在客戶端命令行中給出命令來調用遠程命
令,如:ssh server.examply.com /bin/tar c /home 這個命令調用tar,遠程把/home拷貝到磁帶上。
子系統是服務器機器上預定義的一組遠程命令,這樣就可以方便地執行。在服務器配置文檔
中定義:subsystem backups /bin/tar c /home,要在服務器上運行該命令,可以使用 -s 選項。
ssh -s backups server.example.com。缺省情況下,sshd_config中定義了一個子系統,subsystem
sftp 。不要刪除這個子系統,這是scp2和sftp必須的。
日志
Fascisl Logging mode 把調試信息打印到系統日志文件中,可以使用FascistLogging關鍵字
啟用。
調試模式 可以使用-d命令選項啟用
安靜模式 只能輸出嚴重錯誤,而不能輸出 普通日志,可以使用QuietMode關鍵字或-q
命令行啟用。
openssh中的日志配置關鍵字是SyslogFacility and LogLevel。SyslogFacility設置syslog的
facility(KERN,DAEMON,USER,AUTH,MAIL等),LogLevel記錄日志提供的詳細程度,該
值從低到高順序是:QUIET,FATAL,ERROR,INFO,VERBOSE,DEBUG,使用DEBUG會侵犯用
戶的隱私權,這個級別只能用于診斷,而不能用于普通操作。
第六章 密鑰管理與代理
一個身份標識由兩部份組成,分別稱為私鑰(Private Key)和公鑰(Public Key),合稱一個
密鑰對。
SSH1,SSH2 AND OPENSSH身份標識文件的格式各不相同。
SSH1缺省設置中,私鑰存儲在文件identity中,公鑰存儲在文件identity.pub中。這個密鑰
對存放在~/.ssh目錄下,在使用前,把公鑰拷貝到服務器上的一個認證文件里,如SSH1 AND
OPENSSH中的~/.ssh/authorized_keys,此后,當客戶請求連接到你的服務器上的帳號時,就
會用一個私鑰作為證明身份的標識,服務器則在authorized_keys文件中尋找與之匹配的公
鑰。
SSH2密鑰對文件的命名通常是根據該密鑰使用的加密算法的性質來起的,例如一個用DSA
加密的1024位密鑰生成時其缺省文件名是id_dsa_1024_a and id_dsa_1024_a.pub。用戶必須
把私鑰放在identification文件中,缺省是~/.ssh2/目錄,一個私鑰在這個文件中占一行,在公
鑰認證中,每一行的開頭都有一個關鍵字IdKey,后跟一個私鑰文件名。如:
IdKey id_dsa_1024_a
IdKey my-other-ssh2-key
在服務器端的認證文件~/.ssh2/authorization中,SSH2不包含公鑰的實際拷貝,只是把公鑰
文件列出來,前面用關鍵字kEY標識。如:
Key id_dsa_1024_a.pub
Key something-else.pub
這樣維護起來更容易,更方便。
OPENSSH對SSH-1連接使用的標識和授權文件與SSH1完全相同,對于SSH-2連接,缺省
的密鑰則存儲在~/.ssh/id_dsa(private key)和~/.ssh/id_dsa.pub(public key)中,服務器上的授權
文件是~/.ssh/authorized_keys。
創建身份標識用ssh-keygen命令。
OPENSSH的ssh-keygen可以支持SSH1中相應程序的所有功能和選項,它還新增了為SSH-2
連接生成DSA密鑰的能力。
$ ssh-keygen -t dsa -b 1024
-e -x 選項可把OPENSSH格式的密鑰存儲格式轉換成SSH2格式 (直接回車,按提示輸入轉
換文件名)
-i -X   選項把SSH2格式的密鑰轉換成OPENSSH格式。這樣可用SSH2客戶端連接
OPENSSH服務器。(直接回車,按提示輸入轉換文件名)
-y 如果不小心刪掉了OPENSSH的公鑰,可用-y恢復。
-l 可計算出公鑰的指紋,指紋是鑒別位置不同的兩個密鑰是否相同的常用的一種密碼學技
術。這項技術用于不可能逐位對比兩個密鑰的情況。OPENSSH AND SSH2都能計算指紋。
它是根據密鑰計算出來一個長度較短的值,它是原理與校驗和類似,用于驗證一串信息(在
我們的例子中是密鑰)的不可替換性。
啟動代理
1、單shell方式,使用當前登錄的shell.  $ eval `ssh-agent`
2、子shell方式,派生出一個子shell,并繼承父shell的某些環境變量。 $ ssh-agent $SHELL
不要想當然運行 $ ssh-agent,這樣客戶端是無法有代理聯系的。刪除代理用kill命令就可以
了。
SSH-1 與 SSH-2代理的兼容性
SSH-1的代理不能處理SSH-2的代理,SSH-2的代理卻可以處理SSH-1的代理請求。
第七章 客戶端的高級用法
$ ssh -a -p 220 -c blowfish -l sally -i myself server.example.com    可通過配置文件簡化命令
輸入
Host myserver
ForwardAgent no
Port 220
Cipher blowfish
User sally
IdentifyFile myself
HostName server.example.com
配置了該文件后,就可以在客戶端簡單地輸入
$ ssh myserver
全局文件和本地文件
全局文件通常是由管理員創建的,用來維護整臺計算機上的客戶行為。該文件通常位于
/etc/ssh_config or /etc/ssh2/ssh2_config。每個客戶也可以在自已賬號中創建本地客戶配置文
件,通常是~/.ssh/config or ~/.ssh2/ssh2_config。本地配置文件優先級高于全局配置文件。命
令行選項的優先級又高于本地配置文件。
scp有關命令參數
-r 遞歸拷貝目錄
-p 保持文件權限和時間戳
-u 拷貝完成后刪除源文件
-d 防止覆蓋文件
-n 描述操作
-q 不顯示統計信息
第八章 每賬號服務器配置
這種配置可以讓SSH服務器區分每個服務器上的各個用戶。利用服務器目標賬號的認證文
件(authorized_keys)配置。局限有兩點,它不能覆蓋編譯時配置和服務器范圍配置所采用
的安全措施,第二,如果使用公鑰認證,每賬號配置是十分靈活的,如果采用可信主機和密
碼認證,提供的選擇范圍就很小。
基于公鑰的配置
1、認證文件的完全格式 依次包含三項內容,一些選項,公鑰和注釋。多個選項用逗號分
開。
2、用于限制客戶端可以在服務器上調用的程序的強制命令。如客戶端請求執行/bin/ls命令,
而服務器端強制命令卻運行/bin/who命令,它十分有用,可用于加強安全性,了為授權提供
方便。如要讓你的助手每次連接上來都運行email命令程序pine,則可以這樣:
command= "/usr/local/bin/pine" ...key...。最多可給每個密鑰關聯一個強制命令,要關聯多個命
令可把這些命令放入遠程主機的一個腳本中,并將該腳本作為強制命令運行。如果強制命令
有shell出口,那會存在安全問題,等于沒有強制,客戶可以運行任何程序。以下規則可以
用來判斷一個程序是否適合用作強制命令。
a、 避免使用具有shell出口的程序(如:文件編輯器vi,Emacs; 分頁程序 more,less;調用分
b、 頁的man,新聞閱讀程序rn,郵件閱讀程序pine以及調試程序adb,非交互的程序find,xargs
c、 等)。
b、避免使用編譯器,解釋器或其它可以讓用戶生成并運行任意執行代碼的程序。
c、可創建或刪除文件的程序,如cp,mv,rm,scp,ftp等。
d、避免使用setuid or setgid的程序,特別是setuid 是root的程序。
d、 如果使用腳本作為強制命令,就要遵循編寫安全腳本的傳統規則,在一個腳本之內,要
限制使用相對路徑作為搜索路徑,應該使用絕對路徑來調用所有的程序;不要盲目地把
用戶提供的字符串作為命令來執行;不要讓腳本執行任何setuid的工作。不要調用具有
shell出口的程序。
e、考慮使用受限shell。
f. 為一個單獨的、專用的SSH密鑰(不要用你登錄的那個密鑰)關聯一個強制命令。這樣
不會影響你的登錄能力就可以方便地禁用該密鑰。
g、禁用不必要的SSH特性。如no-port-forwarding,no-agent-forwarding,no-pty(禁用tty分配)。
幾個常用的強制命令介紹:
使用定制消息拒絕連接: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環境變量保存著
客戶連接時運行的原始命令。
限制客戶端的原始命令,創建一個腳本,該腳本根據$SSH_ORIGINAL_COMMAND內容選
擇不同的操作。
把客戶端的原始命令記錄在日志中:也是根據$SSH_ORIGINAL_COMMAND變量來做的一
個腳本。腳本內容如一:
#!/bin/sh
if [ -n "$SSH_ORIGINAL_COMMAND" ]
then
echo "`/bin/date`: $SSH_ORIGINAL_COMMAND" >> $HOME/ssh-command-log
exec $SSH_ORIGINAL_COMMAND
fi
3、限制來自特定主機的連接。由from選項完成。from="client.example.com" ...key...。強制
連接必須來自client.example.com。否則斷開。from="!client.example.com" ...key...表示拒絕該
地址的連接。支持通配符。SSH2不支持該功能。但可以通過$SSH2_CLIENT變量提取客戶
ip,編寫強制命令腳本達到同樣效果。
4、為遠程程序設置環境變量。environment="EDITOR=emacs" ...key...,為每個連接修改默認的
環境變量。
5、設置空閑超時時間,這樣如果客戶端用戶不再發送數據就強制將其斷開。idle-timeout=5m,
該選項會覆蓋服務器范圍配置。
6、對到達的SSH連接禁用某些特性,例如端口轉發和tty分配。禁用tty分配會使客戶端沒
有交互會話的能力。$SSH_TTY變量可顯示tty情況。
用戶的rc文件
ssh服務器會在每個連接到達時調用shell腳本/etc/sshrc,用戶可把一些登錄后想運行的腳本
寫到這個文件中。用戶可以在自已的目錄下定義類似的腳本,如果有自定義的~/.ssh/rc則
/etc/sshrc則不會執行。

共2頁: 1 [2] 下一頁

熱詞搜索:

上一篇:SSL與TLS
下一篇:在Solaris8上安裝SSH

分享到: 收藏
主站蜘蛛池模板: 荣成市| 南和县| 洞口县| 读书| 长乐市| 沧州市| 平原县| 通河县| 建宁县| 琼海市| 来宾市| 镇安县| 辽中县| 类乌齐县| 大化| 铜鼓县| 台中县| 高清| 通山县| 屏东县| 银川市| 永春县| 壶关县| 邓州市| 庐江县| 武穴市| 汕头市| 龙口市| 方城县| 伊金霍洛旗| 荥经县| 绥阳县| 灵川县| 沈阳市| 边坝县| 紫云| 荣成市| 湖口县| 广丰县| 四子王旗| 峨眉山市|