vsftpd per-IP方式配置: 須要啓用vsftpd的tcp_wrappers集成功能,從版本1.1.3開始支持。linux
編譯時修改builddefs.h文件,將#undef VSF_BUILD_TCPWRAPPER改爲#define VSF_BUILD_TCPWRAPPERS並從新編譯以啓用該功能。以後修改vsftpd.conf配置文件:數據庫
tcp_wrappers=YES安全
以後須要一個單獨的tcp_wrapper配置文件,並添加以下內容到/etc/hosts.allow文件中,在bsd類的unix系統中,如:服務器
vsftpd: 192.168.1.3: setenv VSFTPD_LOAD_CONF /etc/vsftpd_tcp_wrap.confapp
vsftpd: 192.168.1.4: DENYtcp
在linux中,要改爲:ui
vsftpd: 192.168.1.3: export VSFTPD_LOAD_CONF=/etc/vsftpd_tcp_wrap.confspa
vsftpd: 192.168.1.4: DENYunix
第一行: 若是從192.168.1.3連進來的客戶端,vsftpd進程會把/etc/vsftpd_tcp_wrap.conf文件做爲該鏈接會話的配置,而且這裏的配置選項優先級高於默認的vsftpd配置文件。這個特定很是的強大,能夠根據ip地址或一個網段進行指定特定的訪問權限控制,或者使一些地址不受max_clients=0的限制,還能夠增大或減小一些網段或ip的帶寬。進程
第二行:禁止192.168.1.4的客戶端鏈接。這能夠把那些搗亂的客戶端拒之門外,並不須要使用xinetd來作。
vsftpd 虛擬用戶配置:
建立一個虛擬用戶文件,包含可鏈接的虛擬用戶
修改vsftpd.conf配置文件,添加虛擬用戶相關的配置
配置pam認證
具體詳細過程:
虛擬用戶文件/etc/vsftpd/login.txt,內容示例:
tom #username
foo #tom's password
fred #username
bar # user fred's password
執行db_load -T -t hash -f logins.txt /etc/ftpusers.db 生成用戶數據庫文件,爲了安全: chmod 600 /etc/ftpusers.db
2. vsftpd.conf 配置文件內容:guest_enable,guest_username爲必須項,login.txt中的用戶,會以guest_username的身份訪問ftp服務器。
anonymous_enable=NO
local_enable=YES
write_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO
chroot_local_user=YES
guest_enable=YES
guest_username=realuser
listen=YES
listen_port=10021
pasv_min_port=30000
pasv_max_port=30999
3. pam認證配置,通常爲/etc/pam.d/vsftpd或/etc/pam.d/ftp,若是配置文件中指定了pam_service_name=vsftpd,則爲前者。
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
注意:虛擬用戶只能訪問全局可度的文件和目錄
以上爲簡單的ftp虛擬用戶配置,下面是更爲複雜的ftp配置方式,假如需用區分虛擬用戶,以分別進行權限控制,就須要該方式:
爲每一個用戶指定一個配置文件,假若有tom和fred兩個用戶,但願tom只能下載不能上傳,而fred既能夠下載也能上傳:
激活每一個用戶一個配置文件的功能,在vsftpd.conf文件中添加:
user_config_dir=/etc/vsftpd_user_conf #須要建立該目錄:mkdir /etc/vsftpd_user_conf
2.使tom能夠讀取ftp服務器/下的全部文件
以前說虛擬用戶只能訪問全局可讀的文件和目錄,下面這種方式可使tom訪問到並不是全局可讀的文件:
echo "anon_world_readable_only=NO" > /etc/vsftpd_user_conf/tom
這樣就能夠覆蓋全局配置中的anon_world_readable_only選項,經過這種方式,能夠爲不一樣的虛擬用戶賦予不一樣的訪問權限。
3.使fred能夠上傳和下載
echo "anon_world_readable_only=NO" > /etc/vsftpd_user_conf/fred
echo "write_enable=YES" >> /etc/vsftpd_user_conf/fred
echo "anon_upload_enable=YES" >> /etc/vsftpd_user_conf/fred