時間 2016-04-21 10:32:15 蟲蟲開源
在設置ftp通過iptables規則前,需要先了解下ftp工作的兩種模式,他們分別是主動模式和被動模式。如果對ftp原理不是很清楚,可以先參考下下面幾篇文章。
FTP簡介
2、 Active FTP vs. Passive FTP, a Definitive Explanation
簡單的說,主動模式是從服務器端向客戶端發起連接;被動模式是客戶端向服務器端發起連接。兩者的共同點是都使用 21端口進行用戶驗證及管理,差別在於傳送數據的方式不同,PORT模式的FTP服務器數據端口固定在20,而PASV模式則在1025-65535之間 隨機。
了解ftp原理后,接下來就去設置iptables規則。我自己服務器上默認INPUT規則是DROP,OUTPUT是ACCEPT。
命令
1、開放21、20端口
# iptables -A INPUT -p tcp --dport 20 -j ACCEPT
# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
如果OUTPUT默認也是DROP,那么還需要添加一下規則。
# iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
2、接受所有狀態為ESTABLISHED、RELATED的連接
# iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
有關related狀態的說明:
RELATED狀態在有雙通道的服務中會出現的。比如ftp服務的控制通道和數據通道。client發送syn請求到server的21端口,中間的linux系統變為NEW狀態。server回復syn+ack應答包給client,中間的linux變為ESTABLISHED狀態。當ftp的控制通道建立完后,會建立數據通道,而數據通道的第一個包就是RELATED狀態,以后的包又變成ESTABLISHED狀態。
3、配置iptables
# vi /etc/sysconfig/iptables-config
找到IPTABLES_MODULES,取消注釋,添加ip_conntrack_ftp模塊,保存。ip_conntrack_ftp模塊可以讓iptables支持被動模式的ftp連接。
IPTABLES_MODULES="ip_conntrack_ftp"
4、保存iptables規則、重啟。
[root@iZ94myad6wkZ ~]# service iptables save iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ] [root@iZ94myad6wkZ ~]# service iptables restart iptables: Setting chains to policy ACCEPT: filter nat [ OK ] iptables: Flushing firewall rules: [ OK ] iptables: Unloading modules: [ OK ] iptables: Applying firewall rules: [ OK ] iptables: Loading additional modules: ip_conntrack_ftp [ OK ]
重啟iptables是多了個加載模塊的地址,ok正常。