vsftpd 流行ftp配置記錄說明
vsftpd per-IP方式配置: 需要啟用vsftpd的tcp_wrappers集成功能,從版本1.1.3開始支持。
編譯時修改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.conf
vsftpd: 192.168.1.4: DENY
在linux中,要改成:
vsftpd: 192.168.1.3: export VSFTPD_LOAD_CONF=/etc/vsftpd_tcp_wrap.conf
vsftpd: 192.168.1.4: DENY
第一行: 如果從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=virtual
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