<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    談笑有鴻儒,往來無白丁

    在恰當(dāng)?shù)臅r間、地點以恰當(dāng)?shù)姆绞奖磉_(dá)給恰當(dāng)?shù)娜?..  閱讀的時候請注意分類,佛曰我日里面是談笑文章,其他是各個分類的文章,積極的熱情投入到寫博的隊伍中來,支持blogjava做大做強!向dudu站長致敬>> > 我的微博敬請收聽
    0、關(guān)于本文檔

      本文檔是個人的學(xué)習(xí)整理。允許大家翻閱,摘抄,引用。更歡迎指出其中不對之處。文檔的內(nèi)容主要來自VSFTPD自身文檔、個人學(xué)習(xí)心得以及網(wǎng)絡(luò)資料,若有類同,實屬正常,∶)。

      本文檔基于RedHat Linux 9和VSFTPD-1.1.3-8。如果有不同版本,則有專門文字說明。

    1、VSFTPD簡述

      如果試問哪種FTP服務(wù)器最安全?那么在UNIX和Linux中,首推的就是VSFTP(Very Secure FTP Daemon,非常安全的FTP服務(wù)器)。顧名思義,VSFTPD設(shè)計的出發(fā)點就是安全性。同時隨著版本的不斷升級,VSFTPD在性能和穩(wěn)定性上也取得了極大的進(jìn)展。象RedHat、SUSE、Debian、GNU、GNOME、KDE等一些大型站點都采用VSFTPD作為它們的FTP服務(wù)器。大家可以到http://vsftpd.beasts.org/了解它的最新情況。

    2、VSFTPD的安裝

    2.1、RHL9+vsftpd-.1.1.3-8.i386.rpm包的安裝

      VSFTPD的安裝很簡單。在RHL9中,在圖形界面下依次執(zhí)行“Main Menu”-“System Settings”-“Add/Remove Applications”-選擇FTP服務(wù)器-“更新”,或者在字符界面中執(zhí)行以下命令,就可以完成安裝。
      rpm -ivh vsftpd-1.1.3-8.i386.rpm

    2.2、vsftpd-1.2.0.tar.gz的安裝

      ⑴準(zhǔn)備條件

      VSFTPD默認(rèn)配置中需要“nobody”用戶。在系統(tǒng)中添加此用戶,如果用戶已經(jīng)存在,useradd命令有相應(yīng)提示。
      [root@hpe45 root]# useradd nobody
      useradd: user nobody exists

      VSFTPD默認(rèn)配置中需要“/usr/share/empty”目錄。在系統(tǒng)中此目錄,如果目錄已經(jīng)存在,mkdir命令有相應(yīng)提示。
      [root@hpe45 root]# mkdir /usr/share/empty/
      mkdir: cannot create directory '/usr/share/empty': File exists

      VSFTPD提供匿名FTP服務(wù)時,需要“ftp”用戶和一個有效的匿名目錄。
      [root@hpe45 root]# mkdir /var/ftp/
      [root@hpe45 root]# useradd -d /var/ftp ftp
      接下來的操作對于ftp用戶是否已經(jīng)存在都是有用的。
      [root@hpe45 root]# chown root.root /var/ftp
      [root@hpe45 root]# chmod og-w /var/ftp

      ⑵編譯VSFTPD

      從官方站點下載到/root目錄,執(zhí)行以下命令:
      [root@hpe45 root]# tar zxvf vsftpd-1.2.0.tar.gz
      [root@hpe45 root]# cd vsftpd-1.2.0
      [root@hpe45 vsftpd-1.2.0]# make

      ⑶安裝編譯好的VSFTPD

      執(zhí)行“make install”將編譯好的二進(jìn)制文件、手冊等復(fù)制到相應(yīng)目錄。在RHL9上,可能需要手動執(zhí)行以下復(fù)制:
      [root@hpe45 vsftpd-1.2.0]# cp vsftpd /usr/local/sbin/vsftpd
      [root@hpe45 vsftpd-1.2.0]# cp vsftpd.conf.5 /usr/local/share/man/man5
      [root@hpe45 vsftpd-1.2.0]# cp vsftpd.8 /usr/local/share/man/man8
      此外,“make install”沒有復(fù)制簡單的配置文件,建議執(zhí)行以下命令:
      [root@hpe45 vsftpd-1.2.0]# cp vsftpd.conf /etc

      ⑷為本地用戶設(shè)置PAM

      如果允許本地用戶登錄VSFTPD,執(zhí)行以下操作:
      [root@hpe45 vsftpd-1.2.0]# cp RedHat/vsftpd.pam /etc/pam.d/ftp

    3、VSFTPD的文件結(jié)構(gòu)

      VSFTPD的文件結(jié)構(gòu)是很簡潔的,主要包括:
      /usr/sbin/vsftpd ---- VSFTPD的主程序
      /etc/rc.d/init.d/vsftpd ---- 啟動腳本
      /etc/vsftpd/vsftpd.conf ---- 主配置文件
      /etc/pam.d/vsftpd ---- PAM認(rèn)證文件
      /etc/vsftpd.ftpusers ---- 禁止使用VSFTPD的用戶列表文件
      /etc/vsftpd.user_list ---- 禁止或允許使用VSFTPD的用戶列表文件
      /var/ftp ---- 匿名用戶主目錄
      /var/ftp/pub      ---- 匿名用戶的下載目錄
      此外,還有一些說明文檔和手冊文件。

      此外VSFTPD的日志文件位于/etc/logrotate.d/vsftpd.log。

    4、VSFTPD的啟動與停止

      VSFTPD可以單獨(Standalone)方式運行,如同httpd、named這類的服務(wù)器的運行方式,這是RHL9中默認(rèn)的方式;也可以采用xinetd方式運行,這是RHL7.x、8中的默認(rèn)方式。具體的運行方式由參數(shù)listen決定。從RHL中VSFTPD的運行方式,也可以看出VSFTPD的逐步發(fā)展。

      當(dāng)listen參數(shù)值為YES時,RHL9中的默認(rèn)值,VSFTPD單獨運行,我們可以使用腳本/etc/rc.d/init.d/vsftpd來啟動、關(guān)閉以及重啟VSFTPD。命令如下:
      /etc/rc.d/init.d/vsftpd start|stop|restart

      如果說在RHL9上,您還希望使用Xinetd啟動VSFTPD的運行方式,那么首先要將vsftpd.conf配置文件中的listen參數(shù)值改為NO。其次,生成一個/etc/xinetd.d/vsftpd文件,內(nèi)容如下:
      service vsftpd
      {
      disable = no
      socket_type = stream
      wait = no
      user = root
      server = /usr/sbin/vsftpd
      port = 21
      log_on_success += PID HOST DURATION
      log_on_failure += HOST
      }
      通過修改disable值為no或yes,并重新啟動xinetd,從而啟動或停止VSFTPD。

      由于VSFTPD的單獨模式已經(jīng)擁有足夠的能力,所以后面6中討論到的應(yīng)用,都是以單獨模式來運行的,而非Xinetd方式。

      注:還可以直接執(zhí)行vsftpd來啟動FTP服務(wù),關(guān)閉時使用“kill”命令。
      [root@hpe45 root]# /usr/local/sbin/vsftpd &

    5、VSFTPD的設(shè)置選項

      VSFTPD的配置文件/etc/vsftpd/vsftpd.conf是個文本文件。以“#”字符開始的行是注釋行。每個選項設(shè)置為一行,格式為“option=value”,注意“=”號兩邊不能留空白符。除了這個主配置文件外,還可以給特定用戶設(shè)定個人配置文件,具體介紹見后。
      VSFTPD包中所帶的vsftpd.conf文件配置比較簡單,而且非常偏執(zhí)狂的(文檔自稱:-))。我們可以根據(jù)實際情況對其進(jìn)行一些設(shè)置,以使得VSFTPD更加可用。

    5.1、連接選項

      本部分主要是一些與建立FTP鏈接相關(guān)的選項。

    5.1.1、監(jiān)聽地址與控制端口

      listen_address=ip address
      此參數(shù)在VSFTPD使用單獨(standalone)模式下有效。此參數(shù)定義了在主機的哪個IP地址上監(jiān)聽FTP請求,即在哪個IP地址上提供FTP服務(wù)。對于只有一個IP地址的主機,不需要使用此參數(shù)。對于多址主機,不設(shè)置此參數(shù),則監(jiān)聽所有IP地址。默認(rèn)值為無。

      listen_port=port_value
      指定FTP服務(wù)器監(jiān)聽的端口號(控制端口),默認(rèn)值為21。此選項在standalone模式下生效。

    5.1.2、FTP模式與數(shù)據(jù)端口

      FTP 分為兩類,PORT FTP和PASV FTP,PORT FTP是一般形式的FTP。這兩種FTP在建立控制連接時操作是一樣的,都是由客戶端首先和FTP服務(wù)器的控制端口(默認(rèn)值為21)建立控制鏈接,并通過此鏈接進(jìn)行傳輸操作指令。它們的區(qū)別在于使用數(shù)據(jù)傳輸端口(ftp-data)的方式。PORT FTP由FTP服務(wù)器指定數(shù)據(jù)傳輸所使用的端口,默認(rèn)值為20。PASV FTP由FTP客戶端決定數(shù)據(jù)傳輸?shù)亩丝凇ASV FTP這種做法,主要是考慮到存在防火墻的環(huán)境下,由客戶端與服務(wù)器進(jìn)行溝通(客戶端向服務(wù)器發(fā)出數(shù)據(jù)傳輸請求中包含了數(shù)據(jù)傳輸端口),決定兩者之間的數(shù)據(jù)傳輸端口更為方便一些。

      port_enable=YES|NO
      如果你要在數(shù)據(jù)連接時取消PORT模式時,設(shè)此選項為NO。默認(rèn)值為YES。

      connetc_from_port_20=YES|NO
      控制以PORT模式進(jìn)行數(shù)據(jù)傳輸時是否使用20端口(ftp-data)。YES使用,NO不使用。默認(rèn)值為NO,但RHL自帶的vsftpd.conf文件中此參數(shù)設(shè)為YES。

      ftp_data_port=port number
      設(shè)定ftp數(shù)據(jù)傳輸端口(ftp-data)值。默認(rèn)值為20。此參數(shù)用于PORT FTP模式。

      port_promiscuous=YES|NO
      默認(rèn)值為NO。為YES時,取消PORT安全檢查。該檢查確保外出的數(shù)據(jù)只能連接到客戶端上。小心打開此選項。

      pasv_enable=YES|NO
      YES,允許數(shù)據(jù)傳輸時使用PASV模式。NO,不允許使用PASV模式。默認(rèn)值為YES。

      pasv_min_port=port number
      pasv_max_port=port number
      設(shè)定在PASV模式下,建立數(shù)據(jù)傳輸所可以使用port范圍的下界和上界,0 表示任意。默認(rèn)值為0。把端口范圍設(shè)在比較高的一段范圍內(nèi),比如50000-60000,將有助于安全性的提高。

      pasv_promiscuous=YES|NO
      此選項激活時,將關(guān)閉PASV模式的安全檢查。該檢查確保數(shù)據(jù)連接和控制連接是來自同一個IP地址。小心打開此選項。此選項唯一合理的用法是存在于由安全隧道方案構(gòu)成的組織中。默認(rèn)值為NO。

      pasv_address=
      此選項為一個數(shù)字IP地址,作為PASV命令的響應(yīng)。默認(rèn)值為none,即地址是從呼入的連接套接字(incoming connectd socket)中獲取。

    5.1.3 ASCII模式

      默認(rèn)情況下,VSFTPD是禁止使用ASCII傳輸模式。即使FTP客戶端使用asc命令,指明要使用ASCII模式,但是,VSFTPD表面上接受了asc命令,而在實際傳輸文件時,還是使用二進(jìn)制方式。下面選項控制VSFTPD是否使用ASCII傳輸模式。

      ascii_upload_enable=YES|NO
      控制是否允許使用ascii模式上傳文件,YES允許,NO不允許,默認(rèn)為NO。

      ascii_download_enable=YES|NO
      控制是否允許使用ascii模式下載文件,YES允許,NO不允許,默認(rèn)為NO。

    5.2、性能與負(fù)載控制

    5.2.1、超時選項

      idle_session_timeout=
      空閑(發(fā)呆)用戶會話的超時時間,若是超出這時間沒有數(shù)據(jù)的傳送或是指令的輸入,則會強迫斷線。單位為秒,默認(rèn)值為300。

      data_connection_timeout=
      空閑的數(shù)據(jù)連接的超時時間。默認(rèn)值為300 秒。

      accept_timeout=numerical value
      接受建立聯(lián)機的超時設(shè)定,單位為秒。默認(rèn)值為60。

      connect_timeout=numerical value
      響應(yīng)PORT方式的數(shù)據(jù)聯(lián)機的超時設(shè)定,單位為秒。默認(rèn)值為60。以上兩個選項針對客戶端的,將使客戶端空閑1分鐘后自動中斷連接,并在中斷1分鐘后自動激活連接。

    5.2.2 負(fù)載控制

      max_clients=numerical value
      此參數(shù)在VSFTPD使用單獨(standalone)模式下有效。此參數(shù)定義了FTP服務(wù)器最大的并發(fā)連接數(shù),當(dāng)超過此連接數(shù)時,服務(wù)器拒絕客戶端連接。默認(rèn)值為0,表示不限最大連接數(shù)。

      max_per_ip=numerical value
      此參數(shù)在VSFTPD使用單獨(standalone)模式下有效。此參數(shù)定義每個IP地址最大的并發(fā)連接數(shù)目。超過這個數(shù)目將會拒絕連接。此選項的設(shè)置將影響到象網(wǎng)際快車這類的多進(jìn)程下載軟件。默認(rèn)值為0,表示不限制。

      anon_max_rate=value
      設(shè)定匿名用戶的最大數(shù)據(jù)傳輸速度value,以Bytes/s為單位。默認(rèn)無。

      local_max_rate=value
      設(shè)定用戶的最大數(shù)據(jù)傳輸速度value,以Bytes/s為單位。默認(rèn)無。此選項對所有的用戶都生效。此外,也可以在用戶個人配置文件中使用此選項,以指定特定用戶可獲得的最大數(shù)據(jù)傳輸速率。
      步驟如下:
      ①在vsftpd.conf中指定用戶個人配置文件所在的目錄,如:
      user_config_dir=/etc/vsftpd/userconf
      ②生成/etc/vsftpd/userconf目錄。
      ③用戶個人配置文件是在該目錄下,與特定用戶同名的文件,如:
      /etc/vsftpd/userconf/xiaowang
      ④在用戶的個人配置文件中設(shè)置local_max_rate參數(shù),如:
      local_max_rate=80000
      以上步驟設(shè)定FTP用戶xiaowang的最大數(shù)據(jù)傳輸速度為80KBytes/s。

      VSFTPD 對于速度控制的變化范圍大概在80%到120%之間。比如我們限制最高速度為100KBytes/s, 但實際的速度可能在80KBytes/s 到120KBytes/s 之間。當(dāng)然,若是線路帶寬不足時,速率自然會低于此限制。

    5.3 用戶選項

      VSFTPD的用戶分為三類:匿名用戶、本地用戶(local user)以及虛擬用戶(guest)。

    5.3.1、匿名用戶

      anonymous_enable=YES|NO
      控制是否允許匿名用戶登錄,YES允許,NO不允許,默認(rèn)值為YES。

      ftp_username=
      匿名用戶所使用的系統(tǒng)用戶名。默認(rèn)下,此參數(shù)在配置文件中不出現(xiàn),值為ftp。

      no_anon_password=YES|NO
      控制匿名用戶登入時是否需要密碼,YES不需要,NO需要。默認(rèn)值為NO。
      
      deny_email_enable=YES|NO
      此參數(shù)默認(rèn)值為NO。當(dāng)值為YES時,拒絕使用banned_email_file參數(shù)指定文件中所列出的e-mail地址進(jìn)行登錄的匿名用戶。即,當(dāng)匿名用戶使用banned_email_file文件中所列出的e-mail進(jìn)行登錄時,被拒絕。顯然,這對于阻擊某些Dos攻擊有效。當(dāng)此參數(shù)生效時,需追加banned_email_file參數(shù)

      banned_email_file=/etc/vsftpd.banned_emails
      指定包含被拒絕的e-mail地址的文件,默認(rèn)文件為/etc/vsftpd.banned_emails。

      anon_root=
      設(shè)定匿名用戶的根目錄,即匿名用戶登入后,被定位到此目錄下。主配置文件中默認(rèn)無此項,默認(rèn)值為/var/ftp/。

      anon_world_readable_only=YES|NO
      控制是否只允許匿名用戶下載可閱讀文檔。YES,只允許匿名用戶下載可閱讀的文件。NO,允許匿名用戶瀏覽整個服務(wù)器的文件系統(tǒng)。默認(rèn)值為YES。

      anon_upload_enable=YES|NO
      控制是否允許匿名用戶上傳文件,YES允許,NO不允許,默認(rèn)是不設(shè)值,即為NO。除了這個參數(shù)外,匿名用戶要能上傳文件,還需要兩個條件:一,write_enable參數(shù)為YES;二,在文件系統(tǒng)上,F(xiàn)TP匿名用戶對某個目錄有寫權(quán)限。

      anon_mkdir_write_enable=YES|NO
      控制是否允許匿名用戶創(chuàng)建新目錄,YES允許,NO不允許,默認(rèn)是不設(shè)值,即為NO。當(dāng)然在文件系統(tǒng)上,F(xiàn)TP匿名用戶必需對新目錄的上層目錄擁有寫權(quán)限。

      anon_other_write_enable=YES|NO
      控制匿名用戶是否擁有除了上傳和新建目錄之外的其他權(quán)限,如刪除、更名等。YES擁有,NO不擁有,默認(rèn)值為NO。

      chown_uploads=YES|NO
      是否修改匿名用戶所上傳文件的所有權(quán)。YES,匿名用戶所上傳的文件的所有權(quán)將改為另外一個不同的用戶所有,用戶由chown_username參數(shù)指定。此選項默認(rèn)值為NO。

      chown_username=whoever
      指定擁有匿名用戶上傳文件所有權(quán)的用戶。此參數(shù)與chown_uploads聯(lián)用。不推薦使用root用戶。

    5.3.2、本地用戶

      在使用FTP服務(wù)的用戶中,除了匿名用戶外,還有一類在FTP服務(wù)器所屬主機上擁有賬號的用戶。VSFTPD中稱此類用戶為本地用戶(local users),等同于其他FTP服務(wù)器中的real用戶。

      local_enable=YES|NO
      控制vsftpd所在的系統(tǒng)的用戶是否可以登錄vsftpd。默認(rèn)值為YES。

      local_root=
      定義所有本地用戶的根目錄。當(dāng)本地用戶登入時,將被更換到此目錄下。默認(rèn)值為無。

      user_config_dir=
      定義用戶個人配置文件所在的目錄。用戶的個人配置文件為該目錄下的同名文件。個人配置文件的格式與vsftpd.conf格式相同。例如定義 user_config_dir=/etc/vsftpd/userconf,并且主機上有用戶xiaowang,lisi,那我們可以在 user_config_dir的目錄新增名為xiaowang、lisi的兩個文件。當(dāng)用戶lisi 登入時,VSFTPD則會讀取user_config_dir下lisi這個文件中的設(shè)定值,應(yīng)用于用戶lisi。默認(rèn)值為無。

    5.3.3、虛擬用戶

      guest_enable=YES|NO
      若是啟動這項功能,所有的非匿名登入者都視為guest。默認(rèn)值為關(guān)閉。

      guest_username=
      定義VSFTPD的guest用戶在系統(tǒng)中的用戶名。默認(rèn)值為ftp。

    5.4、安全措施

    5.4.1、用戶登錄控制

      pam_service_name=vsftpd
      指出VSFTPD進(jìn)行PAM認(rèn)證時所使用的PAM配置文件名,默認(rèn)值是vsftpd,默認(rèn)PAM配置文件是/etc/pam.d/vsftpd。

      /etc/vsftpd.ftpusers
      VSFTPD禁止列在此文件中的用戶登錄FTP服務(wù)器。這個機制是在/etc/pam.d/vsftpd中默認(rèn)設(shè)置的。

      userlist_enable=YES|NO
      此選項被激活后,VSFTPD將讀取userlist_file參數(shù)所指定的文件中的用戶列表。當(dāng)列表中的用戶登錄FTP服務(wù)器時,該用戶在提示輸入密碼之前就被禁止了。即該用戶名輸入后,VSFTPD查到該用戶名在列表,VSFTPD就直接禁止掉該用戶,不會再進(jìn)行詢問密碼等后續(xù)步聚。默認(rèn)值為NO。

      userlist_file=/etc/vsftpd.user_list
      指出userlist_enable選項生效后,被讀取的包含用戶列表的文件。默認(rèn)值是/etc/vsftpd.user_list。

      userlist_deny=YES|NO
      決定禁止還是只允許由userlist_file指定文件中的用戶登錄FTP服務(wù)器。此選項在userlist_enable 選項啟動后才生效。YES,默認(rèn)值,禁止文件中的用戶登錄,同時也不向這些用戶發(fā)出輸入口令的提示。NO,只允許在文件中的用戶登錄FTP服務(wù)器。
      
      tcp_wrappers=YES|NO
      在VSFTPD中使用TCP_Wrappers遠(yuǎn)程訪問控制機制,默認(rèn)值為YES。

    5.4.2、目錄訪問控制

      chroot_list_enable=YES|NO
      鎖定某些用戶在自家目錄中。即當(dāng)這些用戶登錄后,不可以轉(zhuǎn)到系統(tǒng)的其他目錄,只能在自家目錄(及其子目錄)下。具體的用戶在chroot_list_file參數(shù)所指定的文件中列出。默認(rèn)值為NO。

      chroot_list_file=/etc/vsftpd/chroot_list
      指出被鎖定在自家目錄中的用戶的列表文件。文件格式為一行一用戶。通常該文件是/etc/vsftpd/chroot_list。此選項默認(rèn)不設(shè)置。

      chroot_local_users=YES|NO
      將本地用戶鎖定在自家目錄中。當(dāng)此項被激活時,chroot_list_enable和chroot_local_users參數(shù)的作用將發(fā)生變化,chroot_list_file所指定文件中的用戶將不被鎖定在自家目錄。本參數(shù)被激活后,可能帶來安全上的沖突,特別是當(dāng)用戶擁有上傳、 shell訪問等權(quán)限時。因此,只有在確實了解的情況下,才可以打開此參數(shù)。默認(rèn)值為NO。

      passwd_chroot_enable
      當(dāng)此選項激活時,與chroot_local_user選項配合,chroot()容器的位置可以在每個用戶的基礎(chǔ)上指定。每個用戶的容器來源于/etc/passwd中每個用戶的自家目錄字段。默認(rèn)值為NO。

    5.4.3、文件操作控制

      hide_ids=YES|NO
      是否隱藏文件的所有者和組信息。YES,當(dāng)用戶使用"ls -al"之類的指令時,在目錄列表中所有文件的擁有者和組信息都顯示為ftp。默認(rèn)值為NO。

      ls_recurse_enable=YES|NO
      YES,允許使用"ls -R" 指令。這個選項有一個小的安全風(fēng)險,因為在一個大型FTP站點的根目錄下使用"ls -R"會消耗大量系統(tǒng)資源。默認(rèn)值為NO。

      write_enable=YES|NO
      控制是否允許使用任何可以修改文件系統(tǒng)的FTP 的指令,比如STOR、DELE、RNFR、RNTO、MKD、RMD、APPE 以及SITE。默認(rèn)值為NO,不過自帶的簡單配置文件中打開了該選項。

      secure_chroot_dir=
      這選項指向一個空目錄,并且ftp用戶對此目錄無寫權(quán)限。當(dāng)vsftpd不需要訪問文件系統(tǒng)時,這個目錄將被作為一個安全的容器,用戶將被限制在此目錄中。默認(rèn)目錄為/usr/share/empty。

    5.4.4、新增文件權(quán)限設(shè)定

      anon_umask=
      匿名用戶新增文件的umask 數(shù)值。默認(rèn)值為077。

      file_open_mode=
      上傳檔案的權(quán)限,與chmod 所使用的數(shù)值相同。如果希望上傳的文件可以執(zhí)行,設(shè)此值為0777。默認(rèn)值為0666。

      local_umask=
      本地用戶新增檔案時的umask 數(shù)值。默認(rèn)值為077。不過,其他大多數(shù)的FTP服務(wù)器都是使用022。如果您的用戶希望的話,可以修改為022。在自帶的配置文件中此項就設(shè)為了022。

    5.5、提示信息

      ftpd_banner=login banner string
      此參數(shù)定義了login banner string(登錄歡迎語字符串)。用戶可以自行修改。預(yù)設(shè)值為無。當(dāng)ftpd_banner設(shè)置后,將取代系統(tǒng)原來的歡迎詞。

      banner_file=/directory/vsftpd_banner_file
      此項指定一個文本文件,當(dāng)使用者登入時,會顯示此該文件的內(nèi)容,通常為歡迎話語或是說明。默認(rèn)值為無。與ftpd_banner相比, banner_file是文本文件的形式,而ftpd_banner是字串格式。banner_file選項將取代ftpd_banner選項。

      dirmessage_enable=YES|MO
      控制是否啟用目錄提示信息功能。YES啟用,NO不啟用,默認(rèn)值為YES。此功能啟用后,當(dāng)用戶進(jìn)入某一個目錄時,會檢查該目錄下是否有message_file選項所指定的文檔,若是有,則會出現(xiàn)此文檔的內(nèi)容,通常這個檔案會放置歡迎話語,或是對該目錄的說明。

      message_file=
      此選項,僅在dirmessage_enable選項激活方生效。默認(rèn)值為.message。

    5.6、日志設(shè)置

      xferlog_enable=YES|NO
      控制是否啟用一個日志文件,用于詳細(xì)記錄上傳和下載。該日志文件由xferlog_file選項指定。默認(rèn)值為NO,但簡單配置文件中激活此選項。

      xferlog_file=
      這個選項設(shè)定記錄傳輸日志的文件名。默認(rèn)值為/var/log/vsftpd.log。

      xferlog_std_format=YES|NO
      控制日志文件是否使用xferlog的標(biāo)準(zhǔn)格式,如同wu-ftpd一樣。使用xferlog格式,可以重新使用已經(jīng)存在的傳輸統(tǒng)計生成器。然而,默認(rèn)的日志格式更為可讀性。默認(rèn)值為NO,但自帶的配置文件中激活了此選項。

      log_ftp_protocol=YES|NO
      當(dāng)此選項激活后,所有的FTP請求和響應(yīng)都被記錄到日志中。提供此選項時,xferlog_std_format不能被激活。這個選項有助于調(diào)試。默認(rèn)值為NO。

    5.7、其他設(shè)置

      setproctitle_enable=YES|NO
      YES,VSFTPD將在系統(tǒng)進(jìn)程列表中顯示每個會話(session)的狀態(tài)。也就是說,進(jìn)程報告將顯示每個vsftpd會話在做什么(掛起、下載等),如用ps -ef|grep ftp。出于安全的目的,可以考慮將此選項關(guān)閉。NO,進(jìn)程報告只顯示一個vsftpd進(jìn)程在運行。默認(rèn)值為NO。

      text_userdb_names=YES|No
      當(dāng)使用者登入后使用ls -al 之類指令時,目錄列表的用戶和組信息域,默認(rèn)是出現(xiàn)擁有者的UID,而不是該檔案擁有者的名稱。若是希望出現(xiàn)擁有者的名稱,則將此功能開啟。默認(rèn)值為NO。

      user_localtime=YES|NO
      默認(rèn)為NO。YES,VSFTPD顯示目錄列表時使用你本地時區(qū)的時間。默認(rèn)是顯示GMT時間。同樣,由ftp命令“MDTM”返回的時間值也受此選項影響。

      check_shell=YES|NO
      此選項僅對不使用PAM方式的VSFTPD生效。當(dāng)此選項關(guān)閉后,當(dāng)本地用戶登錄時,VSFTPD不會檢查/etc/shells文件以尋找一個有效的用戶shell。默認(rèn)為YES。

      nopriv_user=
      指定一個用戶,當(dāng)VSFTPD不想要什么權(quán)限時,使用此用戶身份。這用戶最好是一個專用的用戶,而不是用戶nobody。在大多數(shù)的機器上,nobody用戶被用于大量重要的事情。默認(rèn)值為nobody。

      pam_service_name=
      指明VSFTPD使用用PAM驗證服務(wù)時的PAM配置文件名。默認(rèn)值為ftp。

    6、VSFTPD應(yīng)用

      本部分介紹VSFTPD的具體應(yīng)用方法。

    6.1、允許匿名用戶上傳文件

      在vsftpd.conf文件中修改或增加以下選項:
      write_enable=YES
      anon_world_readable_only=NO
      anon_upload_enable=YES
      anon_mkdir_write_enable=YES

      然后創(chuàng)建供匿名用戶上傳文件的目錄,并設(shè)定權(quán)限:
      # mkdir /var/ftp/incoming
      # chmod o+w /var/ftp/incoming
      由于匿名用戶(ftp)上傳文件,需要對incoming目錄進(jìn)行操作,而incoming為root所有,匿名用戶(ftp)對于incoming來說是其他用戶,所以要加入其他用戶(o)的寫權(quán)限。

    6.2、限制用戶在自家目錄

      在默認(rèn)配置中,本地用戶可以切換到自家目錄以外的目錄進(jìn)行瀏覽,并在權(quán)限范圍內(nèi)進(jìn)行上傳和下載,這無疑是個不安全因素。
      我們可以設(shè)置chroot,讓本地用戶登錄后只能訪問自家目錄,無法訪問其他目錄。相關(guān)的選項有三個:chroot_local_user、chroot_list_enable、chroot_list_file。限制用戶在自家目錄有兩種做法:
      1、限制所有的本地用戶在自家目錄
      chroot_local_user=YES
      這種做法,可能會帶來一些安全性上的沖突。參見前面的chroot_local_user選項描述。
      2、限制部分本地用戶在自家目錄
      chroot_local_user=NO
      chroot_list_enable=YES
      chroot_list_file=/etc/vsftpd.chroot_list
      在/etc/vsftpd.chroot_list文件中加入要限制的本地用戶名。注意一個用戶名一行。

    6.3、配置高安全級別的匿名FTP服務(wù)器

      VSFTPD自帶的簡單配置文件已經(jīng)自稱是偏執(zhí)狂了,這里看看能否更加偏執(zhí)一些,。有些選項默認(rèn)已經(jīng)采用安全性的設(shè)置,這里就不再寫出了。

      #只允許匿名訪問,不允許本地用戶訪問
      anonymous_enable=YES
      local_enable=NO

      #使用ftpd_banner取代VSFTPD默認(rèn)的歡迎詞,免得泄漏相關(guān)信息
      ftpd_banner=Welcome to this FTP Server
      #只讓匿名用戶瀏覽可閱讀的文件,不可以瀏覽整個系統(tǒng)
      anon_world_readable_only=YES
      #隱藏文件的所有者和組信息,匿名用戶看到的文件的所有者和組全變?yōu)閒tp
      hide_ids=YES

      #取消寫權(quán)限
      write_enable=NO
      anon_upload_enable=NO
      anon_mkdir_write_enable=NO
      anon_other_write_enable=NO

      #使用單獨模式,并指定監(jiān)聽的IP地址
      listen_address=ip address
      #對連接進(jìn)行控制,還有超時時間,那就根據(jù)具體情況再說了。
      connect_from_port_20=YES
      pasv_min_port=50000
      pasv_max_port=60000
      #控制并發(fā)數(shù),限定每個IP地址的并發(fā)數(shù),這個嘛,根據(jù)用戶自已定了。
      max_clients=numerical value
      max_per_ip=numerical value
      #限定下載速度,具體限多大,就由用戶自己定了,80KB/s,也很快了吧。
      anon_max_rate=80000

      #啟用詳細(xì)的日志記錄格式
      xferlog_enable=YES

    6.4、基于IP地址的虛擬FTP服務(wù)器

      假定服務(wù)器有兩個IP地址,192.168.0.1和192.168.0.2。VSFTPD是建立在192.168.0.1上的,現(xiàn)在我們在192.168.0.2上再提供一個虛擬FTP服務(wù)器。如何在一臺服務(wù)器上使用多個IP 地址,請參考相關(guān)文檔。

      1、創(chuàng)建虛擬FTP服務(wù)器的根目錄。
      mkdir -p /var/ftp2/pub
      確保/var/ftp2和/var/ftp2/pub目錄的擁有者和組均為root,掩碼為755。

      2、增加虛擬FTP服務(wù)器的匿名用戶帳號。原先的FTP服務(wù)器使用系統(tǒng)用戶ftp作為其匿名用戶帳號。我們要增加一個ftp2用于虛擬FTP服務(wù)器。
      useradd -d /var/ftp2 -M ftp2

      3、創(chuàng)建虛擬FTP服務(wù)器的配置文件。復(fù)制原來的vsftpd.conf作為虛擬FTP服務(wù)器的配置文件,并修改相關(guān)參數(shù)。
      cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd2.conf
      新添或修改以下參數(shù):
      listen=YES
      listen_address=192.168.0.2
      ftp_username=ftp2

      注:由于VSFTPD默認(rèn)是監(jiān)聽所有的IP地址,當(dāng)我們設(shè)定基于IP的虛擬FTP服務(wù)器時,為防止原來的FTP服務(wù)器與虛擬FTP服務(wù)器發(fā)生監(jiān)聽上的沖突,原FTP服務(wù)器需要指定監(jiān)聽的IP地址。在這里,原來的配置文件中就要設(shè)置listen_address=192.168.0.1。

      4、啟動虛擬FTP服務(wù)器。

      /etc/rc.d/init.d/vsftpd腳本在啟動時,掃描/etc/vsftpd/目錄下所有的*.conf文件,按照 *.conf文件的先后,依次啟用vsftpd進(jìn)程,每個vsftpd進(jìn)程對應(yīng)一個.conf文件。即,“l(fā)s /etc/vsftpd/”列表的次序與“ps -aux |grep vsftpd”中的順序一樣。當(dāng)然了,“ps -aux | grep vsftpd”中也顯示出vsftpd所使用的配置文件,從中也可以看哪個vsftpd進(jìn)程對應(yīng)哪個FTP服務(wù)器。如果沒有列出配置文件,那就是默認(rèn)的 vsftpd.conf,那么該進(jìn)程也就是原來的FTP服務(wù)器進(jìn)程。
      由于第3步中虛擬FTP服務(wù)器的配置文件被命名為vsftpd2.conf文件,所以我們可以用/etc/rc.d/init.d/vsftpd腳本同時啟動或關(guān)閉原FTP服務(wù)器和新加的虛擬FTP服務(wù)器。
      以下命令單獨啟動虛擬FTP服務(wù)器:
      /usr/sbin/vsftpd /etc/vsftpd/vsftpd2.conf &
      單獨關(guān)閉虛擬FTP服務(wù)器,用“ps -aux | grep vsftpd”查出進(jìn)程號,再用kill指令殺死虛擬FTP的進(jìn)程。

    6.5、虛擬用戶的配置

    6.5.1、VSFTPD的虛擬用戶介紹

      VSFTPD的本地用戶本身是系統(tǒng)的用戶,除了可以登錄FTP服務(wù)器外,還可以登錄系統(tǒng)使用其他系統(tǒng)資源,而VSFTPD的虛擬用戶則是 FTP服務(wù)的專用用戶,虛擬用戶只能訪問FTP服務(wù)器資源。對于只需要通過FTP對系統(tǒng)有讀寫權(quán)限,而不需要其他系統(tǒng)資源的用戶或情況來說,采用虛擬用戶方式是很適合的。
      VSFTPD的虛擬用戶采用單獨的用戶名/口令保存方式,與系統(tǒng)賬號(passwd/shadow)分離,這大大增強了系統(tǒng)的安全性。 VSFTPD可以采用數(shù)據(jù)庫文件來保存用戶/口令,如hash;也可以將用戶/口令保存在數(shù)據(jù)庫服務(wù)器中,如MySQL等。VSFTPD驗證虛擬用戶,則采用PAM方式。由于虛擬用戶的用戶名/口令被單獨保存,因此在驗證時,VSFTPD需要用一個系統(tǒng)用戶的身份來讀取數(shù)據(jù)庫文件或數(shù)據(jù)庫服務(wù)器以完成驗證,這就是guest用戶,這正如同匿名用戶也需要有一個系統(tǒng)用戶ftp一樣。當(dāng)然,guest用戶也可以被認(rèn)為是用于映射虛擬用戶。
      配置虛擬用戶分為幾部分:guest用戶的創(chuàng)建、用戶/口令的保存、PAM認(rèn)證配置、vsftpd.conf文件設(shè)置等。具體的配置方法,參考下面小節(jié)。注:在后面的例子中,假定存在虛擬用戶xiaotong和xiaowang。

    6.5.2 用戶創(chuàng)建和目錄設(shè)置

      在系統(tǒng)中添加vsftpdguest用戶,作為虛擬用戶在系統(tǒng)中的代表。

      useradd vsftpdguest

      當(dāng)虛擬用戶登錄后,所在的位置為vsftpdguest的自家目錄/home/vsftpdguest。如果要讓虛擬用戶登錄到/var/ftp等其他目錄,修改vsftpdguest的自家目錄即可。

    6.5.3、配置文件的設(shè)置

    6.5.3.1、基本設(shè)置。

      在vsftpd.conf配置文件中,加入以下參數(shù):
      guest_enable=YES
      guest_username=vsftpdguest

    6.5.3.2、虛擬用戶的權(quán)限配置。

      VSFTPD-1.2.0添加了virtual_use_local_privs參數(shù),當(dāng)該參數(shù)激活(YES)時,虛擬用戶使用與本地用戶相同的權(quán)限。當(dāng)此參數(shù)關(guān)閉(NO)時,虛擬用戶使用與匿名用戶相同的權(quán)限,這也就是VSFTPD-1.2.0之前版本對虛擬用戶權(quán)限的處理方法。這兩者種做法相比,后者更加嚴(yán)格一些,特別是在有寫訪問的情形下。默認(rèn)情況下此參數(shù)是關(guān)閉的(NO)。
      下面先介紹virtual_use_local_privs=NO時,即VSFTPD-1.2.0之前版本對虛擬用戶權(quán)限的配置方法:

      ①控制虛擬用戶瀏覽目錄
      如果讓用戶不能瀏覽目錄,但仍可以對文件操作,那么需要執(zhí)行以下二個步驟:一,配置文件中,anon_world_readable_only=YES。二,虛擬用戶目錄的權(quán)限改為只能由vsftpdguest操作:
      [root@hpe45 vsftpd]# chown vsftpdguest.vsftpdguest /home/vsftpdguest
      [root@hpe45 vsftpd]# chmod 700 /home/vsftpdguest
      ②允許虛擬用戶上傳文件
      write_enable=YES
      anon_upload_enable=YES
      ③允許虛擬用戶修改文件名和刪除文件
      anon_other_write_enable=YES
      由于以上選項的設(shè)置同樣會對匿名用戶生效。如果不想匿名用戶趁機擁有同樣的權(quán)限,最好是禁止匿名用戶登錄。

      在VSFTPD-1.2.0中當(dāng)virtual_use_local_privs=YES時,只需write_enable=YES,虛擬用戶就可以就擁有寫權(quán)限。

    6.5.3.3、虛擬用戶的其他配置

      ①限定虛擬用戶在自家目錄。

      chroot_local_user=NO
      chroot_list_enable=YES
      chroot_list_file=/etc/vsftpd.chroot_list
      在/etc/vsftpd.chroot_list文件中加入xiaotong和xiaowang。
      或者,chroot_local_user=YES

      ②虛擬用戶的個人配置。

      如果想讓個別的虛擬用戶擁有自己特別的配置,同樣可以建立虛擬用戶的個人配置文件。在主配置文件中加入:
      user_config_dir=/etc/vsftpd/vsftpd_user_conf
      生成/etc/vsftpd/vsftpd_user_conf目錄,在該目錄下建立與特定虛擬用戶同名的文件:
      [root@hpe45 vsftpd]# mkdir vsftpd_user_conf
      [root@hpe45 vsftpd]# cd vsftpd_user_conf
      [root@hpe45 vsftpd_user_conf]# touch xiaowang
      然后在xiaowang文件中就可以加入專對xiaowang生效的選項設(shè)置了。
      注:如果在個人配置文件中加入chroot_local_user=YES是無效的。

    6.5.3.4、虛擬用戶個人目錄設(shè)置

      大家可以發(fā)現(xiàn),無論是哪個虛擬用戶,登錄后所在的目錄都是/home/vsftpdguest,即都是guest_username用戶的自家目錄。下面,介紹如何為每個虛擬用戶建立自家目錄。
      一種作法是在虛擬用戶的個人配置文件中使用local_root選項指定虛擬用戶的自家目錄。以xiaowang為例,在第上步的基礎(chǔ)上,首先/etc/vsftpd/vsftpd_user_conf/xiaowang文件中加入:
      local_root=/home/xiaowang
      新建xiaowang目錄,并將權(quán)限設(shè)為vsftpdguest:
      [root@hpe45 home]# mkdir xiaowang
      [root@hpe45 home]# chown vsftpdguest.vsftpdguest ./xiaowang

    6.5.4、MySQL保存虛擬用戶

      本節(jié)介紹如何將虛擬用戶的用戶名和口令保存在MySQL的數(shù)據(jù)庫中。這主要分二個部分,一是將用戶和口令保存在數(shù)據(jù)庫,二是設(shè)置相應(yīng)的PAM 認(rèn)證。為了方便論述,做如下假定:數(shù)據(jù)庫vsftpdvu,表users,字段name和passwd用于保存虛擬用戶的用戶名和口令;為了安全,只授權(quán) vsftpdguest讀vsftpdvu數(shù)據(jù)庫的users表。

      1、虛擬用戶的用戶名/口令的保存。這部分在MySQL數(shù)據(jù)庫中完成。首先,創(chuàng)建數(shù)據(jù)庫vsftpdvu以及表users,并插入虛擬用戶xiaotong、xiaowang。執(zhí)行以下命令:
      [root@hpe45 vsftpd]#mysql -p
      mysql>create database vsftpdvu;
      mysql>use vsftpdvu;
      mysql>create table users(name char(16) binary,passwd char(16) binary);
      mysql>insert into users (name,passwd) values ('xiaotong',password('qqmywife'));
      mysql>insert into users (name,passwd) values ('xiaowang',password('ttmywife'));
      mysql>quit

      然后,授權(quán)vsftpdguest只能讀vsftpdvu數(shù)據(jù)庫的users表。執(zhí)行以下命令:
      [root@hpe45 vsftpd]#mysql -u root mysql -p
      mysql>grant select on vsftpdvu.users to vsftpdguest@localhost identified by 'i52serial0';
      mysql>quit

      如果要驗證剛才的操作是否成功可以執(zhí)行下面命令:
      [root@hpe45 vsftpd]#mysql -u vsftpdguest -pi52serial0 vsftpdvu
      mysql>select * from users;
      如果成功,將會列出xiaotong、xiaowang和加密后的密碼。

      2、設(shè)置PAM認(rèn)證。這里我們要用到一個利用mysql進(jìn)行pam驗證的開源項目(http: //sourceforge.net/projects/pam-mysql/)。首先從網(wǎng)站下載它的程序包pam_myql-0.5.tar.gz,復(fù)制到/root目錄中。在編譯安裝之前,要確保mysql-devel的RPM包已經(jīng)安裝在你的機器上,如果沒有請從RHL安裝光盤中安裝該包。然后,執(zhí)行以下命令:
      [root@hpe45 root]#tar xvzf pam_mysql-0.5.tar.gz
      [root@hpe45 root]#cd pam_mysql
      [root@hpe45 pam_mysql]#make
      [root@hpe45 pam_mysql]#make install
      make install這一步可能會出現(xiàn)錯誤,那只好手動將該目錄下生成的pam_mysql.o復(fù)制到/lib/security目錄下。
      接下來,我們要設(shè)置vsftpd的PAM驗證文件。打開/etc/pam.d/vsftpd文件,加入以下內(nèi)容:
      auth required pam_mysql.o user=vsftpdguest passwd=i52serial0 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2
      account required pam_mysql.o user=vsftpdguest passwd=i52serial0 host=localhost db=vsftpdvu table=users usercolumn=name passwdcolumn=passwd crypt=2
      上面涉及到的參數(shù),只要對應(yīng)前面數(shù)據(jù)庫的設(shè)置就可以明白它們的含義。這里需要說明的是crypt參數(shù),crypt=0,口令以明文方式(不加密)保存在數(shù)據(jù)庫中;crypt=1,口令使用UNIX系統(tǒng)的DES加密方式加密后保存在數(shù)據(jù)庫中;crypt=2,口令經(jīng)過MySQL的 password()函數(shù)加密后保存。

    posted on 2007-06-01 10:13 壞男孩 閱讀(7560) 評論(3)  編輯  收藏 所屬分類: Linux

    FeedBack:
    # re: RED HAT Linux 9下面搭建FTP環(huán)境 - VSFTPD安裝
    2008-06-02 16:55 | 臨陣磨槍
    不錯,是個用心學(xué)習(xí)的人,我在網(wǎng)上苦苦尋覓一下午,終于找到點有用的東西  回復(fù)  更多評論
      
    # re: RED HAT Linux 9下面搭建FTP環(huán)境 - VSFTPD安裝
    # re: RED HAT Linux 9下面搭建FTP環(huán)境 - VSFTPD安裝
    2008-06-02 21:59 | 游客甲
    這個才對  回復(fù)  更多評論
      
    主站蜘蛛池模板: 中文字幕亚洲精品| 亚洲区日韩精品中文字幕| 久久久亚洲欧洲日产国码是AV| 久久精品无码免费不卡| 最新欧洲大片免费在线| 中文字幕亚洲无线码| 亚洲午夜理论片在线观看| 成全动漫视频在线观看免费高清版下载| 在线视频观看免费视频18| 亚洲一区二区三区久久| 四虎影视无码永久免费| 免费在线观看黄网| 亚洲中文字幕久久精品无码VA| 毛片免费观看的视频在线| 麻豆亚洲AV永久无码精品久久 | 午夜在线免费视频| 五月婷婷在线免费观看| 亚洲欧洲美洲无码精品VA| 国产亚洲美女精品久久| 丁香花免费完整高清观看| 亚洲性无码AV中文字幕| 免费国产一级特黄久久| 97国免费在线视频| 亚洲国产高清美女在线观看| 男人进去女人爽免费视频国产| 亚洲五月午夜免费在线视频| 小说专区亚洲春色校园| 午夜男人一级毛片免费| 亚洲自偷自拍另类12p| 日韩亚洲国产高清免费视频| 亚洲精品综合久久中文字幕| 国产成人一区二区三区视频免费| 亚洲精品日韩中文字幕久久久| 精品剧情v国产在免费线观看| 亚洲日本成本人观看| 久久精品亚洲福利| 国产精品极品美女自在线观看免费| 免费一级国产生活片| 国内少妇偷人精品视频免费| 久久精品国产亚洲77777| 国产青草视频免费观看97|