Linux---文件共享服務--ftp

一、ftp介紹

    常見的文件共享服務有:ftp、nfs和samba。其中ftp是一種應用層的服務,nfs是基於內核來實現的網絡文件共享服務,samba是在Linux上實現CIFS(SMB)協議來解決跨平臺的文件共享服務。

    ftp是相當古老的傳輸協議之一,他最主要的功能是在服務器與客戶端之間進行文件的傳輸。這個古老的協議使用的是明碼傳輸方式,因此在使用當中會有相當多的安全問題。爲了更安全的使用ftp協議,主要介紹較爲安全但功能很少的vsftpd這個軟件。

    ftp的傳輸使用的是tcp協議,是一種C/S模式架構,服務端通過ftp服務向用戶提供ftp服務,客戶端通過客戶端命令連接服務端來進行指令的執行與數據的傳輸。ftp連接前會先進行三次連接握手以建立TCP會話連接。

二、ftp功能

    1、數據的傳輸。ftp的數據傳輸連接還有主動和被動方式。主動方式是指數據傳輸連接服務端主動創建,服務端主動去連接客戶端的某個隨機端口;被動方式是指數據傳輸連接由客戶端的某個隨機端口去連接服務端的某個隨機端口。

    2、實現不同等級的用戶身份驗證,這樣就可以根據不同的用戶身份來分配不同的數據操作權限。ftp默認情況下有三種不同的身份,分別是:實體的賬號(real user)、訪客(guest)、匿名用戶(anonymous)。

    3、限制用戶的活動目錄。主要是爲了避免用戶在Linux系統中隨意活動,所做的限制是只允許在自己的家目錄裏面活動,防止其他用戶隨意改動家目錄的內容,對系統也起到一定的保護作用。

三、安裝vsftpd

    vsftpd全名叫very secure ftp daemon,意思是非常安全的ftp服務。vsftpd所對應的rpm程序包叫做vsftpd,這裏通過yum的方式來進行安裝。

2EOY`RBQ44YC[GK@U~2FHEI.png

安裝完成之後啓動vsftpd服務,

    centos 6 啓動vsftpd

@TV2[7WB695LFCRL$~VY[J2.png

    centos 7 啓動vsftpd

NK0@[_DR1CHJSN@58X49Z6Q.png

這樣FTP服務器便搭建完成。但此時還不能訪問FTP服務器,因爲服務器默認情況下關閉了防火牆,此時我們還需使用‘iptables -F’命令關閉防火牆,這樣客戶端纔可以訪問FTP服務器。

}MQGILU{90Y2NDA_H3Y@C]0.png

四、vsftpd配置文件及目錄

    1、用戶認證配置文件:/etc/pam.d/vsftpd

    2、配置文件目錄:/etc/vsftpd

    3、主配置文件:vsftpd.conf

    4、匿名用戶(映射爲ftp用戶)共享資源位置:/var/ftp

    5、系統用戶通過ftp訪問的資源的位置:用戶自己的家目錄

    6、虛擬用戶通過ftp訪問的資源的位置:給虛擬用戶指定的映射成爲的系統用戶的家目錄

vsftpd的配置文件常用的修改內容:

1、匿名用戶的設置:

    anonymous_enable=YES  (Default: NO) 是否開啓匿名用戶
    anon_upload_enable=YES (Default: NO) 是否允許匿名用戶上傳,如啓動,還需讓ftp用戶對/var/ftp/pub及其他需要上傳的目錄設置wx權限
    anon_mkdir_write_enable=YES (Default: NO) 是否允許匿名用戶創建目錄,如啓動,還需讓ftp用戶對/var/ftp/pub及其他需要上傳的目錄設置wx權限
    anon_other_write_enable=YES (Default: NO) 匿名用戶除了具有寫權限外是否可以刪除及重命名或更改服務器上的其他文件
    no_anon_password=YES (Default: NO) 使用ftp客戶端登錄匿名時,是否密碼,如爲NO,即默認,則需要輸入任意密碼,如爲YES,直接登錄,不用輸入。
    anon_umask (Default: 077) 匿名用戶上傳時的默認掩碼權限。

2、系統用戶的設置:

    local_enable=NO (Default: YES) 是否開啓Linux本地用戶登錄
    write_enable=NO (Default: NO) 是否允許Linux本地用戶上傳文件
    local_umask=022 (Default: 077) 本地用戶上傳文件的默認權限

3、訪客的設置:

    guest_enable (Default: NO) 所有的非匿名用戶都映射爲了guest用戶
    guest_username (Default: ftp) guest用戶是誰,默認ftp

4、禁錮所有的ftp本地用戶於其家目錄中:

    chroot_local_user=YES 將linux系統用戶的根目錄設置爲家目錄,注意在Centos7中該目錄對用戶不能有w權限,
當爲YES時,所有人都不能越獄,當爲NO時,所有人都能越獄。

5、禁錮文件中指定的ftp本地用戶於其家目錄中:

    chroot_list_enable=YES  越獄例外,下一行一定要有。當上一行爲YES是,爲白名單,當爲NO時,爲黑名單
    chroot_list_file=/etc/vsftpd/chroot_list

6、日誌:

    vsftpd_log_file (Default: /var/log/vsftpd.log) vsftpd格式日誌的存放路徑
    xferlog_enable=YES  (Default: no) 是否開啓上傳、下載日誌
    xferlog_std_format  (Default: no) 是否使用wuftp格式 
    xferlog_file (Default: /var/log/xferlog) xferlog的存放路徑,將登陸及文件上傳下載等信息記錄到系統日誌當中
    dual_log_enable=YES (Default: NO) ,vsftpd_log_file=/var/log/vsftpd.log 是否同時開啓vsftpd格式的日誌,該格式記錄信息更多,不只upload/downloads

7、改變上傳文件的屬主:

    chown_uploads=YES (Default: NO) 匿名用戶上傳文件的所屬人是否要更改。如YES,則更改爲chown_username所指定的      
    chown_username  (Default: root)

8、vsftpd 使用 pam 完成用戶認證,其用到的 pam 配置文件:

    pam_service_name=vsftpd

9、是否啓用控制用戶登錄的列表文件

    userlist_enable=YES  (Default: NO) 是否啓用用戶過濾功能。如YES,則開啓,過濾文件由userlist_file決定
    userlist_file (Default: /etc/vsftpd/user_list) 過濾文件路徑 
    userlist_deny (Default: YES) 當該值爲YES時userlist爲黑名單,反之爲白名單,/etc/vsftpd/ftpuser 固定是黑名單,寫入其中的用戶一定不能登錄ftp

10、連接限制:

    max_clients (Default: 2000) 允許同時登錄的最大客戶端請求數
    max_per_ip 每個ip可同時發起的併發請求數

11、傳輸速率:

    anon_max_rate (Default: 0) 匿名用戶上傳和下載的最大速度,單位字節。
    local_max_rate (Default: 0) Linux本地用戶上傳和下載的最大速度,單位字節。

12、主動模式的設置:

    ftp_data_port (Default: 20) 主動模式使用的端口
    connect_from_port_20 (Default: YES) 是否允許主動傳輸,主動模式的端口號
    connect_timeout (Default: 60) 在主動連接方式下,數據連接超時時長,在60秒內得不到客戶端響應時強行斷開

13、被動模式的設置:

    pasv_enable=YES (Default: YES) 是否支持數據的被動模式傳輸,這裏一定要設置爲YES
    pasv_min_port=9527 (Default: 0) 被動模式,服務端開啓的隨機端口的最小值
    pasv_max_port=9529 (Default: 0) 被動模式,服務端開啓的隨機端口的最大值
    accept_timeout (Default: 60) 在被動模式下,數據連接超時時長,在60秒內得不到客戶端響應時強行斷開

12、其他相關參數:

    data_connection_timeout (Default: 300) 數據連接無數據傳輸時的超時時長,300秒後無數據傳輸時斷開連接
    listen_port (Default: 21) FTP命令通道的監聽端口
    listen=YES (Default: ) 表示vsftpd使用的命令通道監聽端口,即以standalone(單機模式)啓動
    banner_file Default: (none) 登錄時的歡迎信息。不是所有客戶端都可見,當該行存在時,則優先於ftpd_banner 
    dirmessage_enable (Default: NO) 每進入一個目錄時,如果該目錄下有.message文件,則將其內容展現出來,不是所有客戶端都可見
    max_clients (Default: 2000) 允許同時登錄的客戶端請求數
    nopriv_user  (Default: nobody) 客戶端建立命令通道時,服務端與之連接的進程的所屬用戶
    idle_session_timeout  (Default: 300) 無命令操作超時時長
    ascii_upload_enable=NO  
    ascii_download_enable=NO

五、ftp用例

    1、在centos6中以非獨立方式運行vsftpd

  1. 安裝vsftpd和xinetd服務

    yum -y install vsftpd xinetd

M4(8UU)1_D$5GNP%D1%U6SU.png

2.修改配置文件/etc/vsftpd/vsftpd.conf

    vim /etc/vsftpd/vsftpd.conf
       listen=NO

WK[HH89Q2}%Z(JEGW_3OP7W.png

3.修改配置文件/etc/xinetd.d/vsftpd

    vim /etc/xinetd.d/vsftpd 
      service ftp
      {
              flags           = REUSE
              socket_type     = stream
              wait            = no
              user            = root
              server          = /usr/sbin/vsftpd
              log_on_failure  += USERID
              disable         = no
      }

_DT5@(Q1O$QS)F@0ITQI6OH.png

4.重啓xinetd服務,並修改/etc/xinetd.d/下某個服務的配置文件,將disable=yes改爲no並重啓/etc/init.d/xinetd服務使之生效。

    service xinetd restart
    chkconfig xinetd on

59]K6A4GAHA}OV5_H@C`2ED.png

    2、實現基於SSL的FTPS
1.查看是否支持SSL

Z$Q4%@T0EPY[%0@I1@%P{Z2.png

2.進入/etc/pki/tls/certs路徑下,生成以vsftpd.pem命名的自簽名證書,並複製證書到/etc/vsftpd目錄下

    cd /etc/pki/tls/certs/
    make vsftpd.pem
    cp vsftpd.pem /etc/vsftpd/

5}65F8_ANNUC)14`H@P30C5.png
HXWG(]BA6V%23%_[]WOQ`1C.png

3.編輯配置文件

    vim /etc/vsftpd/vsftpd.conf 
      ssl_enable=YES                啓用SSL
      allow_anon_ssl=NO             匿名不支持SSL
      force_local_logins_ssl=YES       本地用戶登錄加密
      force_local_data_ssl=YES         本地用戶數據傳輸加密
      rsa_cert_file=/etc/vsftpd/vsftpd.pem

LS55O@OP5`SP]_4]SDWC_UI.png

4.重啓服務,用客戶端測試
U]MG$YO]NV4I_C)NUU1(EJB.png
    3、實現基於文件驗證的vsftpd虛擬用戶

虛擬用戶:

    所有虛擬用戶會統一映射爲一個指定的系統賬號:訪問共享位置,即爲此係統賬號的家目錄

    各虛擬用戶可被賦予不同的訪問權限,通過匿名用戶的權限控制參數進行指定

  1. 創建虛擬用戶的賬號密碼數據庫文件

    vim ftpvusers 
      meiwenjun
      redhat
      chenfangyuan
      redhat
      chaoyuanning
      redhat

W7M0YJDW}%RHS1X0VD]UPL0.png    

    db_load -T -t hash -f ftpvusers /etc/vsftpd/ftpvusers.db

%PN@K8BSEDV$RUV$~$M8N6A.png

    cd /etc/vsftpd/
    chmod 600 ftpvusers.db

G$KW97)I1Q34DQ}814U0T6V.png
2.創建映射用戶

    useradd -d /var/ftpsite -s /sbin/nologin ftpvuser

0`C[%IN4`A)AXGH0JVTU7]Q.png

]99_ZNC1)0IZ$`]8EGV{Q5N.png

    chmod u-w /var/ftpsite/

PBOU01~0QR@E1{J{L$`P`YD.png

U07)3G[WS~6$DGZM7`~BWOP.png

3.編輯主配置文件

    vim /etc/vsftpd/vsftpd.conf 
      guest_enable=YES
      guest_username=ftpvuser
      pam_service_name=vsftpd.vuser

ND%]L1JT3)XW]F6@]BIX8@0.png

4.編輯pam文件

    vim /etc/pam.d/vsftpd.vuser 
      auth       required     pam_userdb.so db=/etc/vsftpd/ftpvusers
      account    required     pam_userdb.so db=/etc/vsftpd/ftpvusers

3RD)WN$B1UCOXTMC[R%HZAE.png
5.配置子配置文件

    vim /etc/vsftpd/vsftpd.conf 
    user_config_dir=/etc/vsftpd/configdir

1TYMIBLR}]0)7GE8$G@8D0S.png

    mkdir /etc/vsftpd/configdir   創建配置文件存放的路徑
    vim chenfangyuan              創建各用戶自己的配置文件
      anon_root=/var/ftpsite     修改登錄目錄爲指定的目錄
      anon_max_rate=102800       文件下載的最大速度

4I%~PGUXD3THG13X()6SAP6.png
6.重啓服務,使生效,並測試

    systemctl restart vsftp

4JU47D{JOMY]T7DT}$8CA`O.png

)9(X`C@A27KZ4YIL]4G3@_Y.png







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