Networking

記錄 tcpdump 輸出

  • December 10, 2012

我基本上想要的是每 3 天將所有 tcpdump 擷取的數據包寫入一個文件。所以基本上 tcpdump 應該在第 1 天執行 24 小時,並將輸出寫入 Day1.log,第 2 天和第 3 天類似。在第 4 天,它應該重複並將日誌再次寫入第 1 天。這基本上是為了檢查我的伺服器上的 DDoS 嘗試,並找出攻擊類型,包括攻擊者的 IP,因為在過去 7 天我的機器受到了 DDoS 攻擊,我希望它會再次發生。我知道它是由一些 cronjobs 完成的,但我需要將實際命令放在那裡?

我還想知道哪個 IP 以 mb/sec 為單位最大輸入了多少,因為我的流量很高,所以我幾乎需要 6 個小時來繼續搜尋這些文件以查找攻擊者的 IP。那麼,在分析這些文件的過程中,WireShark 中是否有任何內容可以說明 IP 對我的伺服器進行了多少 mb/s 輸入?如果沒有,我應該如何找到它?

編輯: ——————————————–

你們也可以自由發表反對這一點的想法。我所需要的只是找到攻擊者的 IP、他發送的數據包數據以及以 mb/s 為單位的輸入到我的伺服器。我的客戶的輸入不超過 300kb/s,所以如果我們設置一個過濾器來擷取超過 1mb/s 的輸入(如果有的話),我們可以擷取它。

我建議不要記錄所有流量,而是:監控發送到伺服器的數據包數量。如果超過某個門檻值,記錄幾個 1000 個數據包,然後等待更長的時間。

該數據包跟踪應包含大量可用於分析的資訊。此外,在一切正常的情況下,它不會對您的伺服器施加過多的額外負載。您可以使用以下組合的 bash 程式碼作為起點(screen例如,可以從 開始):

interface=eth0
dumpdir=/tmp/

while /bin/true; do
 pkt_old=`grep $interface: /proc/net/dev | cut -d :  -f2 | awk '{ print $2 }'`
 sleep 1
 pkt_new=`grep $interface: /proc/net/dev | cut -d :  -f2 | awk '{ print $2 }'`

 pkt=$(( $pkt_new - $pkt_old ))
 echo -ne "\r$pkt packets/s\033[0K"

 if [ $pkt -gt 5000 ]; then
   echo -e "\n`date` Under attack, dumping packets."
   tcpdump -n -s0 -c 2000 -w $dumpdir/dump.`date +"%Y%m%d-%H%M%S"`.cap
   echo "`date` Packets dumped, sleeping now."
   sleep 300
 fi
done

隨意調整它以適應您的需求。

引用自:https://serverfault.com/questions/388024