Telnet 连接到 Debian 机器被拒绝

Telnet 连接到 Debian 机器被拒绝

我正在尝试通过 telnet 连接 Debian 8 机器,但出现登录错误,如下所示

# telnet 192.168.88.48 
Trying 192.168.88.48... 
Connected to 192.168.88.48.
Escape character is '^]'. 
Debian GNU/Linux 8 login: Cannot possibly work without effective root
Connection closed by foreign host. 

当我检查 telnet 服务器时,它正在机器上运行。

# netstat -tulpn | grep :23 
tcp 0 0 0.0.0.0:23 0.0.0.0:* LISTEN 1817/inetd

可能是什么问题?

答案1

in.telnetd包中的二进制文件默认telnetd作为非特权进程以用户身份运行远程登录,可能出于安全原因和特权分离:

# grep telnet /etc/inetd.conf 
telnet      stream  tcp nowait  telnetd /usr/sbin/tcpd  /usr/sbin/in.telnetd

然后,它使用辅助进程来处理实际的登录。这个辅助进程是setuid root。在 Debian 8 系统上会给出(除了文件的日期和大小,与 Debian 10 上相同):

# dpkg -S /usr/lib/telnetlogin
telnetd: /usr/lib/telnetlogin
# ls -l /usr/lib/telnetlogin
-rwsr-xr-x. 1 root telnetd 8112 Jul 22  2008 /usr/lib/telnetlogin

如果你删除这个助手的 setuid 位,你会得到准确的 OP 的错误消息。

此 setuid 位通常在软件包安装后的过程中设置/var/lib/dpkg/info/telnetd.postinst

if [ -z "$(dpkg-statoverride --list /usr/lib/telnetlogin)" ]; then
  chown root:telnetd /usr/lib/telnetlogin
  chmod 4754 /usr/lib/telnetlogin
fi

例如,set-uid 位可能已被手动删除,并在dpkg-stat 覆盖的数据库或软件包未完全安装。或者OP的telnetd在受限环境中运行。一些示例可能是安装的文件系统诺苏伊德,可能包括容器,或 AppArmor 或 SELinux 的不适当设置。

当然使用远程登录本身不应该被完成。曾经有一个可用于 telnet 的 SSL 版本客户服务器,但考虑到它在 Debian 中不可用稳定的(但只有席德)它本身可能有问题。

相关内容