Ubuntu 安裝及設定 vsftp

好久沒有設定 FTP 了,最近遇到需要架設 FTP 的情況,這篇文章參考自:How to Setup FTP Server with VSFTPD on Ubuntu 20.04,小蛙把自己實際使用流程記錄下來。

小蛙收到的需求是要架設 FTP Sever ,建立一個特定使用帳號,並將該帳號的家目錄設定在特定路徑下,該文章完全符合小蛙的需求,照著做之後把過程中文化並記錄下來,開始吧!

安裝 vsftp

這邊使用較輕巧且設定簡單的 vsftp,透過以下指令進行安裝

sudo apt update
sudo apt install vsftpd

安裝完成後可輸入systemctl status vsftpd查看是否正常安裝及運作

設定 vsftp

vsftp 的設定檔在/etc/vsftpd.conf,小蛙這邊將進行以下 5 項設定,第 6 項傳輸加密部份因為沒有要用到,這邊就不另外提了。

sudo vim /etc/vsftpd.conf

1. 存取限制

設定禁止匿名者登入,以及本地帳號皆可使用

anonymous_enable=NO
local_enable=YES

2. 允許上傳

若要讓使用者上傳檔案,須將以下設定開啟

write_enable=YES

3. 限制目錄切換

基於安全性問題,想將使用者限制在特定區域,避免有心人士的非法行為,加上以下這兩項設定

chroot_local_user=YES
allow_writeable_chroot=YES

4. 被動連線 (PASV)

FTP Server 可以設定 (1) 主動模式 及 (2) 被動模式,在設定檔加入pasv_min_portpasv_max_port兩個參數可限縮被動模式使用的 port 區間。

兩種模式各有優缺點,主動模式對伺服器來說比較安全,但對用戶端來說卻是可能帶來危險,因此很可能被用戶端的防火牆所阻擋了。使用被動模式雖然解決了用戶端的問題,但相對的伺服器必須開啟一定範圍的通訊埠供用戶端連線,好在目前絕大部分的 FTP 伺服器軟體,皆可以由管理者決定開啟哪些範圍的通訊埠。

FTP 主動模式與被動模式
pasv_min_port=30000
pasv_max_port=31000

5. 限制登入

除了上面設定的本機使用者可以登入外,也可以使用下面這些設定,僅讓清單上的使用者登入 FTP,我們將設定檔放在/etc/vsftpd.user_list內,檔案內一行為一個使用者帳號

userlist_enable=YES
userlist_file=/etc/vsftpd.user_list
userlist_deny=NO

6. 傳輸加密

小蛙這次設定沒有要用到,可參考原文進行設定。

設定防火牆

設定好 vsftp 之後,安全起見還是要把防火牆設定起來,FTP 需要開啟 port 20, port 21 以及上面設定的被動模式 port 區間

sudo ufw allow 20:21/tcp
sudo ufw allow 30000:31000/tcp

建立及設定 FTP 使用者

剛剛我們設定了只有/etc/vsftpd.user_list清單上的使用者才可以登入 FTP,現在就來新增一個 FTP 專用帳號

1. 新增使用者

使用adduser建立一個使用者 newftpuser (帳號換成自己要的),並且把該使用者加入到允許登入清單中

sudo adduser newftpuser
echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list

禁止 Shell 登入

由於只想讓該帳號使用 FTP 的功能,不希望該帳號透過 SSH 的方式登入進主機,新增一個名為 ftponly 的 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

將我們建立的/bin/ftponly加入到 shell 清單中

echo "/bin/ftponly" | sudo tee -a /etc/shells

接著把 newftpuser 的 shell 指定為/bin/ftponly

sudo usermod newftpuser -s /bin/ftponly

完成後如果嘗試使用該帳號登入 SSH,就會看到以下訊息 ~

打完收工!同場加映,因為小蛙還要重新設定使用者家目錄,透過以下指令即可完成。

sudo usermod -d /my/new/path newftpuser

您可能也想知道:

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。

    這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料