1 安裝vsftpd組件
安裝完后,有/etc/vsftpd/vsftpd.conf 文件,是vsftp的配置文件。[root@linuxidc ~]# yum -y install vsftpd
2、FTP主動(dòng)模式與FTP被動(dòng)模式的端口說明
FTP是僅基于TCP的服務(wù),不支持UDP。 與眾不同的是FTP使用2個(gè)端口,一個(gè)數(shù)據(jù)端口和一個(gè)命令端口(也可叫做控制端口)。通常來說這兩個(gè)端口是21(命令端口)和20(數(shù)據(jù)端口)。但FTP工作方式的不同,數(shù)據(jù)端口并不總是20。這就是主動(dòng)與被動(dòng)FTP的最大不同之處。
FTP協(xié)議有兩種工作方式:PORT方式和PASV方式,中文意思為主動(dòng)式和被動(dòng)式。
(一) FTP主動(dòng)模式
主動(dòng)方式的FTP是這樣的:客戶端從一個(gè)任意的非特權(quán)端口N(N>1024)連接到FTP服務(wù)器的命令端口,也就是21端口。然后客戶端開始 監(jiān)聽端口N+1, 并發(fā)送FTP命令“port N+1”到FTP服務(wù)器。接著服務(wù)器會(huì)從它自己的數(shù)據(jù)端口(20)連接到客戶端指定的數(shù)據(jù)端口(N+1)。 針對(duì)FTP服務(wù)器前面的防火墻來說,必須允許以下通訊才能支持主動(dòng)方式FTP: 1. 任何大于1024的端口到FTP服務(wù)器的21端口。(客戶端初始化的連接) 2. FTP服務(wù)器的21端口到大于1024的端口。 (服務(wù)器響應(yīng)客戶端的控制端口) 3. FTP服務(wù)器的20端口到大于1024的端口。(服務(wù)器端初始化數(shù)據(jù)連接到客戶端的數(shù)據(jù)端口) 4. 大于1024端口到FTP服務(wù)器的20端口(客戶端發(fā)送ACK響應(yīng)到服務(wù)器的數(shù)據(jù)端口) 簡明概括: PORT(主動(dòng))方式的連接過程是:客戶端向服務(wù)器的FTP端口(默認(rèn)是21)發(fā)送連接請(qǐng)求,服務(wù)器接受連接,建立一條命令鏈路。當(dāng)需要傳送數(shù)據(jù)時(shí), 客戶端在命令鏈路上用PORT命令告訴服務(wù)器:“我打開了XXXX端口,你過來連接我”。于是服務(wù)器從20端口向客戶端的XXXX端口發(fā)送連接請(qǐng)求, 建立一條數(shù)據(jù)鏈路來傳送數(shù)據(jù)。 開啟主動(dòng)模式: pasv_enable=no 若設(shè)置為YES,則使用PASV工作模式;若設(shè)置為NO,則使用PORT模式。默認(rèn)值為YES,即使用PASV工作模式。 主動(dòng)模式下: SecureFX工具去連接ftp,客戶沒有允許開放端口,服務(wù)器沒法與客戶端相連接,關(guān)閉客戶端防火墻
(二) FTP被動(dòng)模式
為了解決服務(wù)器發(fā)起到客戶的連接的問題,人們開發(fā)了一種不同的FTP連接方式。這就是所謂的被動(dòng)方式,或者叫做PASV,當(dāng)客戶端通知服務(wù)器它處于 被動(dòng)模式時(shí)才啟用。 在被動(dòng)方式FTP中,命令連接和數(shù)據(jù)連接都由客戶端發(fā)起,這樣就可以解決從服務(wù)器到客戶端的數(shù)據(jù)端口的入方向連接被防火墻過濾掉的問題。 當(dāng)開啟一個(gè) FTP連接時(shí),客戶端打開兩個(gè)任意的非特權(quán)本地端口(N > 1024和N+1)。第一個(gè)端口連接服務(wù)器的21端口,但與主動(dòng)方式的FTP不同, 客戶端不會(huì)提交PORT命令并允許服務(wù)器來回連它的數(shù)據(jù)端口,而是提交 PASV命令。這樣做的結(jié)果是服務(wù)器會(huì)開啟一個(gè)任意的非特權(quán)端口(P > 1024) ,并發(fā)送PORT P命令給客戶端。然后客戶端發(fā)起從本地端口N+1到服務(wù)器的端口P的連接用來傳送數(shù)據(jù)。 對(duì)于服務(wù)器端的防火墻來說,必須允許下面的通訊才能支持被動(dòng)方式的FTP: 1. 從任何大于1024的端口到服務(wù)器的21端口 (客戶端初始化的連接) 2. 服務(wù)器的21端口到任何大于1024的端口 (服務(wù)器響應(yīng)到客戶端的控制端口的連接) 3. 從任何大于1024端口到服務(wù)器的大于1024端口 (客戶端初始化數(shù)據(jù)連接到服務(wù)器指定的任意端口) 4. 服務(wù)器的大于1024端口到遠(yuǎn)程的大于1024的端口(服務(wù)器發(fā)送ACK響應(yīng)和數(shù)據(jù)到客戶端的數(shù)據(jù)端口) 簡明概括: PASV(被動(dòng))方式的連接過程是:客戶端向服務(wù)器的FTP端口(默認(rèn)是21)發(fā)送連接請(qǐng)求,服務(wù)器接受連接,建立一條命令鏈路。當(dāng)需要傳送數(shù)據(jù)時(shí), 服務(wù)器在命令鏈路上用PASV命令告訴客戶端:“我打開了XXXX端口,你過來連接我”。于是客戶端向服務(wù)器的XXXX端口發(fā)送連接請(qǐng)求,建立一條數(shù)據(jù) 鏈路來傳送數(shù)據(jù)。 開啟被動(dòng)模式 默認(rèn)是開啟的,但是要指定一個(gè)端口范圍,打開vsftpd.conf文件,在后面加上 pasv_enable=yes 若設(shè)置為YES,則使用PASV工作模式;若設(shè)置為NO,則使用PORT模式。默認(rèn)值為YES,即使用PASV工作模式。 pasv_min_port=30000 在PASV工作模式下,數(shù)據(jù)連接可以使用的端口范圍的最大端口,0 表示任意端口。默認(rèn)值為0。 pasv_max_port=30999 在PASV工作模式下,數(shù)據(jù)連接可以使用的端口范圍的最小端口,0 表示任意端口。默認(rèn)值為0。 表示端口范圍為30000~30999,這個(gè)可以隨意改。改完重啟一下vsftpd 由于指定這段端口范圍,iptables也要相應(yīng)的開啟這個(gè)范圍,所以像上面那樣打開iptables文件。 也是在21上下面另起一行,更那行差不多,只是把21 改為30000:30999,然后:wq保存,重啟下iptables。這樣就搞定了。
(三)主動(dòng)與被動(dòng)FTP優(yōu)缺點(diǎn):
主動(dòng)FTP對(duì)FTP服務(wù)器的管理有利,但對(duì)客戶端的管理不利。因?yàn)镕TP服務(wù)器企圖與客戶端的高位隨機(jī)端口建立連接,而這個(gè)端口很有可能被客戶端的 防火墻阻塞掉。被動(dòng)FTP對(duì)FTP客戶端的管理有利,但對(duì)服務(wù)器端的管理不利。因?yàn)榭蛻舳艘c服務(wù)器端建立兩個(gè)連接,其中一個(gè)連到一個(gè)高位隨機(jī)端 口,而這 個(gè)端口很有可能被服務(wù)器端的防火墻阻塞掉。 幸運(yùn)的是,有折衷的辦法。既然FTP服務(wù)器的管理員需要他們的服務(wù)器有最多的客戶連接,那么必須得支持被動(dòng)FTP。我們可以通過為FTP服務(wù)器指定 一個(gè)有 限的端口范圍來減小服務(wù)器高位端口的暴露。這樣,不在這個(gè)范圍的任何端口會(huì)被服務(wù)器的防火墻阻塞。雖然這沒有消除所有針對(duì)服務(wù)器的 危險(xiǎn),但它大大減少了危險(xiǎn)。 簡而言之: 主動(dòng)模式(PORT)和被動(dòng)模式(PASV)。主動(dòng)模式是從服務(wù)器端向客戶端發(fā)起連接;被動(dòng)模式是客戶端向服務(wù)器端發(fā)起連接。兩者的共同點(diǎn)是都使 用21端口進(jìn)行用戶驗(yàn)證及管理,差別在于傳送數(shù)據(jù)的方式不同,PORT模式的FTP服務(wù)器數(shù)據(jù)端口固定在20,而PASV模式則在1025-65535之間隨機(jī)。 常見的FTP客戶端軟件的PASV方式的關(guān)閉方法 大部分FTP客戶端默認(rèn)使用PASV方式。IE默認(rèn)使用PORT方式。 在大部分FTP客戶端的設(shè)置里,常見到的字眼都是“PASV”或“被動(dòng)模式”, 極少見到“PORT”或“主動(dòng)模式”等字眼。因?yàn)镕TP的登錄方式只有兩種:PORT和PASV,取消PASV方式,就意味著使用PORT方式。 (1)IE:工具 -> Internet選項(xiàng) -> 高級(jí) -> “使用被動(dòng)FTP”(需要IE6.0以上才支持)。 (2)CuteFTP:Edit -> Setting -> Connection -> Firewall -> “PASV Mode” 或File -> Site Manager,在左邊選中站 點(diǎn) -> Edit -> “Use PASV mode” 。 (3)FlashGet:工具 -> 選項(xiàng) -> 代理服務(wù)器 -> 直接連接 -> 編輯 -> “PASV模式”。 (4)FlashFXP:選項(xiàng) -> 參數(shù)選擇 -> 代理/防火墻/標(biāo)識(shí) -> “使用被動(dòng)模式” 或 站點(diǎn)管理 -> 對(duì)應(yīng)站點(diǎn) -> 選項(xiàng) -> “使用被動(dòng)模式”或快速連接 -> 切換 -> “使用被動(dòng)模式”。
3、 登錄方式(三種登錄方式)
3.1 防火墻開啟21端口
因?yàn)閒tp默認(rèn)的端口為21,而CentOS默認(rèn)是沒有開啟的,所以要修改iptables文件
[root@linuxidc ~]# vim /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT 在行上面有22 -j ACCEPT 下面另起一行輸入跟那行差不多的,只是把22換成21,然后:wq保存。 還要運(yùn)行下,重啟iptables [root@linuxidc ~]# service iptables restart
3.2 FTP匿名登錄
FTP的匿名登錄一般有三種:
1、 用戶名:anonymous 密碼:Email或者為空
2、 用戶名:FTP 密碼:FTP或者為空
3、 用戶名:USER 密碼:pass
3.2.1 在IE瀏覽器或文件管理器中匿名訪問
ftp默認(rèn)開啟的匿名用戶登錄和主動(dòng)模式,用IE訪問需要把“使用被動(dòng)FTP”選項(xiàng)去掉前面的勾,這樣ftp都連接上去
在文件管理器輸入框中輸入ftp://域名或者ip,如果端口不是21的后面加端口。
3.3 匿名用戶權(quán)限
3.3.1 vsftpd配置文件
默認(rèn)配置
anonymous_enable=YES #允許匿名用戶和本地用戶登陸。 local_enable=YES #匿名用戶使用的登陸名為ftp或anonymous,口令為空;匿名用戶不能離開匿名用戶家目錄/var/ftp,且只能下載不能上傳。 write_enable=YES #本地用戶的登錄名為本地用戶名,口令為此本地用戶的口令;本地用戶可以在自己家目錄中進(jìn)行讀寫操作;本地用戶可以離開自家目錄切換至有權(quán)限 訪問的其他目錄,并在權(quán)限允許的情況下進(jìn)行上傳/下載。 #寫在文件/etc/vsftpd.ftpusers中的本地用戶禁止登陸。
3.3.2 匿名用戶(anonymous)設(shè)置
anonymous_enable=YES/NO(YES) #控制是否允許匿名用戶登入,YES 為允許匿名登入,NO 為不允許。默認(rèn)值為YES。 write_enable=YES/NO(YES) #是否允許登陸用戶有寫權(quán)限。屬于全局設(shè)置,默認(rèn)值為YES。 no_anon_password=YES/NO(NO) #若是啟動(dòng)這項(xiàng)功能,則使用匿名登入時(shí),不會(huì)詢問密碼。默認(rèn)值為NO。 ftp_username=ftp #定義匿名登入的使用者名稱。默認(rèn)值為ftp。 anon_root=/var/ftp #使用匿名登入時(shí),所登入的目錄。默認(rèn)值為/var/ftp。注意ftp目錄不能是777的權(quán)限屬性,即匿名用戶的家目錄不能有777的權(quán)限。 anon_upload_enable=YES/NO(NO) #如果設(shè)為YES,則允許匿名登入者有上傳文件(非目錄)的權(quán)限,只有在write_enable=YES時(shí),此項(xiàng)才有效。當(dāng)然,匿名用戶必須要有對(duì)上層目錄的寫入權(quán)。默認(rèn)值為NO。 anon_world_readable_only=YES/NO(YES) #如果設(shè)為YES,則允許匿名登入者下載可閱讀的檔案(可以下載到本機(jī)閱讀,不能直接在FTP服務(wù)器中打開閱讀)。默認(rèn)值為YES。 anon_mkdir_write_enable=YES/NO(NO) #如果設(shè)為YES,則允許匿名登入者有新增目錄的權(quán)限,只有在write_enable=YES時(shí),此項(xiàng)才有效。當(dāng)然,匿名用戶必須要有對(duì)上層目錄的寫入權(quán)。 默認(rèn)值為NO。 anon_other_write_enable=YES/NO(NO) #如果設(shè)為YES,則允許匿名登入者更多于上傳或者建立目錄之外的權(quán)限,譬如刪除或者重命名。(如果anon_upload_enable=NO,則匿名用戶不能 上傳文件,但可以刪除或者重命名已經(jīng)存在的文件???如果anon_mkdir_write_enable=NO,則匿名用戶不能上傳或者新建文件夾,但可以刪除或者重 命名已經(jīng)存在的文件夾。)默認(rèn)值為NO。 chown_uploads=YES/NO(NO) #設(shè)置是否改變匿名用戶上傳文件(非目錄)的屬主。默認(rèn)值為NO。 chown_username=username #設(shè)置匿名用戶上傳文件(非目錄)的屬主名。建議不要設(shè)置為root。 anon_umask=077 #設(shè)置匿名登入者新增或上傳檔案時(shí)的umask 值。默認(rèn)值為077,則新建檔案的對(duì)應(yīng)權(quán)限為700。 deny_email_enable=YES/NO(NO) #若是啟動(dòng)這項(xiàng)功能,則必須提供一個(gè)檔案/etc/vsftpd/banner_emails,內(nèi)容為email address。若是使用匿名登入,則會(huì)要求輸入email address, 若輸入的email address 在此檔案內(nèi),則不允許進(jìn)入。默認(rèn)值為NO。 banned_email_file=/etc/vsftpd/banner_emails #此文件用來輸入email address,只有在deny_email_enable=YES時(shí),才會(huì)使用到此檔案。若是使用匿名登入,則會(huì)要求輸入email address,若輸入的email address 在此檔案內(nèi),則不允許進(jìn)入。
local_umask目錄:
777-022=755
local_umask文件:
666-022=644
事例:
Linux下允許vsftp匿名用戶上傳和下載的配置
配置要注意三部分,請(qǐng)一一仔細(xì)對(duì)照:
1、vsftpd.conf配置文件
# vi /etc/vsftpd/vsftpd.conf(vsftpd.conf文件的配置) anonymous_enable=YES #允許匿名用戶登錄FTP anon_root=/var/ftp/pub #設(shè)置匿名用戶的登錄目錄(如需要,需自己添加并修改) anon_upload_enable=YES #打開匿名用戶的上傳權(quán)限 anon_mkdir_write_enable=YES #打開匿名用戶創(chuàng)建目錄的權(quán)限 anon_other_write_enable=YES #打開匿名用戶刪除和重命名的權(quán)限(如需要,需自己添加) anon_umask=022 #匿名用戶的掩碼(如需要,需自己添加,含義:如umask是022,這時(shí)創(chuàng)建一個(gè)權(quán)限為666的文件,文件的實(shí)際權(quán)限為666-022=644)
2、ftp目錄的權(quán)限設(shè)置(匿名用戶)
默認(rèn)情況下,ftp的根目錄為/var/ftp,為了安全,這個(gè)目錄默認(rèn)不允許設(shè)置為777權(quán)限,否則ftp將無法訪問。但是我們要匿名上傳文件,需要“other”用戶的寫權(quán)限,正確的做法:chmod o+w /var/ftp/pub/
上傳的文件權(quán)限是600,屬主和屬組默認(rèn)都是ftp
3、為了安全修改屬主權(quán)限為匿名的ftp權(quán)限,不用默認(rèn)的root權(quán)限
chown ftp /var/ftp/pub/ -R
*net use /d 清除ftp連接緩存**
3.4 本地用戶登錄
anonymous_enable=no #不允許匿名用戶登入 local_enable=YES/NO(YES) #控制是否允許本地用戶登入,YES 為允許本地用戶登入,NO為不允許。默認(rèn)值為YES。 local_root=/home/username #當(dāng)本地用戶登入時(shí),將被更換到定義的目錄下。默認(rèn)值為各用戶的家目錄。 write_enable=YES/NO(YES) #是否允許登陸用戶有寫權(quán)限。屬于全局設(shè)置,默認(rèn)值為YES。 local_umask=022 #本地用戶新增檔案時(shí)的umask 值。默認(rèn)值為077。 file_open_mode=0755 #本地用戶上傳檔案后的檔案權(quán)限,與chmod所使用的數(shù)值相同。默認(rèn)值為0666。 chroot_local_user=YES #用于指定用戶列表文件中的用戶不允許切換到上級(jí)目錄。默認(rèn)值為NO。
3.4.1 添加一個(gè)ftp用戶
此用戶就是用來登錄ftp服務(wù)器用的。[root@linuxidc ~]# useradd ftpuser -s /sbin/nologin
這樣一個(gè)用戶建完,不可以用這個(gè)登錄,記得用普通登錄不要用匿名了。登錄后默認(rèn)的路徑為 /home/ftpuser.
3.4.2 給ftp用戶添加密碼
[root@linuxidc ~]# passwd ftpuser
輸入兩次密碼后修改密碼。
3.4.3 關(guān)閉匿名訪問,設(shè)置相應(yīng)權(quán)限
修改/etc/vsftpd/vsftpd.conf文件:
anonymous_enable=no local_enable=YES local_root=/home/ftpuser write_enable=YES local_umask=022 file_open_mode=0755 chroot_local_user=YES
3.4.4 重啟ftp服務(wù):
[root@linuxidc ~]# service vsftpd restart
3.4.5 訪問
在windows資源管理器中連接ftp://ip
本地用戶登錄(家目錄/home/ftpuser),可以創(chuàng)建或刪除目錄、文件,目錄權(quán)限是755,文件權(quán)限是644
修改路徑為/opt/test下(local_root=/opt/test),為了安全,在/opt/test目錄下建tt目錄,并給tt目錄屬主和屬組修改為ftpuser,這樣才可以創(chuàng)建或刪除目錄,上傳、刪除文件
3.5虛擬用戶登錄
pam_service_name=vsftpd #虛擬用戶使用PAM認(rèn)證方式。 guest_enable= YES/NO(NO) #設(shè)置PAM使用的名稱,默認(rèn)值為/etc/pam.d/vsftpd。 guest_username=ftp #啟用虛擬用戶。默認(rèn)值為NO。 virtual_use_local_privs=YES/NO(NO) #這里用來映射虛擬用戶。默認(rèn)值為ftp。 #當(dāng)該參數(shù)激活(YES)時(shí),虛擬用戶使用與本地用戶相同的權(quán)限。當(dāng)此參數(shù)關(guān)閉(NO)時(shí),虛擬用戶使用與匿名用戶相同的權(quán)限。默認(rèn)情況下此參數(shù) 是關(guān)閉的(NO)。
3.5.1 創(chuàng)建文本格式的用戶名、密碼列表
首先需要建立一個(gè)文本格式的用戶名/密碼列表文件,奇數(shù)行為用戶名,偶數(shù)行為上一行中用戶名所對(duì)應(yīng)的密碼。
例如:添加兩個(gè)用戶jene、john,密碼分別為abc123、abc456執(zhí)行以下的操作:
[root@ling ~]# vi /etc/vsftpd/juser.txt jene abc123 john abc456
3.5.2 生成數(shù)據(jù)庫:
db_load:安裝 db4,db4-devel,db4-utils
# cd //etc/vsftpd #切換到/etc/vsftpd的目錄下 # yum -y install db4* # db_load -T -t hash -f juser.txt juser.db #將剛創(chuàng)建的juser.list列表轉(zhuǎn)換為juser.list.db file juser.db #查看轉(zhuǎn)換后的文件類型
3.5.3 修改數(shù)據(jù)文件訪問權(quán)限:
chmod 600 /etc/vsftpd/juser.db
3.5.4修改pam配置:
# vi /etc/pam.d/juser.pam //為虛擬用戶創(chuàng)建PAM認(rèn)證文件,文件名為juser.pam(見名之義) auth required pam_userdb.so db=/etc/vsftpd/juser account required pam_userdb.so db=/etc/vsftpd/juser 注意:db=/etc/vsftpd/vsftpd_login 后面的.db必須去掉 或 # vi /etc/pam.d/vsftpd 將里面其他的都注釋掉,添加下面這兩行: auth required pam_userdb.so db=/etc/vsftpd/vuser account required pam_userdb.so db=/etc/vsftpd/vuser
3.5.5 創(chuàng)建虛擬賬號(hào)對(duì)應(yīng)的系統(tǒng)用戶:
# useradd -d /var/ftptom -s /sbin/nologin tom #添加用戶tom,指定到新建的家目錄,將虛擬用戶對(duì)應(yīng)到這個(gè)系統(tǒng)賬號(hào)上,這個(gè) 賬號(hào)無需設(shè)置密碼及登錄Shell # chmod 755 /var/ftptom/ #調(diào)整權(quán)限以允許瀏覽目錄
3.5.6 修改主配置文件
# vi /etc/vsftpd/vsftpd.conf anonymous_enable=no //禁用匿名用戶登錄 (anon_upload_enable=YES anon_mkdir_write_enable=YES anon_umask=022 //指定上傳權(quán)限掩碼) local_enable=YES //需映射本地用戶,所以啟用些項(xiàng) write_enable=YES //啟用上傳寫入支持 chroot_local_user=YES //(自建配置)將所有本地用戶限制在家目錄中 guest_enable=YES //啟用映射功能 guest_username=tom //指定映射的系統(tǒng)用戶名稱 pam_service_name=juser.pam //指定新的PAM認(rèn)證文件 user_config_dir=/opt/vsftpd/juser_dir //(自建配置)設(shè)置虛擬帳號(hào)的主目錄為/juser_dir max_clients=300 //(自建配置)設(shè)置FTP服務(wù)器最大接入客戶端數(shù)為300個(gè) max_per_ip=10 //(自建配置)設(shè)置每個(gè)IP地址最大連接數(shù)為10個(gè) listen=YES port_enable=NO //(自建配置)取消PORT模式進(jìn)行數(shù)據(jù)傳輸 connect_from_port_20=NO //(修改配置)PORT模式進(jìn)行數(shù)據(jù)傳輸部使用20端口 ftp_data_port=20 pasv_enable=YES //(自建配置)允許PASV模式進(jìn)行數(shù)據(jù)傳輸 pasv_min_port=65341 //(自建配置)PASV模式下數(shù)據(jù)傳輸所使用port范圍下界 pasv_max_port=65351 //(自建配置)PASV模式下數(shù)據(jù)傳輸所使用port范圍上界
3.5.7 建立虛擬賬戶的配置文件:
如上面的在沒有給予虛擬用戶上傳、建目錄等權(quán)限的設(shè)置,可以用下面的方法給虛擬用戶建立獨(dú)立的配置文件。
在user_config_dir指定路徑下,建立與虛擬帳號(hào)同名的配置文件并添加相應(yīng)的配置字段
# mkdir /opt/vsftpd/juser_dir cd /opt/vsftpd/juser_dir //切換到這個(gè)新建的配置文件夾下 touch jene 創(chuàng)建jene配置文件 touch john 創(chuàng)建john配置文件 #vi jene //為用戶jene建立獨(dú)立的配置文件,允許他可以上傳和創(chuàng)建目錄 anon_upload_enable=YES anon_mkdir_write_enable=YES #touch john //為其它用戶(john)創(chuàng)建空的配置文件,也就是他們沒有上傳和創(chuàng)建目錄的權(quán)限 [root@ling juser_dir]# service vsftpd reload //重載vsftpd服務(wù)器
登錄ftp服務(wù)器
已經(jīng)登錄tom的家目錄下了
以上的虛擬用戶jene和john共用映射的tom家目錄的
3.5.8 若用自己各自的目錄
vi vsftpd.conf anonymous_enable=NO(修改配置)禁用匿名用戶登錄 write_enable=YES (默認(rèn)開啟)允許使用任何可以修改文件系統(tǒng)的FTP的指令 local_enable=YES(默認(rèn)開啟)啟用本地用戶登錄設(shè)置 chroot_local_user=YES (自建配置)將所有本地用戶限制在家目錄中 pam_service_name=juser.pam(默認(rèn)開啟)配置vsftpd使用的PAM模塊為vsftpd user_config_dir=/opt/vsftpd/juser_dir (自建配置)設(shè)置虛擬帳號(hào)的主目錄為/vsftpd_login
# mkdir /opt/vsftpd/juser_dir //建虛擬賬號(hào)主目錄 # cd /opt/vsftpd/juser_dir //切換到這個(gè)新建的配置文件夾下 # touch jene 創(chuàng)建jene配置文件 # touch john 創(chuàng)建john配置文件
為各虛擬用戶建立獨(dú)立的配置文件
# vi jene anon_world_readable_only=YES 只讀,不能下載 anon_world_readable_only=no 表示用戶可以瀏覽FTP目錄和下載文件 guest_enable=yes 開啟虛擬帳號(hào)登錄 guest_username=ftp_jene 設(shè)置虛擬用戶jene對(duì)應(yīng)的系統(tǒng)帳號(hào)為ftp_jene local_root=/opt/jene 用戶登入時(shí),所在目錄 anon_world_readable_only=no 不允許匿名用戶瀏覽器整個(gè)服務(wù)器的文件系統(tǒng) anon_max_rate=50000 限定傳輸速率為50KB/s
# vi john guest_enable=yes 開啟虛擬帳號(hào)登錄 guest_username=ftp_ john 設(shè)置虛擬用戶john對(duì)應(yīng)的系統(tǒng)帳號(hào)為ftp_john local_root=/opt/john 用戶登入時(shí),所在目錄 anon_other_write_enable=YES 允許匿名賬號(hào)具有刪除、改名權(quán)限 anon_mkdir_write_enable=yes 允許創(chuàng)建文件夾,不能刪除目錄 anon_upload_enable=yes 開啟匿名帳號(hào)的上傳功能 anon_world_readable_only=no 不允許匿名用戶瀏覽整個(gè)服務(wù)器的文件系統(tǒng) anon_max_rate=100000 限定傳輸速度為100KB/s
重啟vsftpd服務(wù)#service vsftpd restart
linux文件權(quán)限分成“屬主”、“屬組”和“其他人”這三種,如果“其他人”沒有可讀權(quán)限,那anon_world_readable_only這個(gè)參數(shù)就起效了,對(duì)于目錄來說,如果“其他人”沒有可讀權(quán)限,且anon_world_readable_only=YES,則匿名用戶無法瀏覽該目錄下的所有內(nèi)容(看上去像個(gè)空目錄),而對(duì)于文件來說,如果“其他人”沒有可讀權(quán)限,且anon_world_readable_only=YES,則匿名用戶無法下載該文件。
4、修改selinux
外網(wǎng)是可以訪問上去了,可是發(fā)現(xiàn)沒法返回目錄(使用ftp的主動(dòng)模式,被動(dòng)模式還是無法訪問),也上傳不了,因?yàn)閟elinux作怪了。
修改selinux:
執(zhí)行以下命令查看狀態(tài):
[root@linuxidc ~]# getsebool -a | grep ftp allow_ftpd_anon_write --> off allow_ftpd_full_access --> off allow_ftpd_use_cifs --> off allow_ftpd_use_nfs --> off ftp_home_dir --> off ftpd_connect_db --> off ftpd_use_passive_mode --> off httpd_enable_ftp_server --> off tftp_anon_write --> off [root@linuxidc ~]#
執(zhí)行上面命令,再返回的結(jié)果看到兩行都是off,代表,沒有開啟外網(wǎng)的訪問
[root@linuxidc ~]# setsebool -P allow_ftpd_full_access on [root@linuxidc ~]# setsebool -P ftp_home_dir on
這樣應(yīng)該沒問題了(如果,還是不行,看看是不是用了ftp客戶端工具用了passive模式訪問了,如提示Entering Passive mode,就代表是passive模式,默認(rèn)是不行的,因?yàn)閒tp passive模式被iptables擋住了,下面會(huì)講怎么開啟,如果懶得開的話,就看看你客戶端ftp是否有port模式的選項(xiàng),或者把passive模式的選項(xiàng)去掉。如果客戶端還是不行,看看客戶端上的主機(jī)的電腦是否開了防火墻,關(guān)吧)
FileZilla的主動(dòng)、被動(dòng)模式修改:
菜單:編輯→設(shè)置
5、設(shè)置開機(jī)啟動(dòng)vsftpd ftp服務(wù)
[root@linuxidc ~]# chkconfig vsftpd on
6、修改FTP默認(rèn)端口
6.1登錄服務(wù)器,打開vsftp.conf文件
# vim /etc/vsftpd/vsftpd.conf 在文件末尾增加listen_port=2121 pasv_enable=yes pasv_min_port=30000 pasv_max_port=30999 listen_port=2121
6.2打開/etc/services文件
[plain] view plain copy # vim /etc/services 找到ftp選項(xiàng)并將21修改成你設(shè)置的端口,本文為2121 # 21 is registered to ftp, but also used by fsp ftp 2121/tcp ftp 2121/udp fsp fspd
6.3 重啟vsftp服務(wù)
# /etc/init.d/vsftpd restart 使用netstat -utlpn | grep vsftp命令查看設(shè)置的端口,確認(rèn)是否成功 # netstat -utlpn | grep vsftp tcp 0 0 0.0.0.0:2121 0.0.0.0:* LISTEN 33004/vsftpd tcp 0 0 192.168.11.6:30954 0.0.0.0:* LISTEN 33006/vsftpd
6.4 防火墻加上允許策略:
# vi /etc/sysconfig/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 2121 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 2120 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 30000:30999 -j ACCEPT
在主動(dòng)模式中,F(xiàn)TP的兩個(gè)端口是相對(duì)固定的,如果命令端口是x的話,那數(shù)據(jù)端口就是x-1,也就是說默認(rèn)情況下,命令端口是21,數(shù)據(jù)端口就是20;你把命令端口改成了2121,那么數(shù)據(jù)端口就是2120。這樣使用防火墻就很方便了,只要開通這兩個(gè)端口就可以了,但是如果客戶端是共享上網(wǎng)的話那豈不是不能正常使用FTP了,這樣還是不行,一定需要被動(dòng)模式。
被動(dòng)模式中就麻煩了些,命令端口修改為2121,那么數(shù)據(jù)端口就是2120,但是數(shù)據(jù)端口是??機(jī)的,所以需要在設(shè)備里設(shè)置一下被動(dòng)端口范圍6000到7000(pasv_min_port=6000 pasv_max_port=7000)
防火墻里允許修改過端口號(hào)及隨機(jī)端口號(hào)范圍
7、rhel7中修改防火墻:
1、防火墻添加端口 # firewall-cmd --zone=public --permanent --add-port=80/tcp # firewall-cmd --reload # firewall-cmd --zone=public --permanent --add-port=31000-31999/tcp # firewall-cmd --reload 2、防火墻刪除端口 # firewall-cmd --zone=public --permanent --remove-port=80/tcp # firewall-cmd --reload 3、查看防火墻配置 # cat /etc/firewalld/zones/public.xml
更多Vsftpd相關(guān)教程見以下內(nèi)容:
Linux CentOS 6.5 下搭建 vsftpd ftp服務(wù)器 http://www.sfodin.cn/Linux/2016-07/133319.htm
CentOS安裝vsftpd-3.0.2及安全配置 http://www.sfodin.cn/Linux/2016-12/138040.htm
openSUSE 13.2/13.1 下安裝配置 FTP服務(wù)器 vsftpd http://www.sfodin.cn/Linux/2014-12/110070.htm
CentOS7基于虛擬用戶的vsftpd http://www.sfodin.cn/Linux/2016-11/137150.htm
Ubuntu 14.04 配置vsftpd實(shí)現(xiàn)FTP服務(wù)器 – 通過FTP連接AWS http://www.sfodin.cn/Linux/2016-08/133933.htm
FTP協(xié)議詳解與vsftpd在Linux上的安裝配置 http://www.sfodin.cn/Linux/2016-09/134831.htm
CentOS 6.7 安裝vsftpd服務(wù)器 http://www.sfodin.cn/Linux/2017-04/142612.htm
CentOS 7.3安裝配置Vsftpd文件服務(wù)器 http://www.sfodin.cn/Linux/2017-06/144886.htm
Vsftpd3.0–FTP服務(wù)器搭建之本地用戶篇 http://www.sfodin.cn/Linux/2017-04/142699.htm
CentOS7基于虛擬用戶的vsftpd http://www.sfodin.cn/Linux/2016-11/137150.htm
如何在Ubuntu 18.04 LTS上安裝帶有TLS的VsFTPD服務(wù)器 http://www.sfodin.cn/Linux/2018-10/154930.htm
Ubuntu 16.04下vsftpd 安裝配置實(shí)例 http://www.sfodin.cn/Linux/2017-06/144807.htm