红联Linux门户
Linux帮助

vsftpd服务器如何设置iptables

发布时间:2010-09-13 18:16:13来源:红联作者:昊昊荡荡
[i=s] 本帖最后由 昊昊荡荡 于 2010-9-26 23:28 编辑 [/i]

我日常用的fedora 13(实体机)开启了vsftpd和sshd服务,主要浏览网页。vsftpd为主动模式。今天对vsftpd进行了设置,见下:
[root@fedora13 ~]# iptables -L -n
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 这个地方是执行iptables -I INPUT 1 -i lo -p all-j ACCEPT的结果,别以为是对所有访问放行
LOG all -- 0.0.0.0/0 0.0.0.0/0 state INVALID LOG flags 6 level 4 prefix `DROP INVALID'
DROP all -- 0.0.0.0/0 0.0.0.0/0 state INVALID
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 state NEW
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:21
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:20

Chain FORWARD (policy DROP)
target prot opt source destination

Chain OUTPUT (policy DROP)
target prot opt source destination
LOG all -- 0.0.0.0/0 0.0.0.0/0 state INVALID LOG flags 6 level 4 prefix `DROP INVALID'
DROP all -- 0.0.0.0/0 0.0.0.0/0 state INVALID
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 state NEW
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 state NEW
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443 state NEW
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:53 state NEW
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:21
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:20

但问题是,我在同局域网内的另一台机器上用ftp 连接时,总是提示与远程主机断开连接。
文章评论

共有 10 条评论

  1. 昊昊荡荡 于 2010-09-27 13:55:30发表:

    顶一下,让更多的人看到解决办法!

  2. 昊昊荡荡 于 2010-09-26 23:49:20发表:

    本人对iptables非常感兴趣,希望坛里的iptables爱好者能多交流,谢谢!

  3. 昊昊荡荡 于 2010-09-26 23:45:44发表:

    [i=s] 本帖最后由 昊昊荡荡 于 2010-9-26 23:47 编辑 [/i]

    经多次实验,终于解决了这个问题。现在我把这个问题的解决办法写下了,方便跟我有同样困惑的人参看。也请高手斧正!
    其实,出现这样的问题,并不是防火墙的配置出了什么问题。如果非要说防火墙有什么问题,也只能说,在OUTPUT链,因为有了“ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED”这行配置,所以“ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:21”这行和ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:20这行都是可以删掉的。当然这不能算是错,只能说不够严谨和完美。
    这是防火墙配置上的问题。
    客户端不能访问vsftpd服务问题到底出在哪里呢?下面揭晓----
    客户端要顺利访问vsftpd服务,还应加载三个模块,指令如下:
    modprobe ip _conntrack
     modprobe ip_conntrack_ftp
     modprobe ip_nat_ftp
    这三个模块的作用分别是:
    ip_conntrack模块能够使防火墙具有连接跟踪能力。(通过输入 "cat /proc/net/ip_conntrack" 可以查看您的机器参与的活动网络连接。)加载这个模块后,基本上所有有状态的返回包都能识别,例:telnet,http,QQ,mail,ping,dns等。
      
      实际上,加载了ip_conntrack模块,ftp已经能够登陆,并能使用象pwd,cd等命令,但当使用ls命令显示文件内容时,就会timeout。原因在于显示文件列表的包防火墙无法识别,就会进入默认策略----禁止,此时就需要加载ip_conntrack_ftp模块。ip_conntrack_ftp模块使防火墙能够识别FTP某类特殊的返回包。
      
      如果防火墙上对所有出去的返回包作了伪装,就需要加载ip_nat_ftp模块。ip_nat_ftp模块在出去的包作了伪装以后,必须加载,否则防火墙无法知道返回的包该转发到哪里。

    后经多次实验,发现上面三个模块,只要加载了ip_conntrack_ftp模块,即可实现客户端对vsftpd服务的正常访问。加载ip_conntrack模块时是提示找不到这个模块。不知什么原因,Google也没找答案,还望高手指点。

  4. 昊昊荡荡 于 2010-09-26 23:28:30发表:

    引用:
    昊昊荡荡同学很是好学啊,升级也很快
    wozdaixxma 发表于 2010-9-26 20:19


    哪里哪里,只因linux太迷人了,我被她深深的吸引了!

  5. wozdaixxma 于 2010-09-26 20:19:36发表:

    昊昊荡荡同学很是好学啊,升级也很快

  6. zifeiyu-fish 于 2010-09-16 12:23:21发表:

    学习~

  7. 昊昊荡荡 于 2010-09-16 00:01:01发表:

    继续顶!

  8. 昊昊荡荡 于 2010-09-15 01:17:38发表:

    顶顶顶!
    有知道的吗?

  9. 昊昊荡荡 于 2010-09-14 12:10:26发表:

    再顶!

  10. 昊昊荡荡 于 2010-09-13 23:19:53发表:

    自己顶!这么简单的问题都没人知道吗?