Loader

Що таке автентифікація на основі сертифіката SSH?

Щоб зрозуміти, що таке SSH сертифікати, ми повинні спочатку зрозуміти автентифікацію на їх основі. Асиметрична криптографічна автентифікація включає дві пари ключів-закритий та відкритий. Закритий ключ може бути згенерований за допомогою команди ssh-keygen у терміналі і ніколи не передається іншим особам. Рекомендується захистити закритий ключ паролем у разі створення або втрати копій, тоді закритий ключ не буде доступний стороннім особам. У той час, як відкритий ключ є похідним від закритого ключа і може бути переданий іншим особам.

При такій практиці автентифікації на основі ключів сервер та користувач повинні мати свій особистий ключ. Користувач може використовувати команду ssh-keygen для генерації свого ключа, тоді як сервер зазвичай генерує його після встановлення SSH-сервера. Під час доступу користувач підключається до сервера через SSH. Серверу необхідно автентифікувати користувача. На цьому етапі користувач надає відкритий ключ серверу, а сервер у свою чергу переглядає список відкритих ключів, які є довіреними та прийнятими. Якщо відкритий ключ не знайдено, сервер відхиляє з’єднання.

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

Що таке автентифікація на основі сертифіката SSH?
Сертифікат SSH-це відкритий ключ, який був призначений довіреним елементом або організацією, таким як центр сертифікації (ЦС), що по суті зберігає пару відкритого та закритого ключів. Створювати центр сертифікації рекомендується окремо для хоста чи користувача.

Ось приклад створення центру сертифікації:
$ ssh-keygen -t ed25519 -f ~/.ssh/user_ca_key \ -C ‘User Certificate Authority for *.example.com’

У процесі створення слід призначити поля ЦС. Ці поля будуть складатися з ID, відкритого ключа, достовірності CA, ID ключа, достовірних принципів, підписи і т.д. Важливо пам’ятати, що ЦС може видати сертифікат, оскільки сам сертифікат – це просто відкритий ключ із цифровим підписом.

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

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

У разі видачі сертифіката відбувається наступне:
1. Клієнт або користувач надсилає свій відкритий ключ до ЦС.
2. Сервер відправляє свій відкритий ключ до ЦС.
3. ЦС діятиме, видаючи та підписуючи сертифікати.
4. ЦС видає сертифікат користувача клієнту та серверу.

Щоб потім використовувати сертифікат на практиці, наприклад, при вході в систему після того, як обидві організації отримають сертифікат:
1. Користувач або клієнт надсилає сертифікат на сервер.
2. Сервер перевіряє сертифікат, чи видав його довірений центр сертифікації.
3. Після позитивної перевірки сервер надсилає сертифікат користувачу/клієнту.
4. Потім клієнт перевіряє сертифікат сервера, чи виданий він тим же довіреним центром сертифікації.
5. Після позитивної перевірки встановлюється з’єднання.

Завдяки майже безшовному процесу та перевірці між суб’єктами та ЦС, автентифікація на основі сертифікатів забезпечує мінімальну участь з боку користувача/клієнта – користувачам не потрібно надавати пароль, який може бути зламаний. Сертифікати не можуть бути забуті як паролі.

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

З питань проведення індивідуальної демонстрації, пілотного тестування рішення FUDO і організації партнерських тренінгів звертайтеся, будь ласка: fast@oberig-it.com, +38 073 168 08 65.

Джерело: https://bit.ly/3qCub37