FTP(文件傳輸協(xié)議)是一種用于通過(guò)網(wǎng)絡(luò )在服務(wù)器和客戶(hù)端之間傳輸文件的傳統并廣泛使用的標準工具,特別是在不需要身份驗證的情況下(允許匿名用戶(hù)連接到服務(wù)器)。我們必須明白,默認情況下 FTP 是不安全的,因為它不加密傳輸用戶(hù)憑據和數據。
在本指南中,我們將介紹在 CentOS/RHEL7 和 Fedora 發(fā)行版中安裝、配置和保護 FTP 服務(wù)器( VSFTPD 代表 “Very Secure FTP Daemon”)的步驟。
請注意,本指南中的所有命令將以 root 身份運行,如果你不使用 root 帳戶(hù)操作服務(wù)器,請使用sudo命令獲取 root 權限。
步驟 1:安裝 FTP 服務(wù)器
1、 安裝 vsftpd 服務(wù)器很直接,只要在終端運行下面的命令。
2、 安裝完成后,服務(wù)先是被禁用的,因此我們需要手動(dòng)啟動(dòng),并設置在下次啟動(dòng)時(shí)自動(dòng)啟用:
3、 接下來(lái),為了允許從外部系統訪(fǎng)問(wèn) FTP 服務(wù),我們需要打開(kāi) FTP 守護進(jìn)程監聽(tīng)的 21 端口:
步驟 2: 配置 FTP 服務(wù)器
4、 現在,我們會(huì )進(jìn)行一些配置來(lái)設置并加密我們的 FTP 服務(wù)器,讓我們先備份一下原始配置文件
:
接下來(lái),打開(kāi)上面的文件,并將下面的選項設置相關(guān)的值:
5、 現在基于用戶(hù)列表文件/etc/vsftpd.userlist來(lái)配置 FTP 來(lái)允許/拒絕用戶(hù)的訪(fǎng)問(wèn)。
默認情況下,如果設置了userlist_enable=YES,當userlist_deny選項設置為YES的時(shí)候,userlist_file=/etc/vsftpd.userlist中列出的用戶(hù)被拒絕登錄。
然而, 更改配置為userlist_deny=NO,意味著(zhù)只有在userlist_file=/etc/vsftpd.userlist顯式指定的用戶(hù)才允許登錄。
這并不是全部,當用戶(hù)登錄到 FTP 服務(wù)器時(shí),它們會(huì )進(jìn)入 chroot jail 中,這是僅作為 FTP 會(huì )話(huà)主目錄的本地根目錄。
接下來(lái),我們將介紹如何將 FTP 用戶(hù) chroot 到 FTP 用戶(hù)的家目錄(本地 root)中的兩種可能情況,如下所述。
6、 接下來(lái)添加下面的選項來(lái)限制 FTP 用戶(hù)到它們自己的家目錄。
chroot_local_user=YES意味著(zhù)用戶(hù)可以設置 chroot jail,默認是登錄后的家目錄。
同樣默認的是,出于安全原因,vsftpd 不會(huì )允許 chroot jail 目錄可寫(xiě),然而,我們可以添加allow_writeable_chroot=YES 來(lái)覆蓋這個(gè)設置。
保存并關(guān)閉文件。
步驟 3: 用 SELinux 加密 FTP 服務(wù)器
7、現在,讓我們設置下面的 SELinux 布爾值來(lái)允許 FTP 能讀取用戶(hù)家目錄下的文件。請注意,這原本是使用以下命令完成的:
然而,由于這個(gè) bug 報告:ftp_home_dir指令默認是禁用的。
現在,我們會(huì )使用semanage命令來(lái)設置 SELinux 規則來(lái)允許 FTP 讀取/寫(xiě)入用戶(hù)的家目錄。
這時(shí),我們需要重啟 vsftpd 來(lái)使目前的設置生效:
步驟 4: 測試 FTP 服務(wù)器
8、 現在我們會(huì )用useradd 命令創(chuàng )建一個(gè) FTP 用戶(hù)來(lái)測試 FTP 服務(wù)器。
之后,我們如下使用echo 命令添加用戶(hù) ravi 到文件/etc/vsftpd.userlist中:
9、 現在是時(shí)候測試我們上面的設置是否可以工作了。讓我們使用匿名登錄測試,我們可以從下面的截圖看到匿名登錄沒(méi)有被允許。
測試 FTP 匿名登錄
10、 讓我們也測試一下沒(méi)有列在/etc/vsftpd.userlist中的用戶(hù)是否有權限登錄,下面截圖是沒(méi)有列入的情況:
FTP 用戶(hù)登錄失敗
11、 現在最后測試一下列在 /etc/vsftpd.userlist 中的用戶(hù)是否在登錄后真的進(jìn)入了他/她的家目錄:
用戶(hù)成功登錄
警告:使用 allow_writeable_chroot=YES有一定的安全隱患,特別是用戶(hù)具有上傳權限或 shell 訪(fǎng)問(wèn)權限時(shí)。
只有當你完全知道你正做什么時(shí)才激活此選項。重要的是要注意,這些安全性影響并不是 vsftpd 特定的,它們適用于所有提供了將本地用戶(hù)置于 chroot jail 中的 FTP 守護進(jìn)程。
因此,我們將在下一節中看到一種更安全的方法來(lái)設置不同的不可寫(xiě)本地根目錄。
步驟 5: 配置不同的 FTP 家目錄
12、 再次打開(kāi) vsftpd 配置文件,并將下面不安全的選項注釋掉:
接著(zhù)為用戶(hù)(ravi,你的可能不同)創(chuàng )建另外一個(gè)替代根目錄,并將所有用戶(hù)對該目錄的可寫(xiě)權限移除:
13、 接下來(lái),在用戶(hù)存儲他/她的文件的本地根目錄下創(chuàng )建一個(gè)文件夾:
接著(zhù)在 vsftpd 配置文件中添加/修改這些選項:
保存并關(guān)閉文件。再說(shuō)一次,有新的設置后,讓我們重啟服務(wù):
14、 現在最后在測試一次查看用戶(hù)本地根目錄就是我們在他的家目錄創(chuàng )建的 FTP 目錄。
FTP 用戶(hù)家目錄登錄成功
聯(lián)系客服