vsftpd 流行ftp配置記錄說明

jopen 10年前發布 | 35K 次閱讀 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 虛擬用戶配置:

  1. 創建一個虛擬用戶文件,包含可連接的虛擬用戶

  2. 修改vsftpd.conf配置文件,添加虛擬用戶相關的配置

  3. 配置pam認證

具體詳細過程:

  1. 虛擬用戶文件/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既可以下載也能上傳:

  1. 激活每個用戶一個配置文件的功能,在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

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!