安裝完後,有/etc/vsftpd/vsftpd.conf 文件,是vsftp的配置文件。
[root@bogon ~]# yum -y install vsftpdlinux

二、FTP主動模式與FTP被動模式的端口說明

FTP是僅基於TCP的服務,不支持UDP。 不同凡響的是FTP使用2個端口,一個數據端口和一個命令端口(也可叫作控制端口)。一般來講這兩個端口是21(命令端口)和20(數據端口)。但FTP工做方式的不一樣,數據端口並不老是20。這就是主動與被動FTP的最大不一樣之處。shell

FTP協議有兩種工做方式:PORT方式和PASV方式,中文意思爲主動式和被動式。數據庫

(一) FTP主動模式vim

主動方式的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被動模式windows

爲了解決服務器發起到客戶的鏈接的問題,人們開發了一種不一樣的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優缺點:centos

主動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.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的匿名登陸通常有三種:緩存

一、 用戶名:anonymous 密碼:Email或者爲空安全

二、 用戶名:FTP 密碼:FTP或者爲空ruby

三、 用戶名: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匿名用戶上傳和下載的配置

配置要注意三部分,請一一仔細對照
一、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)

二、ftp目錄的權限設置(匿名用戶)
默認狀況下,ftp的根目錄爲/var/ftp,爲了安全,這個目錄默認不容許設置爲777權限,不然ftp將沒法訪問。可是咱們要匿名上傳文件,須要「other」用戶的寫權限,正確的作法:
chmod o+w /var/ftp/pub/
Linux安裝vsftpd及配置詳解
上傳的文件權限是600,屬主和屬組默認都是ftp

三、爲了安全修改屬主權限爲匿名的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服務器用的。
[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
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,密碼分別爲abc12三、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服務器
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,則匿名用戶沒法下載該文件。

四、修改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的主動、被動模式修改:
菜單:編輯→設置
Linux安裝vsftpd及配置詳解

五、設置開機啓動vsftpd ftp服務

[root@bogon ~]# chkconfig vsftpd on

六、修改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)

防火牆裏容許修改過端口號及隨機端口號範圍

七、rhel7中修改防火牆:

一、防火牆添加端口 # 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 二、防火牆刪除端口 # firewall-cmd --zone=public --permanent --remove-port=80/tcp # firewall-cmd --reload 三、查看防火牆配置 # cat /etc/firewalld/zones/public.xml