问题:作为ftp服务器,会收到不同服务器传过去的文件。不同的服务器会使用不同的用户。如果希望查看某一目录的文件(不同的ftp用户使用不同的目录)来源,如何查找对端的ip?
1、通过/etc/passwd,可以找到指定目录对应的ftp用户
2、通过“netstat |grep ftp”,可以查找ftp到本机的所有远端ip
3、如果远端ip只有一个,那么,则找到该ip。
如果远端ip不止一个,一个比较笨的办法,就是一个个登录,确定对应的ip。
下面说的是另一种办法。
我们知道,ftp的传输是明文传输的,因此,传输的过程中,一定可以明文找到对应的用户名。举例如下:
上面是使用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行
通过以上方法,就可以显示指定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抓包的时候,指定网卡