ftp服務詳解

ftp:file transfer protocol,  監聽21端口

    文件傳輸協議,工作在應用層

     明文協議:認證及數據傳輸;

ftp實現方式:

      服務端實現:vsftpd pureftpd proftpd   vsftpd是默認在光盤上自帶的

      客戶端實現:

            linux:ftp lftp

            windows:cuteftp Filezilla Flashfxp

ftp連接類型:

      命令連接:傳輸指令

      數據連接:傳輸連接

工作方式:站在服務器端的角度描述

   主動模式:服務器向客戶端發起數據傳輸請求

        服務器端口:固定 

        客戶端端口:隨機

   被動模式:客戶端向服務器端發起數據傳輸請求

        服務器端口:半隨機,有客戶端向21號端口發送了連接請求,此時服務器會發送兩個數字,這兩個數字是服務器端新開啓的服務端口除以256得的商值和餘數。由此客戶端可以計算出服務器端的端口號。

ftp用戶分類:

            資源位於用戶的家目錄下/var/ftp/

     匿名用戶:(映射至某一固定的系統用戶)  匿名用戶的用戶名爲ftp、vsftp 

     本地用戶:(系統用戶)   root及系統用戶(0-999);操作系統上的每一個用戶都是本地用戶,我們不允許訪問ftp服務器

     虛擬用戶:映射入某操作系統上的某個用戶

          nsswitch:名稱服務轉換

          PAM:插入式認證模塊。

數據傳輸格式:

      文本格式:binary

      二進制格式:ascll

數據傳輸是通過線纜流式化傳輸的;傳輸圖片也同樣傳輸的字符串,到本地之後,通過這個字符調用相對應的圖片。

或者是傳輸過程中再加一個說明文檔,告訴對方如何將數據流重組。


vsftpd安裝方法

步驟一

vftpd 是centos自帶的,短小精悍,監聽21號端口

~]# yum info vsftpd 查看屬性

~]# yum install vsftpd   

/usr/sbin/vsftpd   程序

/etc/vsftpd/vsftpd.conf   配置文件

/etc/pam.d/vsftpd     因爲基於pam進行認證,所以在pam下也有一個配置文件

/var/ftp/    用戶家目錄

步驟二

CentOS 6 :

   /etc/rc.d/init.d/vsftpd  <--啓動服務腳本

   chkconfig vsftpd on      <--啓動服務永久開啓

CentOS 7

  /usr/lib/systemd/system/vsftpd.server

   systemctl enable vstfpd.service  <--永久開啓


getenforce 關閉selinux

步驟三:

測試:ftp://172.18.64.70/pub

步驟四:

lftp -u centos,magedu 172.18.64.70  <--創建centos用戶密碼爲magedu,使用此用戶訪問ftp服務->lcd /etc   切換到centos用戶的etc目錄->put fstab  將fstab文件上傳到ftp上

步驟五:對匿名用戶控制

 

開啓匿名用戶的上傳、創建、刪除及重命名功能

對用戶權限進行限制,建議先備份配置文件

  ~]# vim /etc/vsftpd/vsftpd.conf

  ~]# directive=value    <--配置文件書寫格式必須頂格寫


匿名用戶配置方法:此處我們要實現匿名用戶有上傳權限

    anonymous_enable=YES    <--是否啓用匿名用戶 想關閉單純註釋掉是沒有用的

   anon_upload_enable=YES  <--控制匿名用戶的上傳權限,依賴於write_enable=YES

  write_enable=YES       <--是否允許通過ftp協議修改文件系統上的數據指令,此命令全局生效,所以一定要處於開啓狀態

   anon_mkdir_write_enable=YES   <--開啓匿名用戶創建目錄的權限,默認關閉

   anon_other_write_enable=YES  <--定義匿名用的刪除及重命名權限

生效需重載:systemctl restart vsftpd.service

~]# cd /var/ftp/  

~]# chown ftp upload  將屬主改爲ftp


測試:使用172.18.64.71這臺主機

    ~]# lftp 172.18.64.70/upload    <--因爲我們只給upload目錄修改了屬主

   ~]# lcd /etc/    切換到70這臺主機的/etc/目錄下

   ~]# put fstab   上傳文件成功    


步驟六:對本地用戶控制

本地用戶:

    (1)local_enable=YES   <--是否允許本地用戶可以登陸ftp,如果關閉即只開放匿名用戶

        注意:所有非匿名用戶的生效,都依賴於此命令

    (2)local_umask=022 <--本地用戶上傳的文件權限掩碼,應該設置爲077,本地用戶上傳的只有本地用戶可以查看


目錄消息   

    (3)dirmessage_enable=YES  <--目錄消息顯示,用戶 第一次進入目錄時,vsftpd會查看.message文件,並將其內容顯示給用戶。message_file指定文件路徑,而不使用默認的.message;


數據傳輸日誌

  (4)xferlog_enable=YES  <--是否打開上傳下載的日誌默認路徑/var/log/vsftpd.log 不建議啓用

     (5)xferlog_file=/var/log/vsftpd.log  <--定義傳輸日誌文件的文件名


數據傳輸模式:

  (6)connect_from_port_20  我們服務器是否能夠工作於主動模式。但是取決於客戶端是否支持,如果支持就主動,不支持就被動


修改匿名用戶上傳的文件的屬主:

   chown_uploads       控制匿名用戶上傳的文件,是不是要改變其默認屬主屬組,如果不改就是匿名用戶映射的系統用戶ftp

   chown_username:     啓用chown_uploads時,將文件屬主修改爲此指令指定的用戶,默認爲root

   chown_upload_mode   設定匿名用戶上傳的文件的權限,默認爲600


設定空閒會話超時時長:

   idle_session_timeout 定義任何一個遠程連接建立起以後,部在活躍了,多久斷開,默認爲300s


命令連接的監聽端口

   listen_port 默認爲21 可能默認沒有設置,要手動設置


設定連接及傳輸速率

  local_max_rate 默認最大傳輸速率,


默認最大連接數

  max_clients   默認2000個  0表示無限制


單個ip所允許的最大連接數

  max_per_ip


設定匿名用戶的最大傳輸速率

   anon_max_rate


主動數據傳輸模式下 服務器連接客戶端的超時時間

idle_connection_timeout


被動數據傳輸模式下 服務器連接客戶端的超時時長

data_connection_timeout


只以文本格式上傳,不能開啓;除非你確定自己只上傳文本文件

ascii_upload_enable=YES


大條幅:

ftpd_banner=Welcome  每次連接ftp服務器都會顯示一些信息


禁錮所有本地用戶,鎖在自己家目錄下

chroot_local_user=YES <--禁錮所有本地用戶

   注意:要求用戶對家目錄,沒有寫權限


禁錮列表中的用戶,與上方式不能同時使用

vim /etc/vsftpd/chroot_list

每行一個用戶名

chroot_list_file=/etc/vsftpd/chroot_list  <--此選項在主配置文件中


是否啓用用戶列表

/etc/vsftpd/ftpusers  <--禁止某些用戶登錄,只是一個黑名單


userlist_enable=YES  <--啓用時,vsftpd將加載一個由userlist_file指令指定的用戶列表文件;此用戶中的用戶是否能訪問vsftpd服務取決於userlist_deny指令


userlist_deny=YES   此時user_list爲黑名單

userlist_deny=NO   此時user_list爲白名單

/etc/vsftpd/user_list/  <--這是user_list的目錄



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