星期五, 12月 02, 2011

vsftpd + iptables

vsftpd 如果沒有在防火牆底下,其實直接安裝,應該就可以正常使用了,不過,昨天 overjoy 傳訊請我幫忙看看為啥他架的 vsftpd 無法連線進入。

本來以為是 vsftpd 設定檔的問題,所以試了半天,還是有問題,後來才想到是不是防火牆的問題,所以又去找了一下 CentOS 的 iptables 的設定,

在 /etc/sysconfig/iptables 看到 iptables 設定的規則。

Firewall configuration written by system-config-firewall
Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
 -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT

 

把 iptables 停掉後,vsftp 就正常了,所以看起來是防火牆的問題,在防火牆底下架 ftp 其實是比較麻煩,因為必須特別為 passive mode 開port 出來,不過,vsftpd 的設定其實已經人性很多了,順便把設定步驟記下來,下次也許換我用得上!

編輯 vsftpd.conf (加入下列三行)

pasv_enable=YES
pasv_min_port=5000
pasv_max_port=9000

編輯 防火牆的規則 (CentOS 是編輯 /etc/sysconfig/iptables,把藍色行加在適當的位置)

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 5000:9000 -j ACCEPT