Telnet (short for "teletype network")[1][2] is a client/server application protocol that provides access to virtual terminals of remote systems on local area networks or the Internet.[3] It is a protocol for bidirectional 8-bit communications. Its main goal was to connect terminal devices and terminal-oriented processes.[4]
Telnet consists of two components: (1) the protocol itself which specifies how two parties are to communicate and (2) the software application that provides the service. 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 was developed as secret technology in 1969 beginning with RFC 15, extended in RFC 855, and standardized as Internet Engineering Task Force (IETF) Internet Standard STD 8, one of the first Internet standards.[1][2] 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.[3][5] Telnet's use for this purpose has waned significantly in favor of SSH.[6] Some extensions to Telnet which would provide encryption have been proposed.[7]
Components
editTelnet consists of two components: (1) the protocol itself and (2) the service component. The telnet protocol is a client-server protocol, based on a reliable connection-oriented transport.[3] This protocol is used to establish a connection to Transmission Control Protocol (TCP) port number 23 or 2323, where a Telnet server application is listening.[4][8][9] 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).[10] 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 Protocol
editHistory
editEven though Telnet was an ad hoc protocol with no official definition until March 5, 1973,[11] the name actually referred to Teletype Over Network Protocol as the RFC 206 (NIC 7176) on Telnet makes the connection clear:[12]
The TELNET protocol is based upon the notion of a virtual teletype, employing a 7-bit ASCII character set. The primary function of a User TELNET, then, is to provide the means by which its users can 'hit' all the keys on that virtual teletype.[13]
Essentially, it used an 8-bit channel to exchange 7-bit ASCII data. Any byte with the high bit set was a special Telnet character. On March 5, 1973, a Telnet protocol standard was defined at UCLA[14] with the publication of two NIC documents: Telnet Protocol Specification, NIC 15372, and Telnet Option Specifications, NIC 15373.
Extensions
editMany extensions were made for Telnet because of its negotiable options protocol architecture. Some of these extensions have been adopted as Internet standards, IETF documents STD 27 through STD 32. Some extensions have been widely implemented and others are proposed standards on the IETF standards track (see below).
Telnet service
editThe Telnet service is the 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.[15]
Security vulnerabilities
editTelnet is vulnerable to network-based cyberattacks, such as packet sniffing sensitive information including passwords and fingerprinting.[5][16] 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.[9] In fact, Telnet is targeted by attackers more frequently than other common protocols, especially when compared to UPnP, CoAP, MQTT, AMQP and XMPP [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:[17]
- 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.[16]
- 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.[9]
- Most Telnet authentication mechanisms are vulnerable to being intercepted by Man-in-the-middle attacks.[16]
Extensions to Telnet provide Transport Layer Security (TLS) security and Simple Authentication and Security Layer (SASL) authentication that address the above concerns.[7] However, most Telnet implementations do not support these extensions; and they do not address other vulnerabilities such as parsing the banner information.[16]
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 secured telnet.[18]
Uses
editHistorical uses
editHistorically, 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.[19] The usage of Telnet for remote management has declined rapidly, especially on the public Internet, in favor of the Secure Shell (SSH) protocol.[3][20] 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 uses
editThe Telnet client may be used in debugging network services such as SMTP, IRC, HTTP, FTP or POP3, to issue commands to a server and examine the responses.[15] For example, Telnet client applications can establish an interactive TCP session to a port other than the Telnet server port. However, communication with such ports does not involve the Telnet protocol, because these services merely use a transparent 8-bit TCP connection, because most elements of the telnet protocol were designed around the idea of accessing a command line interface and none of these options or mechanisms is employed in most other internet service connections.
For example, a command line telnet client could make an HTTP request to a web server on TCP port 80 as follows:[21]
$ telnet www.example.com 80
GET /path/to/file.html HTTP/1.1
Host: www.example.com
Connection: close
The older protocol is used these days only in rare cases to access decades-old legacy equipment that does not support more modern protocols.[22] 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).
Telnet is commonly used by amateur radio operators for providing public information.[23]
Despite recommendation 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.[9]
Technical details
editThe technical details of Telnet are defined by a variety of specifications including RFC 854.[4]
USASCII control codes
editName | 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)[4] |
Telnet commands
editTelnet commands consist of at least two bytes.[4] 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 oft 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)[4] |
Interpret As Command
editAll 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.)[4]
Telnet options
editTelnet also has a variety of options that terminals implementing Telnet should support.
Code | Name | Spec | Notes |
---|---|---|---|
0 | Binary Transmission | RFC 856 | The 8-bit mode (so named binary option) is intended to transmit binary data, not ASCII characters. The standard suggests the interpretation of codes 0000–0176 as ASCII, but does not offer any meaning for high-bit-set data octets. There was an attempt to introduce a switchable character encoding support like HTTP has,[24] but nothing is known about its actual software support. |
1 | Echo | RFC 857 | |
2 | Reconnection | NIC 15391 of 1973 | |
3 | Suppress Go Ahead | RFC 858 | 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 | RFC 859 | |
6 | Timing Mark | RFC 860 | |
7 | Remote Controlled Trans and Echo | RFC 726 | |
8 | Output Line Width | NIC 20196 of August 1978 | |
9 | Output Page Size | NIC 20197 of August 1978 | |
10 | Output Carriage-Return Disposition | RFC 652 | |
11 | Output Horizontal Tab Stops | RFC 653 | |
12 | Output Horizontal Tab Disposition | RFC 654 | |
13 | Output Formfeed Disposition | RFC 655 | |
14 | Output Vertical Tabstops | RFC 656 | |
15 | Output Vertical Tab Disposition | RFC 657 | |
16 | Output Linefeed Disposition | RFC 658 | |
17 | Extended ASCII | RFC 698 | |
18 | Logout | RFC 727 | |
19 | Byte Macro | RFC 735 | |
20 | Data Entry Terminal | ||
21 | SUPDUP | ||
22 | SUPDUP Output | RFC 749 | |
23 | Send Location | RFC 779 | |
24 | Terminal Type | RFC 1091 | |
25 | End of Record | RFC 885 | |
26 | TACACS User Identification | RFC 927 | |
27 | Output Marking | RFC 933 | |
28 | Terminal Location Number | RFC 946 | |
29 | Telnet 3270 Regime | RFC 1041 | |
30 | X.3 PAD | RFC 1053 | |
31 | Negotiate About Window Size | RFC 1073 | |
32 | Terminal Speed | RFC 1079 | |
33 | Remote Flow Control | RFC 1372 | |
34 | Linemode | RFC 1184 | |
35 | X Display Location | RFC 1096 | |
36 | Environment Option | RFC 1408 | |
37 | Authentication Option | RFC 2941 | |
38 | Encryption Option | RFC 2946 | |
39 | New Environment Option | RFC 1572 | |
40 | TN3270E | RFC 2355 | See IBM 3270 |
41 | XAUTH | ||
42 | CHARSET | RFC 2066 | |
43 | Telnet Remote Serial Port (RSP) | ||
44 | Com Port Control Option | RFC 2217 | |
45 | Telnet Suppress Local Echo | ||
46 | Telnet Start TLS | ||
47 | KERMIT | RFC 2840 | 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 | RFC 861 | |
Source: Internet Assigned Numbers Authority (n.d.)[25]
|
Telnet clients
edit- AbsoluteTelnet is a telnet client for Windows. It also supports SSH and SFTP.
- Inetutils includes a telnet client and server and is installed by default on many Linux distributions.
- Line Mode Browser, a command line web browser
- NCSA Telnet
- PuTTY and plink command line are a free, open-source SSH, Telnet, rlogin, and raw TCP client for Windows, Linux, and Unix.
- Rtelnet is a SOCKS client version of Telnet, providing similar functionality of telnet to those hosts which are behind firewall and NAT.
- RUMBA (Terminal Emulator)
- SecureCRT from Van Dyke Software
- SyncTERM is a BBS terminal program supporting Telnet, SSHv2, RLogin, Serial, Windows, *nix, and Mac OS X platforms, X/Y/ZMODEM and various BBS terminal emulations
- telnet.exe command line utility included in default installation of many versions of Microsoft Windows.
- TeraTerm
- ZOC Terminal
In popular culture
editStar Wars: Episode IV – A New Hope from 1977 has been recreated as a text art movie served through Telnet.[26]
See also
editReferences
edit- ^ a b Wheen, Andrew (2011). Dot-dash to Dot.Com: How Modern Telecommunications Evolved from the Telegraph to the Internet. Springer. p. 132. ISBN 9781441967596.
- ^ a b Meinel, Christoph; Sack, Harald (2013). Internetworking: Technological Foundations and Applications. X.media.publishing. p. 57. ISBN 978-3642353918.
- ^ a b c d Valenčić, D.; Mateljan, V. (2019). "Implementation of NETCONF Protocol". 2019 42nd International Convention on Information and Communication Technology, Electronics and Microelectronics (MIPRO). pp. 421–430. doi:10.23919/MIPRO.2019.8756925. ISBN 978-953-233-098-4. S2CID 195883872.
- ^ a b c d e f g Postel, J.; Reynolds, J. K. (1983). "Telnet Protocol Specification". Network Working Group. doi:10.17487/RFC0854. ISSN 2070-1721. RFC 854.
- ^ a b Daş, Resul; Karabade, Abubakar; Tuna, Gurkan (2015). "Common network attack types and defense mechanisms". 2015 23nd Signal Processing and Communications Applications Conference (SIU). pp. 2658–2661. doi:10.1109/SIU.2015.7130435. ISBN 978-1-4673-7386-9. S2CID 11256038.
- ^ Todorov, Dobromir (2007). Mechanics of user identification and authentication : fundamentals of identity management. Boca Raton: Auerbach Publications. ISBN 978-1-4200-5220-6. OCLC 263353270.
- ^ a b Mahmood, H.B. (2003). "Transport layer security protocol in Telnet". 9th Asia-Pacific Conference on Communications (IEEE Cat. No.03EX732). Vol. 3. pp. 1033–1037 Vol.3. doi:10.1109/APCC.2003.1274255. ISBN 0-7803-8114-9. S2CID 56798078.
- ^ "Service Name and Transport Protocol Port Number Registry". www.iana.org. Retrieved 2023-01-12.
- ^ a b c d Srinivasa, Shreyas; Pedersen, Jens Myrup; Vasilomanolakis, Emmanouil (2021-11-02). "Open for hire". Proceedings of the 21st ACM Internet Measurement Conference. IMC '21. New York, NY, USA: Association for Computing Machinery. pp. 195–215. doi:10.1145/3487552.3487833. ISBN 978-1-4503-9129-0. S2CID 240357287.
- ^ Postel, J. (1981). "NCP/TCP transition plan". Network Working Group. doi:10.17487/RFC0801. ISSN 2070-1721. RFC 801.
- ^ Telnet Protocol. April 3, 1972. doi:10.17487/RFC0318. RFC 318.
- ^ Bruen, Garth O. (2015). WHOIS Running the Internet: Protocol, Policy, and Privacy (1st ed.). Wiley. p. 25. ISBN 9781118679555.
- ^ J. White (9 August 1971). A User TELNET - Description of an Initial Implementation. Computer Research Lab, UCSB. doi:10.17487/RFC0206. RFC 206.
- ^ TELNET Protocol Specification. 1 May 1973. doi:10.17487/RFC0495. RFC 495.
- ^ a b Shimonski, Robert J.; Eaton, Wally; Khan, Umer; Gordienko, Yuri (2002-01-01), Shimonski, Robert J.; Eaton, Wally; Khan, Umer; Gordienko, Yuri (eds.), "Chapter 11 - Detecting and Performing Security Breaches with Sniffer Pro", Sniffer Pro Network Optimization and Troubleshooting Handbook, Burlington: Syngress, pp. 513–565, doi:10.1016/B978-193183657-9/50015-0, ISBN 978-1-931836-57-9, retrieved 2023-01-12
- ^ a b c d Samtani, Sagar; Yu, Shuo; Zhu, Hongyi; Patton, Mark; Chen, Hsinchun (2016). "Identifying SCADA vulnerabilities using passive and active vulnerability assessment techniques". 2016 IEEE Conference on Intelligence and Security Informatics (ISI). pp. 25–30. doi:10.1109/ISI.2016.7745438. ISBN 978-1-5090-3865-7. S2CID 11741873.
- ^ Kirk, Jeremy (2007-02-12). "Zero-day flaw in Solaris allows remote attacks". Network World. Retrieved 2023-01-12.
- ^ "TCP/IP Ports Required for IBM i Access and Related Functions". IBM Support. Archived from the original on 2016-09-18. Retrieved 2016-09-07.
- ^ Todorov, Dobromir (2007). Mechanics of user identification and authentication : fundamentals of identity management. Boca Raton: Auerbach Publications. ISBN 978-1-4200-5220-6. OCLC 263353270.
- ^ Poulsen, Kevin (2 April 2007). "Telnet, dead at 35...RIP". Wired. p. 24. Archived from the original on 21 December 2016. Retrieved 14 June 2017.
- ^ "SysAdmin MD". www.sysadmin.md. Retrieved 2023-01-12.
- ^ Ylonen, Tatu. "History of the SSH Protocol". SSH home page. SSH Communications Security, Inc. Archived from the original on 25 July 2018. Retrieved 14 June 2017.
- ^ "Telnet | PDF | Networking Standards | Internet Standards". Scribd. Retrieved 2023-01-12.
- ^ TELNET CHARSET Option. doi:10.17487/RFC2066. RFC 2066.
- ^ "Telnet Options". www.iana.org. Retrieved 2023-01-12.
- ^ "The Lost Worlds of Telnet". The New Stack. 10 March 2019. Retrieved 5 June 2022.
Further reading
editInternet Standards
edit- RFC 854, Telnet Protocol Specification
- RFC 855, Telnet Option Specifications
- RFC 856, Telnet Binary Transmission
- RFC 857, Telnet Echo Option
- RFC 858, Telnet Suppress Go Ahead Option
- RFC 859, Telnet Status Option
- RFC 860, Telnet Timing Mark Option
- RFC 861, Telnet Extended Options: List Option
Proposed Standards
edit- RFC 885, Telnet End of Record Option
- RFC 1073, Telnet Window Size Option
- RFC 1079, Telnet Terminal Speed Option
- RFC 1091, Telnet Terminal-Type Option
- RFC 1096, Telnet X Display Location Option
- RFC 1123, Requirements for Internet Hosts - Application and Support
- RFC 1184, Telnet Linemode Option
- RFC 1372, Telnet Remote Flow Control Option
- RFC 1572, Telnet Environment Option
- RFC 2941, Telnet Authentication Option
- RFC 2942, Telnet Authentication: Kerberos Version 5
- RFC 2943, TELNET Authentication Using DSA
- RFC 2944, Telnet Authentication: SRP
- RFC 2946, Telnet Data Encryption Option
- RFC 4248, The telnet URI Scheme
Informational/experimental
edit- RFC 1143, The Q Method of Implementing TELNET Option Negotiation
- RFC 1571, Telnet Environment Option Interoperability Issues
- RFC 2066, TELNET CHARSET Option
Other RFCs
editExternal links
edit- Telnet Options—The official list of assigned option numbers at iana.org
- Telnet Interactions Described as a Sequence Diagram
- Telnet protocol description, with NVT reference
- Microsoft TechNet:Telnet commands
- TELNET: The Mother of All (Application) Protocols
- "telnet.org—information about telnet". telnet.org. Retrieved 2020-01-07. Contains a list of telnet addresses and list of telnet clients