zoukankan      html  css  js  c++  java
  • FTP主被动模式抓包分析

    FTP主被动模式抓包案例分析

    1 FTP 工作模式

    FTP有两种工作模式,分别为主动模式和被动模式。所谓的主被动模式,是相对于服务器端而言的。

    1.1主动模式

    主动模式(Active Mode)是指在发起数据传输的时候,是由服务器端向客户端主动发起连接请求。

    主动模式的时序图如下图所示

    抓包如下图所示:

     

     

    主动模式下的服务器端向客户端发起请求

     

     

    在主动模式下,如果客户端有防火墙的话,就有可能服务器端发起主动连接失败。

    1.2 被动模式

    被动模式(Passive Mode)是指在发起数据传输的时候,是客户端主动发起请求(也就是服务器端被动)。

    被动模式时序图如下图所示:

    抓包分析的结果如下

    控制信道三次握手

     

    客户端向服务器21端口发起请求(PASV模式)

     

    服务器端响应了PORT 218,168,180,194,108,115,也就是跟客户端说,你可以连接我的108*256+115端口,也即是27763端口

     

     

    被动模式的情况下,如果主机或者防火墙有限制,客户端在请求数据的时候,就无法连接服务器。

    在被动模式下,如果是LINUX服务器,可以通过启用ip_conntrack_ftp模块来支持被动模式的FTP连接。具体修改方法如下

    # vi /etc/sysconfig/iptables-config, 将IPTABLES_MODULES 一行修改为
    IPTABLES_MODULES="ip_conntrack_ftp"

    然后在iptables规则中,增加

    # vim /etc/sysconfig/iptables
    # Firewall configuration written by system-config-firewall
    # Manual customization of this file is not recommended.
    *filter
    :INPUT ACCEPT [0:0]
    :FORWARD ACCEPT [0:0]
    :OUTPUT ACCEPT [0:0]
    -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
    -A INPUT -p icmp -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
    -A INPUT -j REJECT --reject-with icmp-host-prohibited
    -A FORWARD -j REJECT --reject-with icmp-host-prohibited
    COMMIT

    2 实际生产环境分析

    生产环境的话,由于中间有防火墙,假设我们是客户端,我们通过Active Mode去连接FTP服务器,首先我们通过防火墙出去访问公网FTP的话,防火墙肯定会进行NAT转换,否则 FTP服务器端收到的PORT就是192,168,0,100,xx,xx,这样的话,服务器端肯定连接不了客户端。

     

    3 案例分析

    生产环境一公网FTP 用户登录正常,但是无法列出目录,报错如下图所示:

     

    分析过程如下:

    1. 这个是一个vsftpd服务器,客户端用的是被动模式。
    2. 已经登陆上了,证明控制信道是没有问题的,是连接信道的问题。
    3. 抓包分析

    客户端

    服务器端

    这里至于为什么源IP和目的IP抓包看到都不一样,是因为是公网IP,做过转换的。

    从这里可以看出,客户端要连接服务器的12*256+166 = 3238端口。但是发的包服务器端没有收到(客户端还重发了包),到这里,猜测两个原因:

    1. 网络前端防火墙策略为开放3238端口
    2. 服务器端有防火墙

    检查了服务器端的防火墙配置,发现selinux, iptables都没问题。

    与网络沟通了一下,网络反馈没有做过任何变更。继续追问网络前端是否有安全策略,答曰有。让其截图看了一下

     

    开放的端口是3001~3100。查看了一下vsftpd的配置文件,其中有两行如下

    pasv_min_port=3001
    pasv_max_port=3300

    显然,是这里的端口跟防火墙的不匹配,让网络同事把安全策略调整了一下后恢复正常。

  • 相关阅读:
    [干货向]用Javascript获取页面元素的位置
    从 JavaScript 数组去重谈性能优化
    《悟透javascript》中的知识点
    深入理解javascript闭包
    深入理解Javascript之执行上下文(Execution Context)
    CSS Sprites的原理
    深入理解JavaScript定时机制
    防范sql注入式攻击的比较有见地的代码(PHP)
    PHP(authcode)加密解密
    预防数据库攻击
  • 原文地址:https://www.cnblogs.com/doctormo/p/12154884.html
Copyright © 2011-2022 走看看