Template:Short description Template:Distinguish

Telnet (sometimes stylized TELNET<ref name="rfc854" />) is a client-server application protocol that provides access to virtual terminals of remote systems on local area networks or the Internet.<ref name="valencic2019">Template:Cite book</ref> It is a protocol for bidirectional 8-bit communications. Its main goal was to connect terminal devices and terminal-oriented processes.<ref name="rfc854" />

The name "Telnet" refers to two things: a protocol itself specifying how two parties are to communicate and a software application that implements the protocol as a service.<ref name="valencic2019" /> User data is interspersed in-band with Telnet control information in an 8-bit byte oriented data connection over the Transmission Control Protocol (TCP). Telnet transmits all information including usernames and passwords in plaintext so it is not recommended for security-sensitive applications such as remote management of routers.<ref name="valencic2019" /><ref name="das2015">Template:Cite book</ref> Telnet's use for this purpose has waned significantly in favor of SSH.<ref>Template:Cite book</ref> Some extensions to Telnet which would provide encryption have been proposed.<ref name="mahmood2003" />Template:IPstack

DescriptionEdit

Template:Expand section

The telnet protocol is a client-server protocol that runs on a reliable connection-oriented transport.Template:Citation needed Most often, a telnet client connects over TCP to port 23 or 2323, where a Telnet server application is listening.<ref name="rfc854">Template:Cite IETF</ref><ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref><ref name="srinivasa2021">Template:Cite book</ref> The Telnet protocol abstracts any terminal as a Network Virtual Terminal (NVT). The client must simulate a NVT using the NVT codes when messaging the server.


Telnet predated UDP/IP and originally ran over Network Control Protocol (NCP).<ref>Template:Cite IETF</ref> The telnet service is best understood in the context of a user with a simple terminal using the local Telnet program (known as the client program) to run a logon session on a remote computer where the user's communications needs are handled by a Telnet server program.

Telnet serviceEdit

A Telnet service is an application providing services over the Telnet protocol. Most operating systems provide a service that can be installed or enabled to provide Telnet services to clients.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>

NameEdit

While the official specification stylizes the name as TELNET, it is not defined therein as an acronym or abbreviation.<ref name="rfc854" />

In a 1972 paper, when discussing one of the early forms of the protocol, Stephen Crocker et al. used "TELNET" explicitly as an abbreviation of "telecommunications network."<ref name="crocker1971">Template:Cite book</ref>

In his 2015 book WHOIS Running the Internet: Protocol, Policy, and Privacy, Internet researcher Garth O. Bruen claims that Telnet was originally short for "Teletype Over Network Protocol."<ref name="gruen2015">Template:Cite book</ref>

HistoryEdit

Telnet was originally developed for ARPANET in 1969.<ref name="kozierok">Template:Cite book</ref> Initially, it was an ad hoc protocol with no formal specification,<ref>Template:Cite IETF</ref> but after extensive work in the 1970s, including numerous RFCs, it was officially formalized in Template:IETF RFC and Template:IETF RFC, which together form internet standard 8.<ref name="kozierok" /><ref name="std8">Template:Cite IETF</ref>

Since then, many additional RFCs have updated or extended the Telnet specification, both to address issues in the original standard and to add new capabilities.<ref name="kozierok" /> Some of these extensions have also been adopted as Internet standards, particularly standards 27 through 32 (see below).

Security vulnerabilitiesEdit

Telnet is vulnerable to network-based cyberattacks, such as packet sniffing sensitive information including passwords and fingerprinting.<ref name="das2015" /> <ref name="shimonski2002">Template:Citation</ref> <ref name="samtani2016">Template:Cite book</ref> Telnet services can also be exploited to leak information about the server (such as hostnames, IP addresses and brand) by packet sniffing the banner. This information can then be searched to determine if a Telnet service accepts a connection without authentication. Telnet is also frequently exploited by malware due to being improperly configured.<ref name="srinivasa2021" /> In fact, Telnet is targeted by attackers more frequently than other common protocols, especially when compared to UPnP, CoAP, MQTT, AMQP and XMPP Template:Citation needed. Common devices targeted are Internet of things devices, routers and modems.

The SANS Institute recommends that the use of Telnet for remote logins should be discontinued under normal circumstances for the following reasons:<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>

  • Telnet, by default, does not encrypt any data sent over the connection (including passwords), and so it is often feasible to eavesdrop on the communications and use the password later for malicious purposes; anybody who has access to a router, switch, hub or gateway located on the network between the two hosts where Telnet is being used can intercept the packets passing by and obtain login, password and whatever else is typed with a packet analyzer.<ref name="samtani2016" />
  • Most Telnet implementations lack authentication. An estimated 22,887 Telnet-enabled devices found by security researchers not only lacked authentication but also provided unrestricted access to the system.<ref name="srinivasa2021" />
  • Most Telnet authentication mechanisms are vulnerable to being intercepted by Man-in-the-middle attacks.<ref name="samtani2016" />

Extensions to Telnet provide Transport Layer Security (TLS) security and Simple Authentication and Security Layer (SASL) authentication that address the above concerns.<ref name="mahmood2003">Template:Cite book</ref> However, most Telnet implementations do not support these extensions; and they do not address other vulnerabilities such as parsing the banner information.<ref name="samtani2016" /> Telnet over VPN is a viable option if SSHv2 is not supported, or a VPN is already used to securely tunnel other application data to the remote network the Telnet server is present in. However, precautions must be taken: ideally the VPN should terminate on the Telnet server itself, unless the LAN has additional security measures against eavesdropping and modification by other devices such as additional encryption and/or VLANs. This is because Telnet traffic leaves the VPN server in its insecure plaintext form after it is decrypted. The VPN software should be a trusted one that is heavily audited (e.g. OpenVPN, WireGuard, IPsec), using preferably certificate-based/public key mutual authentication.

IBM 5250 or 3270 workstation emulation is supported via custom telnet clients, TN5250/TN3270, and IBM i systems. Clients and servers designed to pass IBM 5250 data streams over Telnet generally do support SSL encryption, as SSH does not include 5250 emulation. Under IBM i (also known as OS/400), port 992 is the default port for TelnetS (Telnet over SSL/TLS).<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>

UsesEdit

File:Busybox DG834Gt.PNG
BusyBox running under the Microsoft Telnet Client from a router.

Historical usesEdit

Historically, Telnet provided access to a command-line interface on a remote host. However, because of serious security concerns when using Telnet over an open network such as the Internet, its use for this purpose has waned significantly in favor of SSH.<ref>Template:Cite book</ref> The usage of Telnet for remote management has declined rapidly, especially on the public Internet, in favor of the Secure Shell (SSH) protocol.<ref name="valencic2019" /><ref>Template:Cite magazine</ref> SSH provides much of the functionality of telnet, with the addition of strong encryption to prevent sensitive data such as passwords from being intercepted, and public key authentication, to ensure that the remote computer is actually who it claims to be.

Modern day usesEdit

The Telnet protocol is mainly used for legacy equipment that does not support more modern communication mechanisms.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref> For example, a large number of industrial and scientific devices only have Telnet available as a communication option. Some are built with only a standard RS-232 port and use a serial server hardware appliance to provide the translation between the TCP/Telnet data and the RS-232 serial data. In such cases, SSH is not an option unless the interface appliance can be configured for SSH (or is replaced with one supporting SSH).Template:Citation needed

Telnet is commonly used by amateur radio operators for providing public information.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>

Despite recommendations against it, security researchers estimated that 7,096,465 exposed systems on the Internet continue to use Telnet as of 2021. However, estimates of this number have varied significantly, depending on the number of ports scanned beyond the default TCP port 23.<ref name="srinivasa2021" />

The Telnet client may be used in debugging network services such as SMTP, IRC, or HTTP servers, to issue commands to the server and examine the responses. In this case, when the Telnet client establishes a TCP connection to a port other than the standard Telnet server port, it does not use the Telnet protocol, and can be used instead to send and receive data over the TCP connection directly.<ref name="sysadmin.md">{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>Template:Better source needed

Technical detailsEdit

The technical details of Telnet are defined by a variety of specifications including Template:IETF RFC.<ref name="rfc854" />

USASCII control codesEdit

Name Byte code Explanation Notes
NULL 0
Line feed 10
Carriage return 13
Bell 7
Backspace 8
Horizontal tab 9
Vertical tab 11
Form feed 12
Source: J. Postel and Reynolds (1983)<ref name="rfc854" />

Telnet commandsEdit

Telnet commands consist of at least two bytes.<ref name="rfc854" /> The first byte is the IAC escape character (typically byte 255) followed by the byte code for a given command:

Name Byte code Explanation Notes
SE (Subnegotiation end) 240 End of negotiation (or data block) of a sub-service of a protocol mechanism
NOP (No operation) 241 Data packet that does nothing
Data Mark 242
Break 243
Interrupt Process 244 Request that other party ends current process
Abort output 245 Request that other party stops sending output
Are you there? 246
Erase character 247
Erase Line 248
Go ahead 249
SB (Subnegotiation begin) 250 Initiate the negotiation of a sub-service of a protocol mechanism
WILL 251 Informs other party that this party will use a protocol mechanism
WON'T 252 Informs other party that this party will not use a protocol mechanism
DO 253 Instruct other party to use a protocol mechanism
DON'T 254 Instruct other party to not use a protocol mechanism
IAC 255 Sequence Initializer/Escape Character
Source: J. Postel and Reynolds (1983)<ref name="rfc854" />

Interpret As CommandEdit

All data octets except 0xff are transmitted over Telnet as is. (0xff, or 255 in decimal, is the IAC byte (Interpret As Command) which signals that the next byte is a telnet command. The command to insert 0xff into the stream is 0xff, so 0xff must be escaped by doubling it when sending data over the telnet protocol.)<ref name="rfc854" />

Telnet optionsEdit

Telnet also has a variety of options that terminals implementing Telnet should support.

Telnet Options
Code Name Spec Notes
0 Binary Transmission Template:IETF RFC Template:Small
1 Echo Template:IETF RFC
2 Reconnection NIC 15391 of 1973
3 Suppress Go Ahead Template:IETF RFC The "Go Ahead" command code (249) in the original Telnet protocol is used to notify to the other end that the other end could start sending back messages. This was used in "half duplex" communication, as some terminals could send messages and receive messages, but not simultaneously.
4 Approx Message Size Negotiation NIC 15393 of 1973
5 Status Template:IETF RFC
6 Timing Mark Template:IETF RFC
7 Remote Controlled Trans and Echo Template:IETF RFC
8 Output Line Width NIC 20196 of August 1978
9 Output Page Size NIC 20197 of August 1978
10 Output Carriage-Return Disposition Template:IETF RFC
11 Output Horizontal Tab Stops Template:IETF RFC
12 Output Horizontal Tab Disposition Template:IETF RFC
13 Output Formfeed Disposition Template:IETF RFC
14 Output Vertical Tabstops Template:IETF RFC
15 Output Vertical Tab Disposition Template:IETF RFC
16 Output Linefeed Disposition Template:IETF RFC
17 Extended ASCII Template:IETF RFC
18 Logout Template:IETF RFC
19 Byte Macro Template:IETF RFC
20 Data Entry Terminal Template:Plainlist
21 SUPDUP Template:Plainlist
22 SUPDUP Output Template:IETF RFC
23 Send Location Template:IETF RFC
24 Terminal Type Template:IETF RFC
25 End of Record Template:IETF RFC
26 TACACS User Identification Template:IETF RFC
27 Output Marking Template:IETF RFC
28 Terminal Location Number Template:IETF RFC
29 Telnet 3270 Regime Template:IETF RFC
30 X.3 PAD Template:IETF RFC
31 Negotiate About Window Size Template:IETF RFC
32 Terminal Speed Template:IETF RFC
33 Remote Flow Control Template:IETF RFC
34 Linemode Template:IETF RFC
35 X Display Location Template:IETF RFC
36 Environment Option Template:IETF RFC
37 Authentication Option Template:IETF RFC
38 Encryption Option Template:IETF RFC
39 New Environment Option Template:IETF RFC
40 TN3270E Template:IETF RFC See IBM 3270
41 XAUTH
42 CHARSET Template:IETF RFC
43 Telnet Remote Serial Port (RSP)
44 Com Port Control Option Template:IETF RFC
45 Telnet Suppress Local Echo
46 Telnet Start TLS
47 KERMIT Template:IETF RFC See Kermit (protocol)
48 SEND-URL
49 FORWARD_X
50-137 Unassigned
138 TELOPT PRAGMA LOGON
139 TELOPT SSPI LOGON
140 TELOPT PRAGMA HEARTBEAT
141-254 Unassigned
255 Extended-Options-List Template:IETF RFC
Source: Internet Assigned Numbers Authority (n.d.)<ref>{{#invoke:citation/CS1|citation
CitationClass=web }}</ref>{{safesubst:#invoke:Check for unknown parameters|check|unknown=|preview=Page using Template:Center with unknown parameter "_VALUE_"|ignoreblank=y| 1 | style }}

Telnet clientsEdit

In popular cultureEdit

Star Wars: Episode IV – A New Hope from 1977 has been recreated as a text art movie served through Telnet.<ref>{{#invoke:citation/CS1|citation |CitationClass=web }}</ref>

See alsoEdit

ReferencesEdit

Template:Reflist

Further readingEdit

Internet StandardsEdit

Proposed StandardsEdit

Informational/experimentalEdit

Other RFCsEdit

External linksEdit

|CitationClass=web }} Contains a list of telnet addresses and list of telnet clients

Template:URI scheme