1. 程式人生 > >iptables防火牆如何開放ftp埠

iptables防火牆如何開放ftp埠

Linux伺服器上安裝ftp提供使用者上傳下載,是很方便的事情,但是如果你的伺服器開啟了iptables防火牆,就要對ftp埠做一些設定。
ftp埠真的比較特殊,並不像80,22這些埠。它分為連線用的埠,還有當你上傳下載檔案的傳輸資料用的埠。
netstat -tnl 命令可以看到,我們現在運行了ftp服務。
tcp        0      0 0.0.0.0:21              0.0.0.0:*               LISTEN
現在我開始對ftp埠的設定,按照我們以前的視訊,新增需要開放的埠
ftp連線埠有 21 和 20 埠,21埠用於連線,20埠用於傳輸資料,我現在新增對應的規則。
[
[email protected]
root]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT
[[email protected] root]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT
[[email protected] root]# iptables -A OUTPUT -p tcp --sport 21 -j ACCEPT
[[email protected] root]# iptables -A OUTPUT -p tcp --sport 20 -j ACCEPT
好,這樣就新增完了,我們用瀏覽器訪問一下ftp,出現超時。
所以我剛才說 ftp 是比較特殊的埠,它還有一些埠是 資料傳輸埠,
例如目錄列表, 上傳 ,下載 檔案都要用到這些埠。
而這些埠是 任意 埠。。。 這個 任意 真的比較特殊。
如果不指定什麼一個埠範圍, iptables 很難對任意埠開放的,
如果iptables允許任意埠訪問, 那和不設定防火牆沒什麼區別,所以不現實的。
那麼我們的解決辦法就是 指定這個資料傳輸埠的一個範圍。
下面我們修改一下ftp配置檔案。
我這裡使用vsftpd來修改演示,其他ftp我不知道哪裡修改,大家可以找找資料。
[
[email protected]
root]# vi /etc/vsftpd/vsftpd.conf
在配置檔案的最下面新增
pasv_min_port=30001
pasv_max_port=31000
然後儲存退出。
這兩句話的意思告訴vsftpd, 要傳輸資料的埠範圍就在30001到31000 這個範圍內傳送。
這樣我們使用 iptables 就好辦多了,我們就開啟 30001到31000 這些埠。
[[email protected] root]# iptables -A INPUT -p tcp --dport 30001:31000 -j ACCEPT
[[email protected] root]# iptables -A OUTPUT -p tcp --sport 30001:31000 -j ACCEPT
[
[email protected]
root]# service iptables save
最後進行儲存, 然後我們再用瀏覽器範圍下 ftp。可以正常訪問