一、Vsftpd 服務(wù)器簡介
? ? ? ? 目前主流的FTP服務(wù)器端軟件包括: Vsftpd寸宏、ProF TPD PureFTPd宁炫、Wuftpd、Server-U FTP氮凝、FileZilla Server等軟件羔巢,其中Unix/Linux 使用較為廣泛的FTP服務(wù)器端軟件為Vsftpd。
? ? ? ? 非常安全的FTP服務(wù)進程(Very Secure FTP daemon,Vsftpd)竿秆,Vsftpd在Unix/Linux發(fā)行版中最主流的FTP服務(wù)器程序启摄,優(yōu)點小巧輕快,安全易用幽钢、穩(wěn)定高效歉备、滿足企業(yè)跨部門、多用戶的使用(1000 用戶)等匪燕。
? ? ? ? Vsftpd基于GPL開源協(xié)議發(fā)布,在中小企業(yè)中得到廣泛的應(yīng)用蕾羊,Vsftpd可以快速上手,基于Vsftpd虛擬用戶方式,訪問驗證更加安全帽驯。Vsftpd 還可以基于MYSQL數(shù)據(jù)庫做安全驗證龟再,多重安全防護。
二尼变、Vsftpd 服務(wù)器安裝配置
? ? ? ?Vstftpd服務(wù)器端安裝有兩種方法利凑,一是基于 YUM方式安裝,二是基于源碼編譯安裝嫌术,最終實現(xiàn)效果完全致截碴,本文采用YUM安裝Vsftpd,步驟如下:
?(1)在命令行執(zhí)行如下命令:
yum install vsftpd* -y
(2) ?打印vsftpd安裝后的配置文件路徑蛉威、啟動Vsftpd服務(wù)及查看進程是否啟動日丹,如下圖所示:
rpm -ql vsftpdlmore
systemctl restart vsftpd.service
ps -ef lgrep vsftpd
(3)Vsftpd.conf默認配置文件詳解如下:
anonymous enable=YES ? ?#開啟匿名用戶訪問;
local_enable=YES ? ? ? ? #啟用本地系統(tǒng)用戶訪問蚯嫌;
write_enable=YES ? ? ? ? #本地系統(tǒng)用戶寫入權(quán)限哲虾;
local_umask=022 ? ? ? ? ? #本地用戶創(chuàng)建文件及目錄默認權(quán)限掩碼;
dirmessage_enable=YES ? ? #打印目錄顯示信息择示,通常用于用戶第一次訪問目錄時束凑,信息提示;
xferlog_enable=YES ? ? ? #啟用上傳/下載日志記錄栅盲;
connect_from_port_20=YES ? ?#FTP使用20端口進行數(shù)據(jù)傳輸:
xferlog_std_format=YES ? ? ? #日志文件將根據(jù)xferlog的標(biāo)準(zhǔn)格式寫入:
listen=NO ? ? ? ? ? ? ? ? ? ? ? ? #Vsftpd不以獨立的服務(wù)啟動汪诉,通過Xinetd服務(wù)管理,建議改成YES谈秫;
listen_ipv6=YES ? ? ? ? ? ? ? ? ? #啟用IPV6監(jiān)聽扒寄;
pam_service_name=vsftpd ? ? ?#登錄FTP服務(wù)器,依據(jù)/etc/pam.d/vsftpd中內(nèi)容進行認證拟烫;
userlist_enable=YES ? ? ? ? ?#vsftpd.user_list 和ftpusers 配置文件里用戶禁止訪問FTP该编;
tcp_wrappers=YES ? ? ? ? ? #設(shè)置vsftpd與tcp_wrapper結(jié)合進行主機的訪問控制,Vsftpd服務(wù)器檢查/etc/hostsallow和/etc/hosts硕淑,deny中的設(shè)置课竣,來決定請求連接的主機嘉赎,是否允許訪問該FTP服務(wù)器。
(4) ?啟動Vsftpd服務(wù)后于樟,通過Windows客戶端資源管理器訪問Vsftp服務(wù)器端公条,如下所示:
ftp://192.168.111.131/
FTP主被動模式,默認為主動模式迂曲,設(shè)置為被動模式使用端口方法如下:
pasv_enable=YES
pasv_min_port=60000
pasv_max_port=60100
三靶橱、Vsftpd 匿名用戶配置
? ? ? ? Vsftpd默認以匿名用戶訪問,匿名用戶默認訪問的FTP服務(wù)器端路徑為:/var/ftp/pub奢米,匿名用戶只有查看權(quán)限抓韩,無法創(chuàng)建、刪除鬓长、修改谒拴。如需關(guān)閉FTP匿名用戶訪問,需修改配置文件/etc/vsftpd/vsftpd.conf涉波,將anonymous_enable=YES修改為anonymous_enable=NO英上,重啟Vsftpd服務(wù)即可。
? ? ? ? 如果允許匿名用戶能夠上傳啤覆、下載刪除文件苍日,需在/etc/vsftpd/vsftpd.conf 配置文件中加入如下代碼:
anon_upload_enable=YES ?#允許匿名用戶上傳文件
anon_mkdir_write_enable=YES ?#允許匿名用戶創(chuàng)建目錄
anon_other_write_enable=YES ?#允許匿名用戶其他寫入權(quán)限
? ? ? ? ?匿名用戶完整vsftpd.conf配置文件代碼如下:
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
? ? ? ? 由于默認Vsftpd匿名用戶有兩種:anonymous、ftp窗声,所以匿名用戶如果需要上傳文件相恃、刪除及修改等權(quán)限,需要ftp用戶對/var/ftp/pub目錄有寫入權(quán)限笨觅,使用如下chown和chmod任意一 種即可拦耐,設(shè)置命令如下:
chown -R ftp ?pub/
chmod ?O+W ?pub/
? ? ? ?如上Vsftpd.conf配置文件配置完畢,同時權(quán)限設(shè)置完见剩,重啟vsftpd服務(wù)即可杀糯,通過windows客戶端訪問,能夠上傳文件苍苞、刪除文件固翰、創(chuàng)建目錄等操作,如下所示:
四羹呵、Vsftpd 系統(tǒng)用戶配置
? ? ? ? ?Vsftpd匿名用戶設(shè)置完畢,匿名用戶,任何人都可以查看FTP服務(wù)器端的文件骂际、目錄,甚至可以修改担巩、刪除方援,此方案如適合存放私密文件在FTP服務(wù)器端,如何保證文件或者目錄專屬擁有者呢涛癌,Vsftpd系統(tǒng)用戶可以實現(xiàn)該需求犯戏。
? ? ? ? 實現(xiàn)Vsftpd系統(tǒng)用戶方式驗證,只需在Linux系統(tǒng)中創(chuàng)建多個用戶即可拳话,創(chuàng)建用戶使用useradd先匪,同時給用戶設(shè)置密碼,即可通過用戶和密碼登錄FTP,進行文件上傳弃衍、下載呀非、刪除等操作。Vsftpd 系統(tǒng)用戶實現(xiàn)方法步驟如下:
?(1) ?Linux系統(tǒng)中創(chuàng)建系統(tǒng)用戶kin1镜盯、kin2, 分別設(shè)置密碼為123456:
useradd ?kin1
useradd ?kin2
echo 123456[passwd -stdin kin1
echo 123456[passwd -stdin kin2
(2) ?修改vsftpd.conf配置文件代碼如下:
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
(3)通過Windows資源客戶端驗證岸裙,使用kin1、kin2用戶登錄FTP服務(wù)器速缆,即可上傳文件降允、刪除文件、下載文件艺糜,kin1剧董、kin2系統(tǒng)用戶上傳文件的家目錄在/home/kin1、/home/kin2 下破停,如圖所示:
五翅楼、Vsftpd 虛擬用戶配置
? ? ? ? ?如果基于Vsftpd系統(tǒng)用戶訪問FTP服務(wù)器,系統(tǒng)用戶越多越不利于管理,而且不利于系統(tǒng)安全管理真慢,鑒于此毅臊,為了能更加的安全使用VSFTPD,需使用Vsftpd虛擬用戶方式黑界。
? ? ? ? Vsftpd虛擬用戶原理:虛擬用戶就是沒有實際的真實系統(tǒng)用戶管嬉,而是通過映射到其中一個真實用戶以及設(shè)置相應(yīng)的權(quán)限來實現(xiàn)訪問驗證,虛擬用戶不能登錄linux系統(tǒng)园爷,從而讓系統(tǒng)更加的安全可靠宠蚂。
? ? ? ? Vsftpd虛擬用戶企業(yè)案例配置步驟如下:
(1)安裝Vsftpd虛擬用戶需用到的軟件及認證模塊:
yum install pam* libdb-utils libdb* -- skip-broken -y
(2)創(chuàng)建虛擬用戶臨時文件/etc/vsftpd/ftpusers.txt, 新建虛擬用戶和密碼,其中kin001、kin002為虛擬用戶名童社,123456 為密碼求厕,如果有多個用戶,依次格式填寫即可:
kin001
123456
kin002
123456
(3)生成Vsftpd虛擬用戶數(shù)據(jù)庫認證文件扰楼,設(shè)置權(quán)限700:
db load ?-T ?-t ?hash ?-f ?/etc/vsttpd/ftpusers.txt
/etc/vsftpd/vsftpd_login.db
chmod 700 /etc/vsftpd/vsftpd_login.db
(4) ?配置PAM認證文件呀癣,/etc/pam.d/vsftpd 行首加入如下兩行:
auth ?required ?pam_userdb.so db =/etc/vsftpd/vsftpd_login
account ?required ?pam_userdb.so db=/etc/vsftpd/vsftpd_login
(5)所有Vsftpd虛擬用戶需要映射到個系統(tǒng)用戶,該系統(tǒng)用戶不需要密碼弦赖,也不需要登錄项栏,主要用于虛擬用戶映射使用,創(chuàng)建命令如下:
useradd ?-s s /sbin/nologin ?ftpuser
(6)完整vsftpd.conf配置文件代碼如下:
#global config Vsftpd 2019
anonymous_enable=YES
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port 20=YES
xferlog_std_format=YES
listen=NO
listen_ipv6=YES
userlist_enable=YES
tcp_wrappers=YES
#config virtual user FTP
pam_service_name=vsftpd
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/vsftpd_user_conf
virtual_use_local_privs=YES
? ? ? ? ?如上Vsftpd虛擬用戶配置文件參數(shù)詳解:
#config virtual user FTP
pam service_name=vsftpd ?#虛擬用戶啟用pam認證
guest_enable=YES ?#啟用虛擬用戶
guest_username=ftpuser ?#映射虛擬用戶至系統(tǒng)用戶ftpuser
user_config_dir=/etc/vsftpd/vsftpd_user_conf ? ? #設(shè)置虛擬用戶配置文件所在的目錄
virtual_use_local_privs=YES ?#虛擬用戶使用與本地用戶相同的權(quán)限
(7) ?至此蹬竖,所有虛擬用戶共同基于/home/ftpuser主目錄實現(xiàn)文件上傳與下載沼沈,可以在/etc/vsftpd/vsftpd_user_conf目錄創(chuàng)建虛擬用戶各自的配置文件,創(chuàng)建虛擬用戶配置文件主目錄:
mkdir -p /etc/vsftpd/vftpd_user_conf/
(8)如下分別為虛擬用戶 kin001流酬、kin002 用戶創(chuàng)建配置文件:
vim /etc/vsftpd/vsftpd_user_conf/kin001,同時創(chuàng)建私有的虛擬目錄列另,代碼如下:
local_root=/home/ftpuser/kin001
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
vim /etc/vsftpd/vftpd_user_conf/kin002芽腾,同時創(chuàng)建私有的虛擬目錄,代碼如下:
local_root=/home/ftpuser/kin002
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
虛擬用戶配置文件內(nèi)容詳解:
local_root=/home/ftpuser/kin002 ?#kin002虛擬用戶配置文件路徑;
write_enable=YES ?#允許登陸用戶有寫權(quán)限;
anon_world_readable_only=YES ?#允許匿名用戶下載页衙,然后讀取文件;
anon_upload_enable=YES ?#允許匿名用戶上傳文件權(quán)限摊滔,只有在
write_enable=YES ? ? ? #時該參數(shù)才生效;
anon_mkdir_write_enable=YES ?#允許匿名用戶創(chuàng)建目錄,只有在
write_enable=YES ? ?#時該參數(shù)才生效;
anon_other_write_enable=YES ?#允許匿名用戶其他權(quán)限店乐,例如刪除艰躺、重命名等。
(9) ?創(chuàng)建虛擬用戶各自虛擬目錄:
mkdir -p /home/ftpuser/{kin001,kin002} ; chown -R ftpuser:ftpuser ?/home/ftpuser
重啟vsftpd服務(wù)眨八,通過windows客戶端管理器登陸vsftpd服務(wù)器腺兴,測試結(jié)果如圖所示: