FTP部署及簡單應用

文件服務:

ftp:應用層,C/S,文件共享;file transfer protocol;
nfs,cifs:文件系統接口,網絡文件系統;
    nfs:network file system
    cifs:common internet file system
        samba

網絡存儲:
    NAS:Network Attached Storage,文件服務器,nfs或cifs,文件級別;
    SAN:Storage Area Network,塊級別共享服務,分區-->格式化-->創建文件系統;IPSAN, FCSAN;

ftp:

file transfer protocol,21/tcp也可以說監聽在20號端口做數據連接的傳輸通道!(主動模式下使用 TCP 20號端口,被動模式使用隨機端口,被動模式下向客戶端發送數據時發送一個 除以 256 得商和余數的數據讓客戶端去請求這個端口)

C/S:
    Client --> ftp-->Server
        Client:Connect 
        Server:Listen

連接:
    命令連接:命令傳輸,連接一直存在;
    數據連接:數據傳輸,按需創建;

    數據連接的建立模式:
        主動模式:服務器通過20/tcp主動連接客戶端的命令連接端口向后最近一個空閑端口;PORT;

        被動模式:客戶端發出數據請求后,服務端會響應一個打開的臨時使用的隨機端口號發送給客戶端,客戶端對此端口進行請求;PASV;

    數據傳輸模式:
        文本格式:ASCII
        二進制格式:BINARY

    協議安全:
        明文:數據、認證時傳輸賬號和密碼均是明文 ;

        安全增強:
            ftp over ssl/tls:ftps
            ftp over ssh:sftp 

        虛擬用戶賬號;

    c/s:
        Server:
            Windows:Serv-U, IIS, ...
            開源解決方案:
                wuftpd:Washington University ftp daemon
                vsftpd:Very Secure ftp daemon
                proftpd, pureftpd, ...

        Client:
            GUI:flashfxp, cute, filezilla, gftp, ...
            CLI:ftp, lftp, ...

vsftpd:

程序環境:

  • 主程序:/usr/sbin/vsftpd
     Unit File:/usr/lib/systemd/system/vsftpd.service

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

  • 文檔路徑映射:

          fedora, /home/fedora/pub/a.txt --> ftp://HOST:PORT/pub/a.txt
          用戶的家目錄映射:訪問vsftpd服務必須以某個系統用戶的身份進行;此用戶的家目錄即為文檔映射的根目錄;
          匿名用戶:anonymous,映射為一個系統用戶,此用戶為ftp;

配置:vsftpd.conf

  • 格式 :directive VALUE,…

          directive:指令之前不能存在任何字符,包括空白;
  • 匿名用戶配置:

      anonymous_enable=YES
    
      anon_upload_enable=YES  才能上傳
    
      anon_mkdir_write_enable=YES  才能新建目錄
      anon_other_write_enable=YES 開放其他的寫權限,這樣才能刪除
  • 本地用戶:root用戶不能登錄ftp

      local_enable=YES
      write_enable=YES
    
      注意:凡是在/etc/vsftpd/ftpusers中的用戶都不能登錄
  • 認證服務:

pam_service_name=vsftpd                        

/etc/pam.d/vsftpd 

pam: pluggable authencate module:插入式認證模塊
  • 切換目錄時的提示信息:

      dirmessage_enable=YES
    
      匿名用戶就是創建/var/ftp/*/.messages 文件, *表示你想在那個目錄下顯示提示信息 ,提示信息寫在 此文件內 
  • 修改上傳文件的屬主:

      chown_uploads=YES
      chown_username=USERNAME (這里改成要改的屬主名,不指名默認root)
  • 數據傳輸模式

      connect_from_port_20=YES 是否啟用PORT模式
  • 設定會話超時時長

      idle_session_timeout=600
      data_connection_timeout=120 數據傳輸閑時時長
  • 設定連接及傳輸速率

      local_max_rate:本地用戶的最大傳輸速率,單位字節;默認為0,表示無限制;
      anon_max_rate:匿名用戶的最大傳輸速率
      max_clients:最大并發連接數;
      max_per_ip:每個IP允許發起的最大連接數;
  • 禁錮用戶于自己的家目錄:

    會引入別的風險,因此,要求用戶對自己的家目錄不能有寫權限;

       先touch /etc/vsftpd/chroot_list 此文件用來存用戶名
        (1) 禁錮所有用戶
            chroot_local_user=YES

        (2) 禁錮部分用戶
            (a) 白名單:名單中的用戶不被禁錮;
                chroot_local_user=YES
                chroot_list_enable=YES
                chroot_list_file=/etc/vsftpd/chroot_list
            (b) 黑名單:名單中的用戶被禁錮
                chroot_local_user=NO
                chroot_list_enable=YES
                chroot_list_file=/etc/vsftpd/chroot_list
  • /etc/vsftpd/user_list控制用戶訪問vsftpd:

      (1) 白名單,僅此文件中的用戶能登錄
          userlist_enable=YES
          userlist_deny=NO 
    
      (2) 黑名單,默認
          userlist_enable=YES
          userlist_deny=YES

    具體可以參考 man vsftpd.conf

虛擬用戶賬號:

vsftpd依賴pam完成認證,pam存儲支持的認證方式,vsftpd都可調用;

   pam:認證框架
        模塊化:/lib64/security/pam*.so
        配置文件:/etc/pam.conf和/etc/pam.d/*

賬號密碼存儲于何處?
        文件、MySQL、ldap、redis、...

pam_mysql模塊

        CentOS 6:epel
        CentOS 7:編譯安裝

/etc/pam.d/vsftpd
FTP部署及簡單應用

 編譯安裝pan:
    (1) 編譯環境;
    (2) 依賴關系:mariadb-devel, pam-devel

    # ./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/usr/lib64/security/
        # make install

FTP部署及簡單應用

    MySQL設置:
        mysql> CREATE DATABASE vsftpd;  創建數據庫

        mysql> GRANT ALL ON vsftpd.* TO 'vsftpd'@'127.0.0.1' IDENTIFIED BY 'mageedu'; 創建用戶并授權

        mysql>  CREATE TABLE vsftpd.users (uid SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT UNIQUE KEY,name VARCHAR(100) NOT NULL PRIMARY KEY,password CHAR(48) NOT NULL); 
        創建表在vsftp下叫users

        mysql> use vsftpd 進入vsftp

        mysql> INSERT INTO users (name,password) VALUES ('tom',PASSWORD('mageedu')),('jerry',PASSWORD('mageedu')),('lucy',PASSWORD('mageedu'));

        MariaDB [(none)]> flush privileges;    同步數據庫
    準備要映射成為的系統賬號:(就是創建一個家目錄)

        # mkdir -pv /ftproot/{pub,upload}
        # useradd -d /ftproot vuser
        # setfacl -m u:vuser:rwx /ftproot/upload

    準備基于mysql認證的pam配置文件:/etc/pam.d/vsftpd.mysql,把以下文件復制到此文件中
        auth required pam_mysql.so host=127.0.0.1 user=vsftpd passwd=mageedu db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

        account required pam_mysql.so host=127.0.0.1 user=vsftpd passwd=mageedu db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2                    
    配置vsftpd啟用虛擬用戶,并使用指定的pam service:vsftpd.conf
        pam_service_name=vsftpd.mysql
        guest_enable=YES
        guest_username=vuser                        

        配置每虛擬用戶擁有不同的權限:vsftpd.conf
        user_config_dir=/etc/vsftpd/vusers_conf


        # mkdir /etc/vsftpd/vusers_conf
            創建那個提供配置文件的目錄
        # touch USERNAME
            創建配置各個虛擬用戶的權限文件
                tom 、lucy 等文件(文件名必須為用戶名)

        權限配置指令:(把一下的這些復制到剛創建的文件中)
        anon_upload_enable=YES   開放上傳權限
        anon_mkdir_write_enable=YES    開放創建目錄權限
        anon_other_write_enable=YES    開放創建文件權限

原創文章,作者:qzx,如若轉載,請注明出處:http://www.www58058.com/52840

(0)
qzxqzx
上一篇 2016-10-19
下一篇 2016-10-19

相關推薦

  • 硬盤分區MBR和GPT選哪個好?有什么區別?

    當前主流的硬盤分區方式有兩種:MBR和GPT。 一、MBR與GPT簡介與結構 什么是MBR?         MBR,全稱為Master Boot Record,即硬盤的主引導記錄。是對IBM兼容機的硬盤或者可移動磁盤分區時,在驅動器最前端的一段引導扇區。 MBR的組成部分       &…

    Linux干貨 2016-08-29
  • 《 Git 權威指南 》學習筆記

    這個沒辦法直接發博客了,篇幅太長,無法直接在 Blog 上排版了,直接發上 pdf 文檔了。 接 《LNAMP Shell 部署腳本》 博文的內容,線上測試系統的 Git 環境部署。 整個 Git 環境包括了:     Git / Gitweb     Gitolite / Gerrit &nbsp…

    Linux干貨 2015-10-27
  • N22-℡浮生.若夢 ╮第八周作業

    1、請描述網橋、集線器、二層交換機、三層交換機、路由器的功能、使用場景與區別。 集線器:集線器的主要功能是對接收到的信號進行再生整形放大,以擴大網絡的傳輸距離 網橋:是早期的兩端口二層網絡設備,用來連接不同網段。網橋的兩個端口分別有一條獨立的交換信道,       不是共享一條背板總線,可隔離沖突域…

    Linux干貨 2016-11-28
  • 權限管理

     權限管理:  ls -l       rwxrwxrwx:              左三位:定義user(owner)的權限              中三位:定義g…

    Linux干貨 2016-12-21
  • 馬哥教育網絡班20期+第5周課程練習

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; grep "^[[:space:]]\+.*" /boot/grub/grub.conf   2、顯示/etc/rc.d/rc.sysinit文件中以#開頭,后面跟至少一個空白字符,而后又有至少一個非空白字符的行; grep&nb…

    Linux干貨 2016-07-12
  • 進程與計劃任務

    進程 一.進程介紹  內核的功用:進程管理、文件系統、網絡功能、內存管理、驅動程序、 安全功能等。   Process:  運行中的程序的一個 副本,是被 載入內存的一個指令集合。 進程ID (Process ID ,PID )號碼被用來標記各個進程 UID 、GID&…

    Linux干貨 2017-05-15
欧美性久久久久