Процедура авторизации на сервере OpenSSH

 
Источник:

 

МЕТОДЫ АВТОРИЗАЦИИ

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

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


The following 'method name' values are defined.

  • "publickey"             REQUIRED
  • "password"              OPTIONAL
  • "hostbased"             OPTIONAL
  • "none"                  NOT RECOMMENDED

 Особо стоит отметить метод "none". Этот метод означает что авторизацию проходить не надо (доступ разрешен без авторизации).

Метод "none" сервер должен возвращать клиенту как доступный только в том случае, если остальные методы отключены (в конфигурационном файле). Если же на сервере этот метод запрещен(разрешен хотябы один из трех других), то на запросы клиента пройти авторизацию по методу "none"  сервер всегда должен отвечать отказом, за исключением тех случаев, когда клиент запрашивает у сервера некоторую служебную информацию.
В качестве такой служебной инфоромации  могут быть данные о своем состоянии или о состоянии сервера SSH.Например: клиент может запросить у сервера список доступным методов авторизации - для обмена такими данными между клиентом и сервером авторизация не требуется.


ОБЩИЙ ПОДХОД К ПРОЦЕДУРЕ АВТОРИЗАЦИИ:


Соединение - кортеж <пользователь(login/pass) / комьютер(ip/mac)> - обмен пакетами между клиентом и сервером на транспортном(?) уровне.

Сессия - в пределах одного соединения может существовать несколько потоков обмена данными.

При установке нового соединения клиент 

  • (не обязательно) клиент запрашивает у сервера список возможных методов авторизации;
  • потом (среди прочей информации) передает на сервер информацию <пользователь(login/pass) / комьютер(ip/mac)> (по одному или сразу нескольким методам).

Далее сервер:

  1. для всех используемых (настроенных в системе, а не переданных клиентом!) методов авторизации сервер выполняет сравнение вновь приняты х данных от клиента с данными о соединении в своем "кеше" (для нового соединения там пусто, для повторной авторизации там уже что-то есть) и для каждого метода авторизации, для которого параметры клиента изменились, выставляет признак "отказ"
  2.  для каждого метода, у которогго стоит признак "отказ", по отдельности (параллельно) выполняется процедура авторизации, а именно:
    • Если используется метод "publickey" SSH-сервер считывает из системы ключи (пользователя и/или хоста, в зависимоти от настроек) и (если ключи не определены) выставляет признак "успех"; иначе - сопоставляет их согласно алгоритму с ключами, переданными от клиента.
    • Если используется метод "password" SSH-сервер передает в систему данные о пользователе из параметров клиента и получает оттуда результат - "успех/отказ"
    • Если используется метод "hostbased" SSH-сервер запрашивает у системы информацию о разрешенных/запрещенных хостах/адресах и - как результат  - "успех/отказ"
  3. Далее объединяет результаты "успех/отказ" всех методов (согласно мат.логике И/ИЛИ ???, настроенные в конфиг.файле) для вычисления результата: "ДОСТПУП_РАЗРЕШЕН" или "ДОСТПУ_ЗАПРЕЩЕН".
  4. Результат возвращается клиенту.

При повторном запросе авторизации от того же клитента в рамках того же соединения успешно авторизированные методы не проверяются при условии что от клиента для такого метода передаются те же самые параметры (данные).

При изменении данных <пользователь/компьютер> для измененых методов опять выполняется запрос к локальной системе  по соотвествующим методам авторизации и они опять сравниваются с данными, переданными от клиента.

На сервере есть "параметры тайм-аута авторизации" - это ограничения, указанные в конфиг.файле сервера (MaxAuthTries,MaxStartups,LoginGraceTime и другие). Процесс авторизация должен быть завершен ранее, чем наступят условия ограничений, заданные этими параметрами.

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

ВКЛЮЧЕНИЕ/ОТКЛЮЧЕНИЕ МЕТОДОВ АВТОРИЗАЦИИ

Метод "publickey"

  • PubkeyAuthentication yes|no (по умолчанию yes)
  • RSAAuthentication yes|no (по умолчанию yes)

Метод "password"

  • PasswordAuthentication
  • KerberosAuthentication
  • ChallengeResponseAuthentication
  • KbdInteractiveAuthentication
  • UsePAM

Метод "hostbased"

Метод "none"

  •  нет специальных опций
  • включается автоматически, если все опции для других методов отключены.

 

© ibuntu

Сделать бесплатный сайт с uCoz