Linux-Telnet-Server verwenden kein Telnet-Protokoll-Handshake

434
Anonymous

Wir versuchen, mit einem einfachen Terminalprogramm eine Verbindung zum Linux-Telnet-Dienst herzustellen. Ich vermute, der Server ist auf den Standard-VT-100 eingestellt, und der Telnet-Server sendet Steuerungshandshake-Sequenzen, erwartet, dass das Terminal mit den unterstützten Optionen antwortet, und wartet auf die Antwort des Terminals.

enter image description here (Entschuldigung für schlechte Bildqualität)

Leider ist das Terminal nur ein bloßes Kommunikationsprogramm und kennt das Telnet-Protokoll nicht.

Gibt es eine Möglichkeit, dem Telnet-Server mitzuteilen (z. B. durch Festlegen eines bestimmten Terminaltyps), die Identifikation der Remote-Terminal-Eigenschaften nicht zu starten, sondern direkt zur Kommunikation zu gehen?

Bearbeiten:

Bitte bearbeiten Sie die Frage mit weiteren Details: Welches Terminal verwenden Sie, welches "Bare Communication" -Programm ist das?

Das Kommunikationsprogramm öffnet die TCP-Verbindung zum Linux-PC an Port 23, sendet dann die auf der Tastatur eingegebenen Zeichen und zeigt die auf dem Bildschirm empfangenen Zeichen an, ohne dass Zeichen verarbeitet werden.

Können Sie netcat stattdessen (oder zusätzlich) von telnetd auf dem Server ausführen und dies zum Debuggen verwenden, wenn die Kommunikation an sich funktioniert

Ich bin mir nicht sicher, ich kontrolliere nicht beide Maschinen. Aber ist es zu 100% die Tatsache, dass das Terminal mit der Maschine mit der Linux-Maschine verbunden werden kann, und die Linux-Maschine die Telnet-Protokollsteuerzeichen senden kann (Sie können es auf dem Bild sehen - weiße Zeichen sind 0xff - Startmarkierung der Telnet-Option) . Ich kann nicht 100% sagen, weil ich keine Wireshark-Protokolle habe, aber die Kommunikation funktioniert ordnungsgemäß, und es ist ein Telnet-Server, der kein Telnet-Protokoll-Handshake durchläuft.

Möchten Sie sich anmelden, wenn Sie verbunden sind, oder möchten Sie noch etwas tun? Können Sie etwas sichereres auf dem Terminal verwenden, zB ssh?

Ja, ich möchte, dass der Telnet-Server "login:" anzeigt, in dem er aufgefordert wird, sich beim System anzumelden. Der Telnet-Dienst auf der Linux-Maschine ist betriebsbereit, da er von Telecom-Client aus über die dritte Maschine protokolliert werden kann. Dieser Telnet-Client kennt jedoch das Telnet-Protokoll und antwortet darauf. In dem oben beschriebenen Fall kennt das Programm keine Informationen zu den Telnet-Steuercodes / -Protokollen und zeigt diese ohne weitere Aktion als Zeichen an (Antwort gemäß Telnet-Protokoll).

0
Was meinst du mit "einfaches Terminal"? Telnet selbst beginnt nicht mit der Erkennung der Eigenschaften von Remote-Terminals. Diese Art von Dingen kann jedoch von der verwendeten Shell ausgeführt werden. Werfen Sie einen Blick auf / etc / screenrc und sehen Sie, ob Sie dies anpassen können. davidgo vor 6 Jahren 0
Der Telnet-Server sendet eine bestimmte Steuerungssequenz, bevor er mit der Kommunikation beginnt, und der Client muss (oder sollte?) Mit Antworten auf die Fragen antworten, die der Telnet-Server stellt. Dies ist eigentlich das Telnet-Protokoll RFC 854. Es scheint, dass wir diese Funktionalität deaktivieren müssen ... Anonymous vor 6 Jahren 0
Bitte bearbeiten Sie die Frage mit weiteren Details: Welches Terminal verwenden Sie, welches "Bare Communication" -Programm ist das? Können Sie `netcat` auf dem Server (oder zusätzlich) von` telnetd` ausführen und dies zum Debuggen verwenden, wenn die Kommunikation an sich funktioniert? Möchten Sie sich anmelden, wenn Sie verbunden sind, oder möchten Sie noch etwas tun? Können Sie etwas sichereres auf dem Terminal verwenden, z. B. `ssh`? dirkt vor 6 Jahren 0

1 Antwort auf die Frage

1
grawity

Zunächst hat die Telnet-Verhandlung nichts mit Terminaltypen zu tun. ( In der Tat der Terminaltyp wird bestimmt während Telnet - Verhandlungen.) So können Sie die früheren deaktivieren, indem diese zu ändern.

Wie Sie es deaktivieren können, hängt von der jeweiligen Telnetd-Implementierung auf dem Server ab. (Ich habe fünf verschiedene in.telnetds nur unter Linux gezählt, andere Betriebssysteme haben ihre eigenen.)

Manchmal gibt es eine telnetd-Befehlszeilenoption, die Sie in der Dienstkonfiguration verwenden können (d. H. In einer systemd-.service-Datei oder in / etc / inetd).

Wenn alles fehlschlägt, können Sie einfach Ihre eigene gepatchte Telnetd-Version kompilieren. Alle Linux-Distributionen haben die Möglichkeit, Pakete nach dem offiziellen Rezept (dpkg-buildpackage, makepkg ...) neu zu erstellen.