Лекция 4 - Служба Telnet. Протокол Telnet. Служба SSH

advertisement
Лекция 4 - Служба Telnet. Протокол Telnet. Служба SSH.
Протокол SSH.
Литература









Удаленный доступ (Telnet) - Семенов Ю.А.
Лабиринт Internet. Павел Храмцов, Электронинформ, 1996.
Администрирование сети и сервисов InterNet. Учебное пособие, П.Б. Храмцов,
1997.
TELNET
Telnet и Rlogin: удаленный терминал
Документация по OpenSSH
Описание протокола SSH
Протокол SSH
SSH и OpenSSH: принципы работы, установка и настройка
4.1 Служба Telnet.
Служба Telnet - предназначена для эмуляции удаленного терминала.
С помощью Telnet можно обратиться к любому порту и посмотреть, что он отвечает (с
некоторыми (например, с ftp) даже пообщаться).
Служба Telnet состоит из:



telnet - интерфейса пользователя;
telnetd - процесса (серверная часть);
TELNET - протокола.
Взаимодействие клиент и сервера по протоколу Telnet.
4.2 Протокол Telnet
Первый стандарт - RFC0158 (Telnet Protocol: A Proposed Document T.C. O'Sullivan May-191971).
Последняя версия - RFC0855 (Telnet Option Specifications J. Postel, J.K. Reynolds May-011983).
NVT (network virtual terminal) - это воображаемое устройство, находящееся на обоих
концах соединения, у клиента и сервера, с помощью которого устанавливается
соответствие между их реальными терминалами.
Порт по умолчанию 23.
4.2.1 Режимы функционирования Telnet клиентов и серверов
Существуют четыре режима, в которых функционирует большинство Telnet клиентов и
серверов:




Полудуплексный.
NVT по умолчанию это полудуплексное устройство, которое требует исполнения
команды GO AHEAD (GA) от сервера, перед тем как будет принят ввод от
пользователя. Ввод пользователя отображается локальным эхом от NVT
клавиатуры на NVT принтер, таким образом, от клиента к серверу посылаются
только полные строки.
Символ за один раз. (самый распространенный)
Каждый вводимый символ отправляется серверу отдельно от других.
Сервер отражает эхом (опция ECHO - RFC 857) большинство символов и эти
символы отражаются на экране клиента (это увеличивает трафик).
Опции включения режима (обязательно обе):
SUPPRESS GO AHEAD (RFC 858).
WILL ECHO.
Клиент посылает DO SUPPRESS GO AHEAD (требуя сервера включить эту
опцию), или сервер посылает WILL SUPPRESS GO AHEAD клиенту (спрашивая о
возможности включить для себя).
Затем сервер посылает WILL ECHO, спрашивая клиента о возможности включить
отражение эхом.
Строка за один раз.
Если какая-либо опций (ECHO и SUPPRESS GO AHEAD) не включена, Telnet
находится в режиме строка за один раз.
Линейный режим (linemode).
В данном случае этот термин означает реальную опцию linemode (RFC 1184). Эта
опция обсуждается клиентом и сервером и корректирует все недостатки в режиме
строка за один раз.
4.2.2 Примеры
4.2.2.1 Пример - режим символ за один раз
Подключимся к серверу Linux.
[root@Linux /]# telnet //Запуск программы TELNET
telnet> toggle options //Включение вывода согласования (по умолчанию он отключен)
Will show option processing. //Подтверждение включения опции
telnet> open 194.85.241.18 //Соединится с сервером 194.85.241.18
Trying 194.85.241.18... //Ожидание соединения
Connected to 194.85.241.18. //Соединение состоялось
Escape character is '^]'. //Переход в режим управления клиентом
1) SENT DO SUPPRESS GO AHEAD //Клиент предлагает включить опцию SUPPRESS
GO AHEAD. Сервер соглашается в 14.
2) SENT WILL TERMINAL TYPE //Клиент хочет отправить свой тип терминала.
Сервер соглашается в 9.
3) SENT WILL NAWS //Клиент предлагает "обсуждение размера окна". Если сервер
согласен (15), клиент посылает (16).
4) SENT WILL TSPEED //Клиент предлагает "обсуждение скорости терминала". Если
сервер согласен (10), клиент посылает (21).
5) SENT WILL LFLOW //Клиент предлагает включить управление потоком данных.
Сервер соглашается в 17.
6) SENT WILL LINEMODE //Клиент предлагает включить реальный линейный режим.
Сервер отказывается в 18.
7) SENT WILL NEW-ENVIRON //Клиент предлагает отправить переменные окружения
серверу. Сервер соглашается в 13.
8) SENT DO STATUS //Клиент просит сервер включить опцию о текущем состоянии
опций сервера. Сервер соглашается в 19.
9) RCVD DO TERMINAL TYPE //Сервер согласен получить тип терминала. Просит
прислать в 24, получает в 25.
10) RCVD DO TSPEED //Сервер согласен получить скорость терминала. Просит
прислать в 20, получает в 21.
11) RCVD DO XDISPLOC //Сервер согласен получить тип терминала. Просит прислать
в 24, получает в 25.
12) SENT WONT XDISPLOC
13) RCVD DO NEW-ENVIRON //Сервер согласен получить переменные окружения.
Просит прислать в 22, получает в 23.
14) RCVD WILL SUPPRESS GO AHEAD //Сервер согласен включить опцию SUPPRESS
GO AHEAD.
15) RCVD DO NAWS //Сервер согласен получить размера окна. Получает в 16.
16) SENT IAC SB NAWS 0 80 (80) 0 24 (24) //Клиент посылает размера окна (80х24).
17) RCVD DO LFLOW //Сервер согласен включить управление потоком данных.
18) RCVD DONT LINEMODE //Сервер не согласен включить реальный линейный режим.
19) RCVD WILL STATUS //Сервер согласен включить опцию о текущем состоянии своих
опций.
20) RCVD IAC SB TERMINAL-SPEED SEND //Сервер просит прислать скорость
терминала.
21) SENT IAC SB TERMINAL-SPEED IS 38400,38400 //Клиент присылает скорость
терминала.
22) RCVD IAC SB NEW-ENVIRON SEND //Сервер просит прислать переменные
окружения.
23) SENT IAC SB NEW-ENVIRON IS //Клиент присылает переменные окружения.
24) RCVD IAC SB TERMINAL-TYPE SEND //Сервер просит прислать тип терминала.
25) SENT IAC SB TERMINAL-TYPE IS "XTERM" //Клиент присылает тип терминала.
26) RCVD DO ECHO //Сервер просит клиента осуществлять отображение эхом.
27) SENT WONT ECHO //Клиент просит выключить отображение эхом.
28) RCVD WILL ECHO //Сервер просит клиента включить отображение эхом для себя.
29) SENT DO ECHO //Клиент включает отображение эхом.
//Согласование закончено
Red Hat Linux release 9 (Shrike) //Приглашение сервера
Kernel 2.4.20-8smp on an i686 //Приглашение сервера
login: name //Сервер спрашивает имя пользователя
Password: //Сервер спрашивает пароль пользователя
Last login: Thu Sep 11 16:19:02 from 194.85.241.11 //Вход в систему
[name@proxy name]$ //командная строка linux
Листинг протокола 1
Теперь проделаем тоже самое, но с другим сервером (ДИОНИС). Можете найти различия.
[root@proxy]# telnet
telnet> toggle options
Will show option processing.
telnet> open 194.85.241.69
Trying 194.85.241.69...
Connected to 194.85.241.69.
Escape character is '^]'.
SENT DO SUPPRESS GO AHEAD
SENT WILL TERMINAL TYPE
SENT WILL NAWS
SENT WILL TSPEED
SENT WILL LFLOW
SENT WILL LINEMODE
SENT WILL NEW-ENVIRON
SENT DO STATUS
RCVD WILL BINARY
SENT DO BINARY
RCVD DO BINARY
SENT WILL BINARY
RCVD WILL ECHO
SENT DO ECHO
RCVD WILL SUPPRESS GO AHEAD
RCVD DONT TERMINAL TYPE
RCVD DONT NAWS
RCVD DONT TSPEED
RCVD DONT LFLOW
RCVD DONT LINEMODE
RCVD DONT NEW-ENVIRON
RCVD WONT STATUS
RCVD WILL BINARY
RCVD DO BINARY
RCVD WILL ECHO
KAZAN SCIENTIFIC CENTRE
ACADEMI OF SCIENCE OF RUSSIA
WELCOME TO DIONIS !
ENTER YOUR NAME => name
PASSWORD =>
LANGUAGE =>
System DIONIS 5.00. (C) "Factor" Ltd.
Host dionis.kfti.knc.ru
28: name - logon: 12:25am Wed 09/17/03
Last logoff: 11:51am Wed 09/17/03
To get help enter "?" or "??" or "? <command>".
To return one level up enter "-".
You have new messages: 1
Would You read them? (Yes, No, Messages, NOTifications, Get) => //командная строка
ДИОНИС
Листинг протокола 2
Теперь проделаем тоже самое, но с другим сервером (cisco). Можете найти различия.
[root@KFTI-Linux home]# telnet
telnet> toggle options
Will show option processing.
telnet> open 194.85.241.7
Trying 194.85.241.7...
Connected to 194.85.241.7.
Escape character is '^]'.
SENT DO SUPPRESS GO AHEAD
SENT WILL TERMINAL TYPE
SENT WILL NAWS
SENT WILL TSPEED
SENT WILL LFLOW
SENT WILL LINEMODE
SENT WILL NEW-ENVIRON
SENT DO STATUS
RCVD WILL ECHO
SENT DO ECHO
RCVD WILL SUPPRESS GO AHEAD
RCVD DO TERMINAL TYPE
RCVD DO NAWS
SENT IAC SB NAWS 0 100 (100) 0 39 (39)
RCVD IAC SB TERMINAL-TYPE SEND
SENT IAC SB TERMINAL-TYPE IS "XTERM"
RCVD DONT TSPEED
RCVD DONT LFLOW
RCVD DONT LINEMODE
RCVD DONT NEW-ENVIRON
RCVD WONT STATUS
User Access Verification
Password:
Cisco2514-KFTI> //командная строка cisco
Листинг протокола 3
4.2.3 Некоторые команды
Имя
Код (десятичный)
Описание
EOF
236
конец файла
SUSP
237
подавить текущий процесс (управление
задачами)
ABORT
238
прекратить процесс
EOR
239
конец записи
SE
240
конец подопции
NOP
241
пустая операция
DM
242
маркер данных
BRK
243
прерывание
IP
244
прервать процесс
AO
245
прекратить вывод
AYT
246
вы здесь?
EC
247
escape символ
EL
248
стереть строку
GA
249
идем дальше
SB
250
начало подопции
WILL
251
обсуждение опции: Отправитель хочет
включить эту опцию для себя.
WONT
252
обсуждение опции: Отправитель хочет
выключить эту опцию для себя.
DO
253
обсуждение опции: Отправитель хочет, чтобы
получатель включил эту опцию.
DONT
254
обсуждение опции: Отправитель хочет, чтобы
получатель выключил опцию.
IAC
255
байт данных 255
4.4 Программы клиенты Telnet
TELNET
Командная строка клиента Telnet принимает следующие команды (для Windows).
open Синтаксис: open имя_узла номер_порта. Используется для установки соединения с
узлом по протоколу Telnet.
close Команда close используется для закрытия существующего соединения по протоколу
Telnet.
display Команда display используется для просмотра текущих параметров клиента Telnet.
Команда display выводит список текущих рабочих параметров. При работе в режиме
сеанса Telnet (после подключения к серверу Telnet) для изменения параметров следует
нажать клавиши CTRL+]. Будет выполнен выход из сеанса Telnet. (Для возвращения в
сеанс Telnet нажмите клавишу ENTER.) Доступны следующие рабочие параметры:






WILL AUTH (проверка подлинности NTLM)
WONT AUTH
WILL TERM TYPE
WONT TERM TYPE
LOCALECHO off
LOCALECHO on
quit Команда quit используется для выхода из Telnet.
set Команда set используется для задания типа терминала для подключения, включения
режима локального отображения команд, задания проверки подлинности NTLM, задания
управляющего символа и настройки ведения журнала.





SET NTLM — включение NTLM.
При использовании проверки подлинности NTLM во время подключения с
удаленного компьютера пользователю не требуется вводить имя и пароль для
входа в систему.
SET LOCALECHO — включение режима локального отображения команд.
SET TERM {ANSI|VT100|VT52|VTNT} — задание указанного типа терминала.
Тип терминала VT100 используется при выполнении обычных приложений
командной строки. Тип терминала VTNT используется при выполнении
расширенных приложений командной строки, таких как edit.
ESCAPE символ — задание последовательности клавиш для переключения из
режима сеанса в режим команд. Например, чтобы задать в качестве управляющего
символа CTRL+P, введите set escape, нажмите клавиши CTRL+P, а затем —
клавишу ENTER.
LOGFILE ИмяФайла — задание файла журнала активности Telnet. Файл журнала
должен располагаться на локальном компьютере.
Запись в журнал начинается автоматически после выбора этого параметра.
LOGGING — включение ведения журнала.
Если файл журнала не задан, выводится сообщение об ошибке.
unset Команда unset используется для отключения режима локального отображения
команд или для включения режима проверки подлинности с запросом имени пользователя
и пароля.


UNSET NLM — отключение NLM.
UNSET LOCALECHO — отключение режима локального отображения команд.
status Команда status позволяет определить, подключен ли клиент Telnet.
CTRL+] Сочетание клавиш CTRL+] используется для перехода в командную строку
Telnet из подключенного сеанса.
enter Команда enter из командной строки используется для перехода в подключенный
сеанс (если таковой существует).
? или help Вывод справочных сведений.
4.5 Служба SSH
SSH (Secure Shell) - обеспечивает безопасное соединение, путем шифрования
передаваемой информации.
SSH поддерживает возможности работы с telnet; безопасную работу с протоколом X11
(графический терминал); c файлами по протоколу sftp.
4.6 Протокол SSH
Порт по умолчанию 22.
Включает в себя протоколы трех уровней:



протокол транспортного уровня - обеспечивает взаимодействие алгоритма и
обмен ключами. Обмен ключами позволяет аутентифицировать сервер и создать
криптографически защищённое соединение: обеспечивая целостность,
конфиденциальность и дополнительное сжатие.
протокол аутентификации - этот уровень предоставляет несколько механизмов
для аутентификации пользователя: здесь может использоваться традиционная
парольная аутентификация, аутентификация, основанная на публичном ключе и
т.д.
протокол соединения - создает безопасный (шифруемый) канал, представляя его в
виде нескольких логических каналов, которые используются для различных целей
(различных видов служб).
Номера сообщений ssh и их назначение
Интервал
номеров
Тип сообщений
Протокол
1-19
Транспортный уровень (общая часть)
Транспортный
20-29
Переговоры клиента и сервера о выборе алгоритма
30-49
Специфические для метода обмена ключами
50-59
Протокол аутентификации (общая часть)
60-79
Протокол аутентификации (часть, специфическая для
метода аутентификации)
80-89
Протокол соединения (общая часть)
90-127
Cообщения, относящиеся к каналам
90-128
Резерв (для протоколов клиентов)
192-255
Локальные расширения
Аутентификации
Cоединения
4.7 Программы клиенты SSH
Встроенные клиенты есть не у всех операционных систем, у UNIX - есть, у Windows - нет.
Под Windows можно поставить SSH клиента - Putty, (официальный сервер
http://www.chiark.greenend.org.uk/~sgtatham/putty/ ) .
Принцип работы такой же, как с telnet.
Download