vsftpd的主動模式與被動模式


好不容易配置好了vsftpd服務,在CentOS本機測試沒有問題,但是在我的Windows機器上使用FlashFXP連接的時候卻出問題了:

我雖然知道FTP存在兩種模式:PORT(主動)模式、PASV(被動)模式,但是卻不知道vsftpd此時竟然“不支持”被動模式!不會的,一定是配置出了問題~經過一番搜索,發現了其中的端倪:

FTP兩種模式的區別:

(1)PORT(主動)模式

所謂主動模式,指的是FTP服務器“主動”去連接客戶端的數據端口來傳輸數據,其過程具體來說就是:客戶端從一個任意的非特權端口N(N>1024)連接到FTP服務器的命令端口(即tcp 21端口),緊接着客戶端開始監聽端口N+1,並發送FTP命令“port N+1”到FTP服務器。然后服務器會從它自己的數據端口(20)“主動”連接到客戶端指定的數據端口(N+1),這樣客戶端就可以和ftp服務器建立數據傳輸通道了。

(2)PASV(被動)模式

所謂被動模式,指的是FTP服務器“被動”等待客戶端來連接自己的數據端口,其過程具體是:當開啟一個FTP連接時,客戶端打開兩個任意的非特權本地端口(N >1024和N+1)。第一個端口連接服務器的21端口,但與主動方式的FTP不同,客戶端不會提交PORT命令並允許服務器來回連它的數據端口,而是提交PASV命令。這樣做的結果是服務器會開啟一個任意的非特權端口(P > 1024),並發送PORT P命令給客戶端。然后客戶端發起從本地端口N+1到服務器的端口P的連接用來傳送數據。(注意此模式下的FTP服務器不需要開啟tcp 20端口了)

兩種模式的比較:

(1)PORT(主動)模式模式只要開啟服務器的21和20端口,而PASV(被動)模式需要開啟服務器大於1024所有tcp端口和21端口。

(2)從網絡安全的角度來看的話似乎ftp PORT模式更安全,而ftp PASV更不安全,那么為什么RFC要在ftp PORT基礎再制定一個ftp PASV模式呢?其實RFC制定ftp PASV模式的主要目的是為了數據傳輸安全角度出發的,因為ftp port使用固定20端口進行傳輸數據,那么作為黑客很容使用sniffer等探嗅器抓取ftp數據,這樣一來通過ftp PORT模式傳輸數據很容易被黑客竊取,因此使用PASV方式來架設ftp server是最安全絕佳方案。

因此:如果只是簡單的為了文件共享,完全可以禁用PASV模式,解除開放大量端口的威脅,同時也為防火牆的設置帶來便利。

不幸的是,FTP工具或者瀏覽器默認使用的都是PASV模式連接FTP服務器,因此,必須要使vsftpd在開啟了防火牆的情況下,也能夠支持PASV模式進行數據訪問。

如何開啟vsftpd的PASV模式?

(1)修改/etc/vsftpd/vsftpd.conf文件配置

pasv_enable=yes (Default: YES) 設置是否允許pasv模式
#pasv_promiscuous=no (Default: NO) 是否屏蔽對pasv進行安全檢查,(當有安全隧道時可禁用)
pasv_max_port=10240 (Default: 0 (use any port)) pasv使用的最大端口
pasv_min_port=20480 (Default: 0 (use any port)) pasv使用的最小端口

默認情況下vsftpd是支持PASV模式訪問的,可以不作修改。

(2)給防火牆添加FTP訪問轉換支持模塊

#vi /etc/sysconfig/iptables-config

// 添加以下兩行:
IPTABLES_MODULES="ip_conntrack_ftp"
IPTABLES_MODULES="ip_nat_ftp"

請一定注意兩行內容的位置關系不要搞反了。如果將"ip_nat_ftp"放到前面是加載不到的。如果你的ftp服務是過路由或者防火牆(即內網映射方式一定需要此模塊)。以上等同於在加載iptables之前運行modprobe命令加載"ip_nat_ftp"和"ip_conntrack_ftp"模塊。

(3)給防火牆添加訪問規則允許

-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --sport 21 -j 

(4)重啟防火牆服務

service iptables restart

(5)檢查模塊是否加載成功

#lsmod |grep ftp

p_nat_ftp              7361  0 
ip_nat                 21229  1 ip_nat_ftp
ip_conntrack_ftp       11569  1 ip_nat_ftp
ip_conntrack           53665  4 ip_nat_ftp,ip_nat,ip_conntrack_ftp,xt_state

以上信息表明模塊加載成功,可以在其他機器上使用FTP客戶端進行訪問了。

Nice~!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM