Telnet (сокращение от «телекоммуникационная сеть») [1] — это протокол клиент-серверного приложения , который обеспечивает доступ к виртуальным терминалам удаленных систем в локальных сетях или Интернете . [2] Это протокол для двунаправленной 8-битной связи. Его главной целью было соединение терминальных устройств и терминально-ориентированных процессов. [3]
Telnet состоит из двух компонентов: (1) самого протокола, который определяет, как две стороны должны общаться, и (2) программного приложения, которое предоставляет услугу. Пользовательские данные перемежаются внутриполосной информацией управления Telnet в 8-битном байтовом соединении данных по протоколу управления передачей (TCP). Telnet был разработан как секретная технология в 1969 году, начиная с RFC 15, расширен в RFC 855 и стандартизирован как Internet Standard STD 8 Целевой группы по инжинирингу Интернета (IETF) , один из первых стандартов Интернета. [4] [5] Telnet передает всю информацию, включая имена пользователей и пароли, в открытом виде, поэтому он не рекомендуется для приложений, чувствительных к безопасности, таких как удаленное управление маршрутизаторами. [2] [6] Использование Telnet для этой цели значительно сократилось в пользу SSH . [7] Были предложены некоторые расширения Telnet, которые могли бы обеспечить шифрование. [8]
Telnet состоит из двух компонентов: (1) самого протокола и (2) сервисного компонента. Протокол telnet — это клиент-серверный протокол , основанный на надежном транспорте , ориентированном на соединение . [2] Этот протокол используется для установления соединения с портом протокола управления передачей (TCP) номер 23 или 2323, где прослушивается приложение сервера Telnet. [3] [9] [10] Протокол Telnet абстрагирует любой терминал как сетевой виртуальный терминал (NVT). Клиент должен имитировать NVT, используя коды NVT при отправке сообщений серверу.
Telnet появился раньше UDP/IP и изначально работал по протоколу сетевого управления (NCP). [11] Службу Telnet лучше всего понимать в контексте пользователя с простым терминалом, использующего локальную программу Telnet (известную как клиентская программа) для запуска сеанса входа на удаленном компьютере, где потребности пользователя в коммуникации обрабатываются программой сервера Telnet.
Несмотря на то, что Telnet был специальным протоколом, не имевшим официального определения до 5 марта 1973 года [12], название фактически относилось к протоколу Teletype Over Network Protocol , поскольку RFC 206 (NIC 7176) на Telnet делает связь очевидной: [13]
Протокол TELNET основан на идее виртуального телетайпа , использующего 7-битный набор символов ASCII . Таким образом, основная функция пользовательского TELNET заключается в предоставлении средств, с помощью которых его пользователи могут «нажимать» все клавиши на этом виртуальном телетайпе. [14]
По сути, он использовал 8-битный канал для обмена 7-битными данными ASCII. Любой байт с установленным старшим битом был специальным символом Telnet. 5 марта 1973 года в Калифорнийском университете в Лос-Анджелесе [15] был определен стандарт протокола Telnet с публикацией двух документов NIC: Telnet Protocol Specification, NIC 15372, и Telnet Option Specifications, NIC 15373.
Многие расширения были сделаны для Telnet из-за его архитектуры протокола с возможностью обмена опциями. Некоторые из этих расширений были приняты в качестве стандартов Интернета , документы IETF STD 27 через STD 32. Некоторые расширения были широко внедрены, а другие являются предлагаемыми стандартами на пути стандартов IETF (см. ниже).
Служба Telnet — это приложение, предоставляющее услуги по протоколу Telnet. Большинство операционных систем предоставляют службу, которая может быть установлена или включена для предоставления услуг Telnet клиентам. [16]
Telnet уязвим для сетевых кибератак , таких как перехват конфиденциальной информации, включая пароли и отпечатки пальцев . [6] [17] Службы Telnet также могут быть использованы для утечки информации о сервере (такой как имена хостов, IP-адреса и бренд) путем перехвата пакетов баннера. Затем эту информацию можно искать, чтобы определить, принимает ли служба Telnet соединение без аутентификации . Telnet также часто используется вредоносным ПО из-за неправильной настройки. [10] Фактически, Telnet чаще становится целью злоумышленников, чем другие распространенные протоколы, особенно по сравнению с UPnP , CoAP , MQTT , AMQP и XMPP [ требуется ссылка ] . Обычными целевыми устройствами являются устройства Интернета вещей , маршрутизаторы и модемы.
Институт SANS рекомендует прекратить использование Telnet для удаленного входа в систему в обычных обстоятельствах по следующим причинам: [18]
Расширения Telnet обеспечивают безопасность Transport Layer Security (TLS) и аутентификацию Simple Authentication and Security Layer (SASL), которые решают вышеуказанные проблемы. [8] Однако большинство реализаций Telnet не поддерживают эти расширения; и они не устраняют другие уязвимости, такие как анализ информации баннера. [17]
Эмуляция рабочей станции IBM 5250 или 3270 поддерживается через настраиваемые клиенты telnet, TN5250 / TN3270 и системы IBM i . Клиенты и серверы, предназначенные для передачи потоков данных IBM 5250 через Telnet, обычно поддерживают шифрование SSL , поскольку SSH не включает эмуляцию 5250. В IBM i (также известном как OS/400) порт 992 является портом по умолчанию для защищенного telnet. [19]
Исторически Telnet предоставлял доступ к интерфейсу командной строки на удаленном хосте. Однако из-за серьезных проблем безопасности при использовании Telnet в открытой сети, такой как Интернет, его использование для этой цели значительно сократилось в пользу SSH . [20] Использование Telnet для удаленного управления быстро сократилось, особенно в общедоступном Интернете , в пользу протокола Secure Shell (SSH). [2] [21] SSH предоставляет большую часть функциональности telnet, с добавлением надежного шифрования для предотвращения перехвата конфиденциальных данных, таких как пароли, и аутентификации с открытым ключом , чтобы гарантировать, что удаленный компьютер действительно является тем, за кого себя выдает.
Клиент Telnet может использоваться для отладки сетевых служб, таких как SMTP , IRC , HTTP , FTP или POP3 , для отправки команд серверу и проверки ответов. [16] Например, клиентские приложения Telnet могут устанавливать интерактивный сеанс TCP с портом, отличным от порта сервера Telnet. Однако связь с такими портами не включает протокол Telnet, поскольку эти службы просто используют прозрачное 8-битное TCP-соединение, поскольку большинство элементов протокола telnet были разработаны вокруг идеи доступа к интерфейсу командной строки , и ни один из этих параметров или механизмов не используется в большинстве других подключений к интернет-службам.
Например, клиент командной строки telnet может сделать HTTP-запрос к веб-серверу на TCP-порт 80 следующим образом: [22]
$ telnet www.example.com 80 GET /path/to/file.html HTTP/1.1 Хост: www.example.com Соединение: закрыть
В наши дни старый протокол используется только в редких случаях для доступа к устаревшему оборудованию, которому уже несколько десятилетий, и которое не поддерживает более современные протоколы. [23] Например, большое количество промышленных и научных устройств имеют только Telnet в качестве опции связи. Некоторые из них построены только со стандартным портом RS-232 и используют аппаратное устройство последовательного сервера для обеспечения перевода между данными TCP/Telnet и последовательными данными RS-232. В таких случаях SSH не является вариантом, если интерфейсное устройство не может быть настроено для SSH (или заменено на устройство с поддержкой SSH).
Telnet обычно используется радиолюбителями для предоставления публичной информации. [24]
Несмотря на рекомендации против этого, исследователи безопасности подсчитали, что по состоянию на 2021 год 7 096 465 уязвимых систем в Интернете продолжают использовать Telnet. Однако оценки этого числа значительно различаются в зависимости от количества сканируемых портов за пределами порта TCP по умолчанию 23. [10]
Технические детали Telnet определены различными спецификациями, включая RFC 854. [3]
Команды Telnet состоят как минимум из двух байтов. [3] Первый байт — это escape-символ IAC (обычно байт 255), за которым следует байт-код для данной команды:
Все октеты данных , за исключением 0xff, передаются по Telnet как есть. (0xff, или 255 в десятичном виде, является байтом IAC (Interpret As Command), который сигнализирует о том, что следующий байт является командой telnet. Команда для вставки 0xff в поток — 0xff, поэтому 0xff необходимо экранировать, удвоив его при отправке данных по протоколу telnet.) [3]
Telnet также имеет ряд опций, которые должны поддерживать терминалы, реализующие Telnet.
Фильм «Звездные войны: Эпизод IV – Новая надежда» 1977 года был воссоздан в виде текстового художественного фильма, передаваемого через Telnet. [27]