iptables下開放ftp連接
FTP連接能在iptables下開放,讓我們看看這是如何實現(xiàn)的!
iptables 的filter表的INPUT鏈的默認策略設(shè)為了DROP,其余的鏈均為ACCEPT。 該服務(wù)器即要作ftp服務(wù)器,也要連上別的ftp服務(wù)器。即是說要把源端口和目的端口都開放21才行:
iptables -A INPUT -p tcp --sport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
開了21端口就行了嗎?不是的。先說說ftp協(xié)議。ftp協(xié)議是一個簡單、保密性差(明碼)的tcp協(xié)議,它的工作原理是客戶端先連服務(wù)器端的21端口,然后經(jīng)過3步的握手以后建立了一條連接。要注意的是,這條連接只可以用來傳輸ftp的命令,只有這條連接的話是什么都傳不了的,就算是用“ls”命令來查看文件也不行。
建立了命令的連接以后,服務(wù)器端就要建立一條數(shù)據(jù)的連接。數(shù)據(jù)的連接又分為主動模式(port)和被動模式(passive)。ftp默認是被動模式,主動和被動之間使用"pass"命令切換。主動模式通過20端口與客戶端相連,而被動模式卻使用1024以后的端口與客戶端相連。由于1024以后的端口是隨機分配的,所以在被動模式下我們是不知道服務(wù)端是使用什么端口與客戶端連接的。也就是說,我們是不知道iptables要開放什么端口。
開始我使用的是
iptables -A input -p tcp --sport 1024: --dport 1024: -j ACCEPT
來讓ftp建立被動連接的。但覺得如果這樣的話,那就等于把所以p2p的連接都開放了,不安全。
于是在CU上問人,終于找到了解決的方法:
1、加載模塊。
modpobe ip_nat_ftp
modpobe ip_conntrack
modpobe ip_conntrack_ftp
2,加上一條規(guī)則:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
允許連接保持的被動訪問。
問題終于解決了。
請教關(guān)于iptables的FTP設(shè)置
iptables設(shè)置目標(biāo)(在本機)之一:
允許訪問外面的ftp服務(wù)器,無論哪種模式;
除了xxx.xxx.xxx.123這臺機器外,所有的機器所有的連接都drop,除了ftp,
這兩條規(guī)則我總是設(shè)置不成功,希望高手能給予幫助,謝謝!
偶已經(jīng)解決了這個問題啦
呵呵,貼出來,大家?guī)椭纯从袥]有問題啦。。。
iptables -A INPUT -s xxx.xxx.xxx.123 -j ACCEPT
iptables -A INPUT -p tcp -s ! xxx.xxx.xxx.123 -j ftp
iptables -A ftp -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A ftp -s 0/0 -j DROP
通過上面詳細的講解,我們明白了iptables下開放ftp連接的具體方法,希望能對你們有用!
【編輯推薦】