Ftp(文件傳輸協議)是一種标準網絡協議,用于在遠程網絡之間傳輸文件。
有許多可用于 Linux 的開源 FTP 服務器。最流行和使用最廣泛的是PureFTPd 、ProFTPD 和vsftpd 。在本教程中,我們将安裝 vsftpd(非常安全的 Ftp 守護程序)。它是一個穩定、安全、快速的 FTP 服務器。我們還将向您展示如何配置 vsftpd 以将用戶限制在他們的主目錄中并使用 SSL/TLS 加密整個傳輸。
盡管本教程是為 Ubuntu 18.04 編寫的,但相同的說明适用于 Ubuntu 16.04 和任何基于 Debian 的發行版,包括 Debian、Linux Mint 和 Elementary OS。
要獲得更安全和更快的數據傳輸,請使用SCP 或SFTP 。
1、先決條件在繼續本教程之前,請确保您以具有 sudo 權限的用戶身份登錄 。
2、在 Ubuntu 18.04 上安裝 vsftpdvsftpd 軟件包在 Ubuntu 存儲庫中可用。要安裝它,隻需運行以下命令:
sudo apt update
sudo apt install vsftpd
vsftpd 服務将在安裝過程完成後自動啟動。通過打印服務狀态來驗證它:
執行命令:sudo systemctl status vsftpd
輸出将如下所示,表明 vsftpd 服務處于活動狀态并正在運行:
可以通過編輯/etc/vsftpd.conf文件來配置 vsftpd 服務器。大多數設置都在配置文件中詳細記錄。有關所有可用選項,請訪問官方 vsftpd 頁面。
在以下部分中,我們将介紹配置安全 vsftpd 安裝所需的一些重要設置。
首先打開 vsftpd 配置文件:
我們将隻允許本地用戶訪問 FTP 服務器,找到anonymous_enable和local_enable指令并驗證您的配置是否與以下行匹配:
anonymous_enable=NO
local_enable=YES
取消注釋write_enable設置以允許更改文件系統,例如上傳和删除文件。
write_enable=YES
要防止 FTP 用戶訪問其主目錄之外的任何文件,請取消注釋該chroot設置。
chroot_local_user=YES
默認情況下,為了防止安全漏洞,當啟用 chroot 時,如果用戶被鎖定的目錄是可寫的,vsftpd 将拒絕上傳文件。
啟用 chroot 時,使用以下方法之一允許上傳。
方法 1. - 允許上傳的推薦方法是保持 chroot 啟用,并配置 FTP 目錄。在本教程中,我們将在用戶主目錄中創建一個ftp目錄,該目錄将用作 chroot 和一個uploads用于上傳文件的可寫目錄。
user_sub_token=$USER
local_root=/home/$USER/FTP
方法 2. - 另一種選擇是在 vsftpd 配置文件中添加以下指令。如果您必須授予用戶對其主目錄的可寫訪問權限,請使用此選項。
allow_writeable_chroot=YES
vsftpd 可以使用任何端口進行被動 FTP 連接。我們将指定端口的最小和最大範圍,然後在我們的防火牆中打開該範圍。
将以下行添加到配置文件中:
pasv_min_port=30000
pasv_max_port=31000
要僅允許某些用戶登錄 FTP 服務器,請在文件末尾添加以下行:
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO
啟用此選項後,您需要通過将用戶名添加到文件中來明确指定哪些用戶能夠登錄/etc/vsftpd.user_list(每行一個用戶)。
3.6 使用 SSL/TLS 保護傳輸為了使用 SSL/TLS 加密 FTP 傳輸,您需要擁有 SSL 證書并配置 FTP 服務器以使用它。
您可以使用由受信任的證書頒發機構簽名的現有 SSL 證書或創建自簽名證書。
如果您有一個指向 FTP 服務器 IP 地址的域或子域,您可以輕松生成免費的 Let's Encrypt SSL 證書。
我們将使用該命令生成自簽名 SSL 證書。openssl
以下命令将創建一個有效期為 10 年的 2048 位私鑰和自簽名證書。私鑰和證書都将保存在同一個文件中:
sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
創建 SSL 證書後,打開 vsftpd 配置文件:
sudo nano /etc/vsftpd.conf
找到rsa_cert_fileandrsa_private_key_file指令,将它們的值更改為pam文件路徑并将ssl_enable指令設置為YES:
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
如果沒有另外指定,FTP 服務器将隻使用 TLS 來建立安全連接。
4、重啟 vsftpd 服務完成編輯後,vsftpd 配置文件(不包括注釋)應如下所示:
listen=NO
listen_ipv6=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_enable=YES
user_sub_token=$USER
local_root=/home/$USER/ftp
pasv_min_port=30000
pasv_max_port=31000
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO
保存文件并重新啟動 vsftpd 服務以使更改生效:
執行命令:sudo systemctl restart vsftpd
如果您正在運行UFW 防火牆,則 需要允許 FTP 流量。
要打開端口21(FTP 命令端口)、端口20(FTP 數據端口)和30000-31000(被動端口範圍),請運行以下命令:
sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp
為避免被鎖定,請打開端口22:
通過禁用和重新啟用 UFW 重新加載 UFW 規則:
sudo ufw disable
sudo ufw enable
要驗證更改運行:
sudo ufw status
為了測試我們的 FTP 服務器,我們将創建一個新用戶。
如果您已經有一個要授予 FTP 訪問權限的用戶,請跳過第一步。
如果您allow_writeable_chroot=YES在配置文件中設置,請跳過第 3 步。
6.1 創建一個名為的新用戶newftpuser:
執行命令:sudo adduser newftpuser
6.2 将用戶添加到允許的 FTP 用戶列表:
執行命令:echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list
6.3創建 FTP 目錄樹并設置正确的權限 :
執行命令1:sudo mkdir -p /home/newftpuser/ftp/upload
執行命令2:sudo chmod 550 /home/newftpuser/ftp
執行命令3:sudo chmod 750 /home/newftpuser/ftp/upload
執行命令4:sudo chown -R newftpuser: /home/newftpuser/ftp
如上一節所述,用戶将能夠将其文件上傳到ftp/upload目錄。
此時,您的 FTP 服務器功能齊全,您應該能夠使用任何可以配置為使用 TLS 加密的 FTP 客戶端(例如FileZilla )連接到您的服務器 。
7、禁用外殼訪問默認情況下,創建用戶時,如果未明确指定,用戶将擁有對服務器的 SSH 訪問權限。
要禁用 shell 訪問,我們将創建一個新的 shell,它會簡單地打印一條消息,告訴用戶他們的帳戶僅限于 FTP 訪問。
創建/bin/ftponly外殼并使其可執行:
執行命令1:echo -e '#!/bin/sh\necho "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly
執行命令2:sudo chmod a x /bin/ftponly
将新的 shell 附加到/etc/shells文件中的有效 shell 列表中:
執行命令:echo "/bin/ftponly" | sudo tee -a /etc/shells
将用戶外殼更改為/bin/ftponly:
執行命令:sudo usermod newftpuser -s /bin/ftponly
使用相同的命令更改您隻想授予 FTP 訪問權限的所有用戶的 shell。
8、結論在本教程中,您學習了如何在 Ubuntu 18.04 系統上安裝和配置安全快速的 FTP 服務器。
如果您有任何問題或反饋,請随時發表評論。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!