你好,我想在我的 Ubuntu 机器上实现尽可能多的安全性,所以我想检查可疑连接。你知道如何在我的电脑上监控网络流量吗?传入和传出。我也尝试了 netstat -t -u -c 和 tcpdump,但我想知道是否可以使用更有效的工具。谢谢!
答案1
有很多工具和不同的方法可以做到这一点。很多实用程序如:wireshark
,,,,,,甚至。不同的防火墙、审计和监控工具可以帮助您实现这一目的。netstat
nmap
iptraf
ss
lsof
基本上,您想要实现什么、要监控什么流程或什么类型的流量等都取决于您。
wireshark
安装:
sudo apt-get install wireshark
然后它会询问您是否希望以普通用户身份使用 wireshark,选择“是”,然后将自己添加到 wireshark 组:
sudo gpasswd -a username wireshark
注销并登录,您就可以使用 wireshark 了。只需运行它,选择您想要的接口,例如:enp0s3
然后单击start capturing
,您也可以双击接口名称。现在,您可以看到通过该接口传出/传入的所有流量。
您可以针对特定流量类型应用过滤器。
有很多方法可以应用过滤器,例如:输入: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/24
到151.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 端口是开放的,我可以使用-sV
switch 来找出该端口上正在运行哪个版本的服务:
$ 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 的环回路由,因此实际上并没有超出我的机器。但现在我知道了。