Linux 2FA: Як убезпечити вхід до SSH за допомогою Google Authenticator та Yubikey


Послуги, пов’язані з Інтернетом, особливо вразливі для атак на вхід, тому що будь-хто у світі може увійти до вашого акаунта, виходячи зі свого дивана. Протягом багатьох років було розроблено кілька доповнень для аутентифікації для боротьби з цією властивою слабкістю у стандартній моделі автентифікації користувача / пароля. Найпоширенішою є двофакторна автентифікація (2FA), оскільки 2FA вимагає, щоб ви довели, що у вас є щось на додаток до знання імені користувача та пароля. Ще один добре відомий метод вимагає від користувачів обладнання апаратного пристрою, який забезпечує обертові паролі.

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

Yubikey – апаратний пристрій, який забезпечує різні механізми аутентифікації криптографічних даних, такі як одноразові паролі (OTP) та шифрування відкритого ключа (PKI). Google Authenticator – це програмне забезпечення, яке надає OTP для використання як другий фактор автентифікації.

Використання Google Authenticator для захисту ваших входів в SSH Linux

Перше, що спочатку – завантажте мобільний додаток Google Authenticator на свій телефон або планшет. Як тільки ви це отримаєте, ми можемо приступити до роботи. Він доступний як в Play Store, так і в App Store.

Автентифікацію входу в Linux зазвичай надають бібліотеки модулів аутентифікації, що підключаються (PAM). Як вказує назва, PAM підтримує додавання довільних модулів аутентифікації. У цьому випадку ми збираємось “підключити” шар аутентифікатора Google до звичайного входу в SSH, щоб запросити код після того, як користувач введе свій пароль.

Для цього нам потрібно почати з установки необхідних бібліотек PAM:

$ sudo apt – інсталюйте libpam-google-автентифікатор
Читання списків пакетів … Готово
Побудова дерева залежності
Читання інформації про стан … Готово
Будуть встановлені наступні додаткові пакети:
libqrencode3
Будуть встановлені наступні НОВІ пакети:
libpam-google-автентифікатор libqrencode3
0 оновлених, 2 нещодавно встановлених, 0 для видалення та 356 не оновлених.
Потрібно отримати 46,4 кБ архівів.
Після цієї операції буде використано 208 кБ додаткового дискового простору.

Ви хочете продовжити [Y / n]? у

І запустити автентифікатор вперше:

$ google-автентифікатор

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

Тепер нам потрібно налаштувати це вхід у ваш додаток Google Authenticator. Для цього натисніть кнопку + увійдіть у додаток Google Authenticator, а потім вирішіть, чи потрібно сканувати QR-код або введіть секретний ключ. Будь-який метод буде працювати. Коли ви додасте його, у вашому додатку Google Authenticator з’явиться новий запис, який виглядає приблизно так:

google-auth-mobile-entry

Тепер відповідь “так” на “Чи хочете я, щоб я оновив ваше ~ / .google_authenticator (y / n) питання, яке підкаже вам більше запитань.

Ви хочете заборонити багаторазове використання однієї і тієї ж аутентифікації

жетон? Це обмежує вас одним входом в систему кожні 30 років, але це збільшує ваші шанси помітити або навіть запобігти атакам “людина-посеред” (у / п) у

За замовчуванням маркери корисні протягом 30 секунд, і щоб компенсувати можливий перебіг часу між клієнтом і сервером, ми надаємо додатковий маркер до і після поточного часу. Якщо у вас виникли проблеми з поганою синхронізацією часу, ви можете збільшити вікно від його стандартного розміру від 1: 30 хв до приблизно 4 хв. Ви хочете зробити так (у / н) n

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

Ви хочете ввімкнути ліміт швидкості (у / н) у

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

З цікавості, якщо ми подивимось на наш новий .google-автентифікатор, ми зможемо побачити ці варіанти, збережені там, а також наші знаки для екстреної допомоги.

$ cat .google_authenticator
NO7ZW33I34JMPCKB
RATE_LIMIT 3 30
WINDOW_SIZE 17
DISALLOW_REUSE
TOTP_AUTH
73444347
15364641
36772087
14155810
92578001

Доцільно переконатися, що цей файл читається тільки вашим користувачем. Це налаштовано за замовчуванням:

$ ls -l .google_authenticator

-r ——– 1 jdw jdw 126 26 квітня 08:30 .google_authenticator

Зараз у нас налаштований Google Authenticator, але наша система не має уявлення, що вона повинна використовувати його для входу. Для цього нам потрібно оновити конфігурацію модуля аутентифікації, що підключається (PAM).

Відредагуйте конфігураційний файл PAM ssh як root:

$ sudo vim /etc/pam.d/sshd

Додайте цей рядок десь, я ставлю його внизу:

# Використовуйте Google Auth для входу в ssh
потрібен auth pam_google_authenticator.so

Потрібна ще одна зміна; змінити налаштування виклику та відповіді у файлі sshd_config, переключивши “ні” на “так”:

$ sudo vim / etc / ssh / sshd_config
# Змініть на так, щоб увімкнути паролі у відповідь на виклик (будьте обережні
# деякі модулі та потоки PAM)
ChallengeResponseAuthentication так

Тепер перезапустіть демон SSH і спробуйте:

$ sudo service ssh перезапуск

Не виходьте з системи. Залиште себе увійти на випадок, якщо ви не зможете повернутися з якихось причин. Запустіть інший термінал і SSH в новоконфігуровану машину.

Після введення пароля мені буде запропоновано встановити поточний код Google Authenticator. Правильне введення обох дозволяє увійти:

$ ssh [email protected]
Пароль: <=== введений мій пароль
Код підтвердження:
Ласкаво просимо до Ubuntu 12.04.5 LTS (GNU / Linux 3.13.0-32-generic x86_64)

Використання Yubikey для захисту ваших входів в SSH Linux

Зараз у нас є система, яка потребує імені користувача, пароля та маркера Google Authenticator для входу. Це досить безпечно, але ми можемо зробити ще краще. Ми можемо налаштувати систему, щоб вона приймала лише випадково генерований пароль від Yubikey.

З трьох фрагментів даних, необхідних для входу (ім’я користувача, пароль, код автентифікації), ніхто не міг би знати останні два заздалегідь, або повторно використовувати їх у разі виявлення.

Перше, що перше – придбати Юбікей прямо з Юбіко або з місця, наприклад Амазонки. Я буду використовувати для цього Yubikey Nano.

Далі встановимо необхідні пакети. Додати Yubico PPA (Персональний архів продуктів) та встановити бібліотеку PAM libpam-yubico.

$ sudo add-apt-сховище ppa: yubico / stable
$ sudo apt – отримати оновлення
$ sudo apt-get install libpam-yubico

підтвердження-yubi-libs-установка

Сам файл бібліотеки має ім’я pam_yubico.so і його слід встановити в / lib / security /

$ ls -l / lib / безпека /
всього 104
-rw-r – r– 1 корінь кореня 10296 19 березня 2013 pam_ck_connector.so
-rw-r – r– 1 корінь кореня 43480 28 березня 2013 pam_gnome_keyring.so
-rw-r – r– 1 корінь кореня 47672 25 листопада 2016 року pam_yubico.so
$

Нам знадобиться набір даних Yubi API. Відвідайте сторінку API Yubico тут.

yubi-get-api-кредити

І дотримуйтесь інструкцій. Щойно ви надасте електронну пошту та свій Yubikey OTP, сайт надасть вам ідентифікатор клієнта та секретний ключ, який ви можете використовувати:

юбі-апі-кредити

Останній шматочок інформації, який вам знадобиться – ваш маркер Yubikey. Це лише перші 12 цифр будь-якого одноразового пароля (OTP), який випльовує ваш Yubikey. Щоб досягти цього, зосередьте курсор у вікні терміналу чи текстовому редакторі – кудись, де потрібно буде ввести. Потім вставте свій Yubikey у свій USB-накопичувач. Якщо на ній є кнопка, натисніть її. Якщо цього немає, як, наприклад, модель Nano, просто злегка натисніть на сам Yubikey на USB-порт. Він повинен виписати одноразовий пароль у вигляді довгого рядка символів. Перші дванадцять цифр – це все, що нам потрібно для цієї частини. У моєму випадку це:

cccccchcdjed

Далі налаштуйте файл /etc/pam.d/sshd для того, щоб вимагати входу yubikey, додавши цей рядок у верхню частину файлу, використовуючи ідентифікатор та ключ, отримані з сайту API Yubi:

потрібен auth pam_yubico.so id = 38399 key = lZqKSrHhyQ6dEBZnIEe2 + Uwe3NA = налагодження authfile = / etc / yubikey_mappings mode = client

Ми також мусимо сказати демону sshd, що він більше не повинен приймати паролі. Якщо ми цього не зробимо, він все одно прийме звичайні паролі на додаток до OTP-адрес Yubikey, що насправді не те, що ми хочемо. Для цього прокоментуйте цей рядок, поставивши перед ним #:

# @ включати спільно-авт

Тепер нам потрібно пов’язати вашого користувача з вашим Yubikey. Для цього відредагуйте файл / etc / yubikey_mappings та додайте своє ім’я користувача та свій 12-символьний маркер Yubikey, розділений двокрапкою:

jdw: cccccchcdjed

Якщо у вас є кілька Yubikeys, ви можете додати більше, просто додавши додаткові жетони Yubikey до тієї ж лінії, розділеної двокрапкою. Якби у мене було три юбікі, моя лінія виглядала б приблизно так:

jdw: cccccchcdjed: joewubtklruy: sgjyirtvskhg

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

$ sudo ssh перезапуск

Коли з’явиться запит на введення пароля, я натискаю замість нього Yubikey, і він входить в систему. Оскільки я включив параметр налагодження у файл etc / pam.d / sshd файл, я отримую багато результатів, але я це зрівняв для цього фрагмента, оскільки він дійсно корисний лише в тому випадку, якщо щось пішло не так:

$ ssh 192.168.1.118
Пароль: <=== прийшов від натискання мого Юбікі
Код підтвердження:
Ласкаво просимо до Ubuntu 12.04.5 LTS (GNU / Linux 3.13.0-32-generic x86_64)

Це все є для цього Обидві ці технології є дуже технічними за своєю суттю, але важкий підйом здійснюється бібліотеками PAM, що постачаються окремими постачальниками. Це означає, що ми можемо забезпечити доступ ssh до наших систем Linux з відносно невеликими змінами конфігурації.

Backgrounder на SMS та 2FA

Хоча не потрібно виконувати цей підручник, деякі відомості про те, чому SMS 2FA слабкий, можуть бути корисними. З цієї причини, такі речі, як Yubikeys та програми автентифікатора, є кращими, ніж SMS 2FA.

Двофакторна автентифікація SMS є слабкою

Найпоширеніше визначення 2FA – це “щось, що ти знаєш, і те, що ти маєш”. “Щось ви знаєте” – це пароль. “Щось у вас є” зазвичай означає шестизначний код, який ви надаєте з якогось пристрою, до якого ви маєте доступ. Надання правильного коду є достатнім доказом того, що ви щось «маєте».

Найпоширенішою формою 2FA в Інтернеті сьогодні є використання текстових повідомлень SMS для надсилання 2FA-кодів під час входу. Через слабкі сторони протоколу SS7 та погану перевірку клієнтів у мобільних командах підтримки, досить просто перенаправити текстове повідомлення на будь-який потрібний вам телефон. У методі SMS 2FA звичайно використовуються дві слабкі сторони: По-перше, номер телефону не є постійно прив’язаним до телефону, тому кожен може отримати SMS-повідомлення з кодом. По-друге, код перевірки SMS надсилається вам через ненадійний та незашифрований носій. За власним визначенням, це не відповідає вимозі бути “чимось у вас є”. Це насправді «щось, що я тобі тільки що подарував», що не те саме.

Програми аутентифікатора та жетони апаратного забезпечення сильніші

Краще рішення – використовувати мобільний додаток для автентифікації, такий як Google Authenticator або Authy. Ще кращим рішенням є з’єднання такого типу 2FA з обертовим, непередбачуваним паролем від пристрою, як Yubikey. Ні додатки, ні апаратні маркери не передають жодних даних через Інтернет або стільникову систему, що видаляє цей вектор перехоплення. Мінус полягає в тому, що їх складніше налаштувати, а це означає, що найчастіше використовується слабший метод SMS.

Пов’язані:
Ресурси шифрування: великий список інструментів та посібників
Що таке напад грубої сили?
Посібник з безпеки комп’ютера та Інтернету без жаргону
Кінцевий посібник з безпеки настільних Linux

Kim Martin Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map