监控进出我机器的所有信息

监控进出我机器的所有信息

你好,我想在我的 Ubuntu 机器上实现尽可能多的安全性,所以我想检查可疑连接。你知道如何在我的电脑上监控网络流量吗?传入和传出。我也尝试了 netstat -t -u -c 和 tcpdump,但我想知道是否可以使用更有效的工具。谢谢!

答案1

有很多工具和不同的方法可以做到这一点。很多实用程序如:wireshark,,,,,,甚至。不同的防火墙、审计和监控工具可以帮助您实现这一目的。netstatnmapiptrafsslsof

基本上,您想要实现什么、要监控什么流程或什么类型的流量等都取决于您。

wireshark

安装:

sudo apt-get install wireshark

然后它会询问您是否希望以普通用户身份使用 wireshark,选择“是”,然后将自己添加到 wireshark 组:

sudo gpasswd -a username wireshark

注销并登录,您就可以使用 wireshark 了。只需运行它,选择您想要的接口,例如:enp0s3然后单击start capturing,您也可以双击接口名称。现在,您可以看到通过该接口传出/传入的所有流量。

您可以针对特定流量类型应用过滤器。

wireshark 过滤器

有很多方法可以应用过滤器,例如:输入:http按回车键。现在您将看到所有 http 流量。或ip.src == 1.2.3.4指定源,或ip.dst指定目标。您还可以访问表达式生成器,以创建复杂的表达式来过滤出您想要的流量类型。

在此处输入图片描述


Iptables 日志记录

您可以在 iptables 中开启日志记录:

sudo iptables -A INPUT -j LOG
sudo iptables -A OUPUT -j LOG

然后使用不同的日志管理器,您可以观察正在发生的事情,请记住,它将创建非常大的日志文件,因为它将记录所有内容!

更好的解决方案是仅记录您关心的特定流量,例如:

sudo iptables -A INPUT -p udp --dport 53 -j LOG

它使用 TCP 协议在端口 53 记录传入的数据包。


网络状态

如果您想查看正在监听哪些端口,您可以使用此工具做很多事情:

netstat -tulnp

-t:tcp,-u:udp,:-n使用数字而不是名称,-l:监听,-p:了解哪个进程正在监听这些端口。

使用 netstat 将其添加grep到神奇的东西中。

sudo netstat -ul | grep 53

党卫军

ss与 netstat 类似,但有很多很酷的选项。如果我想列出从我的网络192.168.1.0/24151.101.1.69(即 askubuntu IP)的 TCP 连接,目标端口为 80 或 443,我可以运行:

ss -nt '( dport = :80 or dport = :443 )' src 192.168.1.0/24 dst 151.101.1.69

或者我可以看到进程建立了什么连接python

ss -ap | grep python

nmap

使用 nmap 我可以扫描计算机或网络,扫描我自己的接口从端口 80 到 800(对于开放端口):

nmap 192.168.0.1 -p 80-800

假设我的 80 端口是开放的,我可以使用-sVswitch 来找出该端口上正在运行哪个版本的服务:

$ nmap 192.168.1.1 -p 80 -sV
PORT   STATE SERVICE VERSION
80/tcp open  http    Apache2

答案2

因为已经提到了 netstat 和 wireshark。

在使用这些命令之前,一个很好的起点可以是 lsof(列出打开的文件)命令,它有一个 -i 标志,无需参数就可以列出所有互联网网络文件。

-i(列出互联网网络文件)-P(禁止端口号)-n(不转换网络号)

如同

lsof -i -P -n

现在这可能是一个很长的列表,并且有很多重复。但你可以精简一下

$ lsof -i -P -n | cut -f 1 -d " " | tail -n +2 | sort | uniq
chrome
dropbox
firefox
python
thunderbi
vim

虽然这并没有给你提供太多信息,但它是一个快速概览,如果你对某些东西感兴趣,你可以从那里进一步调查。

请记住这里可能会有误报,在我的例子中是 vim 和 python,它们是由 ycmd(我使用的作为本地服务器进程运行的 vim 插件)引起的。

例如,如果我不知道这一点,我可以检查

$ ps ax | grep python 

查看所有进程,抓取那里的端口并检查 netstat。

$ netstat -p | grep 51635
tcp        1      0 localhost:41792         localhost:51635         CLOSE_WAIT  27413/vim

而且,正如所提到的,这是来自 ycmd 的环回路由,因此实际上并没有超出我的机器。但现在我知道了。

相关内容