vsftpd设置被动模式_(1)vsftpd主、被动模式iptables配置方法
大多數(shù)的TCP服務(wù)是使用單個(gè)端口的連接,一般是用戶向服務(wù)器的一個(gè)某個(gè)端口發(fā)起連接,然后使用這個(gè)連接進(jìn)行通訊。但FTP協(xié)議卻是例外,它使用雙向的多個(gè)連接
,而且使用的端口很難預(yù)計(jì)。
FTP連接包括:一個(gè)控制連接 (control
connection)
這個(gè)連接用于傳遞客戶端的命令和服務(wù)器端對(duì)命令的響應(yīng)。它使用周知的TCP21端口,生存期是整個(gè)FTP會(huì)話時(shí)間。
N個(gè)數(shù)據(jù)連接 (data
connection)這些連接用于傳輸文件和其它數(shù)據(jù),例如:目錄列表等。這種連接在需要數(shù)據(jù)傳輸時(shí)建立,而一旦數(shù)據(jù)傳輸完畢就關(guān)閉,每次使用的端口也不一定相同。而且,這種數(shù)據(jù)
連接既可能是客戶端發(fā)起的,也可能是服務(wù)器端發(fā)起的。
FTP協(xié)議使用一個(gè)標(biāo)準(zhǔn)的端口20作為ftp-data端口,但是這個(gè)端口只用于連接的源地址是服務(wù)器端的情況,在這個(gè)端口上根本就沒有監(jiān)聽進(jìn)程。
主動(dòng)與被動(dòng)模式
FTP的數(shù)據(jù)連接和控制連接的方向一般是相反的,即服務(wù)器向客戶端發(fā)起一個(gè)用于數(shù)據(jù)傳輸?shù)倪B接。連接的端口是由服務(wù)器端和客戶端協(xié)商確定的,這就是vsftpd的主動(dòng)模式(port
mod)。FTP協(xié)議的這個(gè)特征對(duì)iptables防火墻和NAT的配置增加了很多困難。在FTP被動(dòng)模式 (passive
mod)下,數(shù)據(jù)連接是由客戶程序發(fā)起的,和主動(dòng)模式相反。
選擇模式的原則
1、client 沒有防火墻時(shí),用主動(dòng)模式連接即可
2、server 沒有防火墻時(shí),用被動(dòng)模式即可
3、雙方都有防火墻時(shí),vsftpd 設(shè)置被動(dòng)模式高端口范圍,server 打開那段范圍,client
用被動(dòng)模式連接即可
是否采取被動(dòng)模式取決于客戶程序,在ftp命令行中使用passive命令就可以關(guān)閉/打開被動(dòng)模式。
在xp命令行模式下使用ftp命令連接ftp服務(wù)器,用的是主動(dòng)模式。瀏覽器方式下連接ftp服務(wù)器,可以修改訪問使用的模式。
iptables中配置vsftp
問題:配置iptables后,能夠登錄到vsftpd服務(wù)器,但ls列目錄失敗(超時(shí))。
分析:
主動(dòng)模式下:客戶連接
TCP/21,服務(wù)器通過 TCP/20 連接客戶的隨機(jī)端口
―這種情況下,通過狀態(tài)防火墻可以解決
iptables -A INPUT -m state
--state NEW,RELATED,ESTABLISHED -j ACCEPT
或者如下:
iptables -A INPUT -m state --state
ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p
tcp?-m multiport --dport 20,21?-m state --state NEW -j ACCEPT
NEW: 該包想要開始一個(gè)新的連接(重新連接或連接重定向)
RELATED:該包是屬于某個(gè)已經(jīng)建立的連接所建立的新連接。如FTP的數(shù)據(jù)傳輸連接和控制連接之間就是RELATED關(guān)系。
ESTABLISHED:該包屬于某個(gè)已經(jīng)建立的連接。
INVALID:該包不匹配于任何連接,通常這些包被DROP。
被動(dòng)模式下:客戶連接
TCP/21,客戶再通過其他端口連接服務(wù)器的隨機(jī)端口,卡住的原因,是因?yàn)榉?wù)器在被動(dòng)模式下沒有打開臨時(shí)端口讓 client
連過來。
臨時(shí)打洞的方法:
優(yōu)點(diǎn):不影響ftp配置;缺點(diǎn):
客戶會(huì)感覺到連接有些延遲。原因參見ip_conntract的實(shí)現(xiàn)原理
在/etc/modprobe.conf中添加
alias ip_conntrack ip_conntract_ftp ip_nat_ftp
在/etc/rc.local中添加
/sbin/modprobe ip_conntract
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
限制被動(dòng)模式連接端口的方法:
優(yōu)點(diǎn):對(duì)連接速度沒有影響。缺點(diǎn):
限制了客戶端并發(fā)連接的數(shù)量。
在/etc/vsftpd/vsftpd.conf中添加
pasv_enable=YES
pasv_min_port=2222
pasv_max_port=2225
iptables中開放這段端口
-A INPUT -m state --state
RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j
ACCEPT
-A INPUT -p tcp --dport 2222:2225 -j ACCEPT
如果有硬件防火墻,也同樣需要打開這些端口!
總結(jié)
以上是生活随笔為你收集整理的vsftpd设置被动模式_(1)vsftpd主、被动模式iptables配置方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java实现rtsp转rtmp
- 下一篇: Win10提示不是有效的字体文件怎么解决