由于ftp的被动模式是这样的,客户端跟服务器端的21号端口交互信令,服务器端开启21号端口能够使客户端登录以及查看目录。
但是ftp被动模式用于传输数据的端口却不是21,而是大于1024的随机或配置文件里的端口,并且服务器端通过21号端口告诉客户端我要通过>1024的某个端口来发送数据(ftp-data),客户端得知服务器端这个端口后,再由客户端主动向服务器端的>1024的端口发起tcp连接。
问题就来了,如果按上述的原理,服务器端防火墙并没有打开1024以上的端口,客户端主动发起的连接就无法穿越防火墙,因为传输文件连接失败

根据上面描述原理,解决方法有四:
假设已经将ftp的默认21端口更改为11222

1、关闭防火墙

2、服务器端防火墙打开1024以上的端口
iptables -A INPUT -p tcp --dport 11222 -j ACCEPT
iptables -A INPUT -p tcp --dport 1024: -j ACCEPT
弊端:此方法等于没开防火墙

3、设置proftpd使用固定的一段端口进行数据传输
修改proftpd配置文件,添加以下配置
PassivePorts 20000 25000 # 被动模式端口段
iptables防火墙开启此范围端口
iptables -A INPUT -p tcp --dport 11222 -j ACCEPT
iptables -A INPUT -p tcp --dport 20000:25000 -j ACCEPT
弊端:开启的端口范围略大,有风险

4、加载模块ip_conntrack_ftp,这时在加载ip_conntrack_ftp模块时需要更改代理端口为11222
打开/etc/sysconfig/iptables-config,保证此文件定义加载了ip_conntrack_ftp,如:
IPTABLES_MODULES="ip_conntrack_ftp"

然后在文件/etc/modprobe.conf增加此模块的参数:
options ip_conntrack_ftp ports=11222

如果需要手动加载,则可以执行以下命令:
/sbin/modprobe ip_conntrack_ftp ports=11222

注意:CentOS 6以上并不存在了modprobe.conf文件,需要在/etc/modprobe.d/目录下自定义添加
由于我们使用的是CentOS7,于是手动创建/etc/modprobe.d/proftpd.conf,添加上面的options ip_conntrack_ftp ports=11222内容进去

最后,重启防火墙即可

CentOS 7设置iptables防火墙开放proftpd端口的更多相关文章

  1. CentOS 7 设置iptables防火墙开放proftpd端口

    由于ftp的被动模式是这样的,客户端跟服务器端的21号端口交互信令,服务器端开启21号端口能够使客户端登录以及查看目录.但是ftp被动模式用于传输数据的端口却不是21,而是大于1024的随机或配置文件 ...

  2. CentOS 6、CentOS7 防火墙开放指定端口

    当我们在CentOS服务器中装了一些开发环境(如 tomcat.mysql.nginx 等...)时,希望能从外界访问,就需要配置防火墙对指定端口开放. CentOS 6.51.开放指定端口/sbin ...

  3. CentOS中iptables防火墙 开放80端口方法

    开放端口:  代码如下 复制代码 [root@WX32 ~]# iptables -I INPUT -p tcp --dport 80 -j ACCEPT 保存配置:  代码如下 复制代码 [root ...

  4. linux设置iptables防火墙的详细步骤(centos防火墙设置方法)

    CentOS系统也是基于linux中的它的防火墙其实就是iptables了,下面我来介绍在CentOS防火墙iptables的配置教程,希望此教程对各位朋友会有所帮助.   iptables是与Lin ...

  5. CentOS 防火墙开放特定端口

    iptables是linux下的防火墙,同时也是服务名称.   service  iptables  status        查看防火墙状态 service  iptables  start   ...

  6. Linux 防火墙开放特定端口 (iptables)

    iptables是linux下的防火墙,同时也是服务名称.   service  iptables  status        查看防火墙状态 service  iptables  start   ...

  7. Win10如何设置防火墙开放特定端口 windows10防火墙设置对特定端口开放的方法

    Win10防火墙虽然能够很好地保护我们的系统,但同时也会因限制了某些端口,而给我们的操作带了一些不便.对于既想使用某些端口,又不愿关闭防火墙的用户而言,在Win10系统中设置防火墙开放特定端口就非常必 ...

  8. SUSE Enterprise Server 12 SP3 64 设置防火墙开放8080端口

    SUSE Enterprise Server 12 SP3 64 设置防火墙开放8080端口 第一种方式: 1.sudo chmod a+w /etc/sysconfig/SuSEfirewall2  ...

  9. SUSE Enterprise Server 12 SP3 64 设置防火墙开放8080端口,出现Unsafe permissions for file /etc/sysconfig/SuSEfirewall2 to be sourced

    SUSE Enterprise Server  12 SP3 64 设置防火墙开放8080端口时出现  Unsafe permissions for file /etc/sysconfig/SuSEf ...

随机推荐

  1. python乱码处理

    在.py文件第一行加上以下任意一种,只是写法不同,效果一样的. # -*- coding: UTF-8 –*- #vim: set fileencoding=utf-8: # coding=utf-8 ...

  2. position: absolute 的元素自动对齐父元素 border 外边缘

    Position with border outer edge CSS box-flex align-items justify-content

  3. HTML---网页编程(1)

    前 言 HTML需要和CSS还有JS一起用,才能提现强大. 所以,学了HTML.最好去学学CSS还有JS(JavaScript) ☆静态页面和动态页面 网站页面分为静态页面和动态页面两种 • 静态页面 ...

  4. openstack kilo版本控制节点异常流量分析

  5. hdoj 2899 Strange fuction【二分求解方程】

    Strange fuction Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  6. JavaEE学习笔记---数据库操作篇

    测试JDBC和SQLServer的插入操作,源码如下: import java.sql.Connection;import java.sql.DriverManager;import java.sql ...

  7. 386. Lexicographical Numbers

    用DFS来做,先弄开头是1的,再弄开头是1的里面开头是1的,再开头是1的里面开头是1的里的开头是1的,再... 是吧-- 比N大了BREAK就行. 注意第一个循环是1-9,往后的循环是0-9. pub ...

  8. springmvc报错 org.springframework.web.servlet.DispatcherServlet

    在写springMVC时,导入所有需要的包后,运行程序,控制台报以下错误: 严重: Servlet [springDispatcherServlet] in web application [/Spr ...

  9. the partition number

    有一个容量为n的背包,有1, 2, 3, ..., n这n种物品,每种物品可以无限使用,求装满的方案数. 法一: http://mathworld.wolfram.com/PartitionFunct ...

  10. bzoj2822: [AHOI2012]树屋阶梯

    咦,这里有好多东西https://en.wikipedia.org/wiki/Catalan_number 每个矩形最多贡献一个拐角 枚举左上角的点和那个拐角是一个矩形 #include<cst ...