vsftpd安裝配置虛擬用戶
當用戶量越來越大,創建更多的系統用戶是不明智的,這時就需要為vsftpd創建虛擬賬戶,但vsftpd虛擬賬戶的數據庫要保存在Berkeley DB格式的數據文件中,所以需要安裝db4-utils工具來創建這樣的數據庫文件
一、系統環境
# cat /etc/issue
CentOS release 6.8 (Final)
Kernel \r on an \m
# uname -a
Linux iZuf62wzdy3bbx4vbp2f6bZ 2.6.32-642.13.1.el6.x86_64 #1 SMP Wed Jan 11 20:56:24 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
二、安裝vsftpd服務
#yum -y install vsftpd
#/etc/init.d/vsftpd restart
#chkconfig vsftpd on
三、創建虛擬用戶數據庫
首先需要創建明文文件,明文文件奇數行為用戶名,偶數行為密碼。使用db_load工具將其轉換為數據庫文件,db_load工具需要通過安裝db4-utils軟件獲得。最後通過修改文件權限以增強資料的安全性
#yum -y install db4-utils
#vim /etc/vsftpd/vlogin
在vlogin文件中寫入用戶名和密碼:
Username01
Password01
Username01
Password01
生成虛擬數據庫文件(vlogin.db)
#db_load -T -t hash -f /etc/vsftpd/vlogin /etc/vsftpd/vlogin.db
#chmod 600 /etc/vsftpd/{vlogin,vlogin.db}
四、設置虛擬賬號驗證
Linux一般通過PAM文件設置賬號的驗證機制,然後通過創建PAM文件,使用新的數據文件進行登錄驗證,PAM文件中的db選項於指定並驗證賬戶和密碼的數據庫文件
# vim /etc/pam.d/vsftpd (此文件中加入如下兩行設置)
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vlogin
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vlogin
五、設置虛擬賬戶共享目錄
因為所有的虛擬賬戶需要映射到一個真實的系統賬戶,所以系統需要添加一個系統賬戶並設置家目錄(此處應用到web上做網站文件上傳賬號,所以必須同WEB用戶一樣www用戶)
useradd -s /sbin/nologin -d /data/www www
六、修改VSFTPD主配置文件
# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES (是否允許 匿名登錄FTP服務器,默認設置為YES允許,即用戶可使用用戶名ftp或anonymous進行ftp登錄,口令為用戶的E-mail地址。如不允許匿名訪問去掉前面#並設置為NO)
local_enable=YES (是否允許本地用戶 ( 即 linux 系統中的用戶帳號) 登錄FTP服務器,默認設置為YES允許, 本地用戶登錄後會進入用戶主目錄,而匿名用戶登錄後進入匿名用戶的下載目錄/var/ftp/pub ;若只允許匿名用戶訪問,前面加上#,可 阻止本地用戶訪問FTP服務器。)
write_enable=YES ( 是否允許本地用戶對 FTP 服務器文件具有寫權限 , 默認設置為 YES 允許 )
local_umask=022 (或其它值,設置本地用戶的文件掩碼 為缺省022 ,也可根據個人喜好將其設置為其他值,默認值為077)
anon_upload_enable=YES (是否允許匿名用戶上傳文件,須將write_enable=YES , 默認設置為YES 允許 )
anon_mkdir_write_enable=YES ( 是否允許匿名用戶創建新文件夾 , 默認設置為 YES 允許 )anon_other_write_enable=NO #禁止匿名用戶進行其他寫操作
dirmessage_enable=YES ( 是否激活目錄歡迎信息功能 , 當用戶用 CMD模式首次訪問服務器上某個目錄時 ,FTP服務器將顯示歡迎信息,默認情況下,歡迎信息是通過該目錄下的 .message 文件獲得的,此文件保存自定義的歡迎信息,由用戶自己建立)
xferlog_enable=YES ( 默認值為 NO 如果啟用此選項,系統將會維護記錄服務器上傳和下載情況的日誌文件,默認情況該日誌文件為/var/log/vsftpd.log,也可以通過下面的 xferlog_file選項對其進行設定。)
connect_from_port_20=YES ( 設定 FTP 服務器將啟用 FTP 數據端口的連接請求 ,ftp-data 數據傳輸 ,21 為連接控制端口 )
xferlog_file=/var/log/vsftpd.log ( 設定系統維護記錄FTP服務器上傳和下載情況的日誌文件,/var/log/vsftpd.log是默認的,也可以另設其它)
chown_uploads=YES ( 設定是否允許 改變 上傳文件的屬主 , 與下面一個設定項配合使用 )
#chown_username=whoever ( 設置想要改變的上傳文件的屬主 , 如果需要 , 則輸入一個系統用戶名, 例如可以把上傳的文件都改成 root 屬主。whoever:任何人)
#xferlog_std_format=YES ( 如果啟用此選項 , 傳輸日誌文件將以標準 xferlog 的格式書寫,該格式的日誌文件默認為/var/log/xferlog,也可以通過xferlog_file選項對其進行設定,默認值為NO)
#dual_log_enable ( 如果添加並啟用此選項,將生成兩個相似的日誌文件,默認在/var/log/xferlog和/var/log/vsftpd.log目錄下。前者是wu_ftpd類型的傳輸日誌,可以利用標準日誌工具對其進行分析;後者是vsftpd類型的日誌)
#syslog_enable ( 如果添加並啟用此選項,則原本應該輸出到/var/log/vsftpd.log中的日誌,將輸出到系統日誌中)
#idle_session_timeout=600 (設置數據傳輸中斷間隔時間,此語句表示空閑的用戶會話中斷時間為600秒,即當數據傳輸結束後,用戶連接FTP服務器的時間不應超過600秒,可以根據實際情況對該值進行修改)
#data_connection_timeout=120 ( 設置數據連接超時時間 , 該語句表示數據連接超時時間為 120 秒, 可根據實際情況對其個修改 )
#nopriv_user=ftpsecure ( 運行 vsftpd 需要的非特權系統用戶,缺省是nobody)
#async_abor_enable=YES ( 如果 FTP client 會下達“async ABOR”這個指令時,這個設定才需要啟用,而一般此設定並不安全,所以通常將其取消)
#ascii_upload_enable=YES ( 大多數 FTP 服務器都選擇用 ASCII 方式傳輸數據 , 將 # 去掉就能實現用 ASCII 方式上傳和下載文件 )
#ascii_download_enable=YES ( 將 # 去掉就能實現用 ASCII 方式下載文件 )
#ftpd_banner=Welcome to blah FTP service. (將#去掉可設置登錄FTP服務器時顯示的歡迎信息,可以修改=後的歡迎信息內容。另外如在需要設置更改目錄歡迎信息的目錄下創建名為 .message 的文件,並寫入歡迎信息保存後,在進入到此目錄會顯示自定義歡迎信息 )
#deny_email_enable=YES ( 可將某些特殊的 email address 抵擋住。如果以anonymous登錄服務器時,會要求輸入密碼,也就是您的email address,如果很討厭某些email address,就可以使用此設定來取消他的登錄權限,但必須與下面的設置項配合 )
#banned_email_file=/etc/vsftpd/banned_emails (當上面的 deny_email_enable=YES 時,可以利用這個設定項來規定那個email address不可登錄vsftpd服務器,此文件需用戶自己創建,一行一個email address即可! )
#chroot_list_enable=YES ( 設置為 NO 時,用戶登錄FTP服務器後具有訪問自己目錄以外的其他文件的權限, 設置為 YES 時 , 用戶被鎖定在自己的 home 目錄中,vsftpd將在下面 chroot_list_file選項值的位置尋找 chroot_list文件,此文件需用戶建立,再將需鎖定在自己home目錄的用戶列入其中,每行一個用戶)
#chroot_list_file=/etc/vsftpd/chroot_list ( 此文件需自己建立 , 被列入此文件的用戶 , 在登錄後將不能切換到自己目錄以外的其他目錄 , 由 FTP 服務器自動地 chrooted 到用戶自己的home目錄下,使得 chroot_list文件中的用戶不能隨意轉到其他用戶的FTP home目錄下,從而有利於FTP服務器的安全管理和隱私保護)
#ls_recurse_enable=YES (是否允許遞歸查詢,大型站點的 FTP 服務器啟用此項可以方便遠程用戶查詢 )
listen=YES ( 如果設置為 YES , 則 vsftpd 將以獨立模式運行,由vsftpd自己監聽和處理連接請求)
listen_port=21 (指定監聽端口,默認不指定端口為21)
#listen_ipv6=YES ( 設定是否支持IPV6)
pam_service_name=vsftpd ( 設置 PAM 外掛模塊提供的認證服務所使用的配置文件名 ,即/etc/pam.d/vsftpd文件,此文件中file=/etc/vsftpd/ftpusers字段,說明了PAM模塊能抵擋的帳號內容來自文件/etc/vsftpd/ftpusers中)
userlist_enable=YES (此選項默認值為NO ,此時ftpusers文件中的用戶禁止登錄FTP服務器;若此項設為YES,則 user_list文件中的用戶允許登錄 FTP服務器,而如果同時設置了 userlist_deny=YES ,則user_list文件中的用戶將不允許登錄FTP服務器,甚至連輸入密碼提示信息都沒有,直接被FTP服務器拒絕)
#userlist_deny=YES/NO (此項默認為YES,設置是否阻扯user_list文件中的用戶登錄FTP服務器)
tcp_wrappers=YES ( 表明服務器使用 tcp_wrappers 作為主機訪問控制方式,tcp_wrappers可以實現linux系統中網絡服務的基於主機地址的訪問控制,在/etc目錄中的hosts.allow和hosts.deny兩個文件用於設置tcp_wrappers的訪問控制,前者設置允許訪問記錄,後者設置拒絕訪問記錄。例如想限制某些主機對FTP服務器192.168.57.2的匿名訪問,編緝/etc/hosts.allow 文件,如在下面增加兩行命令:vsftpd:192.168.57.1ENY 和vsftpd:192.168.57.9ENY 表明限制IP為192.168.57.1/192.168.57.9主機訪問IP為192.168.57.2的FTP服務器,此時FTP服務器雖可以PING通,但無法連接)
chroot_local_user=YES
chroot_list_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=www
pasv_enable=YES
pasv_min_port=20000
pasv_max_port=30000
user_config_dir=/etc/vsftpd/vsftpd_user_conf
==================================================================================
以下為新增
[[email protected] data]# cat /etc/pam.d/vsftpd
auth required/lib64/security/pam_userdb.sodb=/etc/vsftpd/vlogin
account required/lib64/security/pam_userdb.sodb=/etc/vsftpd/vlogin
auth sufficient/lib64/security/pam_userdb.sodb=/etc/vsftpd/vlogin
account sufficient/lib64/security/pam_userdb.sodb=/etc/vsftpd/vlogin
[[email protected] data]# cat /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/xferlog
chown_uploads=YES
chroot_local_user=YES
chroot_list_enable=YES
pam_service_name=vsftpd
userlist_enable=YES
#userlist_deny=NO
#userlist_file=/etc/vsftpd/user_list
tcp_wrappers=YES
guest_enable=YES
guest_username=www
listen=YES
listen_port=21
pasv_enable=YES
pasv_min_port=20000
pasv_max_port=30000
user_config_dir=/etc/vsftpd/vsftpd_user_conf
==============================================================
目錄/etc/vsftpd/vsftpd_user_conf中用戶權限配置:
[[email protected] ~]$ cat /etc/vsftpd/vsftpd_user_conf/ftpusername
local_root=/data/projects/www_data
write_enable=YES
virtual_use_local_privs=YES
參考網站:
http://www.cnblogs.com/helonghl/articles/5533857.html
http://www.cnblogs.com/allenjin/archive/2011/12/03/2274542.html
本文出自 “點滴集” 博客,請務必保留此出處http://1606496.blog.51cto.com/1596496/1929876
vsftpd安裝配置虛擬用戶