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 08:30
下一篇 2016-10-19 08:32

相關推薦

  • CentOS下命令基礎練習

    馬哥教育網絡班23期+第五周課堂作業 CentOS下命令基礎練習 1、顯示當前系統上root、fdeora或user1用戶的默認shell 2、找出/etc/rc.d/init.d/functions文件中某單詞后面跟一組小括號的行,形如:hello() 3、使用echo命令輸出一個絕對路徑 使用grep取出其基名 擴展:取出其路徑名 (…

    Linux干貨 2016-10-24
  • Linux系統的文件管理命令及bash的相關工作特性

    熟悉Linux系統的文件管理命令,了解bash的工作特性,加強練習并掌握其內容。

    2017-09-30
  • 計算機的組成及功能

    計算機的組成及功能 計算機由CPU、存儲器、輸入設備、輸出設備等部件組成。 CPU:為計算機的中央處理器,是計算機的核心部分,由運算器和控制器組成。 運算器:CPU中用于進行算術運算和邏輯運算的部件。 控制器:整個CPU的指揮中心,控制程序中指令讀取、解析并產生相應的操作控制信息保證各程序的有序執行。 存儲器:計算機中用來存儲數據、程序等信息的部件,并在需要…

    Linux干貨 2017-07-02
  • test1

    test 

    Linux干貨 2016-09-15
  • 測試 網絡班23期

    123123123123

    Linux干貨 2016-09-12
  • Linux Sysadmin–part1

    一、創建一個10G分區,并格式為ext4文件系統; 1、要求其block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包含acl; 2、掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳; ###創建10G分區 ~]# fdisk /dev/sdb Command (m for help): n P…

    2017-09-04
欧美性久久久久