Telnet: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
KKeine Bearbeitungszusammenfassung
 
(8 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Telnet ist der Name eines zeichenorientierten Netzwerkprotokolls, sowie als auch der Name eines Programms um dieses Protokoll zu verwenden, und des [[Daemons]], um einen Telnet-Server zu betreiben.
Telnet ist der Name eines zeichenorientierten Netzwerkprotokolls, sowie als auch der Name eines Programms um dieses Protokoll zu verwenden, und des Daemons, um einen Telnet-Server zu betreiben.


== Sicherheitsaspekte ==
== Sicherheitsaspekte ==
Zeile 6: Zeile 6:
Aufgrund dieser Tatsache sollte Telnet ausschließlich für nicht sicherheitsrelevante Dinge, oder nur zum Testen der Funktionsfähigkeit auf Protokollebene verwendet werden. Die Server-Fernwartung erledigt man heutzutage sinnvoller Weise mittels [[SSH]].
Aufgrund dieser Tatsache sollte Telnet ausschließlich für nicht sicherheitsrelevante Dinge, oder nur zum Testen der Funktionsfähigkeit auf Protokollebene verwendet werden. Die Server-Fernwartung erledigt man heutzutage sinnvoller Weise mittels [[SSH]].


== Installation ==
{{installation|name=Telnet|repo=core|paket=inetutils}}
Alle nötigen Telnet-Programme befinden sich im Paket <code>inetutils</code>, das im core-Repository verfügbar ist, und mittels [[Pacman]] aus diesem installiert werden kann.


pacman -Sy inetutils
Der Telnet-Daemon (der – siehe Abschnitt [[#Sicherheitsaspekte|Sicherheitsaspekte]] – allerdings heutzutage nicht mehr verwendet werden sollte) wird in {{ic|/etc/xinetd.d/telnet}} konfiguriert und dann auch über {{ic|xinetd}} gestartet/gestoppt.
 
Der Telnet-Daemon (welcher – siehe Abschnitt [[#Sicherheitsaspekte|Sicherheitsaspekte]] – allerdings heutzutage nicht mehr verwendet werden sollte) wird in <code>/etc/xinetd.d/telnet</code> konfiguriert und über [[xinetd]] gestartet/gestoppt.


Aufgrund des Sicherheitsrisikos wird der Daemon in diesem Artikel nicht behandelt, und sollte darüber hinaus auch nicht gestartet werden, wenn man sich nicht zu einhundert Prozent sicher ist, was man tut.
Aufgrund des Sicherheitsrisikos wird der Daemon in diesem Artikel nicht behandelt, und sollte darüber hinaus auch nicht gestartet werden, wenn man sich nicht zu einhundert Prozent sicher ist, was man tut.


== Benutzung ==
== Benutzung ==
Der Telnet-Client, aufzurufen mittels des Befehls <code>telnet</code> nimmt neben verschiedenen Optionen zwei Parameter, Zielhost und Zielport, an. Es wird durch den Client dann eine Verbindung zum angegebenem Host auf dem angegebenem Port hergestellt. Dabei werden keine protokollrelevanten Daten übertragen, sondern lediglich eine Verbindung hergestellt.
Der Telnet-Client, aufzurufen mittels des Befehls {{ic|telnet}} nimmt neben verschiedenen Optionen zwei Parameter, Zielhost und Zielport, an. Es wird durch den Client dann eine Verbindung zum angegebenem Host auf dem angegebenem Port hergestellt. Dabei werden keine protokollrelevanten Daten übertragen, sondern lediglich eine Verbindung hergestellt.


Man kann hier nun, je nach Art der Gegenstelle, Protokolldaten eingeben und die Rückgaben auswerten. So kann man zum Beispiel die HTTP-Antwort eines Webservers auf Protokollebene überprüfen.
Man kann hier nun, je nach Art der Gegenstelle, Protokolldaten eingeben und die Rückgaben auswerten. So kann man zum Beispiel die HTTP-Antwort eines Webservers auf Protokollebene überprüfen.


$ telnet testserver.local 80
{{hc|telnet testserver.local 80|Trying 10.10.0.50...
Trying 10.10.0.50...
Connected to localhost.
Connected to localhost.
Escape character is '^]'.
Escape character is '^]'.
GET /index.htm HTTP/1.1
GET /index.htm HTTP/1.1
Host: testserver.local
Host: testserver.local
 
HTTP/1.1 200 OK
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Transfer-Encoding: chunked
Content-type: text/html
Content-type: text/html
Date: Thu, 22 Jul 2010 14:06:26 GMT
Date: Thu, 22 Jul 2010 14:06:26 GMT
Server: lighttpd/1.4.26
Server: lighttpd/1.4.26
 
[Ausgabe der Seite <nowiki>http://testserver.local/index.htm</nowiki>]}}
[Ausgabe der Seite <nowiki>http://localhost/index.htm</nowiki>]


Hier wird eine Verbindung auf Port 80 aufgebaut. Nach den Telnet-eigenen Ausgaben zum Verbindungsaufbau und der Information über das Escape-Zeichen folgt die Eingabe des Benutzers: Hier eine sehr einfache Anfrage des HTTP-Funktionssatzes, nämlich lediglich ein GET, gefolgt von der obligatorischen Host-Angabe. Durch zweimaliges Bestätigen mittels Enter (also dem Senden einer leeren Zeile) wird die Anfrage vom Server verarbeitet, und nach Ausgabe des HTTP-Headers die angeforderte Seite ausgegeben, und die Verbindung offen gehalten.
Hier wird eine Verbindung auf Port 80 aufgebaut. Nach den Telnet-eigenen Ausgaben zum Verbindungsaufbau und der Information über das Escape-Zeichen folgt die Eingabe des Benutzers: Hier eine sehr einfache Anfrage des HTTP-Funktionssatzes, nämlich lediglich ein GET, gefolgt von der obligatorischen Host-Angabe. Durch zweimaliges Bestätigen mittels Enter (also dem Senden einer leeren Zeile) wird die Anfrage vom Server verarbeitet, und nach Ausgabe des HTTP-Headers die angeforderte Seite ausgegeben, und die Verbindung offen gehalten.


$ telnet testserver.local 80
{{hc|telnet testserver.local 80|Trying 10.10.0.50...
Trying 10.10.0.50...
Connected to localhost.
Connected to localhost.
Escape character is '^]'.
Escape character is '^]'.
GET /index.htm HTTP/1.1
GET /index.htm HTTP/1.1
Host testserver.local
Host testserver.local
 
HTTP/1.1 400 Bad Request
HTTP/1.1 400 Bad Request
Connection: close
Connection: close
Content-Type: text/html
Content-Type: text/html
Content-Length: 349
Content-Length: 349
Date: Thu, 22 Jul 2010 14:15:02 GMT
Date: Thu, 22 Jul 2010 14:15:02 GMT
Server: lighttpd/1.4.26
Server: lighttpd/1.4.26
 
[Ausgabe der Bad-Request-Fehlerseite des Webservers]
[Ausgabe der Bad-Request-Fehlerseite des Webservers]
Connection closed by foreign host.}}
Connection closed by foreign host.


Hier wurde die selbe Anfrage an den Server gestellt, allerdings wurde bei der obligatorischen Host-Angabe kein Doppelpunkt gesetzt. Dies ist eine Protokollverletzung und führt zum Abbruch der Verbindung durch den Server, da eine ungültige Anfrage gestellt wurde.
Hier wurde die selbe Anfrage an den Server gestellt, allerdings wurde bei der obligatorischen Host-Angabe kein Doppelpunkt gesetzt. Dies ist eine Protokollverletzung und führt zum Abbruch der Verbindung durch den Server, da eine ungültige Anfrage gestellt wurde.
Zeile 58: Zeile 53:
Ein weiteres Beispiel ist die Abfrage eines NTP-Zeitservers.
Ein weiteres Beispiel ist die Abfrage eines NTP-Zeitservers.


$ telnet de.pool.ntp.org 13
{{hc|telnet de.pool.ntp.org 13|Trying 141.40.103.102...
Trying 141.40.103.102...
Connected to de.pool.ntp.org.
Connected to de.pool.ntp.org.
Escape character is '^]'.
Escape character is '^]'.
22 JUL 2010 16:22:00 CEST
22 JUL 2010 16:22:00 CEST
Connection closed by foreign host.}}
Connection closed by foreign host.


Das Network-Time-Protocol ermöglicht keine Interaktion, sondern gibt lediglich das aktuelle Datum inklusive der Uhrzeit zurück, und beendet die Verbindung.
Das Network-Time-Protocol ermöglicht keine Interaktion, sondern gibt lediglich das aktuelle Datum inklusive der Uhrzeit zurück, und beendet die Verbindung.
Zeile 69: Zeile 63:
Ebenfalls besteht die Möglichkeit, mittels Telnet mit einem SMTP-Server zu kommunizieren, um eine E-Mail zu versenden. Dabei ist zu beachten, dass die Kommunikation mit dem Server unverschlüsselt stattfindet, und dadurch ein Sicherheitsrisiko darstellt.  
Ebenfalls besteht die Möglichkeit, mittels Telnet mit einem SMTP-Server zu kommunizieren, um eine E-Mail zu versenden. Dabei ist zu beachten, dass die Kommunikation mit dem Server unverschlüsselt stattfindet, und dadurch ein Sicherheitsrisiko darstellt.  


$ telnet smtp.testserver.local 25
{{hc|telnet smtp.testserver.local 25|HELO clientpc1.local
HELO clientpc1.local
MAIL FROM:username@clientpc1.local
MAIL FROM:username@clientpc1.local
RCPT TO:testuser@testserver.local
RCPT TO:testuser@testserver.local
DATA
DATA
[Hier folgt der Mailinhalt]
[Hier folgt der Mailinhalt]
.
.
QUIT}}
QUIT


Damit wird dem User <code>testuser@testserver.local</code> eine Mail von <code>username@clientpc1.local</code> zugestellt. Im Beispiel wurden die Serverantworten zwar ausgelassen, aber Anhand dieser kann man auf das (un-)erwünschte Verhalten des Mailservers schließen.
Damit wird dem User {{ic|testuser@testserver.local}} eine Mail von {{ic|username@clientpc1.local}} zugestellt. Im Beispiel wurden die Serverantworten zwar ausgelassen, aber Anhand dieser kann man auf das (un-)erwünschte Verhalten des Mailservers schließen.


Das Abrufen einer Mail funktioniert ebenfalls.
Das Abrufen einer Mail funktioniert ebenfalls.


$ telnet pop.testserver.local 110
{{hc|telnet pop.testserver.local 110|USER testuser
USER testuser
PASS p4ssw0rd
PASS p4ssw0rd
LIST}}
LIST


An dieser Stelle erscheint eine Liste mit Nummern (ID) gefolgt von Größenangaben in Byte. Anhand der ID kann man nun eine Mail abrufen.
An dieser Stelle erscheint eine Liste mit Nummern (ID) gefolgt von Größenangaben in Byte. Anhand der ID kann man nun eine Mail abrufen.
Zeile 100: Zeile 92:
Auch heutzutage noch erfreut sich Telnet in einigen Kreisen großer Beliebtheit, hier mal eine kleine Auswahl von per Telnet aufrufbaren „Seiten“:
Auch heutzutage noch erfreut sich Telnet in einigen Kreisen großer Beliebtheit, hier mal eine kleine Auswahl von per Telnet aufrufbaren „Seiten“:


<code>telnet</code>
{{ic|telnet}}
* … <code>towel.blinkenlights.nl 23</code> {{sprache|en}} – StarWars-ASCII-Animation
* … {{ic|towel.blinkenlights.nl 23}} {{sprache|en}} – StarWars-ASCII-Animation
* … <code>towel.blinkenlights.nl 666</code> {{sprache|en}} – BOFH-Ausreden
* … {{ic|towel.blinkenlights.nl 666}} {{sprache|en}} – BOFH-Ausreden
* … <code>mud.darkerrealms.org 2000</code> {{sprache|en}} – Darker Realms (Text-Adventure)
* … {{ic|mud.darkerrealms.org 2000}} {{sprache|en}} – Darker Realms (Text-Adventure)
* … <code>cop.bbbs.no 4000</code> {{sprache|en}} – Circle Of Protection BBS
* … {{ic|cop.bbbs.no 4000}} {{sprache|en}} – Circle Of Protection BBS
* … <code>ParadiseBBS.ath.cx 23</code> {{sprache|de}} – Die „einzig verbliebene Amiga-Mailbox“
* … {{ic|ParadiseBBS.ath.cx 23}} {{sprache|de}} – Die „einzig verbliebene Amiga-Mailbox“
* … {{ic|atari-bbs.kicks-ass.net 23}} {{sprache|en}} – BBS System auf einem Atari 800XL


== Siehe auch ==
== Siehe auch ==

Aktuelle Version vom 4. Januar 2022, 10:59 Uhr

Telnet ist der Name eines zeichenorientierten Netzwerkprotokolls, sowie als auch der Name eines Programms um dieses Protokoll zu verwenden, und des Daemons, um einen Telnet-Server zu betreiben.

Sicherheitsaspekte

Telnet, das im Jahre 1983 spezifiziert wurde, besitzt von sich aus keinerlei Verschlüsselungsmethoden. Jeglicher über Telnet abgewickelte Datenverkehr geschieht daher im Klartext, und kann problemlos mitgeschnitten und analysiert werden.

Aufgrund dieser Tatsache sollte Telnet ausschließlich für nicht sicherheitsrelevante Dinge, oder nur zum Testen der Funktionsfähigkeit auf Protokollebene verwendet werden. Die Server-Fernwartung erledigt man heutzutage sinnvoller Weise mittels SSH.

Installation

Telnet ist als inetutils in core verfügbar, und kann von dort mittels Pacman installiert werden.

pacman -S inetutils

Der Telnet-Daemon (der – siehe Abschnitt Sicherheitsaspekte – allerdings heutzutage nicht mehr verwendet werden sollte) wird in /etc/xinetd.d/telnet konfiguriert und dann auch über xinetd gestartet/gestoppt.

Aufgrund des Sicherheitsrisikos wird der Daemon in diesem Artikel nicht behandelt, und sollte darüber hinaus auch nicht gestartet werden, wenn man sich nicht zu einhundert Prozent sicher ist, was man tut.

Benutzung

Der Telnet-Client, aufzurufen mittels des Befehls telnet nimmt neben verschiedenen Optionen zwei Parameter, Zielhost und Zielport, an. Es wird durch den Client dann eine Verbindung zum angegebenem Host auf dem angegebenem Port hergestellt. Dabei werden keine protokollrelevanten Daten übertragen, sondern lediglich eine Verbindung hergestellt.

Man kann hier nun, je nach Art der Gegenstelle, Protokolldaten eingeben und die Rückgaben auswerten. So kann man zum Beispiel die HTTP-Antwort eines Webservers auf Protokollebene überprüfen.

telnet testserver.local 80
Trying 10.10.0.50...
Connected to localhost.
Escape character is '^]'.
GET /index.htm HTTP/1.1
Host: testserver.local

HTTP/1.1 200 OK
Transfer-Encoding: chunked
Content-type: text/html
Date: Thu, 22 Jul 2010 14:06:26 GMT
Server: lighttpd/1.4.26

[Ausgabe der Seite http://testserver.local/index.htm]

Hier wird eine Verbindung auf Port 80 aufgebaut. Nach den Telnet-eigenen Ausgaben zum Verbindungsaufbau und der Information über das Escape-Zeichen folgt die Eingabe des Benutzers: Hier eine sehr einfache Anfrage des HTTP-Funktionssatzes, nämlich lediglich ein GET, gefolgt von der obligatorischen Host-Angabe. Durch zweimaliges Bestätigen mittels Enter (also dem Senden einer leeren Zeile) wird die Anfrage vom Server verarbeitet, und nach Ausgabe des HTTP-Headers die angeforderte Seite ausgegeben, und die Verbindung offen gehalten.

telnet testserver.local 80
Trying 10.10.0.50...
Connected to localhost.
Escape character is '^]'.
GET /index.htm HTTP/1.1
Host testserver.local

HTTP/1.1 400 Bad Request
Connection: close
Content-Type: text/html
Content-Length: 349
Date: Thu, 22 Jul 2010 14:15:02 GMT
Server: lighttpd/1.4.26

[Ausgabe der Bad-Request-Fehlerseite des Webservers]
Connection closed by foreign host.

Hier wurde die selbe Anfrage an den Server gestellt, allerdings wurde bei der obligatorischen Host-Angabe kein Doppelpunkt gesetzt. Dies ist eine Protokollverletzung und führt zum Abbruch der Verbindung durch den Server, da eine ungültige Anfrage gestellt wurde.

Ein weiteres Beispiel ist die Abfrage eines NTP-Zeitservers.

telnet de.pool.ntp.org 13
Trying 141.40.103.102...
Connected to de.pool.ntp.org.
Escape character is '^]'.
22 JUL 2010 16:22:00 CEST
Connection closed by foreign host.

Das Network-Time-Protocol ermöglicht keine Interaktion, sondern gibt lediglich das aktuelle Datum inklusive der Uhrzeit zurück, und beendet die Verbindung.

Ebenfalls besteht die Möglichkeit, mittels Telnet mit einem SMTP-Server zu kommunizieren, um eine E-Mail zu versenden. Dabei ist zu beachten, dass die Kommunikation mit dem Server unverschlüsselt stattfindet, und dadurch ein Sicherheitsrisiko darstellt.

telnet smtp.testserver.local 25
HELO clientpc1.local
MAIL FROM:username@clientpc1.local
RCPT TO:testuser@testserver.local
DATA
[Hier folgt der Mailinhalt]
.
QUIT

Damit wird dem User testuser@testserver.local eine Mail von username@clientpc1.local zugestellt. Im Beispiel wurden die Serverantworten zwar ausgelassen, aber Anhand dieser kann man auf das (un-)erwünschte Verhalten des Mailservers schließen.

Das Abrufen einer Mail funktioniert ebenfalls.

telnet pop.testserver.local 110
USER testuser
PASS p4ssw0rd
LIST

An dieser Stelle erscheint eine Liste mit Nummern (ID) gefolgt von Größenangaben in Byte. Anhand der ID kann man nun eine Mail abrufen.

RETR 2

Hier wird die Mail mit der ID 2 abgerufen, und ausgegeben. Es ist dabei zu beachten, dass der Datenverkehr vom und zum Server unverschlüsselt stattfindet, und damit ein Sicherheitsrisiko darstellt. Nachdem man das Verhalten des Servers hier überprüft hat, besteht auch die Möglichkeit, die Mail direkt zu löschen.

DELE 2

Somit wurde die Mail mit der ID 2 gelöscht.

Telnet-Seiten

Auch heutzutage noch erfreut sich Telnet in einigen Kreisen großer Beliebtheit, hier mal eine kleine Auswahl von per Telnet aufrufbaren „Seiten“:

telnet

  • towel.blinkenlights.nl 23 – StarWars-ASCII-Animation
  • towel.blinkenlights.nl 666 – BOFH-Ausreden
  • mud.darkerrealms.org 2000 – Darker Realms (Text-Adventure)
  • cop.bbbs.no 4000 – Circle Of Protection BBS
  • ParadiseBBS.ath.cx 23 – Die „einzig verbliebene Amiga-Mailbox“
  • atari-bbs.kicks-ass.net 23 – BBS System auf einem Atari 800XL

Siehe auch

  • SSH – Dank Verschlüsselung sichererer Fernzugriff

Weblinks