Connexion Telnet à la machine Debian refusée

Aug 25 2020

J'essaie de connecter la machine Debian 8 via telnet mais j'obtiens une erreur de connexion indiquée ci-dessous

# 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. 

Lorsque je vérifie le serveur telnet, il fonctionne sur la machine.

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

Quel problème peut être?

Réponses

2 A.B Aug 25 2020 at 19:25

Le in.telnetdbinaire du package telnetds'exécute par défaut en tant que processus sans privilège avec l'utilisateur telnetd , probablement pour des raisons de sécurité et de séparation des privilèges:

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

Il utilise ensuite un processus d'assistance pour gérer la connexion réelle. Ce processus d'assistance est setuid root. Sur un système Debian 8 qui donnerait (sauf la date et la taille du fichier, les mêmes que sur 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

Si vous supprimez le bit setuid de cet assistant, vous obtenez exactement le message d'erreur OP.

Ce bit setuid est normalement défini lors de la post-installation du paquet dans /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

Par exemple, le bit set-uid pourrait avoir été supprimé manuellement, remplacé dans la base de données de dpkg-statoverride ou le package n'a pas été complètement installé. Ou in.telnetd d'OP fonctionne dans un environnement restreint. Certains exemples peuvent être un système de fichiers monté avec nosuid , incluant peut-être des conteneurs, ou des paramètres inadéquats avec AppArmor ou SELinux.

Bien sûr, l'utilisation de telnetd lui-même ne devrait jamais être effectuée. Il y avait une version SSL disponible pour le client et le serveur telnet , mais étant donné qu'elle n'est pas disponible dans Debian stable (mais uniquement Sid ), elle peut avoir des problèmes en elle-même.