對于遠程登錄來說,SSH(Secure Shell)確實是好東西。通過使用SSH,我們可以把所有傳輸的數據進行加密,這樣就可以阻止“中間人”這種攻擊方式,還能夠防止DNS欺騙和IP欺騙。而且如果考慮到安全的文件傳輸選擇,我們就可以放棄使用FTP轉而考慮使用如SCP或者SFTP,它們與FTP應用相似但采用SSH來進行驗證和加密,如果我們使用基于UNIX的服務器,可以在命令方式下調用SCP或者SFTP。不過,這同時意味著別人也能夠登錄到你的系統并且執行其中的命令。即使你進行限制使其只能對SFTP訪問,用戶仍然享有對整個系統的完全的訪問權限。
通過使用一種稱為RSSH(restricted secure shell)的程序我們完全可以改變這種情況,此程序可從pizzashack.org下載。當然,如果廠商支持的話,用戶還可以從其組件庫中將此程序安裝到您的Linux系統中。通過使用RSSH,你不但能夠限制用戶使用SCP和SFTP(也包括一些使用SSH進行傳輸的程序,如rsync 和cvs),而且可以依靠chroot去限制用戶只能訪問一個目錄而不是整個的文件系統。
創建chroot通常情況下技巧性較強,下面這段腳本可以作為一個用于創建初始化chroot的范例:
|
上面這段腳本會被執行為:# mkchroot /chroot/user。
下一步就是要執行針對用戶的特定操作,如為用戶創建密鑰文件:
|
此外,我們還需要修改其登錄的外殼:
|
最后,編輯/etc/rssh.conf并增加如下一項:
|
這會將用戶的默認umask設置為022,并提供SCP和SFTP的訪問。
最后,確保關鍵字在rssh.conf中被啟用:
|
這樣你就可以確保了安全的文件傳輸,并且不會暴露整個的文件系統或外殼(shell)訪問。