共計 3549 個字符,預計需要花費 9 分鐘才能閱讀完成。
如何在 ubuntu 20.04 安裝 vsftpd 配置 FTP 文件服務器? 我們如何在 ubuntu 20.04 上安裝和配置用于在設備之間共享文件的 FTP 服務器。vsftpd(Very secure ftp daemon): 就是一個非常安全的 ftp 服務程序,它是從 ftp 衍生出來的,提供更高的安全度,但是功能不夠 ftp 齊全。我們將安裝 VSFTPD(Very Secure Ftp Daemon),這是一個穩定、安全且快速的 FTP 服務器。我們還將向介紹如何配置服務器以限制用戶訪問他們的主目錄并使用 SSL/TLS 加密整個傳輸。雖然 FTP 是一種非常流行的協議,但為了更安全和更快的數據傳輸,應該使用 SCP 或 SFTP。
第一、在 Ubuntu 20.04 上安裝 vsftpd
vsftpd 包在 Ubuntu 存儲庫中可用。要安裝它,請執行以下命令:
sudo apt update
sudo apt install vsftpd
安裝過程完成后,ftp 服務將自動啟動。要驗證它,查看狀態。
sudo systemctl status vsftpd
輸出應顯示 vsftpd 服務處于活動狀態并正在運行:
vsftpd.service – vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-09-30 18:11:21 UTC; 3s ago
…
第二、配置 vsftpd
vsftpd 服務器配置存儲在 /etc/vsftpd.conf 文件中。大多數服務器設置在文件中都有詳細記錄。有關所有可用選項,請訪問 vsftpd 文檔頁面。在以下部分中,我們將介紹配置安全 vsftpd 安裝所需的一些重要設置。
首先打開 vsftpd 配置文件:
sudo nano /etc/vsftpd.conf
1、FTP 訪問權限
我們將只允許本地用戶訪問 ftp 服務器。搜索 anonymous_enable 和 local_enable 指令,驗證你的配置是否與下面的行匹配:
anonymous_enable=NO
local_enable=YES
按照上面配置。
2、允許上傳
設置 write_enable 指令的注釋以允許文件系統更改,例如上傳和刪除文件:
write_enable=YES
3、配置 Chroot jail
為了防止本地 FTP 用戶訪問主目錄之外的文件,請取消以 chroot_local_user 開頭的注釋:
chroot_local_user=YES
出于安全考慮,默認情況下,當 chroot 開啟時,如果用戶鎖定的目錄是可寫的,vsftpd 將拒絕上傳文件。
使用下面的解決方案之一,允許上傳時,chroot 是啟用的:
推薦的選項是啟用 chroot 特性并配置 FTP 目錄。在這個例子中,我們將在用戶的 home 中創建一個 ftp 目錄,作為 chroot 和一個可寫的上傳目錄,用于上傳文件:
user_sub_token=$USER
local_root=/home/$USER/ftp
4、設置被動 FTP 連接
pasv_min_port=30000
pasv_max_port=31000
我們可以使用任何端口進行被動 FTP 連接。當啟用被動模式時,FTP 客戶端將在您選擇的范圍內的任意端口上打開到服務器的連接。
5、限時用戶訪問
userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO
當啟用該選項時,需要通過在 /etc/vsftpd. conf 文件中添加用戶名來明確指定哪些用戶可以登錄 User_list 文件 (每行一個用戶)。
6、使用 SSL/TLS 保護傳輸
要使用 SSL/TLS 加密 FTP 傳輸,我們需要有一個 SSL 證書并配置 FTP 服務器來使用它。我們可以使用由受信任的證書頒發機構簽署的現有 SSL 證書,或創建自簽名證書。
我們將生成一個有效期為 10 年的 2048 位私鑰和自簽名 SSL 證書。
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_file 和 rsa_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 進行安全連接。
7、重啟 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
我們檢查一下,然后重啟。
sudo systemctl restart vsftpd
重啟生效。
第三、開啟防火墻
如果我們服務器有防火墻,需要開啟端口。
sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp
為了避免被鎖定,請確保端口 22 是打開的
sudo ufw allow OpenSSH
通過禁用和重新啟用 UFW 重新加載 UFW 規則.
sudo ufw disable
sudo ufw enable
第四、創建 FTP 用戶
為了測試 FTP 服務器,我們將創建一個新用戶。如果需要授予 FTP 訪問權限的用戶已經存在,請跳過第一步。如果您在配置文件中設置了 allow_writeable_chroot=YES,請跳過第三步。
1、創建新用戶 newftpuser
sudo adduser newftpuser
2、將該用戶添加到允許的 FTP 用戶列表中
echo “newftpuser” | sudo tee -a /etc/vsftpd.user_list
3、創建 FTP 目錄并設置正確的權限
sudo mkdir -p /home/newftpuser/ftp/upload
sudo chmod 550 /home/newftpuser/ftp
sudo chmod 750 /home/newftpuser/ftp/upload
sudo chown -R newftpuser: /home/newftpuser/ftp
第五、禁用 Shell 訪問
echo -e ‘#!/bin/sh\necho “This account is limited to FTP access only.”‘ | sudo tee -a /bin/ftponly
sudo chmod a+x /bin/ftponly
默認情況下,在創建用戶時,如果沒有顯式指定,用戶將具有對服務器的 SSH 訪問權限。要禁用 shell 訪問,請創建一個新的 shell,該 shell 將打印一條消息,告訴用戶他們的帳戶僅限于 FTP 訪問。
將新的 shell 添加到 /etc/shell 文件中的有效 shell 列表中:
echo “/bin/ftponly” | sudo tee -a /etc/shells
將 shell 用戶改為 /bin/ftponly:
sudo usermod newftpuser -s /bin/ftponly
我們就可以使用相同的命令來更改您想要只授予 FTP 訪問權限的所有用戶的 shell。
這樣,我們就完成在服務器中配置 VSFTPD 以及創建 FTP 用戶。