天天看點

檔案共享--------ftp

===============================基礎篇===========================

    ftp是工作在應用程的檔案傳輸協定,基于c/s架構的,能夠實作跨平台跨主機間檔案共享,是以ftp被廣泛應用在衆多環境中。

 ftp的連結放式:

      指令連結:

          監聽在tcp的21号端口,是由用戶端連結到伺服器端,向伺服器端發起指令的連接配接方式。

 資料連接配接:

      主動模式:

檔案共享--------ftp

     在此模式下,首先用戶端打開了一個随機端口(比如2227),向伺服器端發送請求,伺服器端通過自己的21号固定端口響應用戶端,如果要傳輸資料的話,伺服器端會再打開20号端口,主動去連結用戶端的随機端口加1的端口(2228),若用戶端這個端口被占用,伺服器端則去連結2229端口,以此類推,直到建立連接配接,完成資料傳輸。

   被動模式:

檔案共享--------ftp

在此模式下,需要資料傳輸的時候,是需要用戶端主動聯系伺服器端的,即:用戶端通過一個随機端口(比如2227)去聯系伺服器,伺服器端通過21号端口回應用戶端,當需要進行資料傳輸的時候,伺服器端不再使用20号端口去主動聯系用戶端,而是打開一個随機端口(比如6666)等待用戶端來請求,這個随機端口,伺服器端會在響應用戶端的時候發送一串數字(比如172.16.6.11,113,26),用戶端這時候通過自己的2228端口去聯系伺服器端打開的随機端口(113*256+26),進行資料傳輸,如果有别的用戶端也需要資料傳輸,伺服器端就會再打開一個随機端口,并以同樣的方式,告訴用戶端端口号,進行資料傳輸。

注:在進行資料傳輸的時候,是由用戶端來決定是使用被動模式,還是主動模式

資料傳輸模式:

      二進制、文本

ftp的實作:

   伺服器端:

     linux:wuftpd(所有服務采用一個程序), proftpd, pureftp, vsftpd(very secure紅帽自帶的ftp), filezilla

     windows:serv-u, iis

  用戶端:

      linux:

ftp, lftp, gftp(linux), filezilla,

      windows:  

flashfxp, cuteftp, leapftp

注:由于ftp協定出現的非常早,那時候還沒有網絡安全的概念,是以沒有考慮到安全的因素,是以ftp是非常不安全的,盡可以實作在有限範圍内進行資料共享的服務

ftp的安裝(利用rpm包的方式)

伺服器端:yum -y install vsftp

啟動服務:service vsftp start

用戶端:

      yum -y install ftp   //ftp不支援指令補全

      yum -y install lftp    //支援指令補全

協義響應碼:

  1xx: 伺服器資訊

  2xx: 正确響應資訊

  3xx: 正常響應,某操作過程尚未完成,需進一步補充完成;

  4xx: 用戶端錯誤;比如說某用戶端請求了一個伺服器不錯在的資源,這是由于用戶端請求的錯誤資源導緻的。

  5xx: 伺服器端錯誤; 伺服器自身問題導緻程式無法運作

注:ftp伺服器端檔案路徑是匿名使用者家的目錄。

vsftpd的使用者類型:

  匿名使用者: 事實上是伺服器端自動映射的一個系統使用者;預設為anonymous

  本地使用者:/etc/passwd中的使用者

  預設root和id号小于500的使用者都禁止通路ftp;

 虛拟使用者:事實上是伺服器端自動映射的一個系統使用者;

 多個虛拟使用者同時被映射為同一個系統使用者,但不同的虛拟使用者可以具有不同的通路權限;

vsftpd:(伺服器端)

vsftpd的工作特性:

 匿名使用者怎麼在lftp具有特殊權限

     編寫/etc/vsftpd 裡邊添加

   anon_other_write_enable=yes    删除檔案

anon_upload_enable=yes  上傳檔案

       anon_mkdir_write_enable=yes   在lftp上具有建立目錄的權限

要想在上傳之後顯示一個資訊在/var/ftp 的一個子目錄下,建立.message 隐藏檔案

      把想要輸出的内容添加進去

xferlog_enable=yes   開啟日志記錄内容

xferlog_file=/var/log/xferlog   日志記錄的位置

chroot: 禁锢使用者于其家目錄中,實作方式有兩種:

1、禁锢所有使用者:

chroot_local_user=yes

2、禁锢指定使用者,黑名單

chroot_list_enable=yes      啟動禁锢指定使用者功能

chroot_list_file=/etc/vsftpd/chroot_list   編寫禁锢使用者功能 一行一個使用者

3、不禁锢指定使用者,白名單,寫到檔案裡邊的不禁锢,沒寫在裡邊禁锢

chroot_list_enable=yes

chroot_list_file=/etc/vsftpd/chroot_list

user_list:ftp使用者登陸白名單和黑名單:控制登陸的

1、白名單:

名單在/etc/vsftpd/user_list

userlist_enable=yes

在上邊一句的下邊添加

userlist_deny=no

2、黑名單:

userlist_deny=yes

           這樣匿名使用者也被限制了,把匿名使用者寫在名單裡

傳輸速率限定,預設機關為位元組:

   匿名用的最大傳輸速率

   anon_max_rate=    

   本地使用者的最大傳輸速率

   local_max_rate=

      限制每個使用者的傳輸速錄,

使用user_config_dir=目錄,在指定的目錄下為使用者建立一個同名的檔案

    在裡邊寫上local_max_rate=

例:限制tom的傳輸速率

        1、在/etc/vsftpd/userconfs/下建立一個名為tom的目錄

user_config_dir=/etc/vsftpd/userconfs/tom

2、echo “local_max_rate= num” >> /etc/vsftpd/userconfs/tom

連接配接數限定:

max_clients=100

max_per_ip=2

基于ssl控制使用者登陸

1、自建一個ca

之前筆者在寫openssl的時候已經自建了ca這裡就不再示範了

2、給vsftpd生成私鑰

2、制作證書申請

3、簽署證書:

lftp要想使用ssl 把下面的内容添加到/etc/vsftpd.conf的最後即可

在伺服器上執行:抓包工具

# tcpdump -i eth0 -xx port 21

ftp