天天看點

VSFTPD虛拟使用者配置

       Linux(Ubuntu Server 11.10) FTP伺服器-VSFTPD虛拟使用者配置

    VSFTP是一個基于GPL釋出的類Unix系統上使用的FTP伺服器軟體,它的全稱是Very Secure FTP 從此名稱可以看出來,編制者的初衷是代碼的安全。安全性是編寫VSFTP的初衷,除了這與生俱來的安全特性以外,高速與高穩定性也是VSFTP的兩個重要特點。

在速度方面:使用ASCII代碼的模式下載下傳資料時,VSFTP的速度是Wu-FTP的兩倍,如果Linux主機使用2.4.*的核心,在千兆以太網上的下載下傳速度可達86MB/S。

在穩定方面:VSFTP就更加的出色,VSFTP在單機(非叢集)上支援4000個以上的并發使用者同時連接配接,根據RedHat的Ftp伺服器(ftp.redhat.com)的資料,VSFTP伺服器可以支援15000個并發使用者

本文主要介紹一下VSFTP虛拟使用者模式配置方法:

安裝VSFTP:sudo apt-get install vsftpd

安裝DB軟體包:sudo apt-get install db-util

配置虛拟使用者(進入/etc/vsftpd下操作)

1. 建立虛拟使用者密碼庫檔案

# vim vusers.list (第一行寫 使用者名,第二行寫 密碼,儲存退出)

user1

user1pwd

user2

user2pwd

2. 生成vsftpd的認證檔案

# db_load -T -t hash -f vusers.list /etc/vsftpd/vsftpd_login.db (生成認證檔案)

# chmod 600 /etc/vsftpd/vsftpd_login.db (賦權)

3. 建立虛拟使用者所需的PAM配置檔案

# vim /etc/pam.d/vsftpd (加入下面内容,其他全部注釋。)

auth required pam_userdb.so db=/etc/vsftpd/vsftpd_login

account required pam_userdb.so db=/etc/vsftpd/vsftpd_login

4. 建立虛拟使用者要通路的目錄并設定權限

# useradd -d /home/ftp -s /sbin/nologin virtual

# chmod 777 /home/ftp/

在 vsftpd.conf 添加以下參數配置項:

guest_enable=YES

guest_username=virtual

5. 對不同虛拟使用者設定不同權限

# mkdir /etc/vsftpd/vsftpd_user_conf

# vim /etc/vsftpd/vsftpd_user_conf/user1 (建立使用者單獨配置檔案,檔案名就是使用者名)

local_root=/home/ftp/user1 #這裡的虛拟使用者目錄可以根據實際情況修改

write_enable=YES

virtual_use_local_privs=YES #虛拟使用者具有寫權限(上傳、下載下傳、删除、重命名)

user_config_dir=/etc/vsftpd/vsftpd_user_conf

6. 禁锢FTP使用者在宿主目錄

将需要禁锢的使用者名寫入“vsftpd.chroot_list”檔案

# vim /etc/vsftpd.chroot_list

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd.chroot_list

下面補充說明一下ftp被動連接配接端口設定,FTP協定有兩種工作方式:PORT方式和PASV方式,中文意思為主動式和被動式。

PORT(主動)方式的連接配接過程是:用戶端向伺服器的FTP端口(預設是21)發送連接配接請求,伺服器接受連接配接,建立一條指令鍊路。當需要傳送資料時,用戶端在指令鍊路上用PORT指令告訴伺服器:“我打開了XXXX端口,你過來連接配接我”。于是伺服器從20端口向用戶端的XXXX端口發送連接配接請求,建立一條資料鍊路來傳送資料。

PASV(被動)方式的連接配接過程是:用戶端向伺服器的FTP端口(預設是21)發送連接配接請求,伺服器接受連接配接,建立一條指令鍊路。當需要傳送資料時,伺服器在指令鍊路上用PASV指令告訴用戶端:“我打開了XXXX端口,你過來連接配接我”。于是用戶端向伺服器的XXXX端口發送連接配接請求,建立一條資料鍊路來傳送資料。

如果FTP用戶端軟體設定的是被動連接配接,那麼VSFTP配置檔案需要設定被動端口:

pasv_min_port=3000

pasv_max_port=3010

如果開啟iptables防火牆,需要配置:

iptables -A INPUT -p tcp -s 0/0 --dport 3000 -j ACCEPT

iptables -A INPUT -p tcp -s 0/0 --dport 3000:3010 -j ACCEPT

如果開始SELinux,需要解除selinux阻止:

#setsebool -P ftpd_disable_trans 1

#service vsftpd restart

備注:virtual_use_local_privs參數

當virtual_use_local_privs=YES時,虛拟使用者和本地使用者有相同的權限;

當virtual_use_local_privs=NO時,虛拟使用者和匿名使用者有相同的權限,預設是NO。

當virtual_use_local_privs=YES,write_enable=YES時,虛拟使用者具有寫權限(上傳、下載下傳、删除、重命名)。

當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=YES,

anon_upload_enable=YES時,虛拟使用者不能浏覽目錄,隻能上傳檔案,無其他權限。

當virtual_use_local_privs=NO,write_enable=YES,anon_world_readable_only=NO,

anon_upload_enable=NO時,虛拟使用者隻能下載下傳檔案,無其他權限。

anon_upload_enable=YES時,虛拟使用者隻能上傳和下載下傳檔案,無其他權限。

anon_mkdir_write_enable=YES時,虛拟使用者隻能下載下傳檔案和建立檔案夾,無其他權限。

anon_other_write_enable=YES時,虛拟使用者隻能下載下傳、删除和重命名檔案,無其他權限。

繼續閱讀