3.1 Snort 規則首部
3.2.1 規則動作
規則頭包含定義信息包的對象、位置和內容的信息,以及在出現具有規則中指示的所有屬性的信息包時應該做什么。規則中的第一項是規則操作。規則操作告訴Snort在找到匹配規則條件的包時應該做什么。在Snort中有3種可用的默認操作:alert、log和pass。此外,如果您以內聯模式運行Snort,那么您還有其他選項,包括drop、reject和sdrop。
- alert - 使用選定的警報方法生成警報,然后記錄數據包
- log - 記錄數據包
- pass - 忽略數據包
- drop - 阻止并記錄數據包
- reject - 阻止數據包,記錄日志,如果協議為TCP,則發送TCP重置,如果協議為UDP,則發送ICMP端口不可達消息。
- sdrop - 阻止數據包,但不要記錄它。
您還可以定義自己的規則類型,并將一個或多個輸出插件與它們關聯。然后,您可以將規則類型用作Snort規則中的操作。
本示例將創建一個類型,該類型僅記錄到tcpdump:
ruletype suspicious
{
type log
output log_tcpdump: suspicious.log
}
本示例將創建一個規則類型,該規則類型將記錄到syslog和tcpdump:數據庫:
ruletype redalert
{
type alert
output alert_syslog: LOG_AUTH LOG_ALERT
output log_tcpdump: suspicious.log
}
3.2.2 協議
規則中的下一個字段是協議。Snort當前分析四種可疑行為的協議: TCP,UDP,ICMP和IP。將來可能會更多,例如ARP,IGRP,GRE,OSPF,RIP,IPX等。
3.2.3 IP地址
規則標題的下一部分處理給定規則的IP地址和端口信息。關鍵字any可以用來定義任何地址。Snort沒有提供為配置文件中IP地址字段提供主機名查找的機制。地址由一個直接的數字IP地址和一個CIDR塊。CIDR塊指示應用于規則地址的網絡掩碼以及根據規則測試的所有傳入數據包。CIDR塊掩碼/ 24表示C類網絡,/ 16表示B類網絡,/ 32表示特定的機器地址。例如,地址/ CIDR組合192.168.1.0/24表示從192.168.1.1到192.168.1.255的地址塊。使用此名稱作為目標地址的任何規則都將與該范圍內的任何地址匹配。CIDR名稱為我們提供了一種很好的捷徑,可以僅用幾個字符來指定較大的地址空間。
在下圖中,將源IP地址設置為與任何正在通話的計算機匹配,而目標地址設置為在192.168.1.0 C類網絡上匹配。

否定運算符是可以應用于IP地址的運算符。該運算符告訴Snort匹配除列出的IP地址指示的IP地址之外的任何IP地址。否定運算符用!表示。例如,對初始示例的一個簡單修改就是使用否定運算符使它對來自本地網絡外部的任何流量發出警報,如圖所示:

該規則的IP地址表示任何tcp數據包,其中tcp數據包的源IP地址不是源自內部網絡,而目標IP地址不是內部網絡。
您也可以指定IP地址列表。通過用方括號括起來的IP地址和CIDR塊的逗號分隔列表來指定IP列表。目前,IP列表可能不包含地址之間的空格。有關實際使用的IP列表的示例,請參見下圖。

3.2.4 端口號
端口號可以通過多種方式指定,包括任何端口,靜態端口定義,范圍和否定。任何端口都是通配符值,實際上是任何端口。靜態端口由單個端口號指示,例如portmapper的111,telnet的23或http的80等。端口范圍用范圍運算符:指示。可以以多種方式應用范圍運算符,以采用不同的含義,例如下圖。

端口取反使用否定運算符!指示。否定運算符可以應用于其他任何規則類型(除了任何規則類型,任何規則類型都將轉換為無,Zen …)。例如,如果出于某種原因,您希望記錄除X Windows端口以外的所有內容,則可以執行類似圖中的規則。

3.2.5 方向運算符
方向運算符 ->表示應用該規則的交通方向或方向。方向操作員左側的IP地址和端口號被視為來自源主機的流量,而操作員右側的地址和端口信息被視為目標主機。還有一個雙向運算符,用< >符號表示。這告訴Snort在源或目標方向上考慮地址/端口對。這對于記錄/分析對話的雙方都很方便,例如telnet或POP3會話。圖中顯示了一個雙向運算符用于記錄telnet會話雙方的示例。

另外,請注意,沒有< >-運算符。在1.8.7之前的Snort版本中,方向運算符沒有正確的錯誤檢查,許多人使用了無效的令牌。< -不存在的原因是,規則始終讀入一致。
3.2.6 激活/動態規則
淘汰了激活和動態規則,轉而使用標記和流位的組合。
Snort安裝使用中文手冊
推薦文章: