本教程介紹如何在Ubuntu 20.04安裝和配置,用于在設(shè)備之間共享文件的FTP服務(wù)器。
FTP 文件傳輸協(xié)議,是用于將文件傳輸?shù)竭h(yuǎn)程網(wǎng)絡(luò)的標(biāo)準(zhǔn)網(wǎng)絡(luò)協(xié)議。有幾種可用于Linux的開源FTP服務(wù)器。
最著名和廣泛使用的是pureftpd,Proftpd,VSFTPD。我們將安裝VSFTPD,穩(wěn)定,安全和快速的FTP服務(wù)器。
我們還將向您展示如何配置服務(wù)器以將用戶限制在其家目錄,并使用SSL/TLS加密傳輸。
雖然FTP是一個非常流行的協(xié)議,但對于更安全和更快的數(shù)據(jù)傳輸,您應(yīng)該使用SCP 或SFTP。
vsftpd包在Ubuntu存儲庫中可用。要安裝它,請運(yùn)行命令sudo apt update && sudo apt install vsftpd
。
當(dāng)安裝完成后,F(xiàn)TP服務(wù)將自動啟動。要驗證它,可以運(yùn)行命令sudo systemctl status vsftpd
打印vsftpd服務(wù)狀態(tài)。輸出應(yīng)顯示VSFTPD服務(wù)處于active狀態(tài)。
sudo apt update
sudo apt install vsftpd
sudo systemctl status vsftpd
● vsftpd.service - vsftpd FTP server
Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled)
Active: active (running) since Tue 2021-03-02 15:17:22 UTC; 3s ago
...
配置VSftpd
VSftpd服務(wù)器配置文件位于etc/vsftpd.conf
。VSftpd服務(wù)器設(shè)置都在此文件中。要查看所有可用選項,請訪問VSFTPD文檔頁面。
在以下章節(jié)中,我們將介紹配置安全VSFTPD安裝所需的一些重要設(shè)置。首先打開VSFTPD配置文件使用你喜歡的文本編輯器。
在本教程中,我們使用vim打開文件etc/vsftpd.conf。
sudo vim etc/vsftpd.conf
FTP 本地用戶
我們僅允許本地用戶訪問FTP服務(wù)器。搜索anonymous_enable
和local_enable
指令并將anonymous_enable
的值改為NO,local_enable
的值改為YES。
anonymous_enable=NO
local_enable=YES
etc/vsftpd.conf
啟用上傳
搜索write_enable
并取消注釋write_enable
指令,允許文件系統(tǒng)的更改,例如上載和刪除文件。
write_enable=YES
etc/vsftpd.conf
Chroot Jail
為了防止本地FTP用戶訪問其家目錄之外的文件,請更改chroot_local_user
的值為YES。
默認(rèn)情況下,出于安全原因,當(dāng)啟用chroot時,如果用戶被鎖定的目錄是可寫的,則VSFTPD將拒絕上傳文件。
因此還需要啟用allow_writeable_chroot
指令,請將allow_writeable_chroot
指令改為YES,這將允許用戶上傳文件chroot的目錄。
chroot_local_user=YES
allow_writeable_chroot=YES
etc/vsftpd.conf
被動 FTP 連接
默認(rèn)情況下,VSFTPD使用主動模式。要使用被動模式,請設(shè)置端口的最小和最大范圍。
您可以使用任何端口進(jìn)行被動的FTP連接。啟用被動模式時,F(xiàn)TP客戶端在所選范圍內(nèi)的隨機(jī)端口上打開與服務(wù)器的連接。
pasv_min_port=30000
pasv_max_port=31000
etc/vsftpd.conf
限制用戶登錄
您可以配置VSFTPD以僅允許某些用戶登錄。要執(zhí)行此操作,請在文件末尾添加以下配置。
當(dāng)啟用這些選項時,您需要明確將用戶名添加到etc/vsftpd.user_allow_list
文件來指定允許登錄的用戶。
該文件每一行用戶,僅可指定一個用戶名。vsftpd.user_allow_lis
文件默認(rèn)是不存在的,你可以使用vim創(chuàng)建文件etc/vsftpd.user_allow_list
。
userlist_enable
表示啟用user列表,userlist_file
表示指定用戶列表的文件,文件的名稱可以你喜歡的任何名稱。
userlist_deny
指定是允許用戶列表的用戶還是拒絕用戶列表的用戶。
當(dāng)userlist_deny
的值為NO時,這將會拒絕所有用戶。僅在用戶列表文件的用戶是允許的。
當(dāng)userlist_deny
的值為YES時,這將會允許所有用戶,僅在用戶列表文件的用戶是拒絕的。
注意 :用戶名是Linux系統(tǒng)的用戶名,也就是說使用useradd命令創(chuàng)建的用戶。
userlist_enable=YES
userlist_file=etc/vsftpd.user_allow_list
userlist_deny=NO
etc/vsftpd.conf
重啟 vsftpd 服務(wù)
這是本教程的vsftpd配置文件。這將配置vsftpd限制用戶在其家目錄中,允許用戶上傳文件到家目錄任何文件夾。
僅允許指定用戶可以訪問FTP服務(wù)器,你可以在etc/vsftpd.user_allow_list文件添加允許的用戶。
當(dāng)完成配置后,保存文件并退出vim。然后運(yùn)行命令sudo systemctl restart vsftpd
重啟vsftpd服務(wù)。
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
xferlog_file=/var/log/vsftpd.log
chroot_local_user=YES
allow_writeable_chroot=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
pasv_min_port=30000
pasv_max_port=31000
userlist_enable=YES
userlist_file=etc/vsftpd.user_allow_list
userlist_deny=NO
etc/vsftpd.conf
sudo systemctl restart vsftpd
設(shè)置防火墻
如果您正在運(yùn)行UFW防火墻,您需要允許FTP流量。打開FTP命令端口21
,F(xiàn)TP數(shù)據(jù)端口端口20
和被動端口范圍30000-31000
,運(yùn)行ufw命令。
為了避免被鎖定,確保SSH打開端口22
,運(yùn)行命令sudo ufw allow OpenSSH。然后重新啟用UFW來重新加載UFW規(guī)則。
運(yùn)行命令sudo ufw disable && sudo ufw enable
。你也可以運(yùn)行命令sudo ufw status
查看對防火墻的更改。
sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp
sudo ufw allow OpenSSH
sudo ufw disable
sudo ufw enable
Status: active
To Action From
-- ------ ----
20:21/tcp ALLOW Anywhere
30000:31000/tcp ALLOW Anywhere
OpenSSH ALLOW Anywhere
20:21/tcp (v6) ALLOW Anywhere (v6)
30000:31000/tcp (v6) ALLOW Anywhere (v6)
OpenSSH (v6) ALLOW Anywhere (v6)
禁用 shell 訪問
默認(rèn)情況下,在創(chuàng)建用戶時,如果未明確指定,用戶也可以通過SSH訪問服務(wù)器。要禁用 shell 訪問權(quán)限,
請創(chuàng)建一個新的shell,將打印消息,告訴用戶其帳戶僅限于ftp訪問。運(yùn)行echo命令和chmod命令,創(chuàng)建/bin/ftponly
文件并使其可執(zhí)行。
然后運(yùn)行命令將新創(chuàng)建的shell追加到etc/shells
文件中,最后將用戶登錄shell更改為/bin/ftponly
。
您可以使用相同的命令更改要僅提供FTP訪問的所有用戶,newftpuser是Linux 用戶的名稱,記得更改為你用戶。
echo -e '#!/bin/sh
echo "This account is limited to FTP access only."' | sudo tee -a /bin/ftponly
sudo chmod a+x /bin/ftponly
echo "/bin/ftponly" | sudo tee -a etc/shells
sudo usermod newftpuser -s /bin/ftponly
結(jié)論
我們向您展示如何在Ubuntu 20.04安裝和配置FTP服務(wù)器。如果您有任何問題或反饋,請隨時留下評論。點擊下方閱讀原文獲取更好排版格式。
-
Linux
+關(guān)注
關(guān)注
87文章
11292瀏覽量
209322 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
9123瀏覽量
85322 -
FTP
+關(guān)注
關(guān)注
0文章
110瀏覽量
40624 -
Ubuntu
+關(guān)注
關(guān)注
5文章
563瀏覽量
29703
發(fā)布評論請先 登錄
相關(guān)推薦
評論