Linux系統(tǒng)搭建FTP服務(wù)器完整步驟
FTP協(xié)議:文件傳輸協(xié)議(File Transfer Protocol)
- 協(xié)議定義了一個在遠(yuǎn)程計算機系統(tǒng)和本地計算機系統(tǒng)之間傳輸文件的一個標(biāo)準(zhǔn)
- FTP運行在OSI模型的應(yīng)用層,并利用傳輸協(xié)議TCP在不同的主機之間提供可靠的數(shù)據(jù)傳輸
- FTP 在文件傳輸中還支持?jǐn)帱c續(xù)傳功能,可以大幅度減少CPU網(wǎng)絡(luò)帶寬的開銷
FTP模型
- 用戶接口:提供一個用戶接口并使用客戶端協(xié)議解釋器的服務(wù)
- 客戶端協(xié)議解釋器:向遠(yuǎn)程服務(wù)器發(fā)送命令 并建立客戶數(shù)據(jù)傳輸過程
- 服務(wù)端協(xié)議解釋器:響應(yīng)客戶協(xié)議機發(fā)出的命令并驅(qū)動服務(wù)端數(shù)據(jù)傳輸過程
- 客戶端數(shù)據(jù)傳輸協(xié)議:負(fù)責(zé)完成和服務(wù)器數(shù)據(jù)傳輸過程及客戶端本地文件系統(tǒng)的通信
- 服務(wù)端數(shù)據(jù)傳輸協(xié)議:負(fù)責(zé)完成和客戶數(shù)據(jù)過程及服務(wù)器端文件系統(tǒng)的通信
控制連接(端口號21)
- 主要用來傳送在實際通信過程中需要執(zhí)行的FTP命令以及命令的響應(yīng)
- 只需要很小的網(wǎng)絡(luò)帶寬
- FTP服務(wù)端監(jiān)聽21端口號來等待控制連接建立
- 建立控制連接后,還需要驗證客戶身份,決定是否建立數(shù)據(jù)連接
- 當(dāng)需要目錄列表,傳輸文件時,才建立數(shù)據(jù)連接,并且每次客戶端都是用不同的端口號來建立數(shù)據(jù)連接。數(shù)據(jù)傳輸完畢,就中斷這條臨時的數(shù)據(jù)連接
- 在FTP連接期間,控制連接始終保持通常的連接狀態(tài)。在數(shù)據(jù)連接存在期間,控制連接必須存在;一旦控制連接斷開,數(shù)據(jù)連接會自動關(guān)閉。
數(shù)據(jù)連接(端口號20)
- FTP服務(wù)端監(jiān)聽20端口來等待數(shù)據(jù)連接
- 數(shù)據(jù)連接依賴于控制連接
- 建立方式(主動被動都是相對服務(wù)器而言)
主動模式
- 通過三次握手,建立控制連接;客戶端的源端口是高位隨機端口,目標(biāo)端口是21端口
- 控制連接建立后,客戶端進(jìn)行身份驗證,協(xié)商數(shù)據(jù)連接采用主動模式;隨后客戶端會向FTP服務(wù)器發(fā)送Port報文,表明自己監(jiān)聽的IP+端口,并等待FTP服務(wù)器(20端口)向自己監(jiān)聽的IP+端口發(fā)起數(shù)據(jù)連接請求。
- 服務(wù)端發(fā)起數(shù)據(jù)連接請求,建立數(shù)據(jù)連接
被動模式
- 通過三次握手,建立控制連接;客戶端的源端口是高位隨機端口,目標(biāo)端口是21端口;
- 控制連接建立后,客戶端進(jìn)行身份驗證,協(xié)商數(shù)據(jù)連接采用被動模式;隨后客戶端會向服務(wù)器發(fā)送PASV報文,表示我們用被動模式
- 服務(wù)端收到PASV報文,于是向客戶端發(fā)送Port報文,表明自己監(jiān)聽的IP+端口
- 客戶端發(fā)起數(shù)據(jù)連接請求,建立數(shù)據(jù)連接
VSFTPD服務(wù)介紹
- 服務(wù)包:vsftpd
- 服務(wù)類型:由Systemd啟動的守護進(jìn)程
- 配置單元: /usr/lib/systemd/system/vsftpd.service
- 守護進(jìn)程: /usr/sbin/vsftpd
- 端口: 21(ftp) , 20(ftp‐data)
- 主配置文件: /etc/vsftpd/vsftpd.conf
- 用戶訪問控制配置文件: /etc/vsftpd/ftpusers /etc/vsftpd/user_list
- 日志文件: /etc/logrotate.d/vsftpd
- 配置文件參數(shù)
參數(shù) | 作用 |
---|---|
listen=NO | 是否以獨立運行的方式監(jiān)聽服務(wù) |
listen_address=ip地址 | 設(shè)置要監(jiān)聽的IP地址 |
listen_port=21 | 設(shè)置FTP服務(wù)的監(jiān)聽端口 |
download_enable=YES | 是否允許下載文件 |
userlist_enable=YES | 設(shè)置用戶列表為"允許" |
userlist_deny=YES | 設(shè)置用戶列表為"禁止" |
max_clients=0 | 最大客戶端連接數(shù),0為不限制 |
max_per_ip=0 | 同一IP地址的最大連接數(shù),0為不限制 |
anonymous_enable=YES | 是否允許匿名用戶訪問 |
anon_upload_enable=YES | 是否允許匿名用戶上傳文件 |
anon_umask | 匿名用戶上傳文件的umask |
anon_root=/var/ftp | 匿名用戶的ftp根目錄 |
anon_mkdir_write_enable=YES | 是否允許匿名用戶創(chuàng)建目錄 |
anon_other_write_enable=YES | 是否開放匿名用戶的其他寫入權(quán)限(重命名、刪除等) |
anon_max_rate=0 | 匿名用戶的最大傳輸速率,0為不限制 |
local_enable=yes | 是否允許本地用戶登錄 |
local_umask=022 | 本地用戶上傳文件的umask值 |
local_root=/vat/ftp | 本地用戶的ftp根目錄 |
chroot_local_user=YES | 是否將用戶權(quán)限禁錮在ftp目錄,以確保安全 |
local_max_rate=0 | 本地用戶的最大傳輸速率,0為不限制 |
基礎(chǔ)配置
安裝vsftp
[root@localhoust ~]#yum -y install vsftpd
準(zhǔn)備分發(fā)的文件
[root@localhoust ~]#touch /var/ftp/abd.txt
啟動服務(wù)
[root@localhost ~]#systemctl start vsftpd [root@localhost ~]#systemctl enable vsftpd
關(guān)閉防火墻
[root@localhost ~]#systemctl stop firewalld [root@localhost ~]#setenforce 0
客戶端工具
Linux中
1.使用ftp工具
[root@localhost ~]# yum install ftp -y [root@localhost ~]# ftp <IP地址> Name (192.168.175.10:root):anonymous password:直接回車
ftp工具一定要輸入用戶名和密碼,匿名用戶登陸用戶名寫anonymous,密碼直接回車,登陸成功或者失敗都會給出提示
2.使用lftp工具
[root@localhost ~]# yum install lftp -y [root@localhost ~]# lftp <IP地址>
lftp工具不需要輸入用戶名和密碼直接登陸,不會直接給出登陸成功或者失敗的提示,需要輸入ls工具才能知道是否連接成功,優(yōu)點在于連接更加方便
Windows中
1.在瀏覽器中訪問
可以在瀏覽器、運行窗口或者資源管理器中輸入 ftp://IP地址/ ,這樣訪問的是ftp的根位置,如果需要訪問相關(guān)目錄可以輸入 ftp://IP地址/目錄/文件名
2.在控制管理器中訪問
在cmd窗口中,輸入命令 ftp <IP地址> 即可訪問
需要注意的是直接訪問ftp服務(wù)器的IP地址時訪問的根位置目錄是 /var/ftp,如果需要訪問pub里的test可以訪問 ftp://192.168.80.129/pub/test 。
案例
案例1,匿名用戶訪問(默認(rèn)開啟)
修改配置文件
[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf anonymous_enable=YES anon_umask=022 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES [root@localhost ~]# systemctl restart vsftpd #重啟配置
新版本的vsftp針對用戶安全性進(jìn)行了升級,普通用戶無法在/var/ftp下新建文件,如果直接添加目錄的w權(quán)限會觸發(fā)安全判斷問題,因為/var/ftp目錄下的文件只能是默認(rèn)的755權(quán)限,普通用戶沒有w權(quán)限,而且/var/ftp目錄的屬主必須是root,如果修改所屬主或者權(quán)限則會觸發(fā)完全問題。欲使普通用戶可以在ftp中上傳文件,就在/var/ftp下新建一個用于普通用戶上傳文件的目錄,比如/var/ftp/pub,將/var/ftp/pub目錄的屬主和屬組改成ftp,并且添加w權(quán)限
chown ftp.ftp /var/ftp/pub chmod 777 /var/ftp/pub
現(xiàn)在就可以在里面寫文件了
案例2,本地用戶訪問
這些用戶就是Linux下的用戶,使用本地用戶登陸,登陸成功時位置在該用戶的家目錄。如:用戶han登陸時,輸入han在Linux下的密碼,登陸成功后位置在/home,han可以在該目錄下創(chuàng)建或者刪除文件
修改配置文件
[root@localhost ~]# vi /etc/vsftpd/vsftpd.conf anonymous_enable=NO #不允許匿名用戶訪問 local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=YES tcp_wrappers=YES [root@localhost ~]# systemctl restart vsftpd #重啟配置 [root@localhost ~]# systemctl enable vsftpd
本地用戶登陸時,密碼使用的是該用戶在Linux下登陸時的密碼,而不是ftp的密碼
注意:出現(xiàn)在/etc/vsftpd/ftpusers /etc/vsftpd/user_list這兩個文件中的內(nèi)容將會被定義為黑名單
案例3,虛擬用戶訪問
只用于登陸ftp的用戶,不是Linux下的用戶。
- 創(chuàng)建用于進(jìn)行FTP認(rèn)證的用戶數(shù)據(jù)庫文件,其中奇數(shù)行為用戶名,偶數(shù)行為密碼。
[root@localhost ~]# cd /etc/vsftpd/ [root@localhost vsftpd]# vim vuser.list #創(chuàng)建文件,稍后虛擬用戶信息從這個文件讀取 eagle #用戶名 centos #密碼 cisco #用戶名 centos #密碼 huawei #用戶名 centos #密碼
- 使用db_load命令用哈希(hash)算法將原始的明文信息文件轉(zhuǎn)換成數(shù)據(jù)庫文件。
[root@localhost vsftpd]# db_load -T -t hash -f vuser.list vuser.db
由于文件vuser.list中含有密碼等敏感信息,所以使用加密算法加密。轉(zhuǎn)換完后新的文件vuser.db就是用戶數(shù)據(jù)庫,里面是加密后的信息。
查看vuser.db的文件類型:
[root@localhost vsftpd]# file vuser.db vuser.db: Berkeley DB (Hash, version 9, native byte-order)
- 降低數(shù)據(jù)庫文件的權(quán)限(避免其他人看到數(shù)據(jù)庫文件的內(nèi)容)。加強數(shù)據(jù)庫vuser.db的安全性,防止破解
[root@localhost vsftpd]# chmod 600 vuser.db
- 把原始的明文信息文件刪除。
[root@localhost vsftpd]# rm -f vuser.list
- 創(chuàng)建一個本地用戶,用來做虛擬用戶在本地的代理,為了安全起見,禁止這個本地用戶登錄。
[root@localhost vsftpd]# useradd -d /var/ftproot -s /sbin/nologin virtual #-d 指定用戶的家目錄為/var/ftproot -s 指定為不能登陸的用戶 [root@localhost vsftpd]# ls -ld /var/ftproot/ drwx------. 2 virtual virtual 59 8月 10 23:04 /var/ftproot/ [root@localhost vsftpd]# chmod -Rf 755 /var/ftproot/
新建一個用于虛擬用戶認(rèn)證的PAM文件vsftpd.vu,利用pam模塊(linux內(nèi)核的一個認(rèn)證模塊)做一個認(rèn)證
[root@localhost vsftpd]# vi /etc/pam.d/vsftpd.vu auth required pam_userdb.so db=/etc/vsftpd/vuser account required pam_userdb.so db=/etc/vsftpd/vuser
- 配置文件
[root@localhost vsftpd]# cat /etc/vsftpd/vsftpd.conf anonymous_enable=NO local_enable=YES guest_enable=YES guest_username=virtual #名為virtual的用戶做代理 allow_writeable_chroot=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd.vu #記得修改這里為我們自己的認(rèn)證文件 userlist_enable=YES tcp_wrappers=YES [root@localhost vsftpd]# systemctl restart vsftpd
這時用戶創(chuàng)建完畢,可以登陸,但是不能寫文件,需要給權(quán)限
- 如果想要針對不同的用戶設(shè)置不同的權(quán)限
[root@localhost vsftpd]# mkdir /etc/vsftpd/vusers_dir/ #創(chuàng)建一個目錄用于存放各個虛擬用戶的配置文件 [root@localhost vsftpd]# cd /etc/vsftpd/vusers_dir/ [root@localhost vusers_dir]# touch huawei #創(chuàng)建huawei的配置文件,如果不給任何權(quán)限,則默認(rèn)為主配置文件 [root@localhost vusers_dir]# vim cisco #創(chuàng)建cisco的配置文件,并修改配置文件 anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES #與配置匿名用戶權(quán)限一樣 [root@localhost vusers_dir]# vi /etc/vsftpd/vsftpd.conf anonymous_enable=NO local_enable=YES guest_enable=YES guest_username=virtual allow_writeable_chroot=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd.vu userlist_enable=YES tcp_wrappers=YES user_config_dir=/etc/vsftpd/vusers_dir #在主配置文件中加上這一行,告訴主配置文件我們這里還有配置 [root@localhost vusers_dir]# systemctl restart vsftpd 配置完后,huawei沒權(quán)限,cisco有權(quán)限
總結(jié)
到此這篇關(guān)于Linux系統(tǒng)搭建FTP服務(wù)器的文章就介紹到這了,更多相關(guān)Linux搭建FTP服務(wù)器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
FTP用戶無法登陸產(chǎn)生原因以及對應(yīng)解決方法
這篇文章主要為大家詳細(xì)介紹了FTP用戶無法登陸產(chǎn)生原因以及對應(yīng)的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-05-05ServU7不支持中文名的解決辦法(Serv-U中文目錄和文件名變亂碼問題)
這篇文章主要介紹了ServU7.X版本無法正確創(chuàng)建或者刪除中文文件夾和文件名的解決方法,需要的朋友可以參考下2013-12-12windows?server?2012?r2安裝FTP服務(wù)詳細(xì)教程
這篇文章主要為大家詳細(xì)介紹了windows?server?2012?r2安裝FTP服務(wù)詳細(xì)教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-08-08設(shè)置Serv-U FTP 支持被動模式連接 ,530錯誤等解決辦法集錦
腳本之家技術(shù)團隊為了服務(wù)器設(shè)置的更安全,都開啟了防火墻所以就需要serv_u被動模式加載。下面是從網(wǎng)站找到的一些資料。大家可以參考下。2011-03-03Linux下使用vsftp搭建FTP服務(wù)器(附參數(shù)說明)
本章主要介紹在Linux中搭建FTP服務(wù)器的過程,需要掌握的要點是配置文件的合理配置,需要的朋友可以參考下2019-04-04