“命名”服务如何在没有特权的情况下侦听端口 53?

问题描述 投票:0回答:1

我在我的 Debian 上使用非特权帐户启动了命名服务:

useradd named
chown -R named:named /etc/bind/
named -u named

这是受支持并且有效的。但我开始想知道普通用户“named”如何在不成为 root 的情况下监听端口 53?

我已经在我的 Debian 上检查过:

  • 内核参数没有变化(net.ipv4.ip_unprivileged_port_start = 1024)
  • 命名二进制文件上没有 suid root (-rwxr-xr-x 1 root root 546K 09-21 19:33 /usr/sbin/named)
  • IPTABLES 中没有重定向(iptables -L -v -n EMPTY)
  • 命名二进制文件没有功能(getcap /usr/sbin/named EMPTY)

请让我知道它是如何工作的,因为我无法在我的 debian 中的普通帐户上监听特权端口。

linux security debian bind9
1个回答
0
投票

检查

setcap
https://www.man7.org/linux/man-pages/man8/setcap.8.html

可以添加诸如

CAP_NET_BIND
之类的功能,以便能够以用户身份绑定到端口 53 https://www.man7.org/linux/man-pages/man7/capability.7.html

这就是

bind9
又名
named
:

中使用的内容
git clone https://github.com/isc-projects/bind9.git
cd bind9
ack CAP_NET

给出:

bin/named/os.c
152:    SET_CAP(CAP_NET_BIND_SERVICE);
213:    SET_CAP(CAP_NET_BIND_SERVICE);

来自

man 7 capabilities

CAP_NET_BIND_SERVICE
将套接字绑定到 Internet 域特权端口(端口号小于 1024)。

© www.soinside.com 2019 - 2024. All rights reserved.