• База знаний
  • /
  • Блог
  • /
  • Wiki
  • /
  • ONLINE CHAT
+380 (44) 364 05 71

Статья также доступна на украинском (перейти к просмотру).

Google Authenticator

 

Содержание:

Стремительное развитие онлайн-бизнесов и, соответственно, сетевой инфраструктуры требует от администраторов серверов большего внимания к их безопасности. Для управления сервером на базе ОС Linux, как известно, используется оболочка ssh, позволяющая установить определенный уровень защиты. Использование самого низкого уровня с одним фактором безопасности – логина и пароля, как показывает опыт – недостаточно. Поэтому мы предлагаем переход к более высокому уровню защиты – двухфакторной авторизации. Одним из самых простых в настройке является приложение Google Authenticator, его и рассмотрим.

Средства построения систем аутентификации

Сучасні системи багатофакторної автентифікації для різних платформ розробляються на базі відкритого ПО – OATH (Open Authentication), котре має у своєму складі наступні компоненти:

  • Бібліотеки на мові програмування С.
  • Засоби управління за допомогою командної строки.
  • Модуль PAM.
  • ПО підтримує різноманітні алгоритми генерування факторів безпеки. Наприклад, алгоритм HOTP забезпечує генерування факторів на основі випадків. Він специфікований документом (paper) RFC 4226. А алгоритм TOTP забезпечує генерування факторів на основі часу, він специфікований RFC 6238.

Google Authenticator розроблений на базі вказаного ПО для використання на різних мобільних платформах.

Настройка аутентификации Ubuntu

По статистике, более 90 % всех ОС, установленных хостерами на Интернет-серверах, принадлежат к семейству Linux. Например, хостер FREEhost.UA широко использует указанную ОС. Это обусловлено несколькими причинами:

  • ОС на базе Linux относятся к свободно распространяемому программному обеспечению (ПО).
  • Гибкость в настройке и простоте управления.
  • Минимальное потребление аппаратных ресурсов.
  • Высокий уровень защиты.

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

  • Первый уровень защиты – один факторный вход или аутентификация с использованием только одного пароля. Имеет самую низкую степень защиты.
  • Второй уровень – использование RSA (Rivest Shamir Adleman) ключей, функционирующих на базе криптографического алгоритма с хранящимся на сервере открытым ключом. Это позволяет обезопасить узел во время (during) атак, связанных со взломом пароля со стороны посторонних узлов сети.
  • Третий уровень – использование TOTP-ключей сторонних разработчиков, сгенерированных с помощью приложений для аутентификации. Такое ПО может обеспечить многофакторность и многоканальность аутентификации в ОС Ubuntu, то есть наибольший уровень безопасности (safe).

Настройка аутентификации Google Authenticator

Приложение изначально было ориентировано на работу на нескольких современных мобильных платформах, то есть, в качестве дополнительного независимого канала передачи данных здесь есть мобильное устройство, уже само по себе значительно повышающее потенциальные возможности приложения по защите ИС. Разработчики предложили собственный программный модуль PAM и предоставили возможность устанавливать его на ОС на базе Linux из открытых источников. Для генерирования токенов здесь, как правило, используется алгоритм TOTP, то есть пароли генерируются и синхронизируются во временной плоскости через каждые 30 секунд.

Требования к ПО и устройствам указаны ниже (underneath):

  • Рабочая станция под управлением операционной системы Ubuntu версии 16.04 LTS или выше.
  • Наличие установленной SSH-оболочки для ОС Ubuntu.
  • Мобильное устройство на базе IOS или Android версии 4.4 или выше.
  • Установленное на мобильном устройстве приложение Google Authenticator.

Шаг 1. Настройка SSH-оболочки на рабочей станции.

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

$ sudo nano /etc/pam.d/sshd 

В конец файла добавим (add) строку, показанную ниже, после чего сохраним изменения и закроем файл:

.....
auth required pam_google_authenticator.so nullok

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

После этого включим поддержку многофакторной аутентификации, для чего внесем соответствующие изменения в конфигурационный файл оболочки sshd_config:

$ sudo nano /etc/ssh/sshd_config

Найдем в файле строки с параметром ChallengeResponseAuthentication и включим его, разкомментировав строку со значением yes, и закомментируем строку с параметром no, после чего сохраним изменения (keep) и закроем файл:

.....
ChallengeResponseAuthentication yes
#ChallengeResponseAuthentication no
.....

После этого перезагрузим SSH, чтобы обновить настройки:

$ sudo systemctl restart sshd.service

Перезагрузка только sshd-сервиса не прервет соединение, а значит это исключит блокировку пользователя.

Шаг 2. Установка PAM-модуля и настройка аутентификации 

Для установки PAM-модуля в открытой сессии с помощью терминала введем команду:

$ sudo apt install libpam-google-authenticator

Для инициализации приложения и настройки двухфакторной аутентификации введем команду:

google-authenticator

В результате чего на терминал будет выведен (appear) ряд вопросов для уточнения параметров, необходимых для функционирования приложения:

Do you want authentication tokens to be time-based (y/n)у

При выборе ответа «уes» приложение будет синхронизировать токены авторизации по времени, то есть они будут генерироваться каждые несколько десятков секунд. Если же будет выбран ответ "no", то токены будут генерироваться сериями на основе математического алгоритма.

Do you want me to update your "/home/7host/.google_authenticator" file (y/n)у

При выборе ответа «уes» приложение будет синхронизировать токены авторизации по времени, то есть они будут генерироваться каждые несколько десятков секунд. Если же будет выбран ответ "no", то токены будут генерироваться сериями на основе математического алгоритма.

Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n)у

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

By default, tokens are good for 30 seconds. In order to compensate for
possible time-skew between the client and the server, ...................... . Do you want to do so? (y/n)n

При положительном ответе будет увеличено время генерации 8-ми валидных кодов до 4-х минут. При отрицательной – будет генерироваться только 3 валидных кода за 1,5 минуты, что более безопасно.

If the computer that you are logging into isn't hardened against brute-force
login attempts, you can enable ........................... . Do you want to enable rate-limiting (y/n)у

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

После предоставления ответов на экран терминала будет выведен графический QR-code большого размера (giant) и несколькими секретными кодами под ним (place):

  • Секретный ключ (secret key).
  • Шестизначный код для проверки пользователя.
  • Набор scratch codes помогут при возникновении аварийной ситуации (emergency).

Все эти коды желательно переписать, а также просканировать QR-код с помощью мобильного устройства, но для этого нужно установить приложение.

Приклад QR-коду.

Шаг 3. Установка приложения на мобильное устройство и привязка его к аккаунту ОС Ubuntu.

Для установки приложения можно воспользоваться ссылками на магазин Google Play:

https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2 или https://itunes.apple.com/ru/app/google-authenticator/id388497605?mt=8 

в зависимости от типа ОС мобильного устройства. Для ОС Android – первая ссылка, для ОС iOS – вторая.

Установим приложение на ОС Android.

После запуска процесса (process) установки появится окно с информацией о работе системы аутентификации и кнопкой «НАЧАТЬ», которую нужно нажать.

Запуск  Google Authenticator

Після цього Вам буде запропоновано встановити дворівневу аутентифікацію для свого акаунту Google, котру можна проігнорувати, натиснувши на кнопку «ПРОПУСТИТЬ».

Сторінка встановлення дворівневої аутентифікації для акаунту Google

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

Сторінка додавання нового акаунту до аутентифікатора

При выборе пункта «Сканировать штрихкод» активируется камера, с помощью которой можно отсканировать QR-код. После чего привязка приложения к аккаунту Ubuntu состоялась. Приложение сгенерирует и выводит шестизначный код верификации на экран мобильного устройства для доступа к управлению рабочей станцией. Значение указанного кода в дальнейшем будет изменяться каждые 30 секунд и поэтому нужно будет успевать вводить его в пределах указанного времени.

Сторінка генерації тимчасових паролів

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

Подписывайтесь на наш телеграмм-канал t.me/freehostua, чтобы быть в курсе новых полезных материалов. Смотрите наш канал YouTube на youtube.com/freehostua.

При написании статьи использовались материалы Марины Ермолаевой, Игоря Рудника и YouTube канала Webcom Academy, а также Ильи Русакова из блога Serpstat.
Мы что-то упустили, в чем ошиблись?
Сообщите об этом в комментариях, и мы обязательно обсудим это.

Дата: 01.06.2022
Автор: Евгений
Голосование

Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:

comments powered by Disqus
navigate
go
exit
Спасибо, что выбираете FREEhost.UA