Протокол прикладного уровня TELNET (от англ. TErminaL NETwork) — сетевой протокол для реализации текстового интерфейса по сети. Название telnet получили также клиентские программы реализации данного протокола, практически для всех существующих операционных систем. Протокол Telnet – один из старейших сетевых протоколов, разрабатывавшихся как средство связи между удаленными терминалами в тестовом режиме. Поэтому в нем не предусмотрено шифрование данных и использование современных средств проверки подлинности. Протокол уязвим для множества сетевых атак, и не может использоваться в качестве средства управления сетевыми операционными системами. В настоящее время, для удалённого доступа к системе применяется сетевой протокол SSH (Secure SHell), при создании которого упор делался именно на вопросы безопасности. Относительная безопасность сессий Telnet осуществляется только в полностью контролируемой сетевой среде или с применением защиты на сетевом уровне (различные реализации VPN — виртуальных частных сетей). Тем не менее, TELNET по-прежнему применяется для управления специализированными сетевыми устройствами (Коммутаторами, роутерами и т.п.), а также для сетевой диагностики, выполнения отладки и изучения других текст-ориентированных (telnet-like) протоколов на основе транспорта TCP. Современный стандарт протокола Telnet описан в RFC 854.

В современных ОС семейства Windows, утилита telnet.exe по умолчанию, не устанавливается. Для ее установки нужно перейти в Панель управления — Программы и Компоненты – Включение или отключение компонентов Windows и установить галочку для Клиент Telnet. Или в командной строке, запущенной от имени администратора, выполнить команду:

C:\ pkgmgr /iu:"TelnetClient"

1. Описание команды TELNET.

1.1. Формат командной строки:

C:\ telnet [-a][-e Символ][-f Файл][-l Имя][-t Тип][Узел [Порт]]

1.2. Параметры командной строки.

  • -l Имя пользователя для входа в удаленную систему при условии, что поддерживается параметр TELNET ENVIRON.
  • -a Попытка автоматического входа в систему. Как и ключ -l, но использует текущее имя пользователя, под которым выполнен вход в систему.
  • -e Служебный символ переключения режима ввода в окне telnet-клиента.
  • -f Имя файла журнала на стороне клиента. В русскоязычной справке этот параметр неверно трактуется как Файл_входа — “Имя файла со стороны клиента для выполнения входа в систему”.
  • -t Тип telnet-терминала. Поддерживаются 4 типа терминалов: vt100, vt52, ansi и vtnt.
  • Узел Имя узла или IP-адрес удаленного компьютера, к которому выполняется подключение. Порт Номер порта или имя службы. Если номер не задан, то используется стандартный порт Telnet 23\TCP

1.3. При запуске без параметров, утилита переходит в режим ожидания ввода команд.

Добро пожаловать в программу-клиент Microsoft Telnet

Символ переключения режима: 'CTRL+]'

Microsoft Telnet>

При вводе символа ? или help отображается справочная информация. Команды могут быть сокращены.

Поддерживаемыми командами являются:

  • c — close — закрыть текущее подключение
  • d — display — отобразить параметры операции
  • o — open имя_узла [Порт] — подключиться к сайту (по умолчанию, Порт = 23)
  • q — quit — выйти из telnet
  • set — set — установить параметры («set ?» для вывода их списка)
  • sen — send — отправить строки на сервер
  • st — status — вывести сведения о текущем состоянии
  • u — unset — сбросить параметры («unset ?» для вывода их списка)
  • ? /h — help — вывести справку

Некоторые из команд позволяют получить подсказку по использовании, при вводе с символом вопроса:

1.4. Получить подсказку по использованию команды установки режимов:

Telnet> set ?

Пример отображаемой информации:

bsasdel - символ BackSpace будет отправляться как символ Delete

crlf - режим возврата каретки; приводит к отправке символов CR & LF

delasbs - символ Delete будет отправляться как символ BackSpace

escape x - где x - символ переключения в режим telnet-терминала и обратно

localecho - включение локального эха.

logfile x - где x - файл журнала. В русском переводе неверно трактуется как "Файл входа текущего клиента в систему"

logging - запись текущей сессии в журнал. В русском переводе неверно трактуется как "выполнение входа в систему"

mode x - где x=console - консольный режим, используемый для работы с оконными приложениями (редактор vi) и x=stream - потоковый режим, используемый для работы в командной строке.

ntlm - включение проверки подлинности NTLM.

term x - тип эмулируемого терминала. Где x - ansi, vt100, vt52, или vtnt.

Для получения подсказки по отмене установленных параметров используется команда:

Telnet> unset ?

Пример отображаемой информации:

bsasdel - символ BackSpace будет отправляться как символ Delete

crlf - режим перевода строки; приводит к отправке символа CR

delasbs - символ Delete будет отправляться как символ Backspace

escape - символ переключения в режим telnet-терминала и обратно не задан

localecho - отключение локального эха

logging - отключение записи журнала. В русскоязычной весии неверно трактуется как "отключение выполнения входа в систему"

ntlm - отключение проверки подлинности NTLM.

2. Примеры команд в интерактивном режиме.

2.1. Подключиться к серверу Telnet с IP-адресом 192.168.0.1:

Telnet> open 192.168.0.1

2.2. Подключиться к Telnet-серверу с именем zte-f660:

Telnet> o zte-f660

Используется сокращение команды open.

2.3. Использовать в качестве файла журнала C:\telnet.log:

Telnet> set logfile C:\telnet.log

2.4. Выполнять запись текущей сессии в файл журнала:

Telnet> set logging

2.5. Отобразить параметры текущей сессии:

Telnet> display

Пример отображаемой информации:

Символ переключения режима: 'CTRL+]'

Проверка подлинности NTLM - включена

Вывод локального эха - отключен

Режим новой строки - Символ ВВОД будет отправляться как CR & LF

Текущий режим: Потоковый

РЕЖИМ ТЕРМИНАЛА

Предпочитаемый тип терминала ANSI

3. Примеры использования команды Telnet.

На практике, утилита telnet.exe используется как средство диагностики и отладки для подключения не только к серверу Telnet на TCP порт 23, но и на любой другой TCP-порт, тем самым, позволяя взаимодействовать с любым приложением, управляемым командной строкой. Так, например, с использованием утилиты telnet можно подключиться к серверам, поддерживающим текстовый (telnet-like) ввод команд и данных — SMTP, POP3, IMAP и т.п. Кроме этого, утилиту можно использовать в качестве средства грубой проверки возможности подключения на любой TCP-порт (проверки слушается ли определенный порт TCP).

3.1. Подключиться к узлу 192.168.1.1 на порт 8080:

C:\ telnet 192.168.1.1 8080

В тех случаях, когда порт закрыт, утилита сообщит о невозможности подключения. Причем, для проверки доступности определенного порта даже необязательно, чтобы он слушался службой с поддержкой текстового ввода, как например, сервер VNC. Для отключения от удаленного сервера необходимо ввести символ переключения режима ( по умолчанию — CTRL+]).

Утилиту telnet.exe можно использовать , например, для обмена с почтовым сервером по протоколу POP3 (Post Office Protocol ver. 3). Данный протокол используется почтовыми клиентскими программами (Outlook, Outlook Express, The Bat и т.д.) для получения электронной почты, хранящейся в почтовом ящике пользователя. Это простейший протокол, в основе которого лежит обмен текстовыми сообщениями. С целью изучения взаимодействия почтового клиента с почтовым сервером, можно реализовать сеанс подключения с помощью TELNET.

Стандартно сервер POP3 ожидает входящие соединения по протоколу TCP на порт 110 («слушает» порт tcp/110).

3.2. Команда telnet для подключения к серверу, например pop.mail.ru:

C:\ telnet pop.mail.ru 110

Если сервер работоспособен, в окне telnet появится его приглашение:

+OK mPOP POP3 v1.1

3.3. Для доступа к почтовому ящику, нужно авторизоваться на данном почтовом сервере с помощью директив user имя пользователя и pass пароль:

user vasya@pochta.ru

После чего, сервер предложит ввести пароль:

+OK Password required for user vasya@pochta.ru

3.4. Нужно ввести пароль:

pass VasinPass

Сервер сообщит результат проверки пароля:

+OK vasya@pochta.ru maildrop has 10 messages (152527 octets)

Подобное сообщение означает, что авторизация выполнена успешно, и в почтовом ящике vasya@pochta.ru имеются 10 полученных писем, общим объемом 152527 байт (октетов).

3.5. Можно запросить список писем директивой list:

list

В ответ на это, сервер выдаст список и размеры писем в почтовом ящике:

+OK 10 messages (152527 octets)
1 48628       1-это порядковый номер, 48628 - размер
2 1829
3 2070
:

3.6. При необходимости можно посмотреть заголовки писем.

Для этого используется команда:

top порядковый номер, пробел, число строк из тела сообщения

Например:

top 2 0

В ответ на это, вы увидите заголовок письма, содержащий служебную информацию об отправителе, дате отправки, обратном адресе и некоторые другие данные:

Received: from [62.141.94.151] (HELO mx1.ks.pochta.ru) by node7-1.ks.pochta.ru with QIP.RU LMTP
for vasya@pochta.ru;
Fri, 08 Apr 2011 15:18:33 +0400
Received: from mx3.softkey.ru ([217.74.43.68])
: :

3,.7. Для приема писем используется директива:

retr порядковый номер

Например:

retr 2 - принять письмо с порядковым номером 2

3.8. Для удаления письма, используется директива:

dele порядковый номер 

Например, для удаления 2-го письма из списка, полученного директивой list:

dele 2

Если удаление прошло успешно, сервер выдаст сообщение:

+OK message 2 deleted

3.9. Иногда, команду TELNET можно использовать и для идентификации службы, слушающей указанный порт, поскольку многие из них при подключении отображают либо свой баннер, либо специфическую служебную информацию.

Например, приветствие FTP-сервера:

220-FileZilla Server version 0.9.43 beta

220-written by Tim Kosse (tim.kosse@filezilla-project.org)

220 Please visit http://sourceforge.net/projects/filezilla/

А так выглядит экран при подключении к серверу RealVNC:

RFB 003.008