Snort

Snort 未檢測到傳出流量

  • October 3, 2017

我在 windows server 2008 R2 x64 上使用 Snort 2.9,配置非常簡單,如下所示:

# Entire content of Snort.conf:
alert tcp any any -> any any (sid:5000000; content:"_secret_"; msg:"TRIGGERED";)

# command line:
snort.exe -c etc/Snort.conf -l etc/log -A console

使用我的瀏覽器,我將 url 中的字元串“secret”發送到我的伺服器(Snort 所在的位置)。例子:http://myserver.com/index.php?_secret_

Snort 收到它並發出警報,它可以工作,沒問題!但是當我嘗試這樣的事情時:

<?php // (index.php)
header('XTest: _secret_'); // header
echo '_secret_'; // data
?>

如果我只是請求http://myserver.com/index.php,即使 php 文件在標頭和數據中都發送相同的字元串,沒有壓縮/編碼或其他任何內容,它也不起作用或檢測到傳出流量中的任何內容。(我使用 Wireshark 檢查過)

這在我看來像是一個 Snort 問題。無論我做什麼,它只檢測接收數據包。有人在使用 Snort 時遇到過這種問題嗎?知道如何解決嗎?

經過6個小時的痛苦嘗試,我終於修好了!

只需要添加-k none到命令行。

出於某種原因,在我的台式電腦中,它可以在沒有-k none參數的情況下工作。如果有人願意解釋發生了什麼,那將非常有幫助。謝謝。

聽起來校驗和解除安裝正在導致您的問題。

校驗和解除安裝允許 NIC 計算 TCP 校驗和,從而使 CPU 不必執行計算。NIC 在發送數據包之前執行每個計算,不幸的是,Snort 可以在計算之前擷取本地數據包。結果,Snort 的內部校驗和驗證看到校驗和為 0(因為尚未完成),將其解釋為錯誤校驗和,並且不進一步分析數據包。

這就是為什麼將-k none選項添加到 snort.exe 來修復它的原因;它禁用 Snort 的內部校驗和驗證,從而讓數據包被分析。

請注意,可以檢查和禁用 checksum offloading,但由於存在一些性能風險,我認為該-k解決方案更好。

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