天天看點

完全使用 SFTP 替代 FTP :SFTP+OpenSSH+ChrootDirectory 設定詳解範例賬戶設定SSH設定權限設定

由于采用明文傳輸使用者名和密碼,FTP協定是不安全的。在同一機房中隻要有一台伺服器被攻擊者控制,它就可能擷取到其它伺服器上的FTP密碼,進而控制其它的伺服器。

下面,我就從賬戶設定、SSH設定、權限設定這三個方面來講講如何使用SFTP完全替代FTP。本教程基于CentOS5.4。

本文要實作以下功能:

SFTP要管理3個目錄:

homepage

blog

pay

權限配置如下:

賬戶www,可以管理所有的3個目錄;

賬戶blog,隻能管理blog目錄;

賬戶pay,隻能管理pay目錄。

web伺服器需求:

賬戶blog管理的目錄是一個部落格網站,使用apache伺服器。apache伺服器的啟動賬戶是apache賬戶,組為apache組。

賬戶blog屬于apache組,它上傳的檔案能夠被apache伺服器删除。同樣的,它也能删除在部落格中上傳的檔案(就是屬于apache賬戶的檔案)。

SFTP的賬戶直接使用Linux作業系統賬戶,我們可以用<code>useradd</code>指令來建立賬戶。

首先建立3個要管理的目錄:

建立sftp組和www、blog、pay賬号,這3個賬号都屬于sftp組:

至此賬戶設定完畢。

首先要更新OpenSSH的版本。隻有4.8p1及以上版本才支援Chroot。

CentOS 5.4的源中的最新版本是4.3,是以需要更新OpenSSH。

指定新的源:

執行更新:

更新成功後,設定sshd_config。通過Chroot限制使用者的根目錄。

完成這一步之後,嘗試登入SFTP:

要實作Chroot功能,目錄權限的設定非常重要。否則無法登入,給出的錯誤提示也讓人摸不着頭腦,無從查起。我在這上面浪費了很多時間。

目錄權限設定上要遵循2點:

ChrootDirectory設定的目錄權限及其所有的上級檔案夾權限,屬主和屬組必須是root;

ChrootDirectory設定的目錄權限及其所有的上級檔案夾權限,隻有屬主能擁有寫權限,也就是說權限最大設定隻能是755。

如果不能遵循以上2點,即使是該目錄僅屬于某個使用者,也可能會影響到所有的SFTP使用者。

由于上面設定了目錄的權限是755,是以所有非root使用者都無法在目錄中寫入檔案。我們需要在ChrootDirectory指定的目錄下建立子目錄,重新設定屬主和權限。以homepage目錄為例:

要實作web伺服器與blog賬戶互删檔案的權限需求,需要設定umask,讓預設建立的檔案和目錄權限為775即可。将下面的内容寫入.bashrc中:

至此,我們已經實作了所有需要的功能。

     本文轉自yzy121403725 51CTO部落格,原文連結:http://blog.51cto.com/lookingdream/1769233,如需轉載請自行聯系原作者

繼續閱讀