Ftp

如何將 tcpdump 實時上傳到 FTP?

  • August 3, 2015

我可以用這個命令做 tcpdumps:

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 的解決方案,而是“實時”上傳轉儲。

作業系統是 OpenWrt 10.03 - 執行 tcpdump 的路由器。

$$ 4MB flash on the router, that’s why I can’t store them locally. $$ UPDATE2:沒有到 FTP 伺服器的 SSH 連接,只有 FTP

$$ and FTPES, but that doesn’t matter now I think $$

由於 SSH 不可用(並且可能沒有執行 FTP 伺服器的 UNIX/Linux 機器,您也可以使用netcat其他方式),以下可能有效

使用,您可以通過 FTP從 STDINcurl上傳到文件:

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

wheretcpdump輸出原始數據包(比較這個問題)和 curl 附加(覆蓋?不確定)這個輸入。我不完全確定這是否有效,但可能值得一試。

curl(文件創建的時間戳留作練習。)

看一下-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 腳本上傳新文件的速度更快的速度淹沒連結,並且如果您有任何 SSH 功能,我強烈推薦上面@Chris Green提供的ssh管道技巧,這種設置仍然容易受到 DOS 的攻擊。

引用自:https://unix.stackexchange.com/questions/28188