Протокол прикладного уровня 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