- 監聽 (sniffer) 模式:在此模式下,Snort 僅是 sniffer(如 tcpdump)的功能,監聽所有來往的封包,但不會做攻擊模式的比對。
[root@kvm8 ~]# snort -v
05/17-20:00:21.777355 192.168.122.8:22 -> 192.168.122.1:35748
TCP TTL:64 TOS:0x10 ID:30685 IpLen:20 DgmLen:708 DF
***AP*** Seq: 0x5082263D Ack: 0x1B3CC3FD Win: 0x190 TcpLen: 32
TCP Options (3) => NOP NOP TS: 1770779 42906554
=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
- NIDS(網路型入侵偵測系統):在此模式下,Snort 不僅會監聽所有來往的封包,並會做攻擊模式的比對。執行以下指令,以常駐程式方式啟動 Snort,並將網卡設定成 promiscuous。
[root@kvm8 ~]# snort -c /etc/snort/snort.conf -i eht0 -D
Spawning daemon child...
My daemon child 1976 lives...
Daemon parent exiting (0)
- 以 dmsg 查看。
[root@kvm8 ~]# dmesg | grep promiscuous
device eth0 entered promiscuous mode
device eth0 left promiscuous mode
device eth0 entered promiscuous mode
device eth0 left promiscuous mode
device eth0 entered promiscuous mode
- Snort 語法
- payload 語法
- rules 語法範例一:當主機上的 5432 埠,如果有接收到內含有 select 字串的封包,則記錄一筆警示記錄(記錄內容為「someone access PSQL command:SELECT」)。
alert tcp any any → any 5432 (msg:"someone access PSQL command:SELECT"; content:"select";)
規則描述如下表:
alert【處理方式】 產生警示的 log
tcp【來源通訊協定】 偵測 TCP 的封包
any【來源 IP】 偵測任何的來源 IP
any【來源 port】 偵測任何的來源埠
any【目的 IP】 偵測任何的目的 IP
5432【目的 port】 僅偵測 5432 埠的封包
【進階處理內容】 若符合內容含有「select」的字串,則將 msg 後的字串記錄起來。
- rules 語法範例二:當主機上的 27374 埠,接收到來自外部 IP 任何 port 的 tcp 封包,旗標包含「ACK + 其他」,內容包含 0d0a5b52504c5d3030320d0a,引用外部攻擊識別系統 arachnids,其 id 485。
alert tcp $EXTERNAL_NET any -> $HOME_NET 27374 (msg: 'BACKDOOR SIG - SubSseven 22'; flags: A+; content: "|0d0a5b52504c5d3030320d0a|"; reference:arachnids,485;)
- rules 設定對從任何位址小於 1024 埠向本機 500 以上端口發送的 tcp 資料包都報警。
[root@kvm8 ~]# cat /etc/snort/rules/web-misc.rules
alert tcp any :1024 -> 192.168.122.8 500:
- 修改 snort 設定將此 rules 加入。
[root@kvm8 ~]# grep web-misc /etc/snort/snort.conf
include $RULE_PATH/web-misc.rules
- 攻擊模擬及 log 查詢待續。
[root@kvm8 ~]# cat /var/log/snort/snort.log.1400330008