Рівень Інтернет-безпеки при роботі з різними типами інформаційних систем тісно пов'язаний із системою автентифікації користувача, яка може мати від одного до декількох рівнів захисту. Чим більше рівнів, тим надійніший захист. Розглянемо принципи організації дворівневої системи автентифікації користувача для захисту робочої станції під керуванням 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-код буде відсканований, система отримує додатковий рівень захисту, що базується на двох токенах. Звісно ж, якщо робочої станції зареєстровано кілька користувачів, то її повного захисту необхідно підключення двухфакторной аутентифікації до облікового запису кожного їх.