Snort 是跨平台、開源的網路入侵偵測系統 (NIDS),具備即時流量分析、封包記錄、協議解析、內容匹配與多種警報輸出能力。本文以原始碼編譯方式,完整記錄 Snort 2.2.0 在 Linux 上的依賴套件安裝、MySQL/ACID 整合、規則配置、啟動參數與規則撰寫入門。
-v)-d -l /var/log/snort)-c /etc/snort/snort.conf)CONFIG_PACKET)--with-openssl)--with-pcre)--with-libnet,支援 flexresp 主動回應)./configure --enable-flexresp --with-mysql --with-openssl --with-pcre --with-libnet/etc/snort/rules| 變數 | 設定範例 | 說明 |
|---|---|---|
HOME_NET | 192.168.1.0/24 或 [192.168.1.1,192.168.1.2] | 保護網段,預設 any 過於寬鬆 |
SMTP_SERVERS | $HOME_NET 或指定 IP | 郵件伺服器位置 |
HTTP_SERVERS | $HOME_NET 或指定 IP | Web 伺服器位置 |
DNS_SERVERS | $HOME_NET + 取消註解 preprocessor portscan-ignorehosts: $DNS_SERVERS | 避免 DNS 查詢誤觸掃描警報 |
| 元素 | 說明 |
|---|---|
| 動作 | alert、log、pass、activate、dynamic、drop (IPS)、reject (IPS)、sdrop (IPS) |
| 協議 | tcp、udp、icmp、ip |
| 來源/目的 IP | 任何 (any)、網段 (192.168.1.0/24)、變數 ($HOME_NET)、否定 (!$HOME_NET) |
| 來源/目的埠 | 任何 (any)、單一埠、範圍 (1:1024)、列表 ([80,443,8080]) |
| 方向 | -> 單向、<> 雙向 |
| 選項 (關鍵字) | msg 訊息、content 內容匹配、nocase 忽略大小寫、flow 流向、sid 規則 ID、rev 版本、classtype 分類、priority 優先級 |
選項間為 AND 關係,全符合才觸發。進階選項含 pcre (PCRE 正則)、byte_test、byte_jump、detection_filter (頻率控制) 等。
threshold/detection_filter 抑制高頻誤報--enable-perfprofiling 分析規則效能