Sniffnet：任何人都可以使用的有趣的开源网络监控工具
使用这个方便的应用查看你的网络连接。嗅探，嗅探，那是什么？ ?这是我在系统上看到的可疑网络连接吗？ ?❌你可能想知道我如何查看系统上的网络活动。 嗯，当然，一些 系统监控工具 应该有所帮助。但是，如果我想要更多详细信息怎么办？好吧，我遇到了一个不错的工具 Sniffnet。 它是一个用于实时监控网络活动的简洁的开源应用，也是专有的 GlassWire（如 Portmaster）的一个很好的替代品。那么，让我们深入挖掘吧！Sniffnet：概述 ⭐Sniffnet 是一个基于 Rust 的网络监控工具，可让你跟踪通过系统的所有互联网流量。 它提供了一些非常有用的功能，高级用户肯定会喜欢这些功能**。当你第一次启动 Sniffnet 时，你会看到一个菜单来选择网络适配器、过滤器和应用协议。完成选择后，单击“火箭”按钮开始。这是概览页的样子。它显示了所有当前的网络连接，以及一个方便的流量图，供你分析流量。? 你可以选择将数据显示为字节或单个数据包。要更深入地查看你的网络连接，你可以前往“ 检查 Inspect ”选项卡。在这里，你将看到一个包含所有重要信息的列表，例如 IP 地址、数据包数量、数据量、来源国家等等。你可以单击各个连接获得更详细的情况。如果你想为更具体的目的过滤结果怎么办？好吧，那么你可以使用“检查”选项卡下的过滤器选项根据你的需要过滤结果。你可以通过以下方式过滤列表： 应用、国家、域名等。这是它的样子：Sniffnet 还可以向你显示可以以文本格式导出的连接的详细报告。只需单击右下角带有页面/向右箭头的徽标即可开始。可定制性如何？好吧，Sniffnet 有一组不错的设置供你调整。第一个是“通知”选项卡，它允许你根据可以设置的各种阈值来设置通知的行为。然后是可以通过“ 样式 Style ”选项卡访问的主题。它提供四种选择，雪人之夜是我的最爱。最后，“ 语言 Language ”选项卡允许你设置你选择的界面语言。好了，就此结束。Sniffnet 是一个方便的工具，可以非常详细地了解系统上的网络活动。你可以使用它来监控你的网络。此外，与另一个网络监控工具 Nutty 相比，在我看来，Sniffnet 的使用和设置要直观得多。? 获取 SniffnetSniffnet 可跨多个平台使用，包括 Linux、Windows 和 macOS。 你可以前往官方网站获取你选择的安装包。Sniffnet如果愿意，你还可以在 GitHub 上仔细查看其源代码。via: https://news.itsfoss.com/sniffnet/作者：Sourav Rudra 选题：lkxed 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
在本教程中，你将学习如何在 Ubuntu 和其它基于 Ubuntu 的发行版上安装最新的 Wireshark。同时你也将学习如何在没有 sudo 的情况下来运行 Wireshark，以及如何设置它来进行数据包嗅探。Wireshark 是一款自由开源的网络协议分析器，它在全球被广泛使用。通过使用 Wireshark，你可以实时捕获网络的传入和传出数据包，并将其用于网络故障排除、数据包分析、软件和通信协议开发等。它适用于所有主流的桌面操作系统，如 Windows、Linux、macOS、BSD 等。在本教程中，我将指导你在 Ubuntu 和其他基于 Ubuntu 的发行版上安装 Wireshark 。我还将介绍如何设置和配置 Wireshark 来捕获数据包。在基于 Ubuntu 的 Linux 发行版上安装 WiresharkWireshark 适用于所有主流 Linux 发行版。你应该查看官方安装说明。因为在本教程中，我将着重在仅基于 Ubuntu 的发行版上安装最新版本的 Wireshark 。Wireshark 可以在 Ubuntu 的 Universe 存储库中找到。你可以启用 universe 存储库，然后按如下方式安装：sudo add-apt-repository universe sudo apt install wireshark这种方法的一个小问题是，你可能并不总是得到最新版本的 Wireshark 。例如，在 Ubuntu 18.04 中，如果你使用 apt 命令检查 Wireshark 的可用版本，可用版本会显示是 2.6 。abhishek@nuc:~$ apt show wireshark Package: wireshark Version: 2.6.10-1~ubuntu18.04.0 Priority: optional Section: universe/net Origin: Ubuntu Maintainer: Balint Reczey <rbalint@ubuntu.com>然而， Wireshark 3.2 稳定版已经在几个月前发布了。当然，新版本拥有新的特性。那么在这种情况下，你应该怎么办呢？谢天谢地， Wireshark 开发者提供了一种官方 PPA 方式，你可以使用它在 Ubuntu 和其它基于 Ubuntu 的发行版上安装最新稳定版本的 Wireshark.我希望你熟悉 PPA。如果没有，请阅读我们关于 PPA 的优秀指南，以便完全理解它。打开终端并逐个使用以下命令：sudo add-apt-repository ppa:wireshark-dev/stable sudo apt update sudo apt install wireshark即使安装了旧版本的 Wireshark ，它也将更新为新版本。安装时，系统将询问你是否允许非超级用户捕获数据包。选择“Yes”允许，选择“No”限制非超级用户捕获数据包，最后完成安装。不使用 sudo 运行 Wireshark如果在上一次安装中选择了“No”，则以 root 用户身份运行以下命令：sudo dpkg-reconfigure wireshark-common然后按 tab 键并使用回车键选择“No”：由于你允许非超级用户捕获数据包，因此你必须将该用户添加到 wireshark 组。使用 usermod 命令将自己添加到 wireshark 组。sudo usermod -aG wireshark $(whoami)最后，重启你的 Ubuntu 系统对你的系统进行必要的修改。冷知识Wireshark 于 1998 年首次发布，最初被称为 Ethereal 。2006 年，由于商标问题，开发商不得不将其名称改为 Wireshark 。启动 Wireshark你可以从应用程序启动器或者命令行启动 Wireshark 应用。如果从命令行启动，只需要在你的控制台中输入 wireshark：wireshark要是从图形化界面启动，需要在搜索栏搜索 Wireshark 应用，并按回车键。现在，让我们来玩玩 Wireshark 吧。使用 Wireshark 捕获数据包当你启动 Wireshark 的时候，你会看到一个接口列表，你可以使用它来捕获这个接口接收和发送的数据包。你可以使用 Wireshark 监视许多类型的接口，例如，有线、外部设备等。根据你的偏好，你可以从下图中的标记区域选择在欢迎屏幕中显示特定类型的接口。例如，我只列出了有线网络接口。接下来，要开始捕获数据包，你必须选择接口（在我的示例中是 ens33 ），然后单击“Start capturing packets”图标，如下图所示。你还可以同时从多个接口捕获数据包。只需按住 CTRL 按钮，同时单击要捕获的接口，然后点击“Start capturing packets”图标，如下图所示。接下来，我尝试在终端中使用 ping google.com 命令，如你所见，捕获了许多数据包。现在你可以选择任何数据包来检查该特定数据包。在点击一个特定的包之后，你可以看到与它相关的 TCP/IP 协议的不同层的信息。你还可以在底部看到该特定数据包的原始数据，如下图所示。这就是为什么端到端加密很重要。假设你正在登录一个不使用 HTTPS 的网站。与你在同一网络上的任何人都可以嗅探数据包，并在原始数据中看到用户名和密码。这就是为什么现在大多数聊天应用程序使用端到端加密，而大多数网站使用 https （而不是 http）。在 Wireshark 中停止数据包捕获你可以点击如图所示的红色图标停止捕获数据包。将捕获的数据包保存成文件你可以单击下图中标记的图标，将捕获的数据包保存到文件中以备将来使用。注意：输出可以导出为 XML、PostScript、CSV 或纯文本。接下来，选择一个目标文件夹，键入文件名并单击“Save”。然后选择文件并单击“Open”。现在你可以随时打开和分析保存的数据包。要打开文件，请按 \+o，或从 Wireshark 转到 “File > Open”。捕获的数据包将从文件中加载。结语Wireshark 支持许多不同的通信协议。有许多选项和功能，使你能够以独特的方式捕获和分析网络数据包。你可以从 Wireshark 的官方文档了解更多关于 Wireshark 的信息。我希望这个教程能帮助你在 Ubuntu 上安装 Wireshark 。请让我知道你的问题和建议。via: https://itsfoss.com/install-wireshark-ubuntu/作者：Community 选题：lujun9972 译者：qianmigntian 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
在计算机网络中，数据是暴露的，因为数据包传输是无法隐藏的，所以让我们来使用 whois、dig、nmcli 和 nmap 这四个工具来嗅探网络吧。请注意，不要在不属于自己的网络上运行 nmap ，因为这有可能会被其他人认为恶意攻击。精简和详细域名信息查询您可能已经注意到，之前我们用常用的老式 whois 命令查询域名信息，但现如今似乎没有提供同过去一样的详细程度。我们使用该命令查询 linux.com 的域名描述信息：$ whois linux.com Domain Name: LINUX.COM Registry Domain ID: 4245540_DOMAIN_COM-VRSN Registrar WHOIS Server: whois.namecheap.com Registrar URL: http://www.namecheap.com Updated Date: 2018-01-10T12:26:50Z Creation Date: 1994-06-02T04:00:00Z Registry Expiry Date: 2018-06-01T04:00:00Z Registrar: NameCheap Inc. Registrar IANA ID: 1068 Registrar Abuse Contact Email: abuse@namecheap.com Registrar Abuse Contact Phone: +1.6613102107 Domain Status: ok https://icann.org/epp#ok Name Server: NS5.DNSMADEEASY.COM Name Server: NS6.DNSMADEEASY.COM Name Server: NS7.DNSMADEEASY.COM DNSSEC: unsigned [...] 有很多令人讨厌的法律声明。但在哪有联系信息呢？该网站位于 whois.namecheap.com 站点上（见上面输出的第三行）：$ whois -h whois.namecheap.com linux.com 我就不复制出来了，因为这实在太长了，包含了注册人，管理员和技术人员的联系信息。怎么回事啊，露西尔？（LCTT 译注：《行尸走肉》中尼根的棒子）有一些注册库，比如 .com 和 .net 是精简注册库，保存了一部分有限的域名信息。为了获取完整信息请使用 -h 或 --host 参数，该参数便会从域名的 注册服务机构 中获取。大部分顶级域名是有详细的注册信息，如 .info。试着使用 whois blockchain.info 命令来查看。想要摆脱这些烦人的法律声明？使用 -H 参数。DNS 解析使用 dig 命令比较从不同的域名服务器返回的查询结果，去除陈旧的信息。域名服务器记录缓存各地的解析信息，并且不同的域名服务器有不同的刷新间隔。以下是一个简单的用法：$ dig linux.com <<>> DiG 9.10.3-P4-Ubuntu <<>> linux.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<<- opcode: QUERY, status: NOERROR, id: 13694 ;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1440 ;; QUESTION SECTION: ;linux.com. IN A ;; ANSWER SECTION: linux.com. 10800 IN A 151.101.129.5 linux.com. 10800 IN A 151.101.65.5 linux.com. 10800 IN A 151.101.1.5 linux.com. 10800 IN A 151.101.193.5 ;; Query time: 92 msec ;; SERVER: 127.0.1.1#53(127.0.1.1) ;; WHEN: Tue Jan 16 15:17:04 PST 2018 ;; MSG SIZE rcvd: 102 注意下靠近末尾的这行信息：SERVER: 127.0.1.1#53(127.0.1.1)，这是您默认的缓存解析器。当地址是本地时，就表明您的电脑上安装了 DNS 服务。在我看来这就是一个 Dnsmasq 工具（LCTT 译注：是一个小巧且方便地用于配置 DNS 和 DHCP 的工具），该工具被用作网络管理：$ ps ax|grep dnsmasq 2842 ? S 0:00 /usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/var/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1 dig 命令默认是返回 A 记录，也就是域名。IPv6 则有 AAAA 记录：$ $ dig linux.com AAAA [...] ;; ANSWER SECTION: linux.com. 60 IN AAAA 64:ff9b::9765:105 linux.com. 60 IN AAAA 64:ff9b::9765:4105 linux.com. 60 IN AAAA 64:ff9b::9765:8105 linux.com. 60 IN AAAA 64:ff9b::9765:c105 [...] 仔细检查下，发现 linux.com 有 IPv6 地址。很好！如果您的网络服务支持 IPv6 那么您就可以用 IPv6 连接。（令人难过的是，我的移动宽带则没提供 IPv6）假设您能对您的域名做一些 DNS 改变，又或是您使用 dig 查询的结果有误。试着用一个公共 DNS，如 OpenNIC：$ dig @69.195.152.204 linux.com [...] ;; Query time: 231 msec ;; SERVER: 69.195.152.204#53(69.195.152.204) dig 回应您正在的查询是来自 69.195.152.204。您可以查询各种服务并且比较结果。上游域名服务器我想知道我的上游域名服务器（LCTT 译注：此处指解析器）是谁。为了查询，我首先看下 /etc/resolv/conf 的配置信息:$ cat /etc/resolv.conf # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8) # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN nameserver 127.0.1.1 好吧，不过我已经知道了。您的 Linux 发行版可能配置不同，您会看到您的上游服务器。接下来我们来试试网络管理器命令行工具 nmcli：$ nmcli dev show | grep DNS IP4.DNS[1]: 192.168.1.1 很好，现在我们已经知道了，其实那是我的移动热点，我能确认。我能够登录到简易管理面板，来查询上游服务器。然而许多用户级互联网网关不会让您看到或改变这些设置，因此只能尝试其他的方法，如 我的域名服务器是什么？查找在您的网络中 IPv4 地址您的网络上有哪些 IPv4 地址已启用并正在使用中？$ nmap -sn 192.168.1.0/24 Starting Nmap 7.01 ( https://nmap.org ) at 2018-01-14 14:03 PST Nmap scan report for Mobile.Hotspot (192.168.1.1) Host is up (0.011s latency). Nmap scan report for studio (192.168.1.2) Host is up (0.000071s latency). Nmap scan report for nellybly (192.168.1.3) Host is up (0.015s latency) Nmap done: 256 IP addresses (2 hosts up) scanned in 2.23 seconds 每个人都想去扫描自己的局域网中开放的端口。下面的例子是寻找服务和他们的版本号：$ nmap -sV 192.168.1.1/24 Starting Nmap 7.01 ( https://nmap.org ) at 2018-01-14 16:46 PST Nmap scan report for Mobile.Hotspot (192.168.1.1) Host is up (0.0071s latency). Not shown: 997 closed ports PORT STATE SERVICE VERSION 22/tcp filtered ssh 53/tcp open domain dnsmasq 2.55 80/tcp open http GoAhead WebServer 2.5.0 Nmap scan report for studio (192.168.1.102) Host is up (0.000087s latency). Not shown: 998 closed ports PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0) 631/tcp open ipp CUPS 2.1 Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 256 IP addresses (2 hosts up) scanned in 11.65 seconds 这些是有趣的结果。让我们尝试从不同的互联网连接进行相同的操作，以查看这些服务是否暴露于互联网中。如果您有智能手机，相当于您有第二个网络。您可以下载应用程序，还可以为您的 Linux 电脑提供热点。从热点控制面板获取广域网IP地址，然后重试：$ nmap -sV 12.34.56.78 Starting Nmap 7.01 ( https://nmap.org ) at 2018-01-14 17:05 PST Nmap scan report for 12.34.56.78 Host is up (0.0061s latency). All 1000 scanned ports on 12.34.56.78 are closed 果然不出所料，结果和我想象的一样（LCTT 译注：这些服务和信息没有被暴露在公网上）。可以用手册来查询这些命令，以便了解更多有趣的嗅探技术。了解更多 Linux 的相关知识可以从 Linux 基金会和 edX（LCTT译注：edX 是麻省理工和哈佛大学于 2012 年 4 月联手创建的大规模开放在线课堂平台）中获取免费的 “介绍 Linux”课程。via: https://www.linux.com/learn/intro-to-linux/2018/1/4-tools-network-snooping-linux作者：Carla Schroder 译者：wyxplus 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
假设由于某种原因，你需要嗅探HTTP站点的流量（如HTTP请求与响应）。举个例子，你可能在测试一个web服务器的实验性功能，或者你在为某个web应用或RESTful服务排错，又或者你正在为PAC(proxy auto config)排错或寻找某个站点下载的恶意软件。不论什么原因，在这些情况下，进行HTTP流量嗅探对于系统管理、开发者、甚至最终用户来说都是很有帮助的。数据包嗅工具tcpdump被广泛用于实时数据包的导出，但是你需要设置过滤规则来捕获HTTP流量，甚至它的原始输出通常不能方便的停在HTTP协议层。实时web服务器日志解析器如ngxtop可以提供可读的实时web流量跟踪痕迹，但这仅适用于可完全访问live web服务器日志的情况。要是有一个仅用于抓取HTTP流量的类似tcpdump的数据包嗅探工具就非常好了。事实上，httpry就是:HTTP包嗅探工具。httpry捕获HTTP数据包，并且将HTTP协议层的数据内容以可读形式列举出来。通过这篇指文章，让我们了解如何使用httpry工具嗅探HTTP流量。在Linux上安装httpry基于Debian系统（Ubuntu 或 LinuxMint），基础仓库中没有httpry安装包(译者注：本人ubuntu14.04,仓库中已有包，可直接安装)。所以我们需要通过源码安装:$ sudo apt-get install gcc make git libpcap0.8-dev $ git clone https://github.com/jbittel/httpry.git $ cd httpry $ make $ sudo make install 在Fedora，CentOS 或 RHEL系统，可以使用如下yum命令安装httpry。在CentOS/RHEL系统上，运行yum之前使其能够访问EPEL repo。$ sudo yum install httpry 如果你仍想通过基于RPM系统的源码来安装httpry的话，你可以通过这几个步骤实现：$ sudo yum install gcc make git libpcap-devel $ git clone https://github.com/jbittel/httpry.git $ cd httpry $ make $ sudo make install httpry的基本用法以下是httpry的基本用法$ sudo httpry -i <network-interface> httpry就会监听指定的网络接口，并且实时的显示捕获到的HTTP请求/相应。在大多数情况下，由于发送与接到的数据包过多导致刷屏很快，难以分析。这时候你肯定想将捕获到的数据包保存下来以便离线分析。可以使用'b'或'-o'选项保存数据包。'-b'选项将数据包以二进制文件的形式保存下来，这样可以使用httpry软件打开文件以浏览。另一方面，'-o'选项将数据以可读的字符文件形式保存下来。以二进制形式保存文件：$ sudo httpry -i eth0 -b output.dump 浏览所保存的HTTP数据包文件：$ httpry -r output.dump 注意，不需要根用户权限就可以使用'-r'选项读取数据文件。将httpry数据以字符文件保存：$ sudo httpry -i eth0 -o output.txt httpry 的高级应用如果你想监视指定的HTTP方法（如：GET，POST，PUT，HEAD，CONNECT等），使用'-m'选项：$ sudo httpry -i eth0 -m get,head 如果你下载了httpry的源码，你会发现源码下有一些Perl脚本，这些脚本用于分析httpry输出。脚本位于目录httpry/scripts/plugins。如果你想写一个定制的httpry输出分析器，则这些脚可以作为很好的例子。其中一些有如下的功能：hostnames: 显示唯一主机名列表。find\_proxies: 探测web代理。search\_terms: 查找及统计在搜索服务里面的搜索词。content\_analysis: 查找含有指定关键的URL。xml\_output: 将输出转换为XML形式。log\_summary: 生成日志汇总。db\_dump: 将日志文件数据保存数据库。在使用这些脚本之前，首先使用'-o'选项运行httpry。当获取到输出文件后，立即使用如下命令执行脚本：$ cd httpry/scripts $ perl parse_log.pl -d ./plugins <httpry-output-file> 你可能在使用插件的时候遇到警告。比如，如果你没有安装带有DBI接口的MySQL数据库，那么使用db\_dump插件时可能会失败。如果一个插件初始化失败的话，那么只是这个插件不能使用，所以你可以忽略那些警告。当parse\_log.pl完成后，你将在httpry/scripts 目录下看到数个分析结果。例如，log\_summary.txt 与如下内容类似。总的来说，当你要分析HTTP数据包的时候，httpry非常有用。它可能并不被大多Linux使用者所熟知，但会用总是有好处的。你觉得这个工具怎么样呢？via: http://xmodulo.com/2014/08/sniff-http-traffic-command-line-linux.html作者：Dan Nanni 译者：DoubleC 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出