docker搭建vsftpd服務

interpolo發表於2020-12-05

一、宿主機開通20、21、21100-21110埠

1.主動模式: 21埠為ftp預設的埠,是ftp的控制埠, 而20埠是ftp的資料埠, 21埠用來接收客戶端連線, 20埠用來傳輸資料; 伺服器(主動地)定下規矩,客戶端與服務端建立連線, 那通過21埠, 想傳資料就通過20埠, 20埠和21埠結合到一起就是ftp的主動模式

2.被動模式: 主動模式有一些安全性問題, 如果有人想攻擊你的ftp服務, 就直接到20埠堵你, 為了避免資料出門被人堵, 就出現了被動模式, 被動模式把傳資料的20埠, 改成了範圍, 比如文中的21100-21110, 具體哪個值由客戶端來定(比如21115), 這樣傳出的資料就不容易被人堵,安全性大大提升, 現在大多數ftp客戶端,預設使用被動模式連線伺服器, 也就是由客戶端定傳資料的埠
二、拉取映象

docker pull fauria/vsftpd

三、安裝ftp命令和建立使用者目錄

yum install ftp
mkdir -p /home/vsftpd
chown ftp.ftp -R /home/vsftpd

四、啟動容器

docker run -d --net=host -v /home/vsftpd/:/home/vsftpd -e FTP_USER=ftp -e FTP_PASS=ftp -e PASV_ADDRESS=<宿主機IP> -e PASV_MIN_PORT=21100 -e PASV_MAX_PORT=21110 --name vsftpd fauria/vsftpd

五、新增新使用者和匿名使用者

docker exec -it vsftpd bash
mkdir -p /home/vsftpd/<新增使用者名稱>
vi /etc/vsftpd/virtual_users.txt

注:奇數行為使用者名稱,偶數行為密碼

db_load -T -t hash -f /etc/vsftpd/virtual_users.txt /etc/vsftpd/virtual_users.db
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES 允許匿名使用者訪問 
write_enable=YES 允許登入使用者有寫許可權。屬於全域性設定 
anon_root=var/ftp 指定匿名使用者登入的目錄 
anon_upload_enable=YES 允許匿名使用者有上傳檔案的許可權 
anon_mkdir_write_enable=YES 允許匿名使用者有新增目錄的許可權 
chown_uploads=YES 設定是否改變匿名使用者上傳檔案的屬主。預設為NO。chown_uploads=YES的時候不設定chown_users列表,anon_umask是不生效的。
chown_username=username 設定匿名使用者上傳檔案的屬主名
chmod 777 -R /var/ftp/pub

ctrl+D退回宿主機

docker restart vsftpd

六、使用winSCP登入ftp站點進行檔案傳輸
注:協議選擇不加密,埠21
ftp使用者目錄 :/home/vsftpd/ftp
新增使用者目錄:/home/vsftpd/<新增使用者名稱>
匿名使用者目錄:/var/ftp/pub

相關文章