• База знань
  • /
  • Блог
  • /
  • 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.
  • Мобільний пристрій (phone) на базі IOS або Android версії 4.4 або вище.
  • Інстальований на мобільному пристрою додаток Google Authenticator.

Крок 1. Налаштування SSH-оболонки на робочій станції.

Здійснимо декотрі налагодження оболонки, необхідні для підтримки нею TOTP-ключа додатку. Треба мати на увазі, що під час настроювань бажано залишати відкритим початкове SSH-з'єднання, щоб у разі чого можна було до нього повернутися. Закрити його можна лише після закінчення всіх дій. Спочатку внесемо зміни у конфігураційний (configuration) файл sshd за допомогою редактора nano:

$ sudo nano /etc/pam.d/sshd 

У кінець файлу додамо (add) строку, показану нижче, після чого збережемо зміни та закриємо файл:

.....
auth required pam_google_authenticator.so nullok

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

Після цього включимо підтримку багатофакторної аутентифікації, для чого внесемо відповідні зміни у конфігураційний (configuration) файл оболонки 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)у

У випадку підтвердження згоди на оновлення файлу всі зміни в опціях буде збережено і аутентифікація буде працювати. У іншому випадку – додаток не запрацює.

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