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


14

目前,我有一个应用程序/服务/小工具/插件/ cronjob,可以定期访问互联网。我可以详细介绍我的特定问题,但我希望有一个答案,让我可以错误地找到自己,并在此过程中进一步了解Ubuntu。

我现在使用dnstop的是显示我的网络上进行的所有DNS请求。当前,出于参数考虑,有一个请求将以weather.noaa.gov15分钟为一个周期。尽管我已经检查了进程但什么也没发现,但请求可能来自我的计算机,这可能是天气恶劣。

那么问题来了,我如何确定正在访问哪个进程weather.noaa.gov

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

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

Answers:


7

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

nslookup weather.noaa.gov

对我而言,此刻给出: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

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

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

PS:我知道,这不是理想,高效或清洁的方法,但是对于一次性搜索而言,这应该足够了。


我会去看看是否能抓住我的罪魁祸首
Meer Borg

3

您还可以通过/ etc / hosts添加正在连接的FQDN来“破坏”应用程序。给它一些不可路由的IP,例如10.1.2.3(或127.0.0.1),看看有什么坏处。


我通常将其设置为0.0.0.0,因为它不会路由,我正在谈论的那种应用很少会宣布它们的“顽皮”
Meer Borg
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.