1. 程式人生 > >vsftpd 配置詳解

vsftpd 配置詳解

1 安裝vsftpd元件

安裝完後,有/etc/vsftpd/vsftpd.conf 檔案,是vsftp的配置檔案。
[[email protected] ~]# yum -y install vsftpd

2、FTP主動模式與FTP被動模式的埠說明

FTP是僅基於TCP的服務,不支援UDP。 與眾不同的是FTP使用2個埠,一個數據埠和一個命令埠(也可叫做控制埠)。通常來說這兩個埠是21(命令埠)和20(資料埠)。但FTP工作方式的不同,資料埠並不總是20。這就是主動與被動FTP的最大不同之處。

FTP協議有兩種工作方式:PORT方式和PASV方式,中文意思為主動式和被動式。

(一) FTP主動模式

主動方式的FTP是這樣的:客戶端從一個任意的非特權埠N(N>1024)連線到FTP伺服器的命令埠,也就是21埠。然後客戶端開始 監聽埠N+1,
併發送FTP命令“port N+1”到FTP伺服器。接著伺服器會從它自己的資料埠(20)連線到客戶端指定的資料埠(N+1)。

針對FTP伺服器前面的防火牆來說,必須允許以下通訊才能支援主動方式FTP:
1. 任何大於1024的埠到FTP伺服器的21埠。(客戶端初始化的連線)
2. FTP伺服器的21埠到大於1024的埠。 (伺服器響應客戶端的控制埠)
3. FTP伺服器的20埠到大於1024的埠。(伺服器端初始化資料連線到客戶端的資料埠)
4. 大於1024埠到FTP伺服器的20埠(客戶端傳送ACK響應到伺服器的資料埠) 簡明概括: PORT(主動)方式的連線過程是:客戶端向伺服器的FTP埠(預設是21)傳送連線請求,伺服器接受連線,建立一條命令鏈路。當需要傳送資料時, 客戶端在命令鏈路上用PORT命令告訴伺服器:“我打開了XXXX埠,你過來連線我”。於是伺服器從20埠向客戶端的XXXX埠傳送連線請求, 建立一條資料鏈路來傳送資料。 開啟主動模式: pasv_enable=no 若設定為YES,則使用PASV工作模式;若設定為NO,則使用PORT模式。預設值為YES,即使用PASV工作模式。 主動模式下: SecureFX工具去連線ftp,客戶沒有允許開放埠,伺服器沒法與客戶端相連線,關閉客戶端防火牆

(二) FTP被動模式

為了解決伺服器發起到客戶的連線的問題,人們開發了一種不同的FTP連線方式。這就是所謂的被動方式,或者叫做PASV,當客戶端通知伺服器它處於
被動模式時才啟用。
在被動方式FTP中,命令連線和資料連線都由客戶端發起,這樣就可以解決從伺服器到客戶端的資料埠的入方向連線被防火牆過濾掉的問題。

當開啟一個 FTP連線時,客戶端開啟兩個任意的非特權本地埠(N > 1024和N+1)。第一個埠連線伺服器的21埠,但與主動方式的FTP不同,
客戶端不會提交PORT命令並允許伺服器來回連它的資料埠,而是提交 PASV命令。這樣做的結果是伺服器會開啟一個任意的非特權埠(P > 1024)
,併發送PORT P命令給客戶端。然後客戶端發起從本地埠N+1到伺服器的埠P的連線用來傳送資料。

對於伺服器端的防火牆來說,必須允許下面的通訊才能支援被動方式的FTP:
1. 從任何大於1024的埠到伺服器的21埠 (客戶端初始化的連線)
2. 伺服器的21埠到任何大於1024的埠 (伺服器響應到客戶端的控制埠的連線)
3. 從任何大於1024埠到伺服器的大於1024埠 (客戶端初始化資料連線到伺服器指定的任意埠)
4. 伺服器的大於1024埠到遠端的大於1024的埠(伺服器傳送ACK響應和資料到客戶端的資料埠)

簡明概括:
PASV(被動)方式的連線過程是:客戶端向伺服器的FTP埠(預設是21)傳送連線請求,伺服器接受連線,建立一條命令鏈路。當需要傳送資料時,
伺服器在命令鏈路上用PASV命令告訴客戶端:“我打開了XXXX埠,你過來連線我”。於是客戶端向伺服器的XXXX埠傳送連線請求,建立一條資料
鏈路來傳送資料。

開啟被動模式
預設是開啟的,但是要指定一個埠範圍,開啟vsftpd.conf檔案,在後面加上
pasv_enable=yes
若設定為YES,則使用PASV工作模式;若設定為NO,則使用PORT模式。預設值為YES,即使用PASV工作模式。
pasv_min_port=30000
在PASV工作模式下,資料連線可以使用的埠範圍的最大埠,0 表示任意埠。預設值為0。
pasv_max_port=30999
在PASV工作模式下,資料連線可以使用的埠範圍的最小埠,0 表示任意埠。預設值為0。

表示埠範圍為30000~30999,這個可以隨意改。改完重啟一下vsftpd
由於指定這段埠範圍,iptables也要相應的開啟這個範圍,所以像上面那樣開啟iptables檔案。
也是在21上下面另起一行,更那行差不多,只是把21 改為30000:30999,然後:wq儲存,重啟下iptables。這樣就搞定了。

(三)主動與被動FTP優缺點:

主動FTP對FTP伺服器的管理有利,但對客戶端的管理不利。因為FTP伺服器企圖與客戶端的高位隨機埠建立連線,而這個埠很有可能被客戶端的
防火牆阻塞掉。被動FTP對FTP客戶端的管理有利,但對伺服器端的管理不利。因為客戶端要與伺服器端建立兩個連線,其中一個連到一個高位隨機端
口,而這 個埠很有可能被伺服器端的防火牆阻塞掉。
幸運的是,有折衷的辦法。既然FTP伺服器的管理員需要他們的伺服器有最多的客戶連線,那麼必須得支援被動FTP。我們可以通過為FTP伺服器指定
一個有 限的埠範圍來減小伺服器高位埠的暴露。這樣,不在這個範圍的任何埠會被伺服器的防火牆阻塞。雖然這沒有消除所有針對伺服器的
危險,但它大大減少了危險。

簡而言之:
主動模式(PORT)和被動模式(PASV)。主動模式是從伺服器端向客戶端發起連線;被動模式是客戶端向伺服器端發起連線。兩者的共同點是都使
用21埠進行使用者驗證及管理,差別在於傳送資料的方式不同,PORT模式的FTP伺服器資料埠固定在20,而PASV模式則在1025-65535之間隨機。 常見的FTP客戶端軟體的PASV方式的關閉方法 大部分FTP客戶端預設使用PASV方式。IE預設使用PORT方式。 在大部分FTP客戶端的設定裡,常見到的字眼都是“PASV”或“被動模式”, 極少見到“PORT”或“主動模式”等字眼。因為FTP的登入方式只有兩種:PORT和PASV,取消PASV方式,就意味著使用PORT方式。 (1)IE:工具 -> Internet選項 -> 高階 -> “使用被動FTP”(需要IE6.0以上才支援)。 (2)CuteFTP:Edit -> Setting -> Connection -> Firewall -> “PASV Mode” 或File -> Site Manager,在左邊選中站 點 -> Edit -> “Use PASV mode” 。 (3)FlashGet:工具 -> 選項 -> 代理伺服器 -> 直接連線 -> 編輯 -> “PASV模式”。 (4)FlashFXP:選項 -> 引數選擇 -> 代理/防火牆/標識 -> “使用被動模式” 或 站點管理 -> 對應站點 -> 選項 -> “使用被動模式”或快速連線 -> 切換 -> “使用被動模式”。

3、 登入方式(三種登入方式)

3.1 防火牆開啟21埠

因為ftp預設的埠為21,而centos預設是沒有開啟的,所以要修改iptables檔案

[[email protected] ~]# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT 在行上面有22 -j ACCEPT 下面另起一行輸入跟那行差不多的,只是把22換成21,然後:wq儲存。 還要執行下,重啟iptables [[email protected] ~]# service iptables restart

3.2 FTP匿名登入

FTP的匿名登入一般有三種:

1、 使用者名稱:anonymous 密碼:Email或者為空

2、 使用者名稱:FTP 密碼:FTP或者為空

3、 使用者名稱:USER 密碼:pass

3.2.1 在IE瀏覽器或檔案管理器中匿名訪問

ftp預設開啟的匿名使用者登入和主動模式,用IE訪問需要把“使用被動FTP”選項去掉前面的勾,這樣ftp都連線上去

Linux安裝vsftpd及配置詳解

在檔案管理器輸入框中輸入ftp://域名或者ip,如果埠不是21的後面加埠。
Linux安裝vsftpd及配置詳解

3.3 匿名使用者許可權

3.3.1 vsftpd配置檔案

預設配置

anonymous_enable=YES
#允許匿名使用者和本地使用者登陸。

local_enable=YES
#匿名使用者使用的登陸名為ftp或anonymous,口令為空;匿名使用者不能離開匿名使用者家目錄/var/ftp,且只能下載不能上傳。

write_enable=YES
#本地使用者的登入名為本地使用者名稱,口令為此本地使用者的口令;本地使用者可以在自己家目錄中進行讀寫操作;本地使用者可以離開自家目錄切換至有許可權
訪問的其他目錄,並在許可權允許的情況下進行上傳/下載。

#寫在檔案/etc/vsftpd.ftpusers中的本地使用者禁止登陸。

3.3.2 匿名使用者(anonymous)設定

anonymous_enable=YES/NO(YES)
#控制是否允許匿名使用者登入,YES 為允許匿名登入,NO 為不允許。預設值為YES。 write_enable=YES/NO(YES) #是否允許登陸使用者有寫許可權。屬於全域性設定,預設值為YES。 no_anon_password=YES/NO(NO) #若是啟動這項功能,則使用匿名登入時,不會詢問密碼。預設值為NO。 ftp_username=ftp #定義匿名登入的使用者名稱。預設值為ftp。 anon_root=/var/ftp #使用匿名登入時,所登入的目錄。預設值為/var/ftp。注意ftp目錄不能是777的許可權屬性,即匿名使用者的家目錄不能有777的許可權。 anon_upload_enable=YES/NO(NO) #如果設為YES,則允許匿名登入者有上傳檔案(非目錄)的許可權,只有在write_enable=YES時,此項才有效。當然,匿名使用者必須要有對上層目錄的寫入權。預設值為NO。 anon_world_readable_only=YES/NO(YES) #如果設為YES,則允許匿名登入者下載可閱讀的檔案(可以下載到本機閱讀,不能直接在FTP伺服器中開啟閱讀)。預設值為YES。 anon_mkdir_write_enable=YES/NO(NO) #如果設為YES,則允許匿名登入者有新增目錄的許可權,只有在write_enable=YES時,此項才有效。當然,匿名使用者必須要有對上層目錄的寫入權。 預設值為NO。 anon_other_write_enable=YES/NO(NO) #如果設為YES,則允許匿名登入者更多於上傳或者建立目錄之外的許可權,譬如刪除或者重新命名。(如果anon_upload_enable=NO,則匿名使用者不能 上傳檔案,但可以刪除或者重新命名已經存在的檔案;如果anon_mkdir_write_enable=NO,則匿名使用者不能上傳或者新建資料夾,但可以刪除或者重 命名已經存在的資料夾。)預設值為NO。 chown_uploads=YES/NO(NO) #設定是否改變匿名使用者上傳檔案(非目錄)的屬主。預設值為NO。 chown_username=username #設定匿名使用者上傳檔案(非目錄)的屬主名。建議不要設定為root。 anon_umask=077 #設定匿名登入者新增或上傳檔案時的umask 值。預設值為077,則新建檔案的對應許可權為700。 deny_email_enable=YES/NO(NO) #若是啟動這項功能,則必須提供一個檔案/etc/vsftpd/banner_emails,內容為email address。若是使用匿名登入,則會要求輸入email address, 若輸入的email address 在此檔案內,則不允許進入。預設值為NO。 banned_email_file=/etc/vsftpd/banner_emails #此檔案用來輸入email address,只有在deny_email_enable=YES時,才會使用到此檔案。若是使用匿名登入,則會要求輸入email address,若輸入的email address 在此檔案內,則不允許進入。

Linux安裝vsftpd及配置詳解

local_umask目錄:
777-022=755
local_umask檔案:
666-022=644

事例:
Linux下允許vsftp匿名使用者上傳和下載的配置

配置要注意三部分,請一一仔細對照
1、vsftpd.conf配置檔案

# vi /etc/vsftpd/vsftpd.conf(vsftpd.conf檔案的配置)
anonymous_enable=YES
#允許匿名使用者登入FTP

anon_root=/var/ftp/pub
#設定匿名使用者的登入目錄(如需要,需自己新增並修改)

anon_upload_enable=YES
#開啟匿名使用者的上傳許可權

anon_mkdir_write_enable=YES
#開啟匿名使用者建立目錄的許可權

anon_other_write_enable=YES
#開啟匿名使用者刪除和重新命名的許可權(如需要,需自己新增)

anon_umask=022
#匿名使用者的掩碼(如需要,需自己新增,含義:如umask是022,這時建立一個許可權為666的檔案,檔案的實際許可權為666-022=644)

2、ftp目錄的許可權設定(匿名使用者)
預設情況下,ftp的根目錄為/var/ftp,為了安全,這個目錄預設不允許設定為777許可權,否則ftp將無法訪問。但是我們要匿名上傳檔案,需要“other”使用者的寫許可權,正確的做法:
chmod o+w /var/ftp/pub/
Linux安裝vsftpd及配置詳解
上傳的檔案許可權是600,屬主和屬組預設都是ftp

3、為了安全修改屬主許可權為匿名的ftp許可權,不用預設的root許可權

chown ftp /var/ftp/pub/ -R
Linux安裝vsftpd及配置詳解

*net use /d 清除ftp連線快取**

3.4 本地使用者登入

anonymous_enable=no
#不允許匿名使用者登入

local_enable=YES/NO(YES) #控制是否允許本地使用者登入,YES 為允許本地使用者登入,NO為不允許。預設值為YES。 local_root=/home/username #當本地使用者登入時,將被更換到定義的目錄下。預設值為各使用者的家目錄。 write_enable=YES/NO(YES) #是否允許登陸使用者有寫許可權。屬於全域性設定,預設值為YES。 local_umask=022 #本地使用者新增檔案時的umask 值。預設值為077。 file_open_mode=0755 #本地使用者上傳檔案後的檔案許可權,與chmod所使用的數值相同。預設值為0666。 chroot_local_user=YES #用於指定使用者列表檔案中的使用者不允許切換到上級目錄。預設值為NO。

3.4.1 新增一個ftp使用者

此使用者就是用來登入ftp伺服器用的。
[[email protected] ~]# useradd ftpuser -s /sbin/nologin
這樣一個使用者建完,不可以用這個登入,記得用普通登入不要用匿名了。登入後預設的路徑為 /home/ftpuser.

3.4.2 給ftp使用者新增密碼

[[email protected] ~]# passwd ftpuser
輸入兩次密碼後修改密碼。

3.4.3 關閉匿名訪問,設定相應許可權

修改/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服務:

[[email protected] ~]# service vsftpd restart

3.4.5 訪問

在windows資源管理器中連線ftp://ip
本地使用者登入(家目錄/home/ftpuser),可以建立或刪除目錄、檔案,目錄許可權是755,檔案許可權是644
Linux安裝vsftpd及配置詳解

修改路徑為/opt/test下(local_root=/opt/test),為了安全,在/opt/test目錄下建tt目錄,並給tt目錄屬主和屬組修改為ftpuser,這樣才可以建立或刪除目錄,上傳、刪除檔案
Linux安裝vsftpd及配置詳解

3.5虛擬使用者登入

pam_service_name=vsftpd
#虛擬使用者使用PAM認證方式。

guest_enable= YES/NO(NO)
#設定PAM使用的名稱,預設值為/etc/pam.d/vsftpd。

guest_username=ftp
#啟用虛擬使用者。預設值為NO。

virtual_use_local_privs=YES/NO(NO)
#這裡用來對映虛擬使用者。預設值為ftp。 #當該引數啟用(YES)時,虛擬使用者使用與本地使用者相同的許可權。當此引數關閉(NO)時,虛擬使用者使用與匿名使用者相同的許可權。預設情況下此引數 是關閉的(NO)。

3.5.1 建立文字格式的使用者名稱、密碼列表

首先需要建立一個文字格式的使用者名稱/密碼列表檔案,奇數行為使用者名稱,偶數行為上一行中使用者名稱所對應的密碼。

例如:新增兩個使用者jene、john,密碼分別為abc123、abc456執行以下的操作:

[[email protected] ~]# vi /etc/vsftpd/juser.txt
jene
abc123
john
abc456

3.5.2 生成資料庫:

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 #將剛建立的juser.list列表轉換為juser.list.db file juser.db #檢視轉換後的檔案型別

3.5.3 修改資料檔案訪問許可權:

chmod 600 /etc/vsftpd/juser.db

3.5.4修改pam配置:

# vi /etc/pam.d/juser.pam  //為虛擬使用者建立PAM認證檔案,檔名為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 建立虛擬賬號對應的系統使用者:

# useradd -d /var/ftptom -s /sbin/nologin tom #新增使用者tom,指定到新建的家目錄,將虛擬使用者對應到這個系統賬號上,這個 賬號無需設定密碼及登入Shell  # chmod 755 /var/ftptom/ #調整許可權以允許瀏覽目錄

3.5.6 修改主配置檔案

# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=no   //禁用匿名使用者登入
(anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022   //指定上傳許可權掩碼)

local_enable=YES        //需對映本地使用者,所以啟用些項
write_enable=YES        //啟用上傳寫入支援
chroot_local_user=YES     //(自建配置)將所有本地使用者限制在家目錄中
guest_enable=YES       //啟用對映功能
guest_username=tom      //指定對映的系統使用者名稱稱
pam_service_name=juser.pam  //指定新的PAM認證檔案
user_config_dir=/opt/vsftpd/juser_dir   //(自建配置)設定虛擬帳號的主目錄為/juser_dir
max_clients=300     //(自建配置)設定FTP伺服器最大接入客戶端數為300個 
max_per_ip=10     //(自建配置)設定每個IP地址最大連線數為10個 
listen=YES
port_enable=NO    //(自建配置)取消PORT模式進行資料傳輸 
connect_from_port_20=NO     //(修改配置)PORT模式進行資料傳輸部使用20埠 
ftp_data_port=20
pasv_enable=YES          //(自建配置)允許PASV模式進行資料傳輸 
pasv_min_port=65341     //(自建配置)PASV模式下資料傳輸所使用port範圍下界 
pasv_max_port=65351     //(自建配置)PASV模式下資料傳輸所使用port範圍上界

3.5.7 建立虛擬賬戶的配置檔案:

如上面的在沒有給予虛擬使用者上傳、建目錄等許可權的設定,可以用下面的方法給虛擬使用者建立獨立的配置檔案。

在user_config_dir指定路徑下,建立與虛擬帳號同名的配置檔案並新增相應的配置欄位

# mkdir /opt/vsftpd/juser_dir

cd /opt/vsftpd/juser_dir         //切換到這個新建的配置資料夾下

touch jene      建立jene配置檔案

touch john      建立john配置檔案

#vi jene   //為使用者jene建立獨立的配置檔案,允許他可以上傳和建立目錄

anon_upload_enable=YES

anon_mkdir_write_enable=YES

#touch john    //為其它使用者(john)建立空的配置檔案,也就是他們沒有上傳和建立目錄的許可權

[[email protected] juser_dir]# service vsftpd reload //過載vsftpd伺服器

登入ftp伺服器
Linux安裝vsftpd及配置詳解
已經登入tom的家目錄下了
Linux安裝vsftpd及配置詳解
以上的虛擬使用者jene和john共用對映的tom家目錄的

3.5.8 若用自己各自的目錄

vi vsftpd.conf

anonymous_enable=NO(修改配置)禁用匿名使用者登入

write_enable=YES (預設開啟)允許使用任何可以修改檔案系統的FTP的指令

local_enable=YES(預設開啟)啟用本地使用者登入設定

chroot_local_user=YES (自建配置)將所有本地使用者限制在家目錄中

pam_service_name=juser.pam(預設開啟)配置vsftpd使用的PAM模組為vsftpd

user_config_dir=/opt/vsftpd/juser_dir (自建配置)設定虛擬帳號的主目錄為/vsftpd_login
# mkdir /opt/vsftpd/juser_dir       //建虛擬賬號主目錄

# cd /opt/vsftpd/juser_dir //切換到這個新建的配置資料夾下  # touch jene 建立jene配置檔案  # touch john 建立john配置檔案

為各虛擬使用者建立獨立的配置檔案

# vi jene

anon_world_readable_only=YES    只讀,不能下載

anon_world_readable_only=no 表示使用者可以瀏覽FTP目錄和下載檔案 guest_enable=yes 開啟虛擬帳號登入 guest_username=ftp_jene 設定虛擬使用者jene對應的系統帳號為ftp_jene local_root=/opt/jene 使用者登入時,所在目錄 anon_world_readable_only=no 不允許匿名使用者瀏覽器整個伺服器的檔案系統 anon_max_rate=50000 限定傳輸速率為50KB/s
# vi john

guest_enable=yes 開啟虛擬帳號登入 

guest_username=ftp_ john 設定虛擬使用者john對應的系統帳號為ftp_john local_root=/opt/john 使用者登入時,所在目錄 anon_other_write_enable=YES 允許匿名賬號具有刪除、改名許可權 anon_mkdir_write_enable=yes 允許建立資料夾,不能刪除目錄 anon_upload_enable=yes 開啟匿名帳號的上傳功能 anon_world_readable_only=no 不允許匿名使用者瀏覽整個伺服器的檔案系統 anon_max_rate=100000 限定傳輸速度為100KB/s

重啟vsftpd服務
#service vsftpd restart

linux檔案許可權分成“屬主”、“屬組”和“其他人”這三種,如果“其他人”沒有可讀許可權,那anon_world_readable_only這個引數就起效了,對於目錄來說,如果“其他人”沒有可讀許可權,且anon_world_readable_only=YES,則匿名使用者無法瀏覽該目錄下的所有內容(看上去像個空目錄),而對於檔案來說,如果“其他人”沒有可讀許可權,且anon_world_readable_only=YES,則匿名使用者無法下載該檔案。

4、修改selinux

外網是可以訪問上去了,可是發現沒法返回目錄(使用ftp的主動模式,被動模式還是無法訪問),也上傳不了,因為selinux作怪了。
修改selinux:
執行以下命令檢視狀態:

[[email protected] ~]# 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 [[email protected] ~]# 

執行上面命令,再返回的結果看到兩行都是off,代表,沒有開啟外網的訪問

[[email protected] ~]# setsebool -P allow_ftpd_full_access on
[[email protected] ~]# setsebool -P ftp_home_dir on

這樣應該沒問題了(如果,還是不行,看看是不是用了ftp客戶端工具用了passive模式訪問了,如提示Entering Passive mode,就代表是passive模式,預設是不行的,因為ftp passive模式被iptables擋住了,下面會講怎麼開啟,如果懶得開的話,就看看你客戶端ftp是否有port模式的選項,或者把passive模式的選項去掉。如果客戶端還是不行,看看客戶端上的主機的電腦是否開了防火牆,關吧)

FileZilla的主動、被動模式修改:
選單:編輯→設定
Linux安裝vsftpd及配置詳解

5、設定開機啟動vsftpd ftp服務

[[email protected] ~]# chkconfig vsftpd on

6、修改FTP預設埠

6.1登入伺服器,開啟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選項並將21修改成你設定的埠,本文為2121
# 21 is registered to ftp, but also used by fsp ftp 2121/tcp ftp 2121/udp fsp fspd 

6.3 重啟vsftp服務

# /etc/init.d/vsftpd restart 

使用netstat -utlpn | grep vsftp命令檢視設定的埠,確認是否成功
# 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

在主動模式中,FTP的兩個埠是相對固定的,如果命令埠是x的話,那資料埠就是x-1,也就是說預設情況下,命令埠是21,資料埠就是20;你把命令埠改成了2121,那麼資料埠就是2120。這樣使用防火牆就很方便了,只要開通這兩個埠就可以了,但是如果客戶端是共享上網的話那豈不是不能正常使用FTP了,這樣還是不行,一定需要被動模式。

被動模式中就麻煩了些,命令埠修改為2121,那麼資料埠就是2120,但是資料埠是隨機的,所以需要在裝置裡設定一下被動埠範圍6000到7000(pasv_min_port=6000 pasv_max_port=7000)

防火牆裡允許修改過埠號及隨機埠號範圍

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