vsftpd:Linux Ubuntu上架設(shè)FTP
操作系統(tǒng):Ubuntu (GNU/Linux)
為了在機(jī)子上架設(shè)ftp服務(wù)器,我們需要安裝ftp服務(wù)器軟件。Linux下具有代表性的ftp服務(wù)器軟件有Wu-FTP,ProFTP和Vsftp。
Wu-FTP(Washington University FTP)由美國(guó)華盛頓大學(xué)開(kāi)發(fā)。它的功能強(qiáng)大,配置較復(fù)制。由于開(kāi)發(fā)時(shí)間較早,應(yīng)用十分廣泛,也因此成為黑客們主要的攻擊目標(biāo)。
ProFTP針對(duì)Wu-FTP的弱項(xiàng)而開(kāi)發(fā),在安全性方面進(jìn)行了改進(jìn),并提供了一些Wu-FTP沒(méi)有的功能,大大簡(jiǎn)化了架設(shè)和管理FTP服務(wù)器的工作。
Vsftp在安全性,高性能及穩(wěn)定性3個(gè)方面上有上佳的表現(xiàn)。它提供的主要功能包括虛擬IP設(shè)置,虛擬用戶,standalone(可自行單獨(dú)啟動(dòng)的daemon),inetd操作模式(由一支特殊的super daemon管理),強(qiáng)大的單用戶設(shè)置能力以及帶寬限流等。接下來(lái)我們主要講解在ubuntu上如何架設(shè)vsftpd。
vsftpd的安裝:
在ubuntu可直接通過(guò)apt安裝 sudo apt-get install vsftpd
安裝完畢,檢查vsftpd進(jìn)程是否已啟動(dòng),可以查看進(jìn)程或者查看監(jiān)聽(tīng)端口
ps -eaf|grep vsftpd
vsftpd進(jìn)程已開(kāi)啟
netstat -tnl|grep :21
端口21正在被監(jiān)聽(tīng)
vsftpd的配置文件:
在ubuntu中,vsftpd的主要配置文件分布如下:
/etc/vsftpd.conf vsftpd服務(wù)器的配置文件
/usr/sbin/vsftpd vsftpd服務(wù)器的進(jìn)程文件
/etc/pam.d/vsftpd vsftpd服務(wù)器的PAM接口配置文件
/var/ftp vsftpd服務(wù)器匿名用戶的工作目錄
配置vsftpd服務(wù)器:
vsftpd服務(wù)器的配置文件以及各參數(shù)代表的意義如下:
/etc/vsftpd.conf
————————————————vsftpd.conf————————————————
listen=YES
listen_ipv6=YES # listen=YES和listen_ipv6=YES 設(shè)為YES表示將以獨(dú)立的方式運(yùn)行(可自行單獨(dú)啟動(dòng)的daemon),前者監(jiān)聽(tīng)ipv4,后者監(jiān)聽(tīng)ipv6,但兩者不能同時(shí)在一個(gè)配置文件中設(shè)置
anonymous_enable=YES # 表示允許匿名用戶登錄FTP服務(wù)器
anon_world_readable_only=NO # 只要ftp用戶在操作系統(tǒng)中有讀權(quán)限,就可以下載文件
anon_root=/var/ftp/anonymous # 匿名用戶登錄后進(jìn)入到/var/ftp/anonymous目錄中,可以下載該目錄中的文件
anon_uploads_enable=YES # 匿名用戶可以上傳文件
anon_mkdir_write_enable=YES # 匿名用戶可以在服務(wù)器上創(chuàng)建目錄
anon_other_write_enable=YES # 匿名用戶可以在服務(wù)器上進(jìn)行命名,刪除等寫(xiě)操作
local_enable=YES # 表示允許本地用戶帳號(hào)登錄
local_umask=022 # 表示本地用戶創(chuàng)建新的文件時(shí),該文件初始的權(quán)限值。022表示初始的權(quán)限值是創(chuàng)建者有全部的權(quán)限,其他用戶(包括組用戶,其他用戶)只有讀和執(zhí)行權(quán)限,077表示初始創(chuàng)建者具有全部權(quán)限,其他用戶沒(méi)有權(quán)限
write_enable=YES # 表示服務(wù)器接收與寫(xiě)有關(guān)的控制命令
dirmessage_enable=YES # 表示用戶第一次進(jìn)入一個(gè)新目錄時(shí),會(huì)給用戶一些提示信息
use_localtime=YES # 表示服務(wù)器顯示本地時(shí)區(qū)時(shí)間,默認(rèn)是顯示GMT時(shí)間
xferlog_enable=YES # 允許產(chǎn)生日志
xferlog_std_format=YES # 日志采用標(biāo)準(zhǔn)的xferlog格式
xferlog_file=/var/log/vsftpd.log# 日志文件以及所在目錄
connect_from_port_20=YES # 使用20端口作為建立數(shù)據(jù)連接時(shí)的源端口
pam_service_name=vsftpd # 指定PAM服務(wù)配置文件的名字,在/etc/pam.d
chown_uploads=YES # 這兩個(gè)選項(xiàng)是一對(duì)相關(guān)的配置,表示匿名用戶上傳的文件所以者將變?yōu)閣hoever,這個(gè)配置是為了安全目的
chown_username=whoever # 文件所有者變?yōu)槠渌脩艉螅涿脩魧⒉荒茉賹?duì)文件進(jìn)行刪除,甚至讀操作,例如作業(yè)上交FTP
idle_session_timeout=600 # 表示控制連接的超時(shí)值為600秒
data_connection_timeout=120 # 表示數(shù)據(jù)連接的超時(shí)值為120秒
nopriv_user=ftpsecure # 表示當(dāng)vsftpd進(jìn)程處于非特權(quán)運(yùn)行狀態(tài)時(shí),所使用的用戶身份是ftpsecure
async_abor_enable=NO # 表示vsftpd支持”async ABOR“的FTP命令,這條命令會(huì)影響vsftpd的安全,一般使用默認(rèn)的NO設(shè)置
ascii_upload_enable=YES
ascii_download_enable=YES # 表示上傳下載文件時(shí)真正允許ASCII模式。有些FTP服務(wù)器在實(shí)現(xiàn)ACSII傳輸模式時(shí),容易遭受DoS攻擊。為了避免這種情況的發(fā)送,vsftpd給客戶端回應(yīng)時(shí)可以假裝允AXSCII模式,但實(shí)際上使用的是binary模式,通過(guò)把這兩個(gè)值設(shè)置為NO來(lái)達(dá)到。
ftpd_banner=Welcome to stone FTP service. # 表示用戶登錄時(shí),將顯示W(wǎng)elcome to stone FTP service信息,沒(méi)有這個(gè)選項(xiàng)時(shí),將顯示vsftpd服務(wù)器的名稱和版本信息,存在安全問(wèn)題,因而這樣做的目的是為了隱藏這些信息
deny_email_enable=YES # 匿名用戶如果輸入aaa@做為登錄密碼,將被拒絕,主要目的是為了防止一些自動(dòng)登錄工具進(jìn)行登錄。
banned_email_file=/etc/vsftpd.banned_emails # 指定的deny_mail的文件
chroot_list_enable=YES # 這兩個(gè)選項(xiàng)制定了一個(gè)用戶列表,這個(gè)列表放在/etc/vsftpd/chroot_list文件中。當(dāng) chroot_local_user
chroot_list_file=/etc/vsftpd/chroot_list # 設(shè)為NO后,這些用戶登錄FTP服務(wù)器后,他們看到的根目錄是他們自己的個(gè)人目錄,也就是說(shuō)雖然在實(shí)際的文件系統(tǒng)中,這些用戶個(gè)人目錄的上級(jí)還有目錄,但是不能切換到這些上級(jí)目錄
chroot_local_user=YES # 當(dāng)chroot_local_user被設(shè)置為YES時(shí),上述用戶列表將不會(huì)被限制在個(gè)人目錄中,可以進(jìn)一步轉(zhuǎn)到其他目錄
ls_recurse_enable=YES # 表示客戶端在使用ls命令時(shí)可以加-R參數(shù),-R參數(shù)表示ls命令可以列出整個(gè)目錄樹(shù)的內(nèi)容,需要一些處理時(shí)間,特別存在惡意用戶時(shí),情況會(huì)更嚴(yán)重
anon_max_rate=0 # 用于設(shè)置匿名用戶客戶端能夠達(dá)到的最大速率,其值是一個(gè)數(shù)值,單位為b/s,0表示無(wú)限制
local_max_rate=0 # 該選項(xiàng)限制的是本地用戶的速率
max_clients=0 # vsftpd能接收的最大客戶端連接數(shù)
max_per_ip=5 # 限制每一臺(tái)主機(jī)可以連入的客戶端數(shù),用戶為了加快下載速度,可能會(huì)打開(kāi)很多的客戶端連接,影響其他用戶的正常使用