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

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

Протокол аутентификации пользователя

Обзор протокола аутентификации

Протокол аутентификации пользователя выполняется поверх протокола SSH транспортного уровня. Данный протокол предполагает, что лежащий ниже протокол обеспечивает целостность и конфиденциальность.

Имя сервиса для данного протокола – ssh-userauth.

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

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

Аутентификационные методы идентифицируются по имени. Метод none зарезервирован, но не должен быть в списке поддерживаемых. Тем не менее, этот метод может быть послан клиентом. Сервер должен всегда отвергать этот запрос, если не допускает отсутствия аутентификации; только в данном случае сервер должен принимать его. Основная цель посылки такого запроса клиентом состоит в том, чтобы получить от сервера список поддерживаемых методов аутентификации.

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

Запросы на аутентификацию

Все запросы на аутентификацию должны использовать строго фиксированный формат сообщений. Определены только первые несколько полей; оставшиеся поля зависят от метода аутентификации.

SSH_MSG_USERAUTH_REQUEST
имя пользователя (UTF-8 кодировка)
имя сервиса (в US-ASCII)
имя метода (в US-ASCII)
остаток пакета определяется методом аутентификации

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

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

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

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

Ответы на запросы аутентификации

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

SSH_MSG_USERAUTH_FAILURE
аутентификации, которые могут быть продолжены
частичный успех

"Аутентификации, которые могут быть продолжены" – это разделенный запятыми список имен методов аутентификации, с использованием которых можно продолжать аутентификационный диалог.

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

Уже успешно завершенные аутентификации не должны включаться в список, если они по какой-либо причине не должны выполняться снова.

"Частичный успех" должен быть true, если запрос на аутентификацию, на который дается данный ответ, был успешным. Он должен быть false, если запрос не был успешно обработан.

Когда сервер принимает аутентификацию, он должен ответить:

SSH_MSG_USERAUTH_SUCCESS

Заметим, что это сообщение не посылается после каждого шага, если аутентификация осуществляется последовательно несколькими методами.

Клиент может послать несколько аутентификационных запросов без ожидания ответов на предыдущие запросы. Сервер должен подтвердить все непрошедшие запросы сообщением SSH_MSG_USERAUTH_FAILURE. Однако SSH_MSG_USERAUTH_SUCCESS должно посылаться только один раз, и после того, как оно послано, дальнейшие запросы на аутентификацию должны игнорироваться.

Запрос на аутентификацию "none"

Клиент может запросить список сервисов, которые могут выполняться после использования метода аутентификации none.

Если аутентификация не является необходимой для пользователя, сервер должен вернуть SSH_MSG_USERAUTH_SUCCESS. В противном случае сервер должен вернуть SSH_MSG_USERAUTH_FAILURE и может возвратить список методов аутентификации, с использованием которых можно продолжить аутентификацию.

Но данный метод в списке поддерживаемых сервером методов не должен стоять по умолчанию.

Завершение аутентификации пользователя

Аутентификация завершается, когда сервер отвечает сообщением SSH_MSG_USERAUTH_SUCCESS. Все относящиеся к аутентификации сообщения, полученные после посылки данного сообщения, должны молча игнорироваться.

После посылки SSH_MSG_USERAUTH_SUCCESS сервер запускает запрошенный сервис.

Баннерные сообщения

В некоторых случаях может допускаться посылка предупреждающего (warning) сообщения перед аутентификацией. Многие системы UNIX могут показывать текст из /etc/issue или использовать tcp wrappers или аналогичные программы для показа баннеров перед попыткой входа пользователя.

Сервер SSH может послать сообщение SSH_MSG_USERAUTH_BANNER в любое время перед успешным завершением аутентификации. Данное сообщение содержит текст, который будет показан пользователю. Формат сообщения следующий:

SSH_MSG_USERAUTH_BANNER
сообщение
language tag

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

Если строка сообщения показывается, управляющие символы должны фильтроваться во избежание атак посылки управляющих терминальных символов.

Евгений Виноградов
Евгений Виноградов

Прошел экстерном экзамен по курсу перепордготовки "Информационная безопасность". Хочу получить диплом, но не вижу где оплатить? Ну и соответственно , как с получением бумажного документа?

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

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

Татьяна Крыжановская
Татьяна Крыжановская
Украина, Одесса
Valeriya Gubareva
Valeriya Gubareva
Россия