ftp服務的搭建

一、FTP工作原理

(1)FTP使用端口

[root@localhost ~]# cat /etc/services | grep ftp
ftp-data 20/tcp   #數據鏈路:端口20
ftp 21/tcp        #控制鏈路:端口21

(2)FTP連接方式
     支持兩種連接模式:主動模式(Port)和被動模式(Pasv),這兩種模式都是針對數據鏈路進行的,與控制鏈路無關。

  • 主動模式工作過程:

1.客戶端從自己的一個任意端口(N > 1024)和FTP服務器的21端口建立控制鏈路
2.然後客戶端發出Port指令告訴服務器連接自己的N+1端口來建立一條數據通道
3.當FTP服務器接到這一指令時,會使用20端口連接用戶在Port指令中指定的端口號N+1來發送數據

  • 被動模式工作過程:

1.客戶端從自己的一個任意端口(N > 1024)和FTP服務器的21端口建立控制鏈路
2.然後客戶端發送Pasv指令,告訴服務器自己要連接服務器的某一個端口
3.如果服務器上的這個端口是空閒可用的,那麼服務器會返回確認信息,之後數據傳輸通道被建立;但如果服務器上的這個端口被另一個資源所使用,那麼服務器返回不確認的信息,那麼這是客戶端會再次發送Pasv命令。

注意:

  • 在FTP客戶連接服務器的整個過程中,控制信道是一直保持連接的,而數據傳輸通道是臨時建立的;

  • 主動模式建立數據傳輸通道是由服務器端發起的,服務器使用20端口連接客戶端某一個大於1024的端口;

  • 被動模式中建立數據傳輸通道是由客戶端發起的,它使用一個大於1024的端口連接服務器的1024端口以上的某一個端口。

二、ftp服務器搭建

需求:在Linux中搭建一個ftp服務器在存儲文件,創建一個ftp用戶:test,主目錄是:/home/test,設置該用戶不允許登錄服務器,並需要限制該用戶不能離開自己的主目錄。

【實現步驟】

1.查看系統有沒有安裝vsftpd
# rpm -qa | grep vsftpd
vsftpd-3.0.2-21.el7.x86_64
:vsftp(Very Secure FTP)是Linux系統下使用最多的FTP服務端。

2.查看vsftpd服務是否開機自啓
# chkconfig --list vsftpd
vsftpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

3.建立一個新用戶賬戶test,-d 參數指定用戶登入時的主目錄,參數-m 表示如果主目錄不存在則自動創建
# useradd -d /home/test -m test

爲用戶設置密碼,輸入命令:
# passwd 密碼

4.vsftpd的配置
安裝完成後,執行命令【rpm -ql vsftpd】可以查看與vsftpd相關的配置文件和文檔,其中在/etc/vsftpd目錄下有三個主要配置文件:

  • vsftpd.conf 主配置文件

  • ftpusers 指定哪些用戶不能訪問FTP服務器

  • user_list 指定的用戶是否可以訪問ftp服務器

查看vsftpd.conf配置文件
內容如下:

[root@localhost ~]# cat /etc/vsftpd/vsftpd.conf | grep -v '^#'
#----匿名用戶設置----
anonymous_enable=NO #禁止匿名用戶登錄
#----本地用戶設置----
local_enable=YES #允許本地用戶登錄ftp服務器
write_enable=YES #允許用戶想服務器執行寫入操作
local_umask=022 #設置服務器上本地用戶創建文件的權限掩碼
#----歡迎語設置----
dirmessage_enable=YES #啓用目錄提示消息
#----日誌文件設置----
xferlog_enable=YES #啓用日誌文件功能,記錄於/var/log/xferlog
xferlog_std_format=YES #啓用標準的日誌格式
#----FTP工作方式與端口設置----
connect_from_port_20=YES #主動模式下,是否啓用默認的20端口進行數據傳輸
#----與連接相關的設置----
listen=NO            #vsftpd不是以獨立的服務運行,要受到xinetd服務的管控,功能上會受到限制
listen_ipv6=YES
#----控制用戶是否允許切換到上級目錄----
chroot_list_enable=YES         #開啓限制用戶在主目錄的功能
chroot_list_file=/etc/vsftpd/chroot_list #在chroot_list文件中加入你要限制的用戶名,一行一個用戶
#----虛擬用戶設置----
pam_service_name=vsftpd      #虛擬用戶使用PAM認證方式
#----控制用戶訪問(通過vsftpd.user_list和ftpusers文件來實現)----
userlist_enable=YES #是否啓用userlist_file文件
userlist_file=/etc/vsftpd/user_list #允許user_list文件中加入的用戶訪問ftp服務器
#----控制主機訪問----
tcp_wrappers=YES #vsftpd服務器檢查/etc/hosts.allow和/etc/hosts.deny中的設置,來決定請求連接的主機,是否允許訪問該FTP服務器
#----其它設置----
allow_writeable_chroot=YES #去除用戶主目錄的寫權限

在上述vsftpd.conf的相關選項的配置下,對ftpuser文件和user_list文件的配置如下:

  • ftpusers文件:不添加test用戶,表示該用戶不能訪問ftp服務器

  • user_list文件:在/etc/vsftpd.conf主配置文件中設置了userlist_deny=YES(默認情況),則不添加test用戶,表示該用戶不能訪問ftp服務器

5.開啓vsftpd服務
#service vsftpd start

6.訪問ftp服務器方法

  • 瀏覽器:ftp://ip地址

  • ftp客戶端軟件,比如FileZilla,輸入ftp服務器IP,用戶名,密碼,端口:21

  • 命令行終端:ftp 用戶名@ftp服務器IP,或 ftp 127.0.0.1

注意:關閉ftp服務器上的防火牆及Selinux(防止端口限制)


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章