FTP

ftp :文件傳輸協議   獨立服務

    vsftpd工具:ftp用戶(系統用戶)管理維護,在後臺運行進程

    ftp默認端口 2 1 數據端口 2 0 端口(主動模式);默認情況下ftp服務運行在被模式下。

    

ftp原理:

    主動模式:客服機向服務器的21端口發送請求,服務接受連接,建立一條命令鏈路,需要傳送數據時候,客服端命令鏈路上用RORT命令回覆服務端接口已經打開可以連接,服務端的從20端口向客戶端改21端口發送連接請求,建立一條數據連接來傳送數據。數據鏈路建立過程服務器主動請求。

    被動模式:客服端向服務器的控制端口發送連接請求,服務端接受連接,建立一條命令鏈路,當需要傳送數據時候,服務端在命令鏈路上用PASV命令告訴客服端:端口打開了某個端口,告訴端來連接,客服端向服務端的該端口發送連接,建立一條數據鏈路來傳送數據。在數據建立的過程中是服務端被動向等待客服端請求。


建立好環境 客服端:windows: ftp://10.1.1.1  linux:ftp 、lftp


搭建服務的步驟:1、關閉防火牆和selinux   

                2、配置YUM源

                3、軟件三部曲(查看、安裝、查看配置文件)

                rpm -q vsftp    是否安裝  ***

                yum -y install vsftpd


             4、瞭解主配置文件   man 5 vsftpd.conf
               # cat /etc/vsftpd/vsftpd.conf|grep -v ^#|grep -v ^$
                anonymous_enable=YES  允許匿名用戶訪問
                local_enable=YES        允許本地用戶訪問
                write_enable=YES        寫總開關(本地用戶)
                local_umask=022         本地用戶的默認權限
                dirmessage_enable=YES   開啓消息功能 .messages
                xferlog_enable=YES      開啓日誌功能
                connect_from_port_20=YES   支持主動模式(默認被動模式)
                xferlog_std_format=YES    日誌格式
                listen=YES  以獨立服務運行
                pam_service_name=vsftpd  認證服務名
                userlist_enable=YES  開啓用戶列表
      tcp_wrappers=YES  支持tcp_wrappsers功能,類似防火牆,但是沒有防火牆功能強大

        

            5、根據需求修改配置文件

            

            6、啓動服務,開機自動動

            #serivce vsftpd start

            #chkconfig vsftpd no

            

            #setstat -nltp | grep 21  端口是否開啓

          tcp      0      0 0.0.0.0:21     0.0.0.0:*       LISTEN      3087/vsftpd                         

            7、測試驗證(需要安裝ftp和lftp)

  默認測試的結果:1、默認允許本地用戶和匿名用戶訪問

                  2、默認匿名用戶沒有權限上傳文件可以下載;本地用戶可以上傳、刪除文件。



 需求 1允許匿名用戶上傳、下載文件、刪除及重命名,匿名用戶不可以下載別人上傳的文件


        1、  #vim  /etc/vsftpd/vsftpd.conf
          ...
          anon_upload_enable=YES              允許上傳
          anon_mkdir_write_abled=YES          允許創建
          anon_other_write_enable=YES         重命名


        2、 重啓服務    # service  vsftpd restart
  

        3、測試: # lftp 10.1.1.1 
     lftp 10.1.1.1:/> put test1
     put: Access failed: 553 Could not create file. (test1)    目錄權限
    

      lftp 10.1.1.1
  lftp 10.1.1.1:~> ls
ls: Login failed: 500 OOPS: vsftpd: refusing to run with writable anonymous root 查看不了
# lftp 10.1.1.1:~>

      原因:權限太大,不安全。修改目錄的權限


 解決辦法:

      #chmod  o - w   /var/ftp
      #chmod  o + w  /var/ftp/pub  ——>在 ftp 家目錄下創建一個目錄


需求 2 : 匿名用戶允許下載其他匿名用戶上傳的文件
  匿名用戶上傳文件的默認權限,  man 文檔查看
          default:    anon_umask:077
         

          匿名用戶創建 file 的默認權限:600
                       dir 的默認權限:700

    1、 #vim  /etc/vsftpd/vsftpd.conf     ——>修改主配置文件(修改默認權限)
              ...
              anon_umask=02
  

    2、重啓服務
   
   

需求 3 :開啓匿名用戶和本地用戶家目錄裏的消息功能
局部:
  anon:/var/ftp
  echo hello anon > /var/ftp/.message
  local:/home/$username
  echo hello local > /home/user01/.message


 # vim  /etc/vsftpd/vsftpd.conf    ——>全局修改
     ...
    banner_file=/etc/vsftpd/banner     其他人登錄時會看見該文件的內容呢
   
 #echo  banner  xxx  > /etc/vsftpd/banner
 
 #service  vsftpd  restart


需求 4 :禁錮本地用戶的家目錄

1、   #vim  /etc/vsftpd/vsftpd.conf
          ...
          chroot_local_user=YES    禁錮所有本地用戶,只能在自己的家目錄裏活動

       #service  vsftpd  restart   重啓
       
2、#vim  /etc/vsftpd/vsftpd.conf
       ...
         chroot_local_user=YES       只允許user01可以切換,其他任何人都不允許
         chroot_list_enable=YES
       #( default    follows )
         chroot_list_file=/etc/vsftpd/chroot_list
         
    #echo  user01 > /etc/vsftpd/chroot_list

3、#vim  /etc/vsftpd/vsftpd.conf
      ...
      #chroot_local_user=YES         只拒絕user01,其他人都可以切換
        chroot_list_enable=YES
      #( default    follows )
         chroot_list_file=/etc/vsftpd/chroot_list
         
     #echo  user01 > /etc/vsftpd/chroot_list


需求 5 :允許拒絕某人訪問 ftp 服務(ftp 自身訪問控制)

   /etc/vsftpd/ftpusers:黑名單   /etc/vsftpd/user_list: 白名單
   如果ftpusers 和 user_list 文件衝突,ftpusers黑名單 優先
                                                   

#echo  user01 >>ftpusers 用戶放入黑名單

client:
          Name (192.168.1.102:root): user01
          331 Please specify the password.
          Password:
          530 Login incorrect.
          Login failed.
          ftp>



1、只允許 user01 訪問 ftp 服務

     # cat   user_list
     # vsftpd  userlist
     # If userlist_deny=NO,  only allow users in this file
     # If userlist_deny=YES (default),  never allow users in this file, and
     # do not even prompt for a password.
 
      #vim vsftpd.conf
          ...
          userlist_deny=NO
         
重啓服務,測試:

Name (192.168.1.102:root): user02  沒在user_list裏面,所一拒絕登錄
   530 Permission denied.
   Login failed.
ftp>

 



需求 6 :允許或者拒絕網絡中的主機

# ldd /usr/sbin/vsftpd |grep  libwrap
        libwrap.so.0 => /lib64/libwrap.so.0 (0x00007f42562a0000)

      /etc/hosts.deny    拒絕訪問      
      /etc/hosts.allow    允許訪問
先匹配

      /etc/hosts.deny  , 再去匹配

hosts.allow ; 如果兩個文件都不存在,默認都允許;如果兩個文件有衝突,allow優先

The extensible language uses the following format:
         daemon_list : client_list : option : option ...

ALL: .friendly.domain: ALLOW    允許friendly.domain域下面的所有主機訪問所有服務
ALL: ALL: DENY   拒絕所有人來訪問所有服務
ALL: .bad.domain: DENY   拒絕.bad.domain下面的所有主機訪問所有服務
ALL: ALL: ALLOW    允許所有人來訪問所有服務


#vim  /etc/hosts.deny   ——>拒絕列表
   ...
   服務名稱:選項
   vsftpd:all       拒絕所有人來訪問 ftp 服務
   vsftpd:192.168.1.3 , 192.168.1.110
   vsftpd :  192.168.1.0/255.255.255.0
   vsftpd , sshd : .uplooking.com   except  vm01.uplooking.com
   
#vim  /etc/hosts.allow   ——> 允許列表       
  ...
  vsftpd:all  except:192.168.1.3


重啓服務測試

 


需求 7 :自定義匿名用戶和本地用戶的數據根目錄


/anon/data :匿名用戶數據根目錄
/local/data:本地用戶數據的根目錄


1、創建相應的目錄
  #mkdir     /anon/data   -p
  #mkdir     /local/data    -p
 
2、修改配置文件
   #vim    /etc/vdftpd/vsftpd.conf
      ...
      anon_root=/anon/data
      local_root=/local/data
     
3、重啓服務

4、測試驗證


 

其他訪問控制:
    max _clients : 客戶端最大連接次數   默認是2000
    max_per_ip : 客戶端每個 IP 最大連接次數  默認 50
    max_login_fails : 客戶端最大登錄失敗的次數  默認 3
    local_max_rate : 本地用戶傳輸文件的最大速率   默認沒限制   單位是 字節

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