由于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内容进去

最后,在防火墙配置文件/etc/sysconfig/iptables中开放ftp端口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. Ulua_toLua_基本案例(二)_ScriptsFromFile

    在Untiy中用Lua.必需要LuaInterface. LuaInterface的介绍请看:点击打开链接 能够先光写Lua,生成.lua的纯文件. 再Unity中通过,luaState.DoFile ...

  2. Hibernate学习笔记五:反向工程快速开发

    转载请注明原文地址:http://www.cnblogs.com/ygj0930/p/6768513.html  一:反向工程 Myeclipse提供由 数据库表 生成 java pojo 和 hib ...

  3. postgresql修改配置生效方法

    对于配置服务器,,太多时候我们在Linux中做的操作是,配置*.conf文件,然后重启服务.而很多服务都具有reload功能,而但是具体到某个配置,有时候直接说出需不需要重启服务而使得配置生效,这并不 ...

  4. cocos2d-js 在线更新代码脚本 动态更新脚本程序 热更新 绕过平台审核 不需重新上架

    2014年8月15日补充 cocos2d-js 3.0 rc0 的AssetsManager有缺陷,有一些注意点:(可以阅读源代码发现) 1.旧manifest中有,但新manifest中没有的文件( ...

  5. Spring DataSource>DBCP & C3P0

    Spring在第三方依赖包中包含了两个数据源的实现类包,其一是Apache的DBCP,其二是 C3P0.可以在Spring配置文件中利用这两者中任何一个配置数据源. DBCP数据源 DBCP类包位于 ...

  6. 【DB2】慎用nickname,可能会引起效率较低

    在使用db2的时候,在A库建立了nickname,指向B库的物理表(数据量800多万),现在使用程序(JDBC)连接数据库,并计算指标,但是发现效率很低. 解决办法: 删除A库中的nickname,在 ...

  7. jenkins相关默认路径

    安装完成后,有如下相关目录:(1)/usr/lib/jenkins/:jenkins安装目录,WAR包会放在这里.( 2 ) /etc/sysconfig/jenkins:jenkins配置文件,“端 ...

  8. Swift3 获取系统音量和监听系统音量

    使用时: //定义滑动条用于显示音量 @IBOutlet weak var volumSlider: UISlider! //处理声音,获取当前音量,并添加监听 handleVolum() 方法内容: ...

  9. [转]NLP Tasks

    Natural Language Processing Tasks and Selected References I've been working on several natural langu ...

  10. 神文章1:去年(2011)一年干了些啥? -vivo神人

    评论: 来自豆瓣的vivo神人,之前不知道有着一号牛逼的人物,觉此人博学.有正义感,其中有一片文章述说了中国近代经济演变历史情况,于我感触很深.因时间关系,没通读,有时间一定读完(微博口水杂录简略看了 ...