ftp是一種古老的明文傳輸協(xié)議,因?yàn)槠涿魑膫鬏數(shù)奶匦?,也出現(xiàn)過(guò)很多重大的危機(jī),進(jìn)而逐漸演變?yōu)橹С旨用軅鬏數(shù)腣SFTP(very?security?FTP),而CentOS默認(rèn)自帶的FTP就為VSFTP。本文主要介紹下VFSTP的傳輸原理與搭建。為了避免干擾,實(shí)驗(yàn)前請(qǐng)關(guān)閉Selinux和IPtables。FTP通過(guò)21端口與Client端進(jìn)行指令傳輸,通過(guò)20端口進(jìn)行數(shù)據(jù)傳輸,根據(jù)工作模式的不同VSFTP分為主動(dòng)模式和被動(dòng)模式2種,大多是情況VSFTP是工作在被動(dòng)模式下。1.Client端以一個(gè)大于1024的隨機(jī)端口向FTP服務(wù)器的21號(hào)端口發(fā)出建立連接請(qǐng)求3.Client端與Server端通過(guò)20端口進(jìn)行數(shù)據(jù)傳輸被動(dòng)模式特性為:2.Server端會(huì)通過(guò)21號(hào)端口給Client端發(fā)送一個(gè)類(lèi)似(xyz,ab)的數(shù)值來(lái)告訴Client端打開(kāi)的隨機(jī)端口,同時(shí)打開(kāi)xyz*256+ab端口了解了VSFTP的工作原理后,下面就來(lái)介紹下VSFTP的搭建,使用命令使用rpm?-qc?vsftp 查看VSFTP的配置文件/etc/logrotate.d/vsftpd 滾動(dòng)日志配置文件Module?插件式認(rèn)證模塊,該文件名必須和/etc/vsftpd/vsftpd.conf中/etc/vsftpd/user_list 配合/etc/vsftpd/vsftpd.conf中的userlist_enable=YES和userlist_deny=YES|NO實(shí)現(xiàn)黑白名單此處需要注意的是:黑白名單的前提是/etc/vsftpd/vsftpd.conf配置文件中userlist_enable=YES,userlist_deny選項(xiàng)默認(rèn)為YES(黑名單),即該文件中出現(xiàn)的用戶(hù)不允許登陸VSFTP,就算手動(dòng)添加userlist_deny=NO(白名單)即只允許該文件中出現(xiàn)的用戶(hù)允許登陸VSFTP,在VSFTP啟動(dòng)時(shí)依然會(huì)去檢查/etc/vsftpd/ftpusers文件并且禁止該文件中的用戶(hù)登錄/etc/vsftpd/vsftpd.conf VSFTP主配置文件,所有的配置選項(xiàng)必須頂格寫(xiě),配置文件中#后帶空格的是說(shuō)明,不帶空格的是注釋掉的配置選項(xiàng)VSFTP的登陸類(lèi)型在/etc/vsftpd/vsftpd.conf配置文件中設(shè)置anonymous_enable=YES,就可以允許虛擬用戶(hù)登陸,即使系統(tǒng)用戶(hù)的設(shè)置為local_enable=NO也可以登陸,但除了查看和下載到本地外,無(wú)任何其他操作權(quán)限anonymous_enable=YES 啟動(dòng)虛擬用戶(hù)登錄anon_other_write_enable=YES? 允許虛擬用戶(hù)有刪除權(quán)限添加完后重啟VSFTP服務(wù),再次嘗試發(fā)現(xiàn)結(jié)果和上次一樣,原因是系統(tǒng)用戶(hù)ftp對(duì)pub目錄沒(méi)有寫(xiě)入權(quán)限更改pub目錄權(quán)限后一切正常,所以*終生效的權(quán)限取決于服務(wù)權(quán)限與系統(tǒng)權(quán)限的交集通過(guò)上面知道匿名用戶(hù)訪(fǎng)問(wèn)的文件目錄為/var/ftp/pub,但是匿名用戶(hù)自己卻認(rèn)為在/目錄下,說(shuō)明默認(rèn)情況下匿名用戶(hù)就是被chroot的另外需要注意的一點(diǎn)是:更改系統(tǒng)權(quán)限的時(shí)候只能針對(duì)var/ftp/下的pub目錄,如果更改的是/var下的ftp目錄權(quán)限,此時(shí)就算配置文件中允許匿名用戶(hù)登錄,訪(fǎng)問(wèn)時(shí)依然會(huì)提示你輸入用戶(hù)名和密碼系統(tǒng)用戶(hù)登錄配置1.添加用戶(hù)時(shí)使用命令useradd?-s?/sbin/nologin ?userName 禁止該用戶(hù)登錄系統(tǒng)需要說(shuō)明的一點(diǎn)是,我們看到/etc/vsftpd/vsftpd.conf配置文件中chroot_list_enable=YES和chroot_list_file=/etc/vsftpd/chroot_list兩項(xiàng)默認(rèn)也是被注銷(xiāo)的,它的功能是指定一個(gè)chroot_list文件,只有寫(xiě)在該文件中的用戶(hù)會(huì)被chroot,其他用戶(hù)不會(huì)被chroot,該功能和chroot_local_user選項(xiàng)不能同時(shí)存在顯然,無(wú)論是匿名用戶(hù)還是系統(tǒng)用戶(hù),安全性上都存在一定隱患,所以對(duì)于安全性要求較高的場(chǎng)景還可以使用虛擬用戶(hù)的方式,它是對(duì)一個(gè)文件中存放的用戶(hù)及密碼進(jìn)行認(rèn)證,認(rèn)證通過(guò)后再將其重映射為一個(gè)虛擬用戶(hù),存放用戶(hù)及密碼的文件可以是hash編碼的文件,也可以是關(guān)系型數(shù)據(jù)庫(kù)首先在/etc/vsftpd/vsftpd.conf配置文件中添加guest_enable=YES選項(xiàng),它的作用是將一個(gè)非匿名用戶(hù)重映射為系統(tǒng)用戶(hù),默認(rèn)為ftp,或者可以指定映射的系統(tǒng)用戶(hù)名,被指定的系統(tǒng)用戶(hù)必須存在,且在/home/下有和該用戶(hù)同名的目錄1.輸入useradd -s /sbin/nologin vsftp 創(chuàng)建用戶(hù)且不允許登錄系統(tǒng)3.chown vsftp:vsftp /home/vsftp 修改目錄所有權(quán)1.虛擬用戶(hù)默認(rèn)繼承主配置文件中匿名用戶(hù)的權(quán)限,只有在開(kāi)啟匿名用戶(hù)權(quán)限情況下虛擬用戶(hù)才有修改權(quán)限2.虛擬用戶(hù)是映射為一個(gè)系統(tǒng)用戶(hù),必須設(shè)置為?local_enable=YES,否則當(dāng)anonymous_enable=NO時(shí)將無(wú)法登陸,這點(diǎn)和當(dāng)local_enable=NO時(shí)匿名用戶(hù)仍可登錄不一樣,雖然匿名用戶(hù)是映射為系統(tǒng)的ftp用戶(hù)在生產(chǎn)環(huán)境中推薦使用安全性更高的虛擬用戶(hù)登陸,但有時(shí)我們有希望對(duì)虛擬用戶(hù)的權(quán)限可以進(jìn)行劃分,允許某些用戶(hù)有特定權(quán)限,這就需要用到user_config_dir配置項(xiàng)了通過(guò)該選項(xiàng)說(shuō)明,可以知道如果需要對(duì)虛擬用戶(hù)進(jìn)行權(quán)限劃分的步驟為:4.在/etc/vsftpd/user_conf ?中為每個(gè)虛擬用戶(hù)創(chuàng)建一個(gè)與用戶(hù)名相同的配置文件,此處以asd和qwe用戶(hù)為例驗(yàn)證虛擬用戶(hù)權(quán)限<p font-size:14px;background-color:#ffffff;"="" style="box-sizing: border-box; margin-top: 5px; margin-bottom: 5px; padding: 0px; word-break: break-all; font-family: 微軟雅黑; font-size: 12px; white-space: normal; background-color: rgb(255, 255, 255); overflow-wrap: break-word; color: rgb(44, 44, 44);">本文出自 “兔樣兔森破” 博客http://arkling.blog.51cto.com/2844506/1860925