실시간으로 tcpdump를 FTP에 업로드하는 방법은 무엇입니까?

실시간으로 tcpdump를 FTP에 업로드하는 방법은 무엇입니까?

다음 명령을 사용하여 tcpdump를 수행할 수 있습니다.

tcpdump -w `date +%F-%Hh-%Mm-%Ss-%N`.pcap src 10.10.10.10 or dst 10.10.10.10

묻다: FTP 서버가 있고 사용자 이름은 FTPUSER이고 비밀번호는 FTPPASSWORD입니다. tcpdump "라이브" 업로드 방법 즉, 덤프를 저장할 저장 공간이 많지 않아 FTP를 통해서만 접근할 수 있는 곳에 업로드해야 한다는 뜻입니다. 할 수 있을까?"관로" 어떻게든 tcpdump의 출력을 이를 업로드한 ftp 클라이언트로 보내나요? [파일 이름도 유지해야 합니다: " date +%F-%Hh-%Mm-%Ss-%N.pcap"]

그래서 저는 tcpdump를 로컬에 저장하지 않고 덤프를 "라이브"로 업로드하는 솔루션을 찾고 있습니다.

운영 체제는 tcpdump가 실행되는 라우터인 OpenWrt 10.03입니다. [라우터에 4MB의 플래시가 있어서 로컬에 저장할 수 없습니다. ]

업데이트 2: FTP 서버에 SSH 연결이 없고 FTP만 연결됩니다. [및 FTPES, 하지만 지금은 그게 중요하지 않다고 생각합니다.]

답변1

SSH를 사용할 수 없는 경우(FTP 서버를 실행하는 UNIX/Linux 시스템이 없을 수도 있고 netcat다른 방법을 사용할 수도 있음) 다음을 수행하십시오.유용할 수 있습니다:

사용curl, 업로드할 수 있습니다표준 입력에서FTP를 통해 파일로 전송:

tcpdump -w - | curl -u FTPUSER:FTPPASS ftp://ftpserver/where/ever/dump.pcap -T -

tcpdump원본 패킷을 출력합니다 (이 질문을 비교해보세요) 및 컬이 이 입력을 추가합니다(덮어쓰는지 확실하지 않음). 이것이 효과가 있을지는 확실하지 않지만 시도해 볼 가치가 있을 것입니다.

(파일 생성의 타임스탬프 curl는 연습으로 남겨둡니다.)

답변2

-Ctcpdump 옵션을 살펴보십시오 .

   -C     Before  writing  a  raw  packet  to  a savefile, check whether 
 the file is currently larger than file_size and, if so, close the current 
 savefile and open a new one.  Savefiles after the  first savefile  will  have 
 the name specified with the -w flag, with a number after it, starting at 1 
 and continuing upward. The units of file_size are  millions  of  bytes 
 1,000,000  bytes, not 1,048,576 bytes).

크기 플래그를 상당히 작은 값으로 설정하고 cron매분마다 새로운 오버플로 파일이 있는지 테스트하는 스크립트를 작성한 다음 FTP를 통해 오버플로 파일을 업로드하고 삭제하기 전에 이름을 변경하면 원하는 결과를 얻을 수 있습니다. 찾고 싶다.

cron 스크립트가 새 파일을 업로드할 수 있는 것보다 더 빠르게 링크가 넘쳐나는 경우 이 설정은 여전히 ​​DOS에 취약하며, SSH 기능이 있는 경우 파이프 ssh트릭을 적극 권장합니다.@크리스그린위에서 제공됩니다.

답변3

tcpdump출력을 파이프에 기록하고 다른 곳에 저장할 수 있습니다 . BPF 필터도 업데이트했습니다.

tcpdump -w - host 10.10.10.10  | ssh host2 'cat - > `date +%F-%Hh-%Mm-%Ss-%N`.pcap'

이는 패킷을 쓴 stdout다음 ssh다른 호스트에 대한 연결을 통해 씁니다. 뒤집어서 다른 호스트에서 실행할 수도 있습니다.

ssh router tcpdump -w - host 10.10.10.10 > `date +%F-%Hh-%Mm-%Ss-%N`.pcap

답변4

FTP 동기화가 작동하려면 이 파일 스트림이 디스크가 아니라 프로그램에서 나온다는 사실을 알아야 합니다. 게다가 이를 달성하는 것은 아마도 매우 어려울 것입니다.

sshfs를 사용하고 올바른 자격 증명으로 ssh/sshfs를 사용하여 원격 파일 시스템을 마운트하는 것이 좋습니다(사용자 공간 파일 시스템이므로 시스템의 퓨전과 관련된 구성 변경이 최소화되고 슈퍼 자격 증명이 필요하지 않음). 그런 다음 tcpdump를 사용하면 지속적으로 캡처된 패킷 스트림을 sshfs 마운트 파일 시스템의 파일로 덤프합니다.

SSHFS 시작하기:

http://www.linuxjournal.com/article/8904

http://www.lylebackenroth.com/blog/sshfs/

관련 정보