识别“流氓”互联网访问应用程序

Mee*_*org 14 networking dns 12.10

目前我有一个应用程序/服务/小部件/插件/cronjob,定期访问互联网。我可以详细了解我的具体问题,但我宁愿有一个答案,让我自己找出错误,并在此过程中了解有关 Ubuntu 的更多信息。

我目前正在使用dnstop显示在我的网络上发出的所有 DNS 请求。目前为了争论,有一个请求以weather.noaa.gov15 分钟为周期进行。这可能是一个天气问题,尽管我检查了我的进程并没有发现任何东西,而且请求来自我的计算机。

所以问题是,我如何确定正在访问的进程weather.noaa.gov

我不想通过关闭每个服务/插件/应用程序来解决这个问题。我想找到一种方法来确定发出该 DNS 请求的进程。

如果我有一个像样的“应用程序防火墙”,则永远不会提出请求。但这是一个“马已经疯了”的情况,并希望找到发出该 DNS 请求的“流氓”进程。

sou*_*rce 7

如果您不介意无限循环运行一段时间,您可以连续运行 netstat 并过滤程序连接到的计算机 IP 地址的输出。我建议使用 IP 地址而不是域名,因为它更快,减少了每个 netstat 调用所花费的时间,从而增加了实际捕获进程的机会。如果您认为该进程不属于当前登录的用户,则应以 root 身份运行 netstat 命令。因此,首先使用 nslookup 来计算域的 IP:

nslookup weather.noaa.gov
Run Code Online (Sandbox Code Playgroud)

对我来说,目前给出的是:193.170.140.70 和 193.170.140.80。现在你可以建立一个无限循环的 netstats。您可以使用 grep 过滤输出(并丢弃 STDERR)。

while [ true ] ;  do netstat -tunp 2>/dev/null | grep -e 193.170.140.70 -e 193.170.140.80  ; done
Run Code Online (Sandbox Code Playgroud)

当然在上面的例子中编辑IP地址。此示例探测 TCP 和 UDP (-tu) 连接,不进行 DNS 解析 (-n) 并列出进程 (-p)。如果您认为有足够的时间进行 DNS 解析,只需省略 netstat 的 -n 选项并将域用于 grep 而不是 IP。您只需按 CTRL+c 即可停止无限循环

希望这会有所帮助,安德烈亚斯

PS:我知道,这不是理想、高效或干净的方法,但对于一次性搜索来说,这应该足够了。