免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7474 | 回复: 8
打印 上一主题 下一主题

[FTP] 外网用户无法访问内网FTP [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-02-22 14:48 |只看该作者 |倒序浏览
防火墙:Windows + Checkpoint NG AI R55
已经做了静态NAT  192.168.1.23  --- 220.248.33.x
添加规则:any to 192.168.1.23 allow (ftp, ftp-port, ftp-pasv)

ftp服务器:Fedora Core4 + vsftpd 2.0.4  
IP: 192.168.1.23 , 为了简化问题,停掉了自带的防火墙(service iptables stop)
vsftpd采用本地用户验证,其他缺省配置,内网用户可以正常使用

问题:外网用户被提示输入密码,输完之后马上connection closed by remote
看了cureftp的提示,大意是socket连接不正常
防火墙带状态检测,以前windows+serv-u的平台这样配置上一切正常。
不知道问题出在哪里,看了port pasv的一些东东也一头雾水,盼高人帮忙

论坛徽章:
0
2 [报告]
发表于 2006-02-22 16:40 |只看该作者
进一步测试,发现内网用户只能port方式正常连接。可是看了vsftpd的文档, pasv_enable 缺省是yes。

论坛徽章:
0
3 [报告]
发表于 2006-02-22 17:10 |只看该作者
现在直接挂在外网上,外网可以直接连上,但是从我自己的内网连ftp服务器的外部地址出错,看来还是要配通PASV模式:
STATUS:>          Getting listing ""...
STATUS:>          Connecting to FTP server 220.248.xx.xx:21 (ip = 220.248.xx.xx)...
STATUS:>          Socket connected. Waiting for welcome message...
                220 Welcome to FTP service of Satyam Shanghai.
STATUS:>          Connected. Authenticating...
COMMAND:>        USER shgftp
                331 Please specify the password.
COMMAND:>        PASS *****
                230 Login successful.
STATUS:>          Login successful.
COMMAND:>        PWD
                257 "/"
STATUS:>          Home directory: /
COMMAND:>        FEAT
                211-Features:
                 EPRT
                 EPSV
                 MDTM
                 PASV
                 REST STREAM
                 SIZE
                 TVFS
                211 End
STATUS:>          This site supports features.
STATUS:>          This site supports SIZE.
STATUS:>          This site can resume broken downloads.
COMMAND:>        REST 0
                350 Restart position accepted (0).
COMMAND:>        PASV
                227 Entering Passive Mode (220,248,xx,xx,179,151)
COMMAND:>        LIST
STATUS:>          Connecting FTP data socket 220.248.xx.xx:45975...
ERROR:>           Can't connect to remote server. Socket error = #10065.
ERROR:>           PASV failed, trying PORT.
STATUS:>          Waiting 0 seconds...
STATUS:>          Getting listing "/"...
STATUS:>          Connecting to FTP server 220.248.xx.xx:21 (ip = 220.248.xx.xx)...
STATUS:>          Socket connected. Waiting for welcome message...
                220 Welcome to FTP service of x.
STATUS:>          Connected. Authenticating...
COMMAND:>        USER shgftp
                331 Please specify the password.
COMMAND:>        PASS *****
                230 Login successful.
STATUS:>          Login successful.
COMMAND:>        PWD
                257 "/"
STATUS:>          Home directory: /
STATUS:>          This site supports features.
STATUS:>          This site supports SIZE.
STATUS:>          This site can resume broken downloads.
COMMAND:>        REST 0
                350 Restart position accepted (0).
COMMAND:>        PORT 172,24,12,3,16,120
ERROR:>           Can't read from control socket. Socket error = #10054.
ERROR:>           Failed to establish data socket.

论坛徽章:
0
4 [报告]
发表于 2006-02-22 18:11 |只看该作者
看来还是要去搞懂iptables,要配置一下才能允许pasv

论坛徽章:
0
5 [报告]
发表于 2006-02-22 18:30 |只看该作者
找到一个帖子

/etc/vsftpd/vsftpd.conf 要修改的設定如下:

pasv_enable=YES

# pasv_promiscuous=YES

# Ports for PASV mode, also enabled in iptables
#
pasv_min_port=65000
pasv_max_port=65100

/etc/sysconfig/iptables 要修改的設定如下:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 65000:65100 -j ACCEPT

论坛徽章:
0
6 [报告]
发表于 2006-02-22 22:03 |只看该作者
原帖由 Unix-MuMu 于 2006-2-22 16:40 发表
进一步测试,发现内网用户只能port方式正常连接。可是看了vsftpd的文档, pasv_enable 缺省是yes。

pasv_enable和port_enable默认值都是yes

论坛徽章:
0
7 [报告]
发表于 2006-02-22 23:53 |只看该作者
正確方式是告訴 iptables 除了允許一般 port 21 連入之外,對於後續傳輸資料時該 data channel 另外建立的動態 port 也要允許。

其中片段敘述像是: (注意,是片斷敘述,已經省略一些 reset 等項目)


  1. modprobe ip_tables
  2. modprobe ip_conntrack
  3. modprobe ip_conntrack_ftp

  4. iptables -P INPUT ACCEPT

  5. iptables -A INPUT -i lo -j ACCEPT

  6. iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

  7. iptables -A INPUT -p tcp --dport 21 -j ACCEPT
复制代码


注意那個 "RELATED" 那行敘述,會允許動態外面使用 passive mode 動態於主機指定的 port 進行存取。

iptables 有 ip_conntrack_ftp 這種 ftp protocol helper,所以不要使用古早以前大該 60000 多 port 作法,因為那是會有安全問題的。

==

论坛徽章:
0
8 [报告]
发表于 2006-03-01 14:00 |只看该作者
iptables的命令方式不太熟,楼上的朋友看看/etc/sysconfig/iptables的内容是否达到了你说的要求:
[unix-mumu]#more /etc/sysconfig/iptables
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 65000:65100 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

论坛徽章:
0
9 [报告]
发表于 2006-03-01 17:05 |只看该作者
原帖由 Unix-MuMu 于 2006-2-22 14:48 发表
防火墙:Windows + Checkpoint NG AI R55
已经做了静态NAT  192.168.1.23  --- 220.248.33.x
添加规则:any to 192.168.1.23 allow (ftp, ftp-port, ftp-pasv)

ftp服务器:Fedora Core4 + vsftpd 2.0.4  
I ...


一个动态协议跟踪的问题,是防火墙的问题
ftp的数据连接分为主动和被动方式连接,主动方式是ftp服务器向外发起连接,被对方式是ftp服务器等待客户端连接
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP