iptables下開放ftp連線

2021-04-14 02:46:22 字數 2042 閱讀 6526

這兩天在給客戶安裝伺服器時也順便給他們使用iptables,不用不知道,一用才發現iptables還有很多東西可以學的,比如開放ftp。

iptables 的filter表的input鏈的預設策略設為了drop,其餘的鏈均為accept。 該伺服器即要作ftp伺服器,也要連上別的ftp伺服器。即是說要把源埠和目的埠都開放21才行:

iptables -a input -p tcp –sport 21 -j accept

iptables -a input -p tcp –dport 21 -j accept

開了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

把原有規則:iptables -a input -p tcp –sport 1024: –dport 1024: -j accept

改為:iptables -a input -p tcp –sport 1024: –dport 1024:  -m state –state established,related  -j accept

允許連線保持的被動訪問。

問題終於解決了。 

/sbin/iptables -p output accept

/sbin/iptables -a input -i lo -j accept

/sbin/iptables -a input -p icmp -m icmp --icmp-type 8 -j accept

/sbin/modprobe ip_nat_ftp

/sbin/modprobe ip_conntrack

/sbin/modprobe  ip_conntrack_ftp

/sbin/iptables -a input -p tcp --sport 21 -j accept

/sbin/iptables -a input -p tcp --dport 21 -j accept

/sbin/iptables -a input -p tcp --sport 1024: --dport 1024: -m state --state  established,related  -j accept

# /sbin/iptables -a input -m state --state established,related -j accept

/sbin/iptables -a output -p icmp -m state --state new,established,related -j accept

/sbin/iptables -a input  -p icmp -m state --state established,related  -j accept

/sbin/iptables -a input -p tcp -m tcp --dport 22 -j accept

/sbin/iptables -a input -p tcp -m tcp --dport 80 -j accept

Ubantu下通過iptables開放埠

1.iptablesan安裝 檢查是否安裝 shylin etc sudo whereis iptables iptables sbin iptables usr share iptables usr share man man8 iptables.8.gz 安裝 sudo apt get inst...

Linux修改iptables,開放8080埠

安裝tomcat後,在客戶端輸入位址http serveraddress 8080,發現預設埠8080不能訪問。由於linux防火牆預設是關閉8080埠。因此,若要能夠訪問8080埠,可以用兩種方式,乙個是關閉防火牆,另乙個就是讓防火牆開放8080埠。開放8080埠的解決步驟如下 a rh fire...

利用iptables開放被動模式下的FTP服務 2

一 ftp服務簡介 ftp伺服器有兩種工作模式 主動模式和被動模式。這兩種方式的特點如下 1 主動模式下 tcp,20 20號埠用於資料傳輸 21 21號埠用於控制連線 2 被動模式 tcp,21 用於控制連線 1023 埠號大於1023的隨機埠用於資料傳輸 所以如果ftp工作在被動模式下,無法指定...