La Двофакторна автентифікація (2FA) - це не те унікальне, що можна використовувати в соціальних мережах або на будь-якому іншому веб-сайті. Ну, цей захід безпеки також може бути реалізований в операційній системі.
Ось чому Сьогодні ми побачимо, як реалізувати двофакторну автентифікацію в SSH в Ubuntu та похідні інструменти з використанням відомого Google Authenticator, який значно підвищить безпеку вашого сервера OpenSSH.
Зазвичай вам просто потрібно ввести пароль або використовувати ключ SSH для віддаленого входу в систему.
Двофакторна автентифікація (2FA) вимагає введення двох даних для входу.
Тому вам також потрібно буде ввести одноразовий пароль на основі часу, щоб увійти на ваш сервер SSH.
Цей одноразовий пароль обчислюється за допомогою алгоритму TOTP, який є стандартом IETF.
Встановлення та конфігурація Google Authenticator в Ubuntu та похідних
Першим кроком, який ми збираємося зробити, є встановлення Google Authenticator у нашій системі, тому ми збираємося відкрити термінал в системі (це можна зробити за допомогою комбінації клавіш “Ctrl + Alt + T) і в ньому ми наберемо таку команду:
sudo apt install libpam-google-authenticator
Встановлення виконано ми збираємось запустити нещодавно встановлену програму з такою командою:
google-authenticator
Під час виконання цієї команди ми збираємося призначити секретний ключ, і це запитає нас, чи хочемо ми використовувати маркери на основі часу, на що ми відповімо так.
Після цього, вони побачать QR-код, який вони зможуть відсканувати за допомогою програми TOTP на своєму телефоні.
тут Ми рекомендуємо використовувати програму Google Authenticator на своєму мобільному телефоні.так що ви можете встановити програму через Google Play або Apple App Store на свій мобільний телефон.
У вас уже є програма на телефоні, ви повинні відсканувати QR-код разом із нею. Майте на увазі, що вам потрібно збільшити вікно терміналу, щоб просканувати весь QR-код.
QR-код представляє секретний ключ, який відомий лише його серверу SSH та додатку Google Authenticator.
Після сканування QR-коду вони можуть побачити унікальний шестизначний маркер на своєму телефоні. За замовчуванням цей маркер триває 30 секунд, і його потрібно ввести для входу в Ubuntu через SSH.
У терміналі ви також зможете побачити секретний код, а також код підтвердження та код аварійного запуску.
Звідки ми рекомендуємо зберігати цю інформацію в безпечному місці для подальшого використання. На інші запитання, які нам задають, ми просто збираємося відповісти так, набравши букву у.
Конфігурація SSH для використання з Google Authenticator
Вже розраховуючи на вищесказане, Зараз ми зробимо необхідну конфігурацію, щоб мати можливість використовувати з’єднання SSH у нашій системі з Google Authenticator.
У терміналі vМи збираємося ввести наступну команду
sudo nano /etc/ssh/sshd_config
Усередині файлу ми будемо шукати наступні рядки, і ми змінимо їх на "так", будучи таким:
UsePAM yes ChallengeResponseAuthentication yes
Після внесення змін збережіть зміни, внесені за допомогою Ctrl + O, і закрийте файл за допомогою Ctrl + X.
У тому ж терміналі ми збираємось перезапустити SSH за допомогою:
sudo systemctl restart ssh
За замовчуванням для автентифікації потрібно ввести пароль користувача для входу.
Так що давайте відредагуємо файл правил PAM для демона SSH.
sudo nano /etc/pam.d/sshd
На початку цього файлу ви можете побачити наступний рядок, що дозволяє автентифікацію за допомогою пароля
ChallengeResponseAuthentication
Що ми повинні встановити так.
Щоб також увімкнути одноразову автентифікацію за паролем, додайте наступні два рядки.
@include common-auth #One-time password authentication via Google Authenticator auth required pam_google_authenticator.so
Збережіть і закрийте файл.
Відтепер кожного разу, коли вони входитимуть у вашу систему через з'єднання SSH, їм буде запропоновано ввести пароль користувача та код підтвердження (одноразовий пароль, сформований Google Authenticator).
Привіт, досить простий підручник, однак, коли я виконую всі дії, які я більше не можу ввести через ssh, це видає мені неправильну помилку пароля, я навіть не можу запитати 2FA.
У мене є Ubuntu Server 20.04