Ubuntu如何搭建FTP服務(wù)器
安裝vsftpd
安裝前確保21端口沒有被占用,用命令查看:lsof -i:21
被占用用命令干掉進(jìn)程:kill -9 21
安裝
- 先更新apt軟件包列表:sudo apt-get update
- 安裝vsftpd:sudo apt-get install vsftpd
- 檢測(cè)是否安裝:vsftpd -version
- 設(shè)置FTP服務(wù)開機(jī)自啟動(dòng)(應(yīng)該是默認(rèn)的,可不設(shè)):sudo systemctl enable vsftpd
- 啟動(dòng)FTP服務(wù):sudo sysemctl start vsftpd
查看vsftpd的安裝包相關(guān)信息:dpkg -s vsftpd
如相關(guān)的文件位置
/etc/ftpusers #禁止vsftpd的用戶列表文件 /etc/init.d/vsftpd #啟動(dòng)腳本 /etc/logrotate.d/vsftpd /etc/pam.d/vsftpd #安全策略 /etc/vsftpd.conf #配置文件
網(wǎng)絡(luò)環(huán)境不支持IPv6時(shí),在/etc/vsftpd.conf
配置文件中,將listen_ipv6=YES
修改為listen_ipv6=NO
。
網(wǎng)卡配文件:/etc/netplan
安裝完成后
vsftpd的配置文件
配置文件 | 說明 |
---|---|
/etc/vsftpd/vsftpd.conf | 主配置文件 |
/usr/sbin/vsftpd | vsftpd的主程序 |
/etc/rc.d/init.d/vsftpd | 啟動(dòng)腳本 |
/etc/pam.d/vsftpd | PAM認(rèn)證文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止訪問的用戶來自/etc/vsftpd/ftpusers文件中的用戶) |
/etc/ftpusers | 禁止使用vsftpd的用戶列表文件。記錄不允許訪問FTP服務(wù)器的用戶名單,管理員可以把一些對(duì)系統(tǒng)安全有威脅的用戶賬號(hào)記錄在此文件中,以免用戶從FTP登錄后獲得大于上傳下載操作的權(quán)利,而對(duì)系統(tǒng)造成損壞。(注意:linux-4中此文件在/etc/目錄下) |
/etc/vsftpd/user_list | 禁止或允許使用vsftpd的用戶列表文件。這個(gè)文件中指定的用戶缺省情況(即在/etc/vsftpd/vsftpd.conf中設(shè)置userlist_deny=YES)下也不能訪問FTP服務(wù)器,在設(shè)置了userlist_deny=NO時(shí),僅允許user_list中指定的用戶訪問FTP服務(wù)器。(注意:linux-4中此文件在/etc/目錄下) |
/etc/vsftpd/chroot_list | 主要功能是可以將某些賬號(hào)的使用者 chroot 在制定目錄下; |
/var/ftp | 匿名用戶主目錄;本地用戶主目錄為:/home/用戶主目錄,即登錄后進(jìn)入自己家目錄 |
vsftpd.conf參數(shù)
/etc/vsftpd/vsftpd.conf
本身就是一個(gè)挺詳細(xì)的配置文件,且使用『 man 5 vsftpd.conf
』則可以得到完整的參數(shù)說明;
這里依舊先對(duì) vsftpd.conf
內(nèi)的常用參數(shù)作說明。
- 與服務(wù)器環(huán)境較相關(guān)的設(shè)定值
參數(shù)設(shè)定值 | 默認(rèn)值 | 作用 |
---|---|---|
connect_from_port_20=YES|NO | YES | 指定FTP使用20端口進(jìn)行數(shù)據(jù)傳輸 |
listen_port=21 | 21 | 設(shè)置FTP服務(wù)器建立連接所監(jiān)聽的端口 |
dirmessage_enable=YES|NO | YES | 如果啟動(dòng)選項(xiàng),第一次進(jìn)入目錄時(shí),若有.message這個(gè)檔案,則會(huì)出現(xiàn)此檔案的內(nèi)容,通常這個(gè)檔案會(huì)放置歡迎話語,或是對(duì)該目錄的說明; |
message_file=.message | .message | 設(shè)置目錄消息文件,可將要顯示的信息寫入該文件。默認(rèn)值為.message |
listen=YES|NO | YES | 設(shè)置vsftpd服務(wù)器是否以standalone模式運(yùn)行 |
pasv_enable=YES|NO | YES | 是否使用PASV工作模式(被動(dòng)莫模式) |
use_localtime=YES|NO | NO | vsftpd使用本機(jī)時(shí)間作為vsftpd時(shí)間; 默認(rèn)為顯示格林威治時(shí)間(GMT); |
write_enable=YES|NO | YES | 允許登陸用戶有寫權(quán)限;屬于全局設(shè)置,默認(rèn)值為YES。 |
connect_timeout=60 | 60 | PORT 方式下建立數(shù)據(jù)連接的超時(shí)時(shí)間,單位為秒 |
accept_timeout=60 | 60 | 建立FTP連接的超時(shí)時(shí)間,單位為秒 |
data_connection_timeout=120 | 300 | 建立FTP數(shù)據(jù)連接的超時(shí)時(shí)間,單位為秒 |
idle_session_timeout=300 | 300 | 多長(zhǎng)時(shí)間不對(duì)FTP服務(wù)器進(jìn)行任何操作,則斷開該FTP連接,單位為秒 |
max_clients=0 | 0 | vsftpd允許的最大連接數(shù),默認(rèn)值為0,表示不受限制 |
max_per_ip=0 | 0 | 設(shè)置每個(gè)IP允許與FTP服務(wù)器同時(shí)建立連接的數(shù)目,默認(rèn)值為0,表示不受限制 |
pasv_min_port=0, pasv_max_port=0 | pasv_min_port:0 pasv_max_port:0 | 在PASV工作模式下,數(shù)據(jù)連接可以使用的端口范圍的最小端口,0 表示任意端口; 在PASV工作模式下,數(shù)據(jù)連接可以使用的端口范圍的最大端口,0 表示任意端口; |
ftpd_banner=文字說明 | NULL | 用來定義歡迎話語的字符串,而ftpd_banner 則是字符串的形式 |
banner_file=/path/file | NULL | 用來定義歡迎話語的字符串,banner_file是檔案的形式 |
- 與實(shí)體用戶較相關(guān)的設(shè)定值
參數(shù)設(shè)定值 | 默認(rèn)值 | 作用 |
---|---|---|
guest_enable=YES|NO | NO | 啟用虛擬用戶 |
guest_username=ftp | ftp | 用來映射虛擬用戶 |
local_enable=YES|NO | YES | 控制是否允許本地用戶登入,YES 為允許本地用戶登入,NO為不允許 |
local_max_rate=0 | 0 | 本地用戶使用的最大傳輸速度,單位為B/s,0 表示不限制速度 |
chroot_local_user=YES|NO | NO | 用于指定用戶列表文件中的用戶是否允許切換到上級(jí)目錄 |
chroot_list_enable=YES|NO | NO | 設(shè)置是否啟用chroot_list_file配置項(xiàng)指定的用戶列表文件 |
chroot_list_file=/etc/vsftpd.chroot_list | 用于指定用戶列表文件, 該文件用于控制用戶可以切換到用戶家目錄的上級(jí)目錄 | |
userlist_enable=YES|NO | NO | 是否啟用vsftpd.user_list文件 |
userlist_deny=YES|NO | YES | 決定vsftpd.user_list文件中的用戶是否能夠訪問FTP服務(wù)器; 設(shè)置為YES,則vsftpd.user_list文件中的用戶不允許訪問FTP; 若設(shè)置為NO,則只有vsftpd.user_list文件中的用戶才能訪問FTP; |
userlist_file=/etc/vsftpd/user_list | NO | 控制用戶訪問FTP的文件,里面寫著用戶名稱。一個(gè)用戶名稱一行 |
與匿名用戶登錄相關(guān)的設(shè)定值
參數(shù)設(shè)定值 | 默認(rèn)值 | 作用 |
---|---|---|
anonymous_enable=YES|NO | YES | 控制是否允許匿名用戶登入,YES 為允許匿名登入,NO 為不允許 |
anon_world_readable_only=YES|NO | YES | 如果設(shè)為YES,則允許匿名登入者下載可閱讀的文件 |
anon_other_write_enable=YES|NO | NO | 允許匿名登入者擁有上傳或者建立目錄之外的權(quán)限;如,刪除或者重命名; anon_upload_enable=NO,則匿名用戶不能上傳文件,但可刪除或重命名已經(jīng)存在的文件; anon_mkdir_write_enable=NO,則匿名用戶不能上傳或者新建文件夾,但可以刪除或者重命名已經(jīng)存在的文件夾; |
anon_mkdir_write_enable=YES|NO | NO | 允許匿名登入者有新增目錄的權(quán)限,只有在write_enable=YES時(shí),此項(xiàng)才有效; 匿名用戶必須要有對(duì)上層目錄的寫入權(quán); |
anon_upload_enable=YES|NO | NO | 允許匿名登入者有上傳文件(非目錄)的權(quán)限,只有在write_enable=YES時(shí),此項(xiàng)才有效; 匿名用戶必須要有對(duì)上層目錄的寫入權(quán); |
deny_email_enable=YES|NO | NO | 啟動(dòng)這項(xiàng)功能,則必須提供一個(gè)檔案/etc/vsftpd/banner_emails,內(nèi)容為email address; 若是使用匿名登入,則會(huì)要求輸入email address; 若輸入的email address 在此檔案內(nèi),則不允許進(jìn)入; |
banned_email_file=/etc/vsftpd/banned_emails | /etc/vsftpd.banned_emails | 用來輸入email address,只有在deny_email_enable=YES時(shí),才會(huì)使用到此文件; 若是使用匿名登入,則會(huì)要求輸入email address,若輸入的email address 在此檔案內(nèi),則不允許進(jìn)入; |
no_anon_password=YES|NO | NO | 啟動(dòng)這項(xiàng)功能,則使用匿名登入時(shí),不會(huì)詢問密碼 |
anon_max_rate=0 | 0 | 設(shè)置匿名登入者使用的最大傳輸速度,單位為B/s,0 表示不限制速度 |
anon_umask=077 | 077 | 設(shè)置匿名登入者新增或上傳檔案時(shí)的umask 值 |
與 vsftpd 系統(tǒng)安全相關(guān)的設(shè)定值
參數(shù)設(shè)定值 | 默認(rèn)值 | 作用 |
---|---|---|
ascii_download_enable=YES|NO | NO | 設(shè)置是否啟用ASCII 模式下載數(shù)據(jù) |
ascii_upload_enable=YES|NO | NO | 設(shè)置是否啟用ASCII 模式上傳數(shù)據(jù) |
one_process_model=YES|NO | YES | |
tcp_wrappers=YES|NO | YES | 設(shè)置vsftpd是否與tcp wrapper相結(jié)合來進(jìn)行主機(jī)的訪問控制; 啟用,則vsftpd會(huì)檢查/etc/hosts.allow 中的配置,來決定請(qǐng)求連接的主機(jī),是否允許訪問該FTP服務(wù)器; |
xferlog_enable=YES|NO | YES | 是否啟用上傳/下載日志記錄; 啟用,則上傳與下載的信息將被完整紀(jì)錄在xferlog_file 所定義的文件中; |
xferlog_file=/var/log/xferlog | /var/log/vsftpd.log | 設(shè)置日志文件名和路徑 |
xferlog_std_format=YES|NO | NO | 啟用,則日志文件將會(huì)寫成xferlog的標(biāo)準(zhǔn)格式,如同wu-ftpd 一般 |
dual_log_enable=YES|NO, vsftpd_log_file=/var/log/vsftpd.log | /var/log/vsftpd.log | 編寫vsftpd樣式日志文件的文件的名稱; 僅當(dāng) 設(shè)置了選項(xiàng)xferlog_enable并且未設(shè)置xferlog_std_format時(shí), 才會(huì)寫入此日志; 或,如果已設(shè)置選項(xiàng)dual_log_enable,則會(huì)寫入; 如果設(shè)置了 syslog_enable,則不會(huì)寫入此文件,而是將輸出發(fā)送到系統(tǒng)日志; |
nopriv_user=nobody | vsftpd在完全沒有特權(quán)的情況下使用的用戶名; 這應(yīng)該是專用用戶,而不是任何人 | |
pam_service_name=vsftpd | /etc/pam.d/vsftpd | 設(shè)置PAM使用的名稱 |
綜合案例 - 本地用戶模式
創(chuàng)建FTP用戶
# 創(chuàng)建FTP用戶主目錄 sudo mkdir /home/uftp # 添加FTP用戶uftp,指定用戶主目錄和所用shell sudo useradd -d /home/uftp -s /bin/bash uftp # 設(shè)置uftp的密碼 sudo passwd uftp # 輸入密碼: # 再次輸入密碼: # 將uftp用戶的Shell修改為/sbin/nologin,它不允許用戶登錄系統(tǒng) sudo usermod -s /bin/nologin uftp
# 更改/home/uftp/
目錄的擁有者為uftp
。
sudo chown -R uftp:uftp /home/uftp/
配置vsftpd
編輯vsftpd.conf文件
命令如下:
# 在編輯之前先完成vsftpd.conf的備份 sudo cp vim /etc/vsftpd.conf /etc/vsftpd.conf.bak # 編輯vsftpd.conf文件 sudo vim /etc/vsftpd.conf
禁止匿名登錄FTP服務(wù)器,僅允許本地用戶登錄:
#禁止匿名登錄FTP服務(wù)器。 anonymous_enable=NO #允許本地用戶登錄FTP服務(wù)器。 local_enable=YES
在行首添加#注釋掉以下參數(shù),關(guān)閉監(jiān)聽IPv6 sockets,開啟IPv4(ipV4和ipV6不能同時(shí)被監(jiān)聽):
# 啟用IPv4 listen=YES # 關(guān)閉監(jiān)聽IPv6 sockets #listen_ipv6=YES
取消注釋write_enable
設(shè)置以允許對(duì)文件系統(tǒng)進(jìn)行更改,例如上傳和刪除文件:
# 取消注釋write_enable write_enable=YES
開啟FTP的被動(dòng)模式,設(shè)置數(shù)據(jù)傳輸?shù)亩丝诜秶海ㄌ砑釉?code>/etc/vsftpd.conf文件的最后)
# 開啟被動(dòng)模式。 pasv_enable=YES #設(shè)置被動(dòng)模式下,建立數(shù)據(jù)傳輸可使用的端口范圍的最小值。 #建議您把端口范圍設(shè)置在一段比較高的范圍內(nèi),例如50000~50010,有助于提高訪問FTP服務(wù)器的安全性。 pasv_min_port=50000 #設(shè)置被動(dòng)模式下,建立數(shù)據(jù)傳輸可使用的端口范圍的最大值。 pasv_max_port=50010
配置chroot
為防止FTP用戶訪問其主目錄之外的任何文件:(添加在/etc/vsftpd.conf文件的最后)
# 全部用戶被限制在主目錄 chroot_local_user=YES # 啟用例外用戶名單 chroot_list_enable=YES # (default follows) # 指定例外用戶列表文件,列表中用戶不被鎖定在主目錄 chroot_list_file=/etc/vsftpd.chroot_list
默認(rèn)情況下,為了防止安全漏洞,啟用chroot
后,如果用戶鎖定的目錄可寫,則vsftpd
將拒絕上傳文件,在vsftpd
配置文件中添加以下指令。
allow_writeable_chroot=YES
重啟FTP服務(wù)使配置生效
# 重啟FTP服務(wù) sudo systemctl restart vsftpd # 查詢FTP服務(wù)狀態(tài) sudo systemctl status vsftpd
配置防火墻
如果正在運(yùn)行UFW
防火墻,則需要允許FTP通信。
要打開端口21
(FTP命令端口),端口20
(FTP數(shù)據(jù)端口)和50000-50010
(被動(dòng)端口范圍),請(qǐng)運(yùn)行以下命令
sudo ufw allow 20:21/tcp sudo ufw allow 50000:50010/tcp
如果遠(yuǎn)程管理ftp服務(wù)器,要讓他可以登錄:
usermod -s /bin/bash uftp
綜合案例 - 匿名用戶模式
1.主要是在配置文件中打開:
# 啟用匿名用戶模式 anonymous_enable=YES
2.備份本地用戶模式的配置文件
3.上傳匿名用戶模式配置文件:rz
在vsftpd.conf
文件中添加匿名用戶相關(guān)配置:
# 監(jiān)聽ipv4,啟用獨(dú)立模式 listen=YES # 啟用匿名用戶模式 anonymous_enable=YES # 允許寫操作 write_enable=YES # 允許匿名用戶上傳文件 anon_upload_enable=YES # 允許匿名用戶創(chuàng)建目錄 anon_mkdir_write_enable=YES # 允許匿名用戶修改或刪除目錄 anon_other_write_enable=YES # 表示上傳下載文件的掩碼 anon_umask=077 # 設(shè)置用戶的家目錄,登錄之后自動(dòng)切換到各自用戶的家目錄 local_root=/srv/ftp/upload # 全部用戶被限制在主目錄 chroot_local_user=YES ? # 開啟被動(dòng)模式。 pasv_enable=YES #設(shè)置被動(dòng)模式下,建立數(shù)據(jù)傳輸可使用的端口范圍的最小值。 #建議您把端口范圍設(shè)置在一段比較高的范圍內(nèi),例如50000~50010,有助于提高訪問FTP服務(wù)器的安全性。 pasv_min_port=50000 #設(shè)置被動(dòng)模式下,建立數(shù)據(jù)傳輸可使用的端口范圍的最大值。 pasv_max_port=50010
在/srv/ftp
目錄下創(chuàng)建upload
目錄并完成賦權(quán)操作:
sudo mkdir /srv/ftp/upload sudo chown -R :ftp /srv/ftp/upload# 設(shè)置upload目錄的權(quán)限為775 sudo chmod 775 /srv/ftp/upload
重啟服務(wù)
# 重啟服務(wù) sudo service vsftpd restart # 查看服務(wù)狀態(tài) sudo service vsftpd status
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vsftp連接錯(cuò)誤cannot locate user entry:vsftpd
這篇文章主要介紹了vsftpd登陸錯(cuò)誤: 500 OOPS: cannot locate user entry:vsftpd問題的解決辦法,需要的朋友可以參考下2014-03-03云服務(wù)器Windows?Server2012配置FTP服務(wù)器詳細(xì)圖文教程
這篇文章主要介紹了云服務(wù)器Windows?Server2012配置FTP服務(wù)器詳細(xì)圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08客戶端使用FileZilla連接ftp服務(wù)器過程圖解
這篇文章主要介紹了客戶端使用FileZilla連接ftp服務(wù)器過程圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08windows?server?2016?搭建FTP服務(wù)器詳細(xì)教程
這篇文章主要為大家詳細(xì)介紹了windows?server?2016?搭建FTP服務(wù)器詳細(xì)教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08Ubuntu系統(tǒng)搭建FTP服務(wù)器的詳細(xì)過程
本文詳細(xì)介紹了在Ubuntu 22.04.2 LTS系統(tǒng)中安裝和配置vsftpd服務(wù)的步驟,通過FileZilla測(cè)試了FTP服務(wù)器的連接方法,感興趣的朋友跟隨小編一起看看吧2024-09-09CentOS8環(huán)境下FTP服務(wù)器安裝與配置步驟詳解
FTP(文件傳輸協(xié)議)是一種網(wǎng)絡(luò)傳輸協(xié)議,用于在網(wǎng)絡(luò)中的計(jì)算機(jī)之間傳輸文件,在本指南中,我們將一步步介紹如何在CentOS 8環(huán)境下安裝和配置一個(gè)FTP服務(wù)器,感興趣的朋友一起看看吧2024-05-05