1. 程式人生 > >Linux安裝vsftpd及配置詳解

Linux安裝vsftpd及配置詳解

技術 第一個 config vpd b2c 大端 工具 端口修改 系統

1 安裝vsftpd組件

安裝完後,有/etc/vsftpd/vsftpd.conf 文件,是vsftp的配置文件。
[root@bogon ~]# 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文件

[root@bogon ~]# 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
[root@bogon ~]# service iptables restart

3.2 FTP匿名登錄

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

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

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

3、 用戶名:USER 密碼:pass

3.2.1 在IE瀏覽器或文件管理器中匿名訪問

ftp默認開啟的匿名用戶登錄和主動模式,用IE訪問需要把“使用被動FTP”選項去掉前面的勾,這樣ftp都連接上去

技術分享圖片

在文件管理器輸入框中輸入ftp://域名或者ip,如果端口不是21的後面加端口。
技術分享圖片

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 在此檔案內,則不允許進入。

技術分享圖片

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/
技術分享圖片
上傳的文件權限是600,屬主和屬組默認都是ftp

3、為了安全修改屬主權限為匿名的ftp權限,不用默認的root權限

chown ftp /var/ftp/pub/ -R
技術分享圖片

*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服務器用的。
[root@bogon ~]# useradd ftpuser -s /sbin/nologin
這樣一個用戶建完,不可以用這個登錄,記得用普通登錄不要用匿名了。登錄後默認的路徑為 /home/ftpuser.

3.4.2 給ftp用戶添加密碼

[root@bogon ~]# 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服務:

[root@bogon ~]# service vsftpd restart

3.4.5 訪問

在windows資源管理器中連接ftp://ip
本地用戶登錄(家目錄/home/ftpuser),可以創建或刪除目錄、文件,目錄權限是755,文件權限是644
技術分享圖片

修改路徑為/opt/test下(local_root=/opt/test),為了安全,在/opt/test目錄下建tt目錄,並給tt目錄屬主和屬組修改為ftpuser,這樣才可以創建或刪除目錄,上傳、刪除文件
技術分享圖片

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執行以下的操作:

[root@ling ~]# 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)創建空的配置文件,也就是他們沒有上傳和創建目錄的權限

[root@ling juser_dir]# service vsftpd reload //重載vsftpd服務器

登錄ftp服務器
技術分享圖片
已經登錄tom的家目錄下了
技術分享圖片
以上的虛擬用戶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:
執行以下命令查看狀態:

[root@bogon ~]# 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@bogon ~]# 

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

[root@bogon ~]# setsebool -P allow_ftpd_full_access on
[root@bogon ~]# setsebool -P ftp_home_dir on

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

FileZilla的主動、被動模式修改:
菜單:編輯→設置
技術分享圖片

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

[root@bogon ~]# 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

Linux安裝vsftpd及配置詳解