본 컴퓨터의 ftp 서버에 연결된 지정한 IP 보기

문제: 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..@[email protected]....
        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 클러치 시 네트워크 카드 지정

좋은 웹페이지 즐겨찾기