zoukankan      html  css  js  c++  java
  • CentOS 7 设置iptables防火墙开放proftpd端口

    由于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,重启防火墙即可

  • 相关阅读:
    leetcode5 Longest Palindromic Substring
    leetcode17 Letter Combinations of a Phone Number
    leetcode13 Roman to Integer
    leetcode14 Longest Common Prefix
    leetcode20 Valid Parentheses
    leetcode392 Is Subsequence
    leetcode121 Best Time to Buy and Sell Stock
    leetcode198 House Robber
    leetcode746 Min Cost Climbing Stairs
    tomcat下使用druid配置jnid数据源
  • 原文地址:https://www.cnblogs.com/fjping0606/p/5817958.html
Copyright © 2011-2022 走看看