SSH — неотъемлемая часть управления сервером, но из-за слабых паролей или украденных ключей он может стать целью злоумышленников. Именно здесь на помощь приходит двухфакторная аутентификация (2FA). Добавить дополнительный уровень безопасности для входа по SSH с помощью Google Authenticator просто и эффективно. В этой статье я расскажу о пошаговой установке.
Предварительная подготовка и требования
Перед началом убедитесь, что у вас есть пользователь с правами root или sudo на сервере. Также установите приложение Google Authenticator на смартфон (iOS или Android — не важно). Данное руководство протестировано на Ubuntu 22.04; на других дистрибутивах названия пакетов могут отличаться.
Шаг 1: Установка необходимых пакетов
Подключитесь к серверу по SSH и выполните следующую команду:
sudo apt update && sudo apt install libpam-google-authenticator qrencode -yqrencode необязателен, но упрощает создание QR-кода. После завершения установки модуль PAM будет готов к работе.
Шаг 2: Настройка Google Authenticator для пользователя
Каждый пользователь должен создать свой собственный ключ 2FA. Войдите в учётную запись пользователя по SSH и выполните:
google-authenticatorПоявится несколько вопросов. Первый: "Do you want authentication tokens to be time-based?" — ответьте "y" (да). Затем на экране появится большой QR-код и резервные коды. Откройте приложение Google Authenticator на телефоне и отсканируйте QR-код. Далее последуют вопросы:
- "Do you want to update the file...?" — Да
- "Do you want to disallow multiple uses of the same token?" — Да (рекомендуется для безопасности)
- "Do you want to increase the window size...?" — Нет (значение по умолчанию 3 приемлемо)
- "Do you want to enable rate limiting?" — Да (замедляет атаки перебором)
После выполнения этих шагов настройка для пользователя завершена.
Шаг 3: Изменение конфигурации SSH
Теперь нужно указать SSH-серверу использовать 2FA. Сначала отредактируем конфигурацию PAM:
sudo nano /etc/pam.d/sshdДобавьте в начало файла следующую строку:
auth required pam_google_authenticator.soЗатем откройте файл конфигурации SSH:
sudo nano /etc/ssh/sshd_configЗдесь нужно настроить два параметра. Сначала установите ChallengeResponseAuthentication в yes:
ChallengeResponseAuthentication yesЗатем найдите строку AuthenticationMethods (если её нет, добавьте) и установите следующее значение:
AuthenticationMethods publickey,keyboard-interactiveЭто обеспечит сначала проверку SSH-ключа (publickey), а затем Google Authenticator (keyboard-interactive). Если вы хотите использовать пароль и 2FA, задайте password,keyboard-interactive, но метод с ключом более безопасен.
Шаг 4: Перезапуск службы SSH
Для применения изменений перезапустите службу SSH:
sudo systemctl restart sshdВнимание! Не закрывайте текущую SSH-сессию. Откройте новый терминал и проверьте подключение. Если возникнут проблемы, вы сможете вмешаться через старую сессию.
Шаг 5: Тестирование подключения
Попробуйте новое SSH-подключение. Например:
ssh пользователь@ip-сервераСначала будет запрошен SSH-ключ (или пароль). Затем вы увидите следующий вывод:
Verification code: // введите шестизначный кодВозьмите код из приложения Google Authenticator на телефоне и введите его. Если код верный, сессия откроется. При неверном коде соединение будет отклонено.
Часто встречающиеся проблемы и их решения
Ошибка "Permission denied" при подключении
Обычно это связано с неправильной конфигурацией PAM или SSH. Проверьте файл /var/log/auth.log. Также убедитесь, что строка AuthenticationMethods в sshd_config написана правильно.
Код Google Authenticator не работает
Возможно, на сервере и телефоне различается время. Проверьте службу NTP: timedatectl. Также установите на телефоне автоматическую синхронизацию времени.
Где находятся резервные коды?
Резервные коды, созданные при выполнении google-authenticator, обычно хранятся в файле ~/.google_authenticator. Запишите их в надёжное место.
Заключение
Теперь ваш вход по SSH защищён двухфакторной аутентификацией. Этот метод гарантирует, что одного украденного пароля или ключа недостаточно. Помните: чем больше уровней безопасности, тем сложнее злоумышленникам. Не забывайте регулярно обновлять систему и следить за логами.