您的位置:首页 > 编程语言 > PHP开发

查看连接到本机ftp服务器的指定ip

2015-03-13 14:13 162 查看
问题:作为ftp服务器,会收到不同服务器传过去的文件。不同的服务器会使用不同的用户。如果希望查看某一目录的文件(不同的ftp用户使用不同的目录)来源,如何查找对端的ip?

1、通过/etc/passwd,可以找到指定目录对应的ftp用户

[root@YMM tmp]# cat /etc/passwd|grep elog_user
elog_user:x:502:503::/home/Unicom/elogDir:/sbin/nologin


2、通过“netstat |grep ftp”,可以查找ftp到本机的所有远端ip

[root@YMM tmp]# netstat |grep ftp
tcp        0      0 172.168.1.155:50750         172.168.1.161:ftp           ESTABLISHED 
tcp        0      0 172.168.1.155:ftp           172.168.1.154:51981         TIME_WAIT   
tcp        0      0 172.168.1.155:ftp           172.168.1.154:51977         TIME_WAIT   
tcp        0      0 172.168.1.155:ftp           172.168.1.154:51979         TIME_WAIT   
tcp        0      0 172.168.1.155:ftp           172.168.1.168:57437         TIME_WAIT   
tcp        0      0 172.168.1.155:ftp           172.168.1.168:57425         TIME_WAIT


3、如果远端ip只有一个,那么,则找到该ip。

如果远端ip不止一个,一个比较笨的办法,就是一个个登录,确定对应的ip。

下面说的是另一种办法。

我们知道,ftp的传输是明文传输的,因此,传输的过程中,一定可以明文找到对应的用户名。举例如下:

10:40:40.629789 IP 172.168.1.154.51627 > 172.168.1.155.21: Flags [P.], seq 1:17, ack 21, win 115, options [nop,nop,TS val 1804049752 ecr 1800293869], length 16
        0x0000:  4500 0044 38a6 4000 4006 7d88 c0a8 019a  E..D8.@.@.}.....
        0x0010:  c0a8 019b c9ab 0015 b4cf a5f7 16cd ee1b  ................
        0x0020:  8018 0073 8f56 0000 0101 080a 6b87 9d58  ...s.V......k..X
        0x0030:  6b4e 4ded 5553 4552 2065 6c6f 675f 7573  kNM.USER.elog_us
        0x0040:  6572 0d0a                                er..
10:40:40.629804 IP 172.168.1.155.21 > 172.168.1.154.51627: Flags [.], ack 17, win 114, options [nop,nop,TS val 1800293869 ecr 1804049752], length 0
        0x0000:  4500 0034 a3ee 4000 4006 1250 c0a8 019b  E..4..@.@..P....
        0x0010:  c0a8 019a 0015 c9ab 16cd ee1b b4cf a607  ................
        0x0020:  8010 0072 0629 0000 0101 080a 6b4e 4ded  ...r.)......kNM.
        0x0030:  6b87 9d58                                k..X


上面是使用tcpdump抓的一个ftp连接过程的包,我们可以看到用户名“elog_user”是明文显示的(注意换行)。

那么既然我们已经知道了指定目录文件对应的ftp用户,那么我们也就可以确定使用该ftp用户的对端ftp,这样就可以达到目的。

4、 在ftp服务器上使用tcpdump抓取ftp对应的包(端口为21)

抓取eth2网卡中端口为21的数据,并打印包的数据,重定向到文件“/tmp/a.log”

tcpdump -i eth2 -nn port 21 -X |tee /tmp/a.log

注:需要指定网卡,否则可能会出现下面的错误提示:

tcpdump: USB link-layer type filtering not implemented

网卡根据实际情况指定,获取的方法为“ifconfig”

5、查找指定用户,并显示上几行数据

因为对应的ip都在显示用户的上几行,因此,需要使用grep的“-B”参数

注:grep -B NUM 表示显示筛选的字符串及上面NUM行

[root@YMM tmp]# grep -B 4 "elog_us" a.log 
10:40:30.397662 IP 172.168.1.154.51625 > 172.168.1.155.21: Flags [P.], seq 1:17, ack 21, win 115, options [nop,nop,TS val 1804039520 ecr 1800283637], length 16
        0x0000:  4500 0044 3673 4000 4006 7fbb c0a8 019a  E..D6s@.@.......
        0x0010:  c0a8 019b c9a9 0015 a6bc 432e f08c e246  ..........C....F
        0x0020:  8018 0073 823a 0000 0101 080a 6b87 7560  ...s.:......k.u`
        0x0030:  6b4e 25f5 5553 4552 2065 6c6f 675f 7573  kN%.USER.elog_us
--
10:40:40.629789 IP 172.168.1.154.51627 > 172.168.1.155.21: Flags [P.], seq 1:17, ack 21, win 115, options [nop,nop,TS val 1804049752 ecr 1800293869], length 16
        0x0000:  4500 0044 38a6 4000 4006 7d88 c0a8 019a  E..D8.@.@.}.....
        0x0010:  c0a8 019b c9ab 0015 b4cf a5f7 16cd ee1b  ................
        0x0020:  8018 0073 8f56 0000 0101 080a 6b87 9d58  ...s.V......k..X
        0x0030:  6b4e 4ded 5553 4552 2065 6c6f 675f 7573  kNM.USER.elog_us


通过以上方法,就可以显示指定ftp用户对应的对端ip。

扩展阅读: http://www.52souji.net/how-to-obtain-some-lines-before-or-after-a-specified-string-in-linux/ 获取特定字符串前后几行数据

http://zebozhuang.blog.163.com/blog/static/17147980420128913935138/ tcpdump抓包的时候,指定网卡
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: