在 Windows 和 Linux 系统上禁用 LLMNR 以及 NetBIOS
LLMNR 和 NetBIOS 都可以解析本地其它设备的名称解析请求,但是都不验证其回复合法性。这两个服务容易被利用进行 MITM 攻击。此篇文章将会讲解如何在 Linux 和 Windows 系统上关闭 LLMNR 和 NetBIOS。

LLMNR 和 NetBIOS 都可以解析本地其它设备的名称解析请求,但是都不验证其回复合法性。这两个服务容易被利用进行 MITM 攻击。此篇文章将会讲解如何在 Linux 和 Windows 系统上关闭 LLMNR 和 NetBIOS。

此篇文章同时是 Network Cookbook 上 《在 Windows 和 Linux 系统上禁用 LLMNR 以及 NetBIOS》 的详解。

标题缩略图来自于此链接

什么是 LLMNR

LLMNR (Link-Local Multicast Name Resolution、链路多播本地名称解析、mDNS)是一个基于 DNS 格式的名称解析协议。支持 LLMNR 的主机可以在 DNS 服务不可用的时候在本地网络多播 LLMNR 请求从其它支持 LLMNR 的主机解析域名。此协议同样可以让主机解析本地主机域名对应的 IP。

什么是 NetBIOS

NetBIOS(网络基本输入输出系统)是一种目前大多基于 TCP/IP 协议的会话层协议/API。它能够提供名称登录,名称解析等服务。NetBIOS 在 Windows 安装 TCP/IP 栈的时候就会被携带安装,并且默认打开。

为什么要禁用 LLMNR 和 NetBIOS

LLMNR 客户端(请求者)会认为应答是权威的,所以当有客户尝试解析域名的时候,恶意节点可以返回错误信息以至于客户端认为恶意节点的 IP 是域名对应的 IP,或者解析出不存在的 IP。由此攻击又可展开 MITM 以及 replay 等攻击。

具体的攻击实例可以参考以下文章:

LLMNR

Windows 禁用方法

使用本地组策略编辑器(gpedit.msc)依次打开如下项目:

计算机配置 -> 管理模板 -> 网络 -> DNS 客户端 -> 关闭多播名称解析

在英文系统中,该项名称为:

Computer Configuration -> Administrative Templates -> Network -> DNS Client -> Turn Off Multicast Name Resolution

接下来,只需要将该 GPO 项目设置为 “已启用” 即可。

Linux (Debian/Ubuntu) 禁用方法

/etc/systemd/resolved.conf 文件中,修改或新创建:

1
LLMNR=no

NetBIOS

Windows 禁用方法

在控制面板中依次:

网络和Internet -> 网络连接 -> 右键想要更改的网卡 -> 选择 “属性” -> 点击 “Internet 协议版本 4 (TCP/IPv4)” -> 点击属性属性 -> 点击高级 -> 点击 WIN 选项卡 -> 勾选 “禁用 TCP/IP 上的 NetBIOS”

Linux 禁用方法

Linux 系统下, Samba (提供了许多 Windows 相关的服务实现)中的 nmbd 服务会响应 NetBIOS 包。如果需要关闭 NetBIOS,可以编辑 smb.conf 文件。该文件在基于 Debian 的系统上位置为 /etc/samba/smb.conf。在该文件中,添加或修改如下行:

1
disable netbios = yes

/etc/init/nmbd.conf 会检查该项是否为 yes,如果该项为 yes,则 nmbd 服务进程不会启动。


最后修改于 2020-01-01