温馨提示×

CentOS Sniffer自定义规则设置

小樊
53
2025-09-22 07:38:02
栏目: 智能运维

CentOS Sniffer自定义规则设置指南
在CentOS系统中,“Sniffer”通常指tcpdump(命令行网络分析工具)或netsniff(第三方源码级嗅探工具),以下分别介绍两者的自定义规则设置方法,涵盖基础过滤、配置文件调整及高级功能。

一、使用tcpdump设置自定义捕获规则

tcpdump是CentOS默认安装的网络嗅探工具(若未安装,可通过sudo yum install tcpdump安装),支持通过过滤表达式精准捕获所需流量。

1. 基础过滤规则语法

过滤规则由协议IP地址端口逻辑运算符组合而成,常见格式如下:

  • 按协议过滤tcp(TCP流量)、udp(UDP流量)、icmp(ICMP流量,如ping)。
  • 按IP地址过滤src host 192.168.1.100(源IP为192.168.1.100)、dst host 10.0.0.1(目标IP为10.0.0.1)、host 192.168.1.100(源或目标IP为192.168.1.100)。
  • 按端口过滤src port 80(源端口为80,如HTTP请求)、dst port 443(目标端口为443,如HTTPS响应)、port 22(源或目标端口为22,如SSH)。
  • 逻辑组合and(与)、or(或)、not(非),例如tcp and src port 80(TCP且源端口为80)、host 192.168.1.100 or host 10.0.0.1(源或目标为这两个IP之一)。

2. 示例命令

  • 捕获eth0接口上所有HTTP流量(源端口80):
    sudo tcpdump -i eth0 'tcp src port 80'
    
  • 捕获eth0接口上来自192.168.1.100的HTTPS流量(目标端口443):
    sudo tcpdump -i eth0 'src host 192.168.1.100 and tcp dst port 443'
    
  • 捕获eth0接口上所有ICMP流量(ping请求/响应):
    sudo tcpdump -i eth0 'icmp'
    

3. 保存与加载规则

  • 保存捕获结果:使用-w选项将数据包保存到.pcap文件(后续可用Wireshark分析):
    sudo tcpdump -i eth0 -w capture.pcap
    
  • 从文件读取规则:若需重复使用规则,可将规则写入配置文件(如/etc/tcpdump/tcpdump.conf),通过-F选项加载:
    echo "tcp src port 80" | sudo tee /etc/tcpdump/tcpdump.conf
    sudo tcpdump -i eth0 -F /etc/tcpdump/tcpdump.conf
    

二、使用netsniff设置自定义规则

netsniff是基于源码的网络嗅探工具(需手动下载编译),支持更灵活的配置文件管理,适合需要深度定制的场景。

1. 安装与配置步骤

  • 安装依赖:编译前需安装开发工具及库文件:
    sudo yum groupinstall "Development Tools" -y
    sudo yum install ncurses-devel zlib-devel awk flex quilt git-lfs openssl-devel xz -y
    
  • 下载与编译:从GitHub克隆netsniff仓库并编译安装:
    git clone https://github.com/netsniff/netsniff.git
    cd netsniff
    make
    sudo make install
    
  • 配置文件路径:默认配置文件位于/etc/netsniff/netsniff.conf,需用文本编辑器(如vi)修改。

2. 配置文件参数说明

配置文件中的关键参数及作用如下:

  • 捕获开关CAPTURE_ENABLED 1(启用捕获,0为禁用)。
  • 捕获模式MODE promisc(混杂模式,捕获所有经过接口的流量;MODE nonpromisc为普通模式,仅捕获目标为本机的流量)。
  • 监听接口INTERFACE eth0(指定监听的网络接口,如eth0、wlan0)。
  • 过滤规则FILTER "tcp and src host 192.168.1.100"(BPF语法过滤规则,同tcpdump)。

3. 启动与规则应用

  • 启动Sniffer:通过命令行直接启动(需root权限):
    sudo /usr/local/bin/sniff
    
  • 设置为系统服务:将netsniff添加到系统服务(如systemd),实现开机自启(需编写.service文件,此处略)。

三、注意事项

  • 权限要求:捕获数据包需访问网络接口,必须使用sudo或root权限。
  • 合法性:未经授权监控他人网络流量可能违反法律法规,请确保获得授权。
  • 性能影响:全流量捕获会占用大量系统资源,建议通过过滤规则缩小范围(如仅捕获特定端口或IP)。

以上方法覆盖了CentOS下常见的Sniffer自定义规则场景,可根据需求选择合适的工具进行调整。

0