在Ubuntu系统中,Sniffer工具(如tcpdump、Sniffer Pro)本身可能不直接提供完善的警报通知功能,需通过内置规则、第三方监控工具或自定义脚本实现。以下是具体设置步骤:
若使用Sniffer Pro等商业工具,可通过其内置模块快速配置警报:
eth0);通过Snort(开源入侵检测系统)实时检测恶意流量,触发报警并联动其他工具:
sudo apt install snort(需root权限);/etc/snort/rules/local.rules),添加自定义规则。例如,检测SYN Flood攻击的规则:alert tcp any any -> any any (flags: S; threshold: type both, track by_src, count 100, seconds 60; msg: "SYN Flood Attack Detected"; sid: 1000001;)
规则说明:threshold参数表示60秒内从同一源IP收到100个SYN包时触发报警;msg为报警信息;sid为规则唯一标识。sudo snort -i eth0 -c /etc/snort/snort.conf -A console # 控制台输出
sudo snort -i eth0 -c /etc/snort/snort.conf -A fast # 输出到alert.fast文件
Zabbix、Prometheus等监控平台,实现集中化管理(如通过Zabbix的SNMP Trap接收功能)。通过Shell脚本定期检查网络指标(如CPU使用率、流量),超过阈值时通过syslog发送警报:
network_alarm.sh):#!/bin/bash
THRESHOLD=100 # 流量阈值(Mbps)
CURRENT_TRAFFIC=$(iftop -i eth0 -t -s 1 | grep "Total send rate" | awk '{print $4}' | sed 's/Mbps//g') # 获取当前流量(需安装iftop)
if [ "$CURRENT_TRAFFIC" -gt "$THRESHOLD" ]; then
echo "Network Traffic Alert: Current traffic is ${CURRENT_TRAFFIC}Mbps (Threshold: ${THRESHOLD}Mbps)" | logger -t network_alarm -P user.warning
fi
脚本说明:使用iftop获取eth0接口的实时流量(需安装iftop:sudo apt install iftop),若超过阈值则通过logger命令将报警信息写入syslog。cron每分钟执行一次脚本:crontab -e
添加以下内容:* * * * * /path/to/network_alarm.sh
/etc/rsyslog.conf,将network_alarm标签的警告日志转发到指定邮箱(如admin@example.com):if $syslogtag == network_alarm and $priority == warning then mailto:admin@example.com
重启rsyslog服务使配置生效:sudo systemctl restart rsyslog
通过Zabbix等工具实现对Sniffer数据的集中监控和警报:
UserParameter,采集Sniffer数据(如tcpdump捕获的流量数量):# 编辑/etc/zabbix/zabbix_agent2.conf
UserParameter=sniffer.traffic[*],sudo tcpdump -i eth0 -c $1 2>/dev/null
root权限才能捕获所有流量,建议使用sudo或专门监控账户(如sniffer_user);/var/log/network_alarm.log),便于后续分析。