Уровень Интернет-безопасности при работе с разными типами информационных систем тесно связан с используемой системой аутентификации пользователя, которая может иметь от одного до нескольких уровней защиты. Чем больше уровней, тем надёжнее защита. Рассмотрим принципы организации двухуровневой системы аутентификации пользователя для защиты рабочей станции под управлением ОС Ubuntu на примере использования хорошо известного приложения Google Authenticator.
Простые системы аутентификации
Системы аутентификации пользователя устанавливаются практически для всех коммерческих и некоммерческих программных продуктов и сервисов, среди которых можно выделить следующие:
- Системы управления базами данных (СУБД);
- Почтовые сервисы;
- Банкинг;
- Операционные системы (ОС);
- Сетевые сервисы и оборудование.
Ещё недавно большинство из указанного ПО и сервисов поддерживали лишь одноуровневую защиту учётных данных, в которой для идентификации пользователя используется один пароль доступа, который хранится в базе. Если вводимый при входе пароль совпадает с ним, происходит авторизация пользователя, и он получает доступ к ресурсам, уровень которого определён в полях учётной записи. Если же совпадения не происходит – в доступе отказывается.
Уже на первых порах существования таких систем, они стали объектами взлома и, поэтому, стало ясно, что одного пароля недостаточно для обеспечения должного уровня безопасности. И это несмотря на то, что изначально здесь применялись различные алгоритмы шифрования учётных данных, такие как SHA-256, SHA-512 и другие.
Суть проблемы заключается в том, что простые системы аутентификации используют лишь один фактор безопасности или токен, которым является пароль доступа, который рано или поздно будет взломан, это только вопрос времени. Лишь при добавлении ещё одного уровня защиты или токена можно обезопасить систему от взлома.
Системы с повышенным уровнем надёжности
К таким системам можно отнести все те, которые имеют более одного токена безопасности. Дополнительный уровень защиты можно добавлять к уже готовому программному продукту или сервису, развёртывая модули аутентификации от сторонних производителей и подключая независимый канал связи для передачи токена, к примеру, канал GSM мобильного телефона.
Сегодня такие системы разрабатываются на базе открытого ПО – OATH (Open Authentication) и имеют в своём составе средства управления в виде командной строки, подключаемые библиотеки функций и модули аутентификации PAM (Pluggable Authentication Module).
Наиболее известные из них – Google Authenticator и Yubico Authenticator Desktop. Принципы их работы сходны между собой, отличия заключаются лишь в типах программных платформ, для которых они предназначены, а также в используемых алгоритмах формирования токенов безопасности.
Процесс формирования токенов жёстко специфицирован соответствующей спецификацией RFC. Наиболее часто используются математические алгоритмы с формированием ряда случайных чисел – HOTP-алгоритм, а также временные алгоритмы, формирующие последовательности символов через заданные промежутки времени – TOTP-алгоритм. Как правило, при развёртывании указанного ПО всегда можно указать предпочтительный алгоритм формирования токена.
Google Authenticator является одной из наиболее популярных систем такого рода, поскольку её можно подключить практически к любой платформе или сервису. С её помощью, к примеру, можно защитить от взлома персональный почтовый ящик на почтовом сервисе или учётную запись для любой Linux-совместимой ОС.
Произведём развёртывание Google Authenticator для защиты рабочей станции под управлением ОС Ubuntu.
Конфигурирование Google Authenticator для ОС Ubuntu
Подключение Google Authenticator состоит в поэтапном выполнении нескольких задач.
- Установка приложения Google Authenticator на мобильное устройство.
- Настройка параметров конфигурационных файлов среды окружения Ubuntu.
- Установка PAM-модуля, который предоставляется разработчиками ПО.
- Подключение учётной записи.
Установка приложения Google Authenticator на мобильное устройство
Приложение доступно для двух платформ – Android и iOS. Для его установки достаточно перейти по одной из ссылок, в зависимости от типа ОС, поддерживаемой мобильным устройством.
Для ОС Android нужно перейти по этой ссылке.
Для ОС iOS нужный установщик находится здесь.
Ниже показан вид экрана при переходе по первой из приведённых ссылок.
Здесь достаточно кликнуть по кнопке Установить, чтобы тут же начался процесс развёртывания приложения на мобильном устройстве под управлением ОС Android, который будет сопровождаться поочерёдным появлением окон с простыми сообщениями, поясняющими правила применения приложения и его работу.
Тексты выводимых сообщений видны на изображении выше. Разработчики старались упростить понимание задачи и, поэтому, привели соответствующие примеры. По завершении установки будет выдано соответствующее сообщение.
Основная задача приложения – формирование шестизначного кода для ввода во входной панели подключенной информационной системы.
Настройка параметров конфигурационных файлов Ubuntu
Необходимо будет внести изменения в два системных файла протокола ssh – sshd и sshd_config.
Введём в окне терминала:
$ sudo nano /etc/pam.d/sshd
Команда открыла файл sshd в редакторе кода nano, как показано выше. Сюда необходимо добавить строку кода для возможности автоматического подключения PAM-модуля Google Authenticator. Вот эта строка:
auth required pam_google_authenticator.so nullok
Как можно убедиться, мы ввели её в конец файла. Сохраним внесённые изменения и выйдем из редактора.
Теперь мы таким же образом откроем файл sshd_config для внесения нужных изменений:
$ sudo nano /etc/ssh/sshd_config
Здесь мы должны включить поддержку многофакторной аутентификации пользователя для нашей системы. Для этого достаточно поставить подтверждающее значение yes для следующего параметра:
ChallengeResponseAuthentication
Из содержимого окна редактора видно, что мы указали нужное значение для указанного параметра.
Сохраним изменения и вернёмся в командную строку.
Установка модуля аутентификации
Как уже говорилось выше, все системы аутентификации данного класса имеют свои PAM-модули, которые необходимо подключить к информационной системе, требующей защиты. Сделаем это для Ubuntu. Для этого введём в терминале:
$ sudo apt install libpam-google-authenticator
Как можно убедиться, пакет libpam-google-authenticator успешно установлен.
Теперь нам осталось инициализировать Google Authenticator и сформировать программную среду для его работы, отвечая на выводимые приложением вопросы. Суть вопросов касается скорости его работы, типа используемого алгоритма для формирования токенов безопасности, установки временных интервалов и другие подобные. Ниже приведены вопросы и ответы на них на английском языке. Итак, инициализируем приложение и ответим на выводимые вопросы:
$ google-authenticator
Подключение учётной записи
Для того, чтобы установленное на мобильном устройстве приложение Google Authenticator синхронизировать с PAM-модулем рабочей станции, необходимо подключить к нему учётную запись пользователя Ubuntu. Это можно сделать, к примеру, отсканировав выведенный в терминале QR-код, который становится доступным после инициализации приложения и ответов на вопросы программы. Как показано ниже, здесь также будет выведен ряд секретных кодов, которые необходимо переписать.
Кроме QR-кода, здесь выведены:
- Секретный ключ (secret key);
- Шестизначный верификационный код (verification code);
- Пять дополнительных скретч-кодов (scratch codes).
Секретный ключ может понадобиться в случае, если вы захотите подключить защищаемую систему к мобильному устройству без использования QR-кода. В некоторых случаях это может быть актуальным, к примеру, при повреждении камеры мобильного устройства.
Верификационный код, это, собственно, и есть тот код, который генерируется PAM-модулем синхронно с приложением Google Authenticator на мобильном устройстве. Код генерируется каждые 30 сек, поэтому нужно успеть его ввести, пока он актуален. При попытке авторизации верификационный код не показывается. Пользователь должен посмотреть его в мобильном устройстве и затем ввести во входной панели. Система сопоставляет введённый код с внутренним и, если они совпадают, происходит авторизация пользователя.
Скретч-коды являются запасным вариантом восстановления доступа к системе в случае утери всей другой информации. Более детальную информацию об их использовании можно прочитать в документации к Google Authenticator.
После того, как QR-код будет отсканирован, система получает дополнительный уровень защиты, основанный на двух токенах. Само собой, если на рабочей станции зарегистрировано несколько пользователей, то для её полной защиты необходимо подключение двухфакторной аутентификации к учётной записи каждого из них.