Ubuntu 下定制嗅探检测规则的实用方案
在 Ubuntu 上,常见的“嗅探器”可分为两类:一类是面向入侵检测/防御的Snort(可写规则进行模式匹配与告警),另一类是面向抓包与过滤的tcpdump/Wireshark/Scapy(通过 BPF 或显示过滤器定制“捕获/显示”规则)。下面分别给出可落地的规则定制方法与示例。
Snort 规则定制
var HOME_NET 192.168.1.0/24
alert tcp any any -> $HOME_NET 80 (msg:"HTTP access detected"; sid:1000001;)
alert tcp any any -> $HOME_NET 21 (msg:"FTP access detected"; sid:1000002;)
alert icmp any any -> $HOME_NET any (msg:"ICMP probe detected"; sid:1000003;)
sudo snort -c /etc/snort/rules/local.rules -l /var/log/snort
tcpdump BPF 捕获过滤定制
进阶 使用 Scapy 编写自定义嗅探脚本
#!/usr/bin/env python3
from scapy.all import *
def pkt_callback(pkt):
if pkt.haslayer(TCP) and pkt.haslayer(Raw):
payload = pkt[Raw].load.decode(errors="ignore")
if "GET /" in payload:
print(f"[+] HTTP GET detected: {pkt[IP].src}:{pkt[TCP].sport} -> {pkt[IP].dst}:{pkt[TCP].dport}")
sniff(iface="eth0", prn=pkt_callback, store=False)
合规与安全提示