如何禁用 SAMBA 广播功能?

如何禁用 SAMBA 广播功能?

我不需要任何广播/自动发现,一切都是确定性的,并且在我的网络中严格配置。无论如何,我都会通过防火墙丢弃垃圾 SAMBA 广播,难道我不能禁用它们以保持我的网络流量清洁吗?

答案1

杀死 nmbd

编辑启动 smbd 和 nmbd 的 rc/init 脚本,使它们不运行 nmbd。nmbd 是 samba 的自动发现组件。禁用它将减少流量。

http://www.samba.org/samba/docs/man/manpages-3/nmbd.8.html

答案2

至少在 Debian 中,您可以在 smb.conf 文件中使用选项“disable netbios = yes”。我认为这比编辑 init 脚本更好。这样,您就不必在每次升级覆盖 init 脚本时都对其进行编辑。

答案3

disable netbios = yes在配置文件中使用不会阻止 nmbd 从 init.d 脚本运行。您需要在终止 nmbd 后手动从脚本中注释掉 nmbd 选项,因为 nmbd 将在重新启动 samba 服务或重启后再次启动。

您可以使用以下命令检查 netbios 是否不再运行:

netstat -an | grep 137 (or 138)

这将显示您的系统上是否有使用端口号 137(netbios 名称)和 138(Netbios 数据报)的活动监听器。

答案4

我实际上已经制定了一些有关 netbios 的 iptable 规则,而不是禁用它。
(当然,您可以通过添加来禁用它disable netbios = yes通过部分smb.conf中的文件[global])。

我正在运行一个专用服务器,但他们实际上不断告诉我存在 netbios 攻击,所以我为我的客户创建了一个 VPN。
(如果您通过路由器运行服务器,则无需设置 VPN,但如果您使用 TCP/IP 的远程连接进行网络共享,我建议您设置一个)

因此,这是我的解决方案(根据您路由器的 IP 分配,将 IP 范围替换为您的 IP 范围,例如 192.168.0.0/24):

首先通过iptables拒绝所有netbios端口使用的连接:

iptables -A INPUT -p udp -m udp --dport 137 -j REJECT
iptables -A INPUT -p udp -m udp --dport 138 -j REJECT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j REJECT
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j REJECT

这是阻塞的:

  • UDP 端口 137用于 NetBios 名称服务
  • UDP 端口 138用于 NetBios 数据报服务
  • TCP 端口 139用于 NetBios 会话服务
  • TCP 端口 445用于 NetBios Microsoft 发现服务

其次,您将接受所有本地(或 VPN)客户端通过 iptables 访问 netbios 端口:

iptables -A INPUT -p udp -m udp -s 10.8.0.0/24 --dport 137 -j ACCEPT
iptables -A INPUT -p udp -m udp -s 10.8.0.0/24 --dport 138 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp -s 10.8.0.0/24 --dport 139 -j ACCEPT
iptables -A INPUT -m state --state NEW -m tcp -p tcp -s 10.8.0.0/24 --dport 445 -j ACCEPT

根据此配置,将接受来自所有 IP 的连接10.8.0.1通过10.8.0.254

您可能会在那里找到有关 IP 路由的更多信息:https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing#CIDR_notation

我希望这能有所帮助。

相关内容