Опубликован: 26.01.2005 | Уровень: специалист | Доступ: платный | ВУЗ: Московский государственный университет имени М.В.Ломоносова
Лекция 10:

Безопасное сетевое взаимодействие (часть 3)

Интерактивные сессии

Сессией является удаленное выполнение программы. Программа может быть shell, приложением, командой системы или некоторой встроенной подсистемой. Она может иметь или не иметь tty, и может включать или не включать перенаправление Х11. Одновременно могут быть активны несколько сессий.

Открытие сессии

Сессия начинается с посылки следующего сообщения:

SSH_MSG_CHANNEL_OPEN
"session"
канал отправителя
начальный размер окна
максимальный размер пакета

Реализации клиента должны отвергать любые запросы открытия канала сессии, затрудняя атаки на клиента со стороны неизвестного сервера.

Запрос псевдо-терминала

Псевдо-терминал может быть открыт для сессии после посылки следующего сообщения:

SSH_MSG_CHANNEL_REQUEST
канал получателя
"pty-req"
ждать ответа
значение переменной окружения TERM (т.е. vt100)
ширина терминала, символы (т.е. 80)
высота терминала, строки (т.е. 24)
ширина терминала, пикселы (т.е. 480)
высота терминала, пикселы (т.е. 640)
режимы кодировки терминала

Нулевая величина параметров должна игнорироваться. Значения символ/ строка перекрывает величины пикселов, если они не равны нулю.

Запросы на открытие pty клиент должен игнорировать.

Передача переменных окружения

Переменные окружения могут быть переданы в shell или команду, которые начинают выполняться. Обычно каждая система имеет предконфигурационные установки допустимых переменных. Так как неуправляемая установка переменных окружения может быть очень опасна, рекомендуется, чтобы реализации позволяли устанавливать только те переменные, чьи имена явно указаны в конфигурации.

SSH_MSG_CHANNEL_REQUEST
"env"
ждать ответа
имя переменной
значение переменной
Начало выполнения shell или команды

После того, как сессия установлена, на удаленном конце начинает выполняться программа. Программа может быть shell, прикладной программой или подсистемой.

SSH_MSG_CHANNEL_REQUEST
канал получателя
"shell"
ждать ответа

Данное сообщение запрашивает shell, определенный по умолчанию, который стартует на другом конце.

SSH_MSG_CHANNEL_REQUEST
канал получателя
"exec"
ждать ответа
команда

Данное сообщение требует, чтобы сервер начал выполнение данной команды. Строка команды может содержать путь.

SSH_MSG_CHANNEL_REQUEST
канал получателя
"subsystem"
ждать ответа
имя подсистемы

Последняя форма выполняет указанную подсистему. Считается, что это должно включать обычный механизм передачи файлов и некоторые другие возможности.

Сервер не должен прерывать выполнение стека протокола после старта shell или программы. Весь ввод и вывод должны быть перенаправлены в канал, т.е. в зашифрованный туннель.

Передача данных сессии

Передача данных сессии выполняется с использованием пакетов SSH_MSG_CHANNEL_DATA и SSH_MSG_CHANNEL_EXTENDED_DATA и механизма окна. Тип расширенных данных SSH_MSG_CHANNEL_DATA_STDERR определен для stderr-данных.

Сообщение об изменении размеров окна терминала

Когда изменяется размер окна терминала на стороне клиента, он может послать сообщение другой стороне о новых размерах:

SSH_MSG_CHANNEL_REQUEST
канал получателя
"window-change"
FALSE
ширина терминала, столбцы
высота терминала, строки
ширина терминала, пикселы
высота терминала, пикселы

На данное сообщение никакого ответа не требуется.

Управление локальным потоком

Во многих системах существует возможность определить, использует ли псевдо-терминал управление потоком ^S ^Q. ( ^S – останавливает вывод на экран; ^Q – перезапускает вывод на экран). Когда управление потоком разрешено, часто требуется поддерживать управление потоком на стороне клиента для быстрых ответов на запросы пользователя. Первоначально за управление потоком отвечает сервер.

Данное сообщение используется сервером для информирования клиента о том, может или не может он выполнять управление потоком, т.е. обработку ^S ^Q ). Если client can do равно TRUE, клиенту разрешается выполнять управление потоком, с использованием ^S ^Q. Клиент может игнорировать это сообщение.

SSH_MSG_CHANNEL_REQUEST
канал получателя
"xon-xoff"
FALSE
client can do

На это сообщение не посылается ответа.

Сигналы

Сигналы могут быть доставлены удаленному процессу или сервису с помощью следующего сообщения. Некоторые системы могут не поддерживать сигналы, в этом случае они должны игнорировать данное сообщение.

SSH_MSG_CHANNEL_REQUEST
канал получателя
"signal"
FALSE
номер сигнала
Возвращаемый статус выхода

Когда команда, выполняемая на другом конце, завершается, может быть послано следующее сообщение для возврата статуса выхода команды. Возвращение статуса рекомендуется. На данное сообщение никакого подтверждения не посылается. После этого сообщения канал должен быть закрыт с SSH_MSG_CHANNEL_CLOSE.

Клиент может игнорировать данное сообщение.

SSH_MSG_CHANNEL_CLOSE
канал получателя
"exit-status"
FALSE
статус выхода

Выполнение удаленной команды можно также прервать с помощью сигнала. Это можно сделать с помощью следующего сообщения. Нулевой статус выхода обычно означает, что команда выполнена успешно.

SSH_MSG_CHANNEL_REQUEST
канал получателя
"exit-signal"
FALSE
номер сигнала
core dumped
сообщение об ошибке (ISO-10646 UTF-8)
тег языка

"Сообщение об ошибке" содержит дополнительное объяснение ошибки. Это сообщение может состоять из нескольких строк. Клиентское ПО может показать данное сообщение пользователю.

Илья Сидоркин
Илья Сидоркин

Добрый день! Подскажите пожалуйста как и когда получить диплом, после сдичи и оплаты?????

Наталья Шульга
Наталья Шульга

Курс "информационная безопасность" .

Можно ли на него записаться на ПЕРЕПОДГОТОВКУ по данному курсу? Выдается ли диплом в бумажном варианте и высылается ли он по почте?

Ярослав Ханько
Ярослав Ханько
Украина
Jacob Liberman
Jacob Liberman
Нидерланды, Amsterdam