Debian システムへの Telnet 接続が拒否されました。

Debian システムへの Telnet 接続が拒否されました。

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 ルートです。 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 オーバーライドデータベースまたはパッケージが完全にインストールされていません。またはOPTelnet限られた環境で実行してください。いくつかの例は、マウントされたファイルシステムです。ノスイド、コンテナ、またはAppArmorまたはSELinuxの不適切な設定を含めることができます。

もちろん使用リモートログインそれ自体で行うべきではありません。 Telnetに使用できるSSLバージョンがありました。顧客そして仕える人しかし、Debian では使用できないことを考えると安定(しかしシード)自体に問題がある可能性があります。

関連情報