暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

防火墙导致的FTP服务故障

生有可恋 2023-03-11
769

在传统印象中,FTP 服务使用端口 21,SSH 服务使用端口 22。在搭建 FTP 服务时想当然地只放行 21 端口,但在使用中遇到各种问题。

服务器上通过 iptables 设置了入站阻止策略,即所有入站的包只有放行后才能访问。刚开始的 FTP 的防火墙放行策略为:

    iptables -I INPUT -p tcp -m tcp --dport 21 -j ACCEPT

    在 Windows 上使用文件管理器访问 FTP 服务地址:

      ftp://user:passwd@192.168.1.1

      在文件列表打开时卡死,在网上寻找答案,提示要修改 Internet 选项:

      到此时才发现 FTP 服务远比想象的要复杂,特别是要对其设置防火墙规则时。原来 FTP 的服务还分主动方式和被动方式,两种不同方式对端口的使用还不太一样。

      使用 Windows 文件管理器打开 FTP 服务有时能打开,换一台电脑有可能又打不开,在主动与被动方式的选择上成了玄学。于是果断放弃原始的文件管理器打开方式,转而使用专门的 FTP 连接工具 FileZilla 测试 FTP 服务是否正常。

      FileZilla 下载地址:

        https://filezilla-project.org/download.php?type=client#close

        在使用 FileZilla 测试 FTP 服务时遇到了类似的问题,FTP 能登录,但展开目录列表时会出错。此时开始怀疑光放 21 端口还不够,估计是防火墙将请求阻止了。对终端 IP 放行后,FTP 连接恢复正常,验证了之前的猜想。iptables 放行语句为:

          iptables -I INPUT -s 10.20.2.138 -j ACCEPT

          通过对终端 IP 进行抓包分析发现,不光有 21 端口的请求,还有其它端口的网络活动记录,抓包命令为:

            tcpdump -n -q -t host 10.20.2.138

            不同 FTP 服务的工作模式可能会存在差异,所以只放行 21 端口可能会阻塞掉部分通讯的数据包。

            因为我调试的 FTP 服务并不面向未知用户,只有固定的几个客户端需要访问,所以可以使用 IP 策略,即只放行部分 IP 。像这种端口是浮动的业务,防火墙策略还是比较难写的。实在不行可以先阻止掉部分端口,再按 IP 放行,毕竟防火墙规则是从上往下生效的。

            全文完。

            如果转发本文,文末务必注明:“转自微信公众号:生有可恋”。

            文章转载自生有可恋,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

            评论