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.
텔넷 서버를 확인했을 때 해당 서버가 해당 컴퓨터에서 실행되고 있었습니다.
# 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 재정의데이터베이스 또는 패키지가 완전히 설치되지 않았습니다. 아니면 OP텔넷제한된 환경에서 실행하세요. 일부 예는 마운트된 파일 시스템일 수 있습니다.노수이드, 컨테이너 또는 AppArmor 또는 SELinux에 대한 부적절한 설정이 포함될 수 있습니다.
물론 사용원격 로그인그 자체로 수행되어서는 안됩니다. 텔넷에 사용할 수 있는 SSL 버전이 있었습니다.고객그리고섬기는 사람, 그러나 데비안에서는 사용할 수 없다는 점을 고려하면안정적인(하지만 단지시드) 자체에 문제가 있을 수 있습니다.