ubuntu 安裝vsftpd
Posted: 2025年 Mar 7日, 13:51
Ubuntu 安裝及設定 vsftp
作者: 黃小蛙 · 最後更新 2022-12-14 · 發表於 2022-12-14 · Linux / 技術相關
好久沒有設定 FTP 了,最近遇到需要架設 FTP 的情況,這篇文章參考自:How to Setup FTP Server with VSFTPD on Ubuntu 20.04,小蛙把自己實際使用流程記錄下來。
小蛙收到的需求是要架設 FTP Sever ,建立一個特定使用帳號,並將該帳號的家目錄設定在特定路徑下,該文章完全符合小蛙的需求,照著做之後把過程中文化並記錄下來,開始吧!
目錄
安裝 vsftp
設定 vsftp
1. 存取限制
2. 允許上傳
3. 限制目錄切換
4. 被動連線 (PASV)
5. 限制登入
6. 傳輸加密
設定防火牆
建立及設定 FTP 使用者
1. 新增使用者
禁止 Shell 登入
安裝 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_port及pasv_max_port兩個參數可限縮被動模式使用的 port 區間。
兩種模式各有優缺點,主動模式對伺服器來說比較安全,但對用戶端來說卻是可能帶來危險,因此很可能被用戶端的防火牆所阻擋了。使用被動模式雖然解決了用戶端的問題,但相對的伺服器必須開啟一定範圍的通訊埠供用戶端連線,好在目前絕大部分的 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,就會看到以下訊息 ~ 打完收工!同場加映,因為小蛙還要重新設定使用者家目錄,透過以下指令即可完成。
作者: 黃小蛙 · 最後更新 2022-12-14 · 發表於 2022-12-14 · Linux / 技術相關
好久沒有設定 FTP 了,最近遇到需要架設 FTP 的情況,這篇文章參考自:How to Setup FTP Server with VSFTPD on Ubuntu 20.04,小蛙把自己實際使用流程記錄下來。
小蛙收到的需求是要架設 FTP Sever ,建立一個特定使用帳號,並將該帳號的家目錄設定在特定路徑下,該文章完全符合小蛙的需求,照著做之後把過程中文化並記錄下來,開始吧!
目錄
安裝 vsftp
設定 vsftp
1. 存取限制
2. 允許上傳
3. 限制目錄切換
4. 被動連線 (PASV)
5. 限制登入
6. 傳輸加密
設定防火牆
建立及設定 FTP 使用者
1. 新增使用者
禁止 Shell 登入
安裝 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_port及pasv_max_port兩個參數可限縮被動模式使用的 port 區間。
兩種模式各有優缺點,主動模式對伺服器來說比較安全,但對用戶端來說卻是可能帶來危險,因此很可能被用戶端的防火牆所阻擋了。使用被動模式雖然解決了用戶端的問題,但相對的伺服器必須開啟一定範圍的通訊埠供用戶端連線,好在目前絕大部分的 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,就會看到以下訊息 ~ 打完收工!同場加映,因為小蛙還要重新設定使用者家目錄,透過以下指令即可完成。