При старте утилита auth_login пишет свое название:
S-Terra administrative console.
Далее запрашивается имя пользователя (пустое имя пользователя не допускается – в этом случае выдается повторный запрос):
login as:
Далее запрашивается пароль (пустой пароль допускается):
<name>'s password:
Производятся проверки, допускается ли обработка введенного пароля для данного пользователя (подробнее см. подраздел «Ограничение на количество попыток входа в систему»). На данном этапе может быть выдано сообщение:
% The maximum number of login attempts for user <name> has been reached.
You should wait substantial period of time before the next login attempt.
You can press Ctrl+C to cancel.
Сообщение может появиться в следующих случаях:
· Реальный пользователь (описанный в файле /opt/VPNagent/etc/auth_login.ini) ввел неправильный пароль, использовав в этот раз свою последнюю попытку.
· Реальный пользователь (описанный в файле /opt/VPNagent/etc/auth_login.ini) ранее исчерпал допустимые попытки входа в систему. В отличие от предыдущей ситуации, в данном случае auth_login игнорирует первую попытку ввода пароля. Даже если был введен правильный пароль, он не будет принят. После длительного ожидания пароль будет запрошен еще раз. В этот и последующие разы пароль будет реально проверяться.
· Попытка входа в систему неизвестным (не описанным в файле /opt/VPNagent/etc/auth_login.ini) пользователем.
· Поврежден (имеет некорректный формат) файл, в котором хранится количество неуспешных попыток входа в систему данного пользователя.
· Системная ошибка (не удалось прочитать или записать количество оставшихся попыток).
· Реальный пользователь (описанный в файле /opt/VPNagent/etc/auth_login.ini) заблокирован администратором.
Пользователь не может отличить эти ситуации. Однако в логе, доступном администратору, эти ситуации можно различить по коду ошибки в сообщении.
После этого выдается таймер с обратным отсчетом до следующей попытки ввода пароля:
Time before next attempt: 00:59:59
После завершения обратного отсчета снова выдается запрос на ввод пароля:
<name>'s password:
В этот момент пользователь может снова ввести пароль.
В случае ошибки (неправильный пароль; неизвестный пользователь и т.п.) снова выдается сообщение, и цикл ожидания следующей попытки ввода пароля повторяется заново.
Пользователь может прервать ожидание с помощью Ctrl+C. В этом случае повторная попытка входа данным пользователем снова приведет к появлению данного сообщения и запуска длительного ожидания следующей попытки ввода пароля.
Выйти из цикла длительного ожидания ввода пароля можно либо по вводу правильного пароля, либо прервав по Ctrl+C.
На время работы цикла длительного ожидания ввода пароля, отключается таймер неактивности.
Он включается только после ввода правильного пароля.
Производится проверка полученного имени и пароля.
При использовании криптобиблиотеки компании «С-Терра СиЭсПи» возможно отсутствие инициализированного ДСЧ (например, при первом входе в систему). В этом случае:
На консоль выдается сообщение:
RNG initialization is required. Press Enter to continue...
Когда пользователь нажимает на Enter, запускается программа rnd_mgr. Происходит инициализация ДСЧ:
Если присутствует соответствующая аппаратная поддержка (например «Соболь») или если присутствует внешняя гамма, инициализация проходит неинтерактивно.
В противном случае вызывается интерактивная инициализация.
После успешной инициализации на консоль выдается сообщение от утилиты:
Successfully initialized RNG.
Если проверка не пройдена:
Выполняется остановка исполнения на промежуток времени от 1 до 3 секунд.
На консоль выдается сообщение об ошибке:
% Access denied
Если у пользователя еще остались допустимые попытки входа в систему, выдается сообщение об их количестве:
% You have <n> attempt(s) left
где <n> – число оставшихся попыток (от 1 до <login_attempts_count> – 1; где <login_attempts_count> – параметр из файла /opt/VPNagent/etc/auth_login.ini).
Если была использована последняя попытка входа в систему, то включается режим длительного ожидания ввода пароля.
Только для пользователя, использующего однофакторную аутентификацию:
Проверяется, не устарел ли текущий пароль.
В случае, если пароль устарел, выдается сообщение вида:
Your password has expired and must be changed
Далее запрашивается новый пароль:
New user password:
Если в этот момент нажать на Ctrl+C, будет выдано сообщение о необходимости смены пароля для продолжения работы (подробнее см. ниже) и снова будет запрошен новый пароль.
Такая логика работает только для первого запроса нового пароля. При повторных запросах нового пароля нажатие на Ctrl+C приводит к выходу из программы.
Если при запросе нового пароля ввести старый пароль, будет выдано сообщение об ошибке:
% You can't reuse old password
После этого будет выдано сообщение о необходимости смены пароля для продолжения работы (подробнее см. ниже) и снова будет запрошен новый пароль.
Далее запрашивается подтверждение нового пароля:
Re-type new password:
Если ввести несовпадающий пароль, будет выдано сообщение об ошибке:
% Passwords do not match
После этого будет выдано сообщение о необходимости смены пароля для продолжения работы (подробнее см. ниже) и снова будет запрошен новый пароль.
В случае ошибки оператора (введен пароль, совпадающий со старым; введен несовпадающий пароль при подтверждении), а также при попытке прерывания установки пароля с помощью Ctrl+C (но только при первом запросе) выдается сообщение о необходимости смены пароля для продолжения работы:
You must change your password to proceed.
You can press Ctrl+C to exit without password change.
После этого снова будет запрошен новый пароль.
После этого сообщения нажатие на Ctrl+C приведет к выходу из программы.
Устаревание пароля детектируется по файлу:
/var/cspvpn/.auth_login_password_timestamp_{9D5D1236-99D0-435C-A076-EEFF200A32FC}.<имя_пользователя>
В файле записано время выставления пароля в виде epoch (количество секунд, прошедших с полуночи по Гринвичу 1 января 1970 года). Формат файла – 64-битное целое число (длина файла – 8 байт). Сетевой порядок (от старшего байта к младшему).
Существует специальное значение: ff 00 00 00 00 00 00 01, обозначающее, что пароль никогда не должен устаревать.
Данное значение зарезервировано для предустановленного пользователя administrator.
С помощью стандартных команд консоли разграничения доступа, предназначенных для работы с пользователями (создание, смена пароля) данное значение задать нельзя.
Критерии, по которым пароль считается устаревшим:
Прошло больше <passwd_lifetime> дней с момента времени, записанного в файле; где <passwd_lifetime> – параметр из файла /opt/VPNagent/etc/auth_login.ini.
Текущее время меньше, чем записано в файле (часы были переведены назад).
Файл отсутствует.
Зафиксирована ошибка.
В случае успешной аутентификации количество неуспешных попыток входа данного пользователя в систему обнуляется, пользователь получает доступ к определенному набору команд. Пользователю выдается приглашение командного интерпретатора (длина приглашения не превышает 29 символов, при необходимости оно может быть урезано):
username@hostname]
где
username – имя пользователя
hostname] – имя хоста, на котором работает программа.