Як налаштувати двофакторну аутентифікацію на Raspberry Pi

Raspberry Pi зараз скрізь, тому він привернув увагу акторів-загроз та кіберзлочинців. Ми покажемо вам, як захистити свій Pi за допомогою двофакторної аутентифікації.

Дивовижний Raspberry Pi

The Raspberry Pi є одноплатним комп’ютером. Він був запущений у Великобританії в 2012 році з метою залучити дітей до роботи з кодом, створення та вивчення коду. Початковий форм-фактор представляв собою плату розміром з кредитну картку, що живиться від зарядного пристрою для телефону.

Він забезпечує вихід HDMI, порти USB, підключення до мережі та працює під керуванням Linux. Пізніші доповнення до лінійки включали ще менші версії, призначені для вбудовування в продукти або роботи як безголові системи. Ціни коливаються від 5 доларів за мінімалістів Пі Нуль, до 75 доларів США за Pi 4 B/8 ГБ.

Його успіх був неймовірним; понад 30 мільйонів цих крихітних комп’ютерів було продано по всьому світу. Любителі робили з ними дивовижні та надихаючі речі, в тому числі пливе один до краю простору і назад на повітряній кулі.

На жаль, як тільки обчислювальна платформа набуває достатнього поширення, вона неминуче привертає увагу кіберзлочинців. Страшно подумати про те, скільки Pi використовує обліковий запис користувача та пароль за замовчуванням. Якщо ваш Pi загальнодоступний і доступний з Інтернету Безпечна оболонка (SSH), він має бути безпечним.

Навіть якщо у вас немає цінних даних або програмного забезпечення на вашому Pi, вам потрібно захистити його, оскільки ваш Pi не є фактичною метою — це просто спосіб потрапити у вашу мережу. Як тільки актор загрози закріпиться в мережі, він перейде до інших пристроїв, які його насправді цікавлять.

Двофакторна аутентифікація

Аутентифікація — або отримання доступу до системи — вимагає одного або кількох факторів. Фактори поділяються на наступні категорії:

Щось, що ви знаєте: наприклад, пароль або -фраза.
Щось у вас є: наприклад, мобільний телефон, фізичний жетон або ключ.
Те, що ви є: біометричне зчитування, як-от відбиток пальця або сканування сітківки ока.

Багатофакторна автентифікація (MFA) вимагає пароля та одного або кількох елементів з інших категорій. Для нашого прикладу ми будемо використовувати пароль і мобільний телефон. Мобільний телефон запускатиме програму аутентифікації Google, а Pi — модуль аутентифікації Google.

  Як заблокувати відправників у програмі Mail на iPhone та iPad

Додаток для мобільного телефону пов’язується з вашим Pi шляхом сканування QR-коду. Це передає деяку початкову інформацію на ваш мобільний телефон із Pi, гарантуючи, що їхні алгоритми генерації чисел одночасно виробляють ті самі коди. Коди називаються одноразові паролі на основі часу (TOTP).

Коли він отримує запит на підключення, ваш Pi генерує код. Ви використовуєте програму аутентифікації на своєму телефоні, щоб побачити поточний код, а потім ваш Pi попросить у вас пароль і код аутентифікації. Ваш пароль і TOTP мають бути правильними, перш ніж вам буде дозволено під’єднатися.

Налаштування Pi

Якщо ви зазвичай використовуєте SSH на своєму Pi, швидше за все, це безголова система, тому ми налаштуємо її через SSH-з’єднання.

Найбезпечніше створити два з’єднання SSH: одне для налаштування та тестування, а інше – для захисту. Таким чином, якщо ви заблокуєте свій Pi, у вас все одно буде активне друге активне з’єднання SSH. Зміна налаштувань SSH не вплине на поточне підключення, тому ви можете використовувати друге, щоб скасувати будь-які зміни та виправити ситуацію.

Якщо станеться найгірше, і ви повністю заблоковані через SSH, ви все одно зможете підключити свій Pi до монітора, клавіатури та миші, а потім увійти в звичайний сеанс. Тобто ви все ще можете ввійти, якщо ваш Pi може керувати монітором. Якщо це не вдається, вам справді потрібно тримати SSH-з’єднання мережі безпеки відкритим, доки ви не переконаєтеся, що двофакторна аутентифікація працює.

Остаточною санкцією, звичайно, є перепрошивка операційної системи на карту micro SD Pi, але давайте спробуємо уникнути цього.

Спочатку нам потрібно встановити два з’єднання з Pi. Обидві команди мають такий вигляд:

ssh [email protected]

Ім’я цього Pi — «watchdog», але замість цього ви введете своє ім’я. Якщо ви змінили ім’я користувача за замовчуванням, використовуйте його також; наше «пі».

Пам’ятайте, для безпеки введіть цю команду двічі в різних вікнах терміналів, щоб у вас було два з’єднання з вашим Pi. Потім згорніть одну з них, щоб вона не закривалася і не закривалася випадково.

Після підключення ви побачите вітальне повідомлення. У підказці буде показано ім’я користувача (у цьому випадку «pi») і ім’я Pi (у цьому випадку «watchdog»).

Вам потрібно відредагувати файл «sshd_config». Ми зробимо це в текстовому редакторі nano:

sudo nano /etc/ssh/sshd_config

Прокручуйте файл, поки не побачите наступний рядок:

ChallengeResponseAuthentication no

Замініть «ні» на «так».

  Як використовувати Animoji як наклейки на iPhone X

Натисніть Ctrl+O, щоб зберегти зміни в nano, а потім натисніть Ctrl+X, щоб закрити файл. Використовуйте таку команду, щоб перезапустити демон SSH:

sudo systemctl restart ssh

Вам потрібно встановити аутентифікатор Google, який є a Вставний модуль аутентифікації (PAM) бібліотека. Програма (SSH) викличе інтерфейс Linux PAM, і інтерфейс знайде відповідний модуль PAM для обслуговування запитуваного типу аутентифікації.

Введіть наступне:

sudo apt-get install libpam-google-authenticator

Встановлення програми

Додаток Google Authenticator доступний для iPhone і Android, тому просто встановіть відповідну версію для свого мобільного телефону. Ви також можете використовувати Authy та інші програми, які підтримують цей тип коду аутентифікації.

Налаштування двофакторної аутентифікації

В обліковому записі, який ви будете використовувати під час підключення до Pi через SSH, виконайте таку команду (не включайте префікс sudo):

google-authenticator

Вас запитають, чи хочете ви, щоб маркери аутентифікації були на основі часу; натисніть Y, а потім натисніть Enter.

А Швидка відповідь (QR) код генерується, але він зашифрований, оскільки він ширший за вікно терміналу з 80 стовпцями. Перетягніть вікно ширше, щоб побачити код.

Ви також побачите деякі коди безпеки під QR-кодом. Вони записуються у файл під назвою «.google_authenticator», але ви можете зробити їх копію зараз. Якщо ви коли-небудь втратите можливість отримати TOTP (наприклад, якщо ви втратите свій мобільний телефон), ви можете використовувати ці коди для автентифікації.

Ви повинні відповісти на чотири запитання, перше з яких:

Do you want me to update your "/home/pi/.google_authenticator" file? (y/n)

Натисніть Y, а потім натисніть Enter.

Ви хочете, щоб я оновив ваш

Наступне запитання запитує, чи хочете ви запобігти багаторазовому використанню одного і того ж коду протягом 30-секундного вікна.

Натисніть Y, а потім натисніть Enter.

Третє запитання — чи хочете ви розширити вікно прийняття маркерів TOTP.

Натисніть N у відповідь на це, а потім натисніть Enter.

Останнє запитання: «Чи хочете ви ввімкнути обмеження швидкості?»

Введіть Y, а потім натисніть Enter.

Ви повертаєтеся до командного рядка. Якщо необхідно, перетягніть вікно терміналу ширше та/або прокрутіть його вгору, щоб побачити весь QR-код.

На своєму мобільному телефоні відкрийте програму аутентифікації, а потім натисніть знак плюс (+) у нижньому правому куті екрана. Виберіть «Сканувати QR-код», а потім відскануйте QR-код у вікні терміналу.

  Де розмістити маршрутизатор для найкращої швидкості Wi-Fi

У програмі аутентифікатора з’явиться новий запис, названий на честь імені хоста Pi, а під ним буде вказаний шестизначний код TOTP. Він відображається у вигляді двох груп по три цифри, щоб полегшити його читання, але ви повинні ввести його як однозначне шестизначне число.

Анімаційне коло поруч із кодом вказує, скільки довше код буде дійсним: повне коло означає 30 секунд, півколо означає 15 секунд тощо.

Пов’язуємо все разом

У нас є ще один файл для редагування. Ми повинні вказати SSH, який модуль аутентифікації PAM використовувати:

sudo nano /etc/pam.d/sshd

Введіть такі рядки вгорі файлу:

#2FA

auth required pam_google_authenticator.so

Ви також можете вибрати, коли вам потрібно буде запитати TOTP:

Після введення пароля: введіть попередні рядки нижче «@include common-auth», як показано на зображенні вище.
Перш ніж вас попросять ввести пароль: введіть попередні рядки над «@include common-auth».

Зверніть увагу на символи підкреслення (_), використані в «pam_google_authenticator.so», а не на дефіси (-), які ми використовували раніше з командою apt-get для встановлення модуля.

Натисніть Ctrl+O, щоб записати зміни до файлу, а потім натисніть Ctrl+X, щоб закрити редактор. Нам потрібно перезапустити SSH в останній раз, і тоді ми закінчимо:

sudo systemctl restart ssh

Закрийте це з’єднання SSH, але залиште інше з’єднання SSH мережі безпеки запущеним, доки ми не перевіримо наступний крок.

Переконайтеся, що програма аутентифікатора відкрита та готова на вашому мобільному телефоні, а потім відкрийте нове SSH-з’єднання з Pi:

ssh [email protected]

Вас попросять ввести пароль, а потім код. Введіть код зі свого мобільного телефону без пробілів між цифрами. Як і ваш пароль, він не відображається на екрані.

Якщо все піде за планом, вам слід дозволити підключитися до Pi; якщо ні, скористайтеся SSH-з’єднанням мережі безпеки, щоб переглянути попередні кроки.

Краще безпечніше, ніж жаль

Ви помітили «r» у слові «безпечніше» вище?

Справді, тепер ви безпечніше, ніж раніше, підключаючись до Raspberry Pi, але ніщо ніколи не буває на 100 відсотків безпечним. Є способи обійти двофакторну аутентифікацію. Вони покладаються на соціальну інженерію, атаки «людина в середині» та «людина на кінцевій точці», заміну SIM-карт та інші передові методи, які, очевидно, ми тут описувати не будемо.

Тож навіщо турбуватися про все це, якщо воно не ідеальне? Ну, з тієї ж причини ви замикаєте вхідні двері, коли виходите, хоча є люди, які вміють виламати замки, а більшість не можуть.