【准入】天擎NAC设备抓包方法

代苏艳发表于:2021年01月06日 17:11:47

适配版本


产品:天擎NAC

版本:版本无关

平台:Linux

关键字

关键报错信息:流量、抓包、tcpdump

内容


方法一:


有root账户的情况下用root账号ssh登录nac设备底层,使用tcpdump命令进行镜像口抓包。

通过使用命令tcpdump -i ethx host x.x.x.x -vvv -s 0 -w fromclient.pcap抓取指定设备接口、IP的流量包导出

  • ethx:代表监听的设备接口,可以选择nac的监听口或发包口(一般发包口设置为nac设备管理口)。

                 naccli下nacmonitor monitor_port list命令查看设备监听口。nacmonitor out_port list命令查看设备发包口。

  • host x.x.x.x:参数host 跟主机IP地址是需要筛选的终端流量,这里指入网流程中的终端。

  • -vvv:参数是3个小写字母v,产生详细的输出。

  • -s 0:参数是字母s后面是数字0,中间有空格。用于抓取完整的包。

  • -w fromclient.pcap:参数-w是将抓取的报文输出到文件fromclient.pcap中。

然后将fromclient.pcap文件下载到终端本地,使用wireshark进行分析。操作说明:fromclient.pcap一般存在于tcpdump命令执行的目录中,可以通过sz命令下载到电脑中,也可以通过winscp或ssh工具下载下来,fromclient.pcap中fromclient是自己命名的一般用于区分是从终端来的,还是NAC发出去的。pcap是抓包文件的后缀名,一般这样命名以后,wireshark读取的时候不需要再重新修改文件后缀。

  • 不导出pcap的情况下也可以通过tcpdump命令配合筛选条件去监控接口是否有流量数据:

          tcpdump -nni eth3 src host 10.16.3.137 and dst host 192.168.2.185 -vvv -s 0


方法二:


天擎控制台页面,设备管理-强制合规-设备管理,选择NAC设备ip后网络抓包页面

1.jpg?version=1&modificationDate=1593500984000&api=v2


策略路由部署模式:


root用户下使用nac_pdump命令抓包

例:nac_pdump -c 1 -p 0 -q 0 -r -t -f "src host 192.168.18.94 and dst host 192.168.9.15"

支持过滤规则以及-w参数保存抓包文件

image2020-8-26_10-27-22.png?version=1&modificationDate=1598408843000&api=v2


补充:

使用BPF过滤规则,你可以确定该获取和检查哪些流量,忽略哪些流量。BPF让你能够通过比较第2、3、4层协议中各个数据字段值的方法对流量进行过滤。BPF中内置了一些“基元”来指代一些常用的协议字段。可以用“host”、"prot"之类的基元写出非常简洁的BPF过滤规则,也可以检测位于指定偏移量上的字段(甚至可以是一个位)的值。BPF过滤器也可以由详尽的条件链和嵌套的逻辑“与”、“或”操作组成。

最常用的BPF基元要数“host id”,它是用来过滤与某台主机相关的流量的,其中id一栏中应该填上一个地址或主机名。输入“tcp and host 10.10.10.10”这样的过滤规则,将值获取流入/流出得做10.10.10.10的TCP流量,其他的所有帧都会被过滤掉。

举例说明:假设我们现在希望仅仅获取IP地址为192.168.0.1的计算机与除IP地址10.1.1.1之外的其他所有计算机在138、139和445端口上发送的所有通信,下面这个BPF过滤规则就能完成上述任务:

'host 192.168.0.1 and not host 10.1.1.1 and (port 138 or port 139 or port 445)'

常用的BPF基元有

• host id , dst host id , src host id

• net id , dst net id , src net id

• ether host id , ether dst host id , ether src host id

• port id , dst port id , src port id

• gateway id , ip proto id , ether proto id

• tcp, udp, icmp, arp

• vlan id

 

同样tcpdump也可以通过这种形式进行过滤:

1、默认启动

tcpdump -vv

普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包。

 

2、过滤主机

tcpdump -i eth1 host 192.168.1.1      抓取所有经过eth1,目的或源地址是192.168.1.1的网络数据

tcpdump -i eth1 src host 192.168.1.1                指定源地址,192.168.1.1

tcpdump -i eth1 dst host 192.168.1.1               指定目的地址,192.168.1.1

 

3、过滤端口

tcpdump -i eth1 port 25      抓取所有经过eth1,目的或源端口是25的网络数据

tcpdump -i eth1 src port 25               指定源端口

tcpdump -i eth1 dst port 25               指定目的端口

 

4、网络过滤

tcpdump -i eth1 net 192.168

tcpdump -i eth1 src net 192.168

tcpdump -i eth1 dst net 192.168

 

5、协议过滤

tcpdump -i eth1 arp

tcpdump -i eth1 ip

tcpdump -i eth1 tcp

tcpdump -i eth1 udp

tcpdump -i eth1 icmp

 

6、常用表达式

非 : ! or "not" (去掉双引号)

且 : && or "and"

或 : || or "or"

 例

抓取所有经过eth1,目的地址是192.168.1.254或192.168.1.200端口是80的TCP数   

tcpdump -i eth1 '((tcp) and (port 80) and ((dst host 192.168.1.254) or (dst host 192.168.1.200)))'

 

抓取所有经过eth1,目标MAC地址是00:01:02:03:04:05的ICMP数据          

tcpdump -i eth1 '((icmp) and ((ether dst host 00:01:02:03:04:05)))'

 

抓取所有经过eth1,目的网络是192.168,但目的主机不是192.168.1.200的TCP数据

tcpdump -i eth1 '((tcp) and ((dst net 192.168) and (not dst host 192.168.1.200)))'