Vsftpd服務器的概述
Vsftpd是什么?
vsftpd意思為“very secure FTP daemon(非常安全的FTP進程)”,是一個基于GPL發布的類UNIX類操作系統上運行的服務器的名字(是一種守護進程),可以運行在諸如Linux、BSD、Solaris、HP-UX以及Irix等系統上面。vsftpd支持很多其他傳統的FTP服務器不支持的良好特性。
為何使用 vsftpd?
為了建構一個安全為主的 FTP 伺服器, vsftpd 針對作業系統的『程序的權限 (privilege)』概念來設計, 如果你讀過基礎篇的程序與資源管理章節的話, 你應該會曉得系統上面所執行的程式都會引發一個程序,我們稱他為 PID (Process ID), 這個 PID 在系統上面能進行的任務與他擁有的權限有關。也就是說, PID 擁有的權限等級越高, 他能夠進行的任務就越多。舉例來說,使用 root 身份所觸發的 PID 通常擁有可以進行任何工作的權限等級。
不過,萬一觸發這個 PID 的程式 (program) 有漏洞而導致被網路怪客 (cracker) 所攻擊而取得此 PID 使用權時, 那么網路怪客將會取得這個 PID 擁有的權限吶!所以,近來發展的套件都會盡量的將服務取得的 PID 權限降低,使得該服務即使不小心被入侵了,入侵者也無法得到有效的系統管理權限,這樣會讓我們的系統較為安全的啦。 vsftpd 就是基于這種想法而設計的。
除了 PID 方面的權限之外, vsftpd 也支援 chroot 這個函式的功能,chroot 顧名思義就是『 change root directory 』的意思,那個 root 指的是『根目錄』而非系統管理員。 他可以將某個特定的目錄變成根目錄,所以與該目錄沒有關係的其他目錄就不會被誤用了。
舉例來說,如果你以匿名身份登入我們的 ftp 服務的話,通常你會被限定在 /var/ftp 目錄下工作, 而你看到的根目錄其實就只是 /var/ftp ,至于系統其他如 /etc, /home, /usr... 等其他目錄你就看不到了! 這樣一來即使這個 ftp 服務被攻破了,沒有關係,入侵者還是僅能在 /var/ftp 裡面跑來跑去而已,而無法使用 Linux 的完整功能。自然我們的系統也就會比較安全啦!
sftpd 是基于上面的說明來設計的一個較為安全的 FTP 伺服器軟體,他具有底下的特點喔:
•vsftpd 這個服務的啟動者身份為一般使用者,所以對于 Linux 系統的使用權限較低,對于 Linux 系統的危害就相對的減低了。此外, vsftpd 亦利用 chroot() 這個函式進行改換根目錄的動作,使得系統工具不會被 vsftpd 這支服務所誤用;
•任何需要具有較高執行權限的 vsftpd 指令均以一支特殊的上層程序 (parent process) 所控制 ,該上層程序享有的較高執行權限功能已經被限制的相當的低,并以不影響 Linux 本身的系統為準;
•絕大部分 ftp 會使用到的額外指令功能 (dir, ls, cd ...) 都已經被整合到 vsftpd 主程式當中了, 因此理論上 vsftpd 不需要使用到額外的系統提供的指令,所以在 chroot 的情況下, vsftpd 不但可以順利運作,且不需要額外功能對于系統來說也比較安全。
•所有來自用戶端且想要使用這支上層程序所提供的較高執行權限之 vsftpd 指令的需求, 均被視為『不可信任的要求』來處理,必需要經過相當程度的身份確認后,方可利用該上層程序的功能。 例如 chown(), Login 的要求等等動作;
•此外,上面提到的上層程序中,依然使用 chroot() 的功能來限制使用者的執行權限。
由于具有這樣的特點,所以 vsftpd 就會比較安全一些!
【編輯推薦】