vsftpd安裝及虛擬用戶配置


服務器環境:CentOS Linux release 7.4   3.10.0-693.5.2.el7.x86_64

服務器軟件:vsftpd-3.0.2

FTP工作模式:主動模式和被動模式

主動模式

被動模式

vsftpd的配置文件

/etc/vsftpd/vsftpd.conf  主配置文件

/etc/vsftpd/ftpusers  黑名單

/etc/vsftpd/vsftpd_conf_migrate.sh  遷移腳本

/etc/vsftpd/user_list  用戶列表,與userlist_enbale和userlist_deny選項密切相關,詳見http://blog.csdn.net/bluishglc/article/details/42273197

安裝vsftpd

# yum -y install vsftpd

安裝libdb-utils

安裝Berkeley DB工具,用於生成虛擬用戶認證文件

# yum -y install libdb-utils    #CentOS7是libdb-utils
# yum -y install db4 db4-utils    #CentOS6是db4-utils

宿主用戶

創建宿主用戶,即guest_username,所有虛擬用戶都是映射宿主用戶的目錄權限。

# useradd -d /var/vsftp -s /sbin/nologin vsftp

主配置文件

# vi /etc/vsftpd/vsftpd.conf

#關閉匿名訪問
anonymous_enable=NO
#啟用本地系統用戶,包括虛擬用戶
local_enable=YES
#允許執行FTP命令,如果禁用,將不能進行上傳、下載、刪除、重命名等操作
write_enable=YES
#本地用戶umask值
local_umask=022
dirmessage_enable=YES
#啟用日志
xferlog_enable=YES
xferlog_std_format=YES
#關閉ftp-data端口,相當於不使用主動模式
connect_from_port_20=NO
#限制用戶不能離開FTP主目錄,啟用並設置例外用戶清單
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
#使用ipv4進行監聽
listen=YES
listen_ipv6=NO

#pam認證文件名稱,位於/etc/pam.d/
pam_service_name=vsftpd
#啟用全局用戶例外清單
userlist_enable=YES
#啟用tcp封裝
tcp_wrappers=YES

#虛擬用戶權限是否與本地用戶相同。為NO時,將與匿名用戶的權限相同,在每個虛擬用戶配置文件里設置匿名用戶的選項等於虛擬用戶的權限
virtual_use_local_privs=NO #啟用guest后,所有非匿名用戶將映射到guest_username進行訪問,包括本地系統用戶也不能使用,並且轉換成一個虛擬用戶,與其他虛擬用戶的配置方法一樣 guest_enable
=YES guest_username=vsftp #虛擬用戶配置文件目錄 user_config_dir=/etc/vsftpd/vuser_conf
#啟用pasv模式
pasv_enable
=YES
pasv_min_port
=33000
pasv_max_port=34000

 主配置文件可參考:man vsftpd.conf或https://security.appspot.com/vsftpd/vsftpd_conf.html

chroot_list文件

chroot()會檢查chroot_list文件

# touch /etc/vsftpd/chroot_list

虛擬用戶列表

奇行為用戶名,偶行為密碼

# vi /etc/vsftpd/vuser
ftpserver
111111

虛擬用戶認證文件

# db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/vuser.db
# chmod 600 /etc/vsftpd/vuser.db

虛擬用戶認證配置

注釋掉其他本地用戶認證的內容,因為啟用了guest_enable后,本地用戶將失效,所有非匿名用戶變成虛擬用戶

# cp /etc/pam.d/vsftpd{,.bak}
# vi /etc/pam.d/vsftpd
auth required /lib64/security/pam_userdb.so db
=/etc/vsftpd/vuser account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser

虛擬用戶配置文件

# mkdir /etc/vsftpd/vuser_conf/
# vi /etc/vsftpd/vuser_conf/ftpserver  #文件名與對應FTP虛擬用戶一致
local_root
=/var/vsftp/ftpserver  #虛擬用戶主目錄,用戶和組必須指定為宿主用戶vsftp #vsftpd主配置文件中已規定虛擬用戶權限與匿名用戶一致,因此以下針對匿名用戶的權限配置即為虛擬用戶的權限 anon_umask=077 anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES

虛擬用戶主目錄和權限

最新版vsftpd不允許用戶主目錄有w權限,因此在主目錄下新建一個子目錄,賦予700權限。所有上傳、下載、刪除、重命名等操作只能在子目錄中進行

# mkdir -p /var/vsftp/ftpserver/newdir
# chown -R vsftp.vsftp /var/vsftp
# chmod -R 500 /var/vsftp
# chmod -R 700 /var/vsftp/newdir

SELINUX

# setsebool -P ftpd_full_access on

防火牆

# iptables -I INPUT -p tcp --dport 21 -j ACCEPT  #FTP連接端口
# iptables -I INPUT -p tcp --dport 33000:34000 -j ACCEPT  #pasv模式下的隨機端口
# iptables-save >/etc/sysconfig/iptables  #保存防火牆配置

重啟

# systemctl restart iptables.service
# systemctl restart vsftpd.service

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM