FTP服務

    FTP是一個非常古老的協議,其主要的作用是用于文件的傳輸。FTP采用明文的方式傳輸,極其不安全,但在局域網等環境中使用還是比較方便的。

一、工作原理

    FTP的工作方式分為主動模式與被動模式。

    1、主動模式

        blob.png

        上圖顯示了主動模式的連接過程:

            1、客戶端與FTP服務器的21端口建立了TCP連接;

            2、客戶端將一個隨機端口號告知給FTP服務器,此端口用于數據傳輸;

            3、FTP服務器通過TCP的20端口向已被告知的隨機端口號傳輸數據。

        主動模式存在一個問題:當客戶端出口處部署了防火墻時,我們有可能會將客戶端開啟的隨機端口號阻塞掉,而導致FTP的20端口無法連接到客戶端。

        為了解決這個問題,可以采用被動模式進行數據傳輸。

    2、被動模式

        blob.png

        上圖顯示了被動連接的過程:

            1、客戶端與FTP服務大的21端口建立了TCP連接;

            2、客戶端向服務器的21端口發起被動連接請求;

            3、服務器告訴客戶端用于數據傳輸的端口號;

            4、客戶端使用另一個隨機端口去連接服務器的數據傳輸端口。

二、FTP服務器配置

    在CentOS中,對FTP服務增加了安全相關的改進,稱為vsftpd,即“Very Secure FTP Daemon”,下面來詳細介紹一下vsftpd的相關配置。

    1、相關的配置文件

        /etc/vsftpd/vsftpd.conf

            主要配置文件,可通過man 5 vsftpd.conf查看詳細說明。 

        /etc/pam.d/vsftpd

            用于身份認證。

        /etc/vsftpd/ftpusers

            設置無法登錄FTP服務器的用戶配置文件。 

        /etc/vsftpd/user_list

            與ftpusers文件的作用相同,只能這個文件的生效與否需要在主配置文件中定義。

        /etc/vsftpd/chroot_list

            限制用戶只能在其主目錄中進行操作,不可以到其它的目錄中。

        /var/ftp

            匿名用戶的根目錄。

    2、vsftpd.conf配置說明

        connect_from_port_20=YES(NO)

            數據傳輸的端口號。

        listen_port=21

            連接監聽端口。

        dirmessage_enable=YES(NO)

            進入目錄時是否顯示提示信息。

        message_file=.message

            當dirmessage_enable=YES時,指定提示信息從哪個文件中讀取。

        listen=YES(NO)

            vsftpd是否以stand alone的方式啟動。

        pasv_enable=YES(NO)

            是否啟用被動模式。

        use_localtime=YES(NO)

            是否使用本地時間。

        write_enable=YES(NO)

            是否允許用戶上傳數據。

        connect_timeout=60

            單位為秒,主動連接模式下,60秒內得不到客戶端響應時強制斷線。

        accept_timeout=60

            單位為秒,被動連接模式下,60秒內得不到客戶端響應時強制斷線。

        data_connection_timeout=300

            單位為秒,無論什么模式下,300秒內得不能正常完成數據傳輸時強制斷線。

        idle_session_timeout=300

            單位為秒,用戶300秒內沒有任何操作時強制斷線。

        max_clients=0

            最大客戶端連接數,0表示沒有限制。

        max_per_ip=0

            同一IP地址同一時間允許的最大連接數。

        pasv_min_port=0

            被動連接時,如果想將隨機端口號控制在一定的范圍內,使用此選項來設置隨機端口號開始值。

        pasv_max_port=0

            被動連接時,如果想將隨機端口號控制在一定的范圍內,使用此選項來設置隨機端口號結束值。

        ftpd_banner=

            用戶連接到FTP服務器時顯示的提示信息,信息內容直接寫在等號后面。

        banner_file=/path/to/somefile

            用戶連接到FTP服務器時顯示的提示信息,信息內容為文件中的信息。

        guest_enable=YES(NO)

            所有系統用戶訪問FTP時均被當成guest用戶。

        guest_username=ftp

            指定guest用戶的用戶名。

        local_enable=YES(NO)

            是否允許/etc/passwd內的賬號登錄FTP服務器。

        local_max_rate=0

            實體用戶的傳輸速度上限。

        chroot_local_user=YES(NO)

            是否限制用戶在自己的主目錄之內。

        chroot_list_enable=YES(NO)

            是否啟用chroot寫入列表的功能。

        chroot_list_file=/etc/vsftpd/chroot_list

            如果chroot_list_enable為YES,則/etc/vsftpd/chroot_list中的用戶將不受chroot的限制。

        userlist_enable=YES(NO)

            是否阻止某些用戶登錄。

        userlist_deny=YES(NO)

            user_list_enalbe設置為YES時生效,啟用拒絕用戶登錄的文件,具體文件見下面的配置項。

        userlist_file=/etc/vsftpd/user_list

            此文件中的用戶都無法訪問FTP服務器。

        anonymous_enable=YES(NO)

            是否允許匿名登錄。

        anon_world_readable_only=YES(NO)

            允許匿名用戶有下載的權限。

        anon_other_write_enable=YES(NO)

            是否允許anonymous具有除了寫入之外的權限,默認為NO。

        tcp_wrappers=YES(NO)

            是否支持tcp_wrappers。

        xferlog_enable=YES(NO)

            是否記錄用戶上傳、上載文件的操作。

        xferlog_file=/var/log/xferlog

            指定日志文件的位置。

    3、安裝vsftpd

1.png    4、啟動vsftpd

2.png

        在啟動vsftpd服務后,不需要任何配置就可以使用匿名的方式訪問FTP服務器了,默認的訪問路徑為/var/ftp。

3.png

三、FTP服務器配置實例

    默認vsftpd的配置并不總是能夠滿足我們的實際需求,下面通過實例來說明vsftpd的用戶認證及權限控制的功能。

    1、禁止匿名用戶登錄,并且允許root用戶登錄FTP服務器

        修改主配置文件

3.png

        放開root用戶的限制,需要在下面的兩個文件中注釋掉root用戶,以使得root用戶可以登錄FTP服務器。

4.png

5.png

        重啟vsftpd服務

8.png

        驗證

6.png

    2、將root用戶的權限控制在其主目錄中

        修改主配置文件 

7.png

        注意chroot_list文件必須存在。

        重啟服務:

8.png

        驗證:

9.png

10.png

    2、創建一個普通用戶,此用戶有上傳文件的權限

        修改主配置文件:

10.png

        在系統中創建用戶fin,并使用此用戶登錄到FTP服務器上,上傳一個文件。

11.png

    以上兩個實例只是FTP的最基本的用法,其它的設置可以根據上文中的選項說明進行配置,也可參考man手冊,此處就不在做過多的演示了。

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

(0)
petmasterpetmaster
上一篇 2015-07-08 09:37
下一篇 2015-07-08 16:04

相關推薦

  • 一次簡單的內核編譯(二)

      前言:     此次編譯是繼一次簡單的內核編譯(一)進行操作編譯的,請先查看第一篇再來看此片文章 一、使用busybox代替自己制作的init腳本,實現內核啟動;  1、在這里我們使用靜態編譯busybox,所以需要先安裝glibc-static依賴包,如果不安裝會報錯     2、解…

    Linux干貨 2015-06-01
  • Linux 進程及作業管理

    Linux 進程及作業管理 概述:      我們在實際的運維工作中經常要對服務器做各種監控,以了解其相關狀態,比如,CPU利用率,磁盤空間利用率,等等,這就需要我們了解相關的數據并學會使用各種工具來分析數據。本章就將總結Linux系統中進程管理和作業管理的相關命令、參數和工具,包括:進程的相關定義、分類、狀態以及進程查看和管理…

    Linux干貨 2016-09-11
  • 系統基礎之shell腳本編程詳解4(數組及字符串處理,變量賦值和配置文件)

    系統基礎之shell腳本編程詳解4(數組及字符串處理,變量賦值和配置文件)     今天來講shell腳本編程的最后一些內容,數組及字符串處理,變量賦值和配置文件.這些內容也是我們經常在工作中使用到的知識點.下面讓我們來詳細了解下: 數組:   程序=指令+數據        &…

    Linux干貨 2016-08-24
  • 馬哥教育網絡班22期+第九周課程練習

    1. 寫一個腳本,判斷當前系統上所有用戶的shell是否為可登錄shell(即用戶的shell不是/sbin/nologin);分別這兩類用戶的個數;通過字符串比較來實現; #!/bin/bash#declare -a loginuserdeclare -i sum_login=0declare -i sum_nologin=0list=($(cat /et…

    Linux干貨 2017-01-03
  • 【知識點】NO.1—-關于刪除文件后未及時釋放磁盤空間問題

    刪除了某些占用大存儲的文件,發現占用的磁盤空間并沒有的到釋放。怎么解決呢?
    在工作中經常遇到服務器某個存放日志或者某些數據的磁盤(或者目錄),因為檢查不及時磁盤存儲滿了的狀況。釋放空間真的只是刪除文件這么簡單嗎?nonono…

    2017-11-18
  • Hadoop偽分布式模型

    # java -version # vim /etc/profile.d/java.sh export JAVA_HOME=/usr # yum install java-1.8.0-openjdk-devel # mkdir /bdapps # tar xf hadoop-2.7.4.tar.gz -C /bdapps/ # cd /bdapps # ln…

    2017-12-08
欧美性久久久久