這兩天在給客戶安裝 服務器 時也順便給他們使用 iptables ,不用不知道,一用才發現 iptables 還有很多東西可以學的,比如" name="description" />
MILY: 宋體; mso-bidi-font-size: 9.0pt; mso-ascii-font-family: "Times New Roman"; mso-hansi-font-family: "Times New Roman"">這兩天在給客戶安裝服務器時也順便給他們使用iptables,不用不知道,一用才發現iptables還有很多東西可以學的,比如開放ftp。
iptables 的filter表的INPUT鏈的默認策略設為了DROP,其余的鏈均為ACCEPT。 該服務器即要作ftp服務器,也要連上別的ftp服務器。即是說要把源端口和目的端口都開放21才行:
|
開了21端口就行了嗎?不是的。先說說ftp協議。ftp協議是一個簡單、保密性差(明碼)的tcp協議,它的工作原理是客戶端先連服務器端的21端口,然后經過3步的握手以后建立了一條連接。要注意的是,這條連接只可以用來傳輸ftp的命令,只有這條連接的話是什么都傳不了的,就算是用“ls”命令來查看文件也不行。
建立了命令的連接以后,服務器端就要建立一條數據的連接。數據的連接又分為主動模式(port)和被動模式(passive)。ftp默認是被動模式,主動和被動之間使用"pass"命令切換。主動模式通過20端口與客戶端相連,而被動模式卻使用1024以后的端口與客戶端相連。由于1024以后的端口是隨機分配的,所以在被動模式下我們是不知道服務端是使用什么端口與客戶端連接的。也就是說,我們是不知道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,加上一條規則:
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
允許連接保持的被動訪問。
問題終于解決了。
請教關于iptables的FTP設置
iptables設置目標(在本機)之一:
允許訪問外面的ftp服務器,無論哪種模式;
除了xxx.xxx.xxx.123這臺機器外,所有的機器所有的連接都drop,除了ftp,
這兩條規則我總是設置不成功,希望高手能給予幫助,謝謝!
偶已經解決了這個問題啦
呵呵,貼出來,大家幫著看看有沒有問題啦。。。
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