Ole*_*leg 5 ipsec tcpdump strongswan
我正在 Ubuntu 16.04 上运行 StrongSwan (U5.3.5/K4.4.0-62-generic) VPN 服务器。
通常,当我想检查服务器上的流量时,我只需运行如下所示的命令:
tcpdump -ni eth0 "tcp port 80" -w log.pcap
但在 VPN 服务器上它对我没有太大帮助。我只捕获“常规”流量,没有 IPSEC 流量。我想这是因为 IPSEC 在 TCP 下面运行一层。但我仍然想捕获一些数据包以在 Wireshark 上进行检查。
我怎样才能做到这一点?
过滤器tcp port 80永远不会捕获ESP,因为esp协议(IP 协议 50)不是 tcp(IP 协议 6)并且永远不会匹配此过滤器。
对于 Linux,此示意图及其几个带有xfrm(IPsec 和 co. 转换模块)的位置有助于了解如何处理 IPsec 数据包。
在左侧(入口),每个接收到的数据包的副本都会发送到 AF_PACKET Taps(例如tcpdump),并到达协议层,在协议层中对其进行解码并以纯文本形式环回,同时将新副本发送到 AF_PACKET Taps: tcpdump 将对于到达接口的每个传入 IPsec 数据包捕获两个数据包,然后成功解密。因此,OP 的命令仍会捕获数据包的解密版本作为 TCP 流量,而不是什么也不捕获。
由于 ESP 可以针对NAT-T进行封装,因此它可以作为纯 ESP 或作为(通常)封装在 UDP 端口 4500 中的 ESP 到达。
在右侧(出口),由于数据包在到达 AF_PACKET 之前已经被xfrm加密,因此 tcpdump 只能看到加密结果,而无法看到纯文本版本。在这里,OP 的命令不会捕获任何东西。同样,它可以作为纯 ESP 发出或封装在 4500/UDP 中。
所以最后,这应该以两种方式捕获加密的 IPsec 流量:
tcpdump -n -s0 -p -i eth0 -w log.pcap esp or udp port 4500
Run Code Online (Sandbox Code Playgroud)
一些非 ESP IKE 流量也在 4500/UDP 上捕获,如此处所述,如果确实需要,即使在捕获时使用此过滤器也可以轻松过滤掉这些流量(SPI 字段的值为 0):'esp or (udp port 4500 and udp[8:4] != 0)'。
笔记:
ah or的过滤器前面以也解决这种情况)小智 5
我能够使用这个 Strongswan 页面捕获 IPSEC 内的流量
简而言之:
iptables -I INPUT -m addrtype --dst-type LOCAL -m policy --pol ipsec --dir in -j NFLOG --nflog-group 5
iptables -I OUTPUT -m policy --pol ipsec --dir out -j NFLOG --nflog-group 5
tcpdump -s 0 -n -i nflog:5 -w ./ipsec.pcap
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19990 次 |
| 最近记录: |