我家里有一台 Linux 服务器(OL 6.6,仅供参考)运行一些内部服务。今天早上我注意到它正在响应一个我看不到记录的地址的 ARP 请求。
该 IP 未在任何/etc/sysconfig/network-scripts
文件中配置,并且未显示在 中ip addr show
。
从我的工作站:
macbook:~ elliott$ arping -c1 192.168.50.108
ARPING 192.168.50.108
60 bytes from 00:24:81:05:c0:cb (192.168.50.108): index=0 time=1.854 msec
--- 192.168.50.108 statistics ---
1 packets transmitted, 1 packets received, 0% unanswered (0 extra)
rtt min/avg/max/std-dev = 1.854/1.854/1.854/0.000 ms
macbook:~ elliott$
在服务器上:
[elliott@server ~]$ ifconfig | grep -i 00:24:81:05:C0:CB
br0 Link encap:Ethernet HWaddr 00:24:81:05:C0:CB
br0:1 Link encap:Ethernet HWaddr 00:24:81:05:C0:CB
eth0 Link encap:Ethernet HWaddr 00:24:81:05:C0:CB
[elliott@server ~]$
[elliott@server ~]$ ip addr | grep 192.168.50.108
[elliott@server ~]$
此 IP 位于我的路由器的 DHCP 范围内,仅供参考,并且不响应正常端口范围内的 ping 或任何 TCP 请求(nmap -T4 -Pn 192.168.50.108
)。
我试过了:
- 关闭服务器以确认 ARP 回复停止
- 逐个关闭服务并终止所有不必要的进程 - 直到我关闭计算机,该 IP 才会停止响应(它也是开机时最先出现的 IP 之一)
- 更改默认网关以指向 Raspberry Pi 盒子并捕获该 IP 的任何网络流量——我还没有看到任何
所以我的问题是:a) 我应该有多担心?b) 我能/应该做什么来尝试追踪这个问题?
谢谢你的帮助!
答案1
您描述的技术称为arp 代理。它包括让一个接口(NIC1)响应 arp 查询代替另一个接口(NIC2)的端口,该接口不在同一物理网络上。NIC1 所在的计算机将负责正确路由发往 NIC2 的数据包。
从某种意义上说,这是 ARP 欺骗的反面:在 ARP 欺骗中,具有不同 MAC 地址的 PC 会假装拥有其他人的 IP 地址(例如网关的 IP 地址),以便拦截和分析所有网络流量。在这里,具有给定 IP 地址的 PC 会假装拥有其他人的 MAC 地址。
Arp 代理主要用于在无法桥接时连接虚拟机,或连接不同线路和/或 AP 上的物理 PC;事实上,ip_forwarding = 1
您sysctl.conf
只允许转发 OSI 第 3 层数据包,而绝对必要的 ARP 流量属于 OSI 第 2 层。您自己是否曾经配置过此类东西,虚拟机或 DMZ?如果没有,那么您可能会开始担心。
为了进一步探究该问题,您可以采取以下措施:
检查哪些接口启用了 arp-proxying;如果您只找到一个
br0
,那么您就确定了 192.168.50.108 连接在哪个 NIC 上;研究路由表,查看是否在任何地方建立了到 192.168.50.108 的替代路由;
研究系统接口、别名或虚拟,看是否添加了新的接口;
研究正在运行的进程,查看虚拟机管理程序是否正在运行(Xen、KVM、VMWare、VirtualBox 等);如果地址属于虚拟机,则不需要查看系统上的其他虚拟 NIC,其中一些(VirtualBox)经常会无缘无故地隐藏它们;
检查从您的服务器到某个本地或(最有可能)远程地址是否有任何反向隧道/VPN 连接打开;
尝试确定你的服务器上是否有rootkit。亨特和chkroot工具有广泛使用的软件包可以很好地完成这项工作。不要指望他们能找到 NSA 级的 rootkit,但你也不是恐怖分子,对吧?
如果您正在处理入侵事件,那么这个人很可能已经足够聪明,设置了防火墙来丢弃所有不属于 ESTABLISHED、RELATED 连接的数据包(包括 ICMP),因此您几乎没有机会检测到他……但是,您可能会检测到他的一些漏洞(如果有的话):搜索不寻常的 iptables 或 ebtables 规则(实际上,您很可能根本不应该配置 ebtables,因此仅发现您的服务器上有 ebtables 正在运行,这将是一个巨大的漏洞)。您应该寻找的规则类型是那些重写数据包的源和/或目标的规则,但一般来说,您没有放置在那里的任何东西都可能是合理的担忧来源。
一个好办法可能是启用通过 ssh 进行的无密码登录,禁用服务器的密码登录,以及任何其他访问服务器的来源(当然,除了 ssh),然后在不连接任何电缆的情况下重新启动服务器,以确保您已将入侵者踢出。无密码登录无法轻易绕过,即使不知道您的加密密钥的公共副本。