如果您需要诊断连接上的所有网络流量,无论是本地流量还是面向互联网的网络流量,则必须使用程序捕获所有流量并在以后进行分析。最受欢迎的程序之一是 Wireshark,该程序是跨平台的,与Windows,Linux,macOS和许多其他程序兼容,但是,我们需要一个图形用户界面才能使其工作。今天我们将向您展示如何使用 tcpdump,这是通过终端中的命令行捕获所有流量的最佳工具。
什么是 tcpdump,它的用途是什么?
tcpdump 是一个完全免费的工具,它允许我们捕获来自一个或多个接口的所有网络流量,无论它们是以太网、WiFi、我们提出的 PPPoE 接口,甚至是虚拟接口,例如我们在使用虚拟专用网络时创建的接口。该程序不仅负责捕获所有流量,而且我们还可以通过命令行在捕获流量时实时分析它。
tcpdump 兼容所有基于 Unix 的操作系统,如 Linux、BSD、macOS 等。当然,该程序利用libpcap库来捕获通过给定接口(无论是物理还是虚拟)循环的所有数据包。为了在系统上运行此程序,必须具有超级用户权限,因为我们正在捕获和查看可能是“敏感”的网络流量,因此,必须具有管理员权限。
关于tcpdump的最好的事情是过滤器,我们将能够过滤所有流量以仅查看我们感兴趣的内容。过滤器是捕获选项之后的表达式,允许我们仅显示要查找的内容,而不是所有内容。如果我们不放置任何过滤器,我们将看到来自所选网络适配器的所有网络流量。
我们可以为tcpdump等工具提供的主要用途如下:
- 捕获所有信息并存储以供以后研究。
- 调试使用网络进行通信的实时应用程序。
- 检查网络流量是否符合预期,同时考虑到其使用情况。
- 从网络上的其他计算机捕获和读取数据,尽管在这种情况下,如果我们处于交换环境中并且没有在路由器上使用tcpdump,则必须执行ARP欺骗或类似技术。
一旦我们了解了tcpdump是什么以及它可以用于什么,我们将把它安装在我们的Linux操作系统上,向您展示它是如何工作的。
TCPDump for Business
在公司中实施 tcpdump 可能是网络流量监控和分析的有效策略。TCPDUMP 是一种网络数据包捕获和分析工具,可让您获取有关流经公司网络的流量的详细信息。它将以不同的方式帮助我们,但我们必须有一条实施它的途径。
- 安装 TCPDump:第一件事是在公司网络上的相应设备上安装 tcpdump 工具。Tcpdump 在大多数操作系统上都可用,可以从软件包存储库或下载官方软件轻松安装。
- 捕获筛选器设置:安装 tcpdump 后,请务必设置捕获筛选器以指定要分析的流量类型。筛选器可以基于 IP 地址、协议、端口或网络流量的其他特征。这些筛选器有助于限制捕获的数据量,并专注于业务感兴趣的特定领域。
- 数据包捕获:配置过滤器后,可以使用 tcpdump 启动数据包捕获。该工具将开始捕获和存储与过滤器中指定的条件匹配的网络数据包。确保用于数据包捕获的设备具有足够的存储容量来处理捕获的数据流非常重要。
- 对捕获数据的分析:数据包捕获完成后,可以使用符合tcpdump的数据包分析工具(例如Wireshark)分析获得的数据。这些工具允许您详细检查每个捕获的数据包,包括有关源和目标 IP 地址、使用的协议、端口、数据有效负载等的信息。分析这些数据可以提供有关网络性能、安全问题、流量模式和其他业务相关方面的宝贵见解。
- 结果解读:一旦捕获的数据被分析,以对公司有意义的方式解释结果非常重要。这涉及识别模式、异常、潜在性能或安全问题,并采取必要措施解决这些问题。使用 tcpdump 捕获的数据可以帮助优化网络、提高安全性并就公司的基础设施做出明智的决策。
Debian 安装和热门选项
该程序广泛用于所有基于 Linux 的操作系统,因此,我们将能够直接从每个发行版的官方存储库安装它。对于 Debian,我们需要在终端中放置以下命令:
sudo apt install tcpdump
我们会得到这样的东西:
安装完成后,我们可以在终端中执行以下命令以向我们显示帮助:tcpdump -h
如果您需要有关该工具的更多信息,请参阅使用示例和所有文档,然后您可以按如下方式访问手册页:man tcpdump
在这些手册页中,您可以看到该工具的详尽描述,我们应该使用什么语法,我们可以使用哪些选项来捕获所有数据以及过滤我们想要的信息。
使用示例
该程序具有大量选项来捕获数据并将其可视化,此外,我们还可以添加大量高级过滤器以仅向我们显示所需的内容。下面,我们将解释一些基本命令,以便您可以只捕获您感兴趣的内容。
基本用法
以下命令允许我们启动程序,如果我们不指定任何网络接口,工具本身将选择操作系统中可用的接口之一。
tcpdump
如果我们想指定一个网络接口,我们必须放置以下命令:
tcpdump -i NOMBRE_INTERFAZ
如果我们想指定所有网络接口,一次捕获来自所有这些接口的所有流量,那么您必须输入以下命令:
tcpdump -i any
当我们使用 tcpdump 捕获网络流量时,我们可能对解析主机名不感兴趣,而是直接向我们显示 IP 地址。为此,我们可以输入:
tcpdump -n
如果您只想捕获一定数量的数据包,则需要执行以下命令:
tcpdump -c NUMERO_PAQUETES
如果我们想增加它通过命令行向我们显示的信息,我们必须增加“v”,如下所示:
tcpdump -i NOMBRE_INTERFAZ -v
如果我们想增加更多,我们将在后面添加更多的“v”,如下所示:
tcpdump -i NOMBRE_INTERFAZ -vvv
最后一个命令允许我们看到尽可能多的动词。
如果我们想将屏幕截图保存在文件中,以便稍后使用数据包分析器(例如 WireShark)打开它,或者用于以后的分析,我们必须输入以下命令:
tcpdump -i NOMBRE_INTERFAZ -w NOMBRE_ARCHIVO
当然,如果我们想用最大动词保存所有内容,我们会把:
tcpdump -i NOMBRE_INTERFAZ -w NOMBRE_ARCHIVO -vvv
按 IP 或子网捕获流量
tcpdump 允许我们按 IP 地址甚至子网进行过滤,为此,我们可以放置以下命令:
tcpdump -i NOMBRE_INTERFAZ host IP
例如,我们可以查看本地主机 IP 流量:
tcpdump -i NOMBRE_INTERFAZ host 127.0.0.1
我们还可以按子网过滤,如下所示:
tcpdump -i NOMBRE_INTERFAZ net SUBRED/X
下面是子网的示例:
tcpdump -i NOMBRE_INTERFAZ net 192.168.1.0/24
我们还可以按来源和目的地进行过滤,下面,您可以看到两个示例:
tcpdump -i NOMBRE_INTERFAZ src IPtcpdump -i NOMBRE_INTERFAZ dst IP
使用这些选项,您可以轻松过滤只想捕获和显示的流量。
按端口和范围捕获流量
如果要按端口(仅端口或端口范围)进行筛选,可以按以下步骤操作:
tcpdump -i NOMBRE_INTERFAZ port NUMERO_PUERTO
tcpdump -i NOMBRE_INTERFAZ portrange PUERTOINICIO PUERTOFIN
所有这些命令也可以添加到tcpdump中,以按IP和端口进行过滤,甚至可以将所有流量捕获保存在pcap文件中。通过这种方式,我们可以将可用的不同选项与我们定义的过滤器连接起来。
从网络捕获数据包是否合法?
这是一个大问题。只要您处理从网络捕获数据的问题,总会有人怀疑它是否合法。这是正常的,特别是因为这些活动会产生大量数据。具有正确知识的人可以拥有有关使用网络的用户的非常敏感的信息。当然,这可能会以许多不同的方式损害您的安全和隐私。特别是因为攻击者的第一步始终是查找他们正在使用的服务的密码。
但事实是,答案并不那么简单。我们真的在处理合法的事情,使用这些工具没有问题。相反,问题以及每个用户使用该工具所做的事情。因此,责任直接落在用户身上。您希望对您能够获得的信息的用途将定义它是否是合法活动。只要它被用于恶意目的,它显然是非法的。
但是这些工具对管理员非常有用。这些对于检测公司网络甚至家庭层面的问题有很大帮助。出于这个原因,管理员严重依赖它们进行改进,从而优化网络的操作。以及出于安全目的,确保一切按预期进行。这些是非常强大的工具,这就是为什么在许多情况下使用它们非常普遍的原因。我们也有很多选择,可以适应许多不同的用户和需求,包括免费和付费。
结论
tcpdump 是使用我们想要的接口从本地网络捕获数据包的卓越工具,借助此程序,我们将能够通过控制台在低级别可视化所有网络流量,并且我们还可以随时将流量捕获保存在我们的硬盘驱动器或 SSD 上。由于有大量的配置选项和过滤器,我们将能够只捕获我们感兴趣的内容,以便以后使用诸如 Wireshark 之类的程序进行分析,或者直接使用 tshark 或类似程序进行低级别分析。
如果您的本地网络或服务器上遇到网络级问题,tcpdump 将帮助您找出哪些流量正在通过整个网络或有问题的服务器,然后详细研究正在发生的事情以及我们如何解决它。捕获网络流量是能够在网络级别解决问题的第一步,在这种情况下,tcpdump 将是解决所有问题的最佳盟友。