先理解主被動的聯接方式:
FTP協議有兩種工作方式:PORT方式和PASV方式,中文意思為主動式和被動式。
Port模式:ftp server:tcp
21 <------client:dynamic ftp server:tcp 20 ------>client:dynamic
Pasv模式:ftp server:tcp 21
<----client:dynamic ftp server:tcp dynamic
<----client:dynamic
PORT(主動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請
求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,客戶
端在命令鏈路上用PORT命令告訴服務器:“我打開了XXXX端口,你過來連接我”。于是服務器從20端口向客戶端的XXXX端口發送連接請求,建立一條
數據鏈路來傳送數據。
PASV(被動)方式的連接過程是:客戶端向服務器的FTP端口(默認是21)發送連接請
求,服務器接受連接,建立一條命令鏈路。當需要傳送數據時,服務
器在命令鏈路上用PASV命令告訴客戶端:“我打開了XXXX端口,你過來連接我”。于是客戶端向服務器的XXXX端口發送連接請求,建立一條數據鏈路來
傳送數據。
#allow all ftp incoming connections
iptables -A INPUT -p tcp
--dport 21 -m state --state ESTABLISHED -j ACCEPT
iptables -A OUTPUT -p tcp
--sport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
# Enable active ftp transfers
iptables -A INPUT -p tcp
--dport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT
-p tcp --sport 20 -m state --state ESTABLISHED -j ACCEPT
# Enable passive ftp transfers
iptables -A INPUT -p tcp
--sport 1024:65535 --dport 1024:65535 -m state --state ESTABLISHED -j
ACCEPT
iptables -A OUTPUT -p tcp --sport 1024:65535 --dport 1024:65535 -m
state --state ESTABLISHED,RELATED -j ACCEPT