Как настроить SSH двухфакторную аутентификацию на Ubuntu 18.04, 18.10 Server

В этом руководстве будет показано, как настроить в SSH двухфакторную  аутентификацию на сервере Ubuntu 18.04 / 18.10 с использованием известного Google Authenticator.

Это значительно повысит безопасность вашего сервера OpenSSH.

Как работает двухфакторная аутентификация

Обычно вам нужно ввести пароль или использовать SSH-ключ для входа на ваш сервер Ubuntu удаленно.

Для двухфакторной аутентификации (2FA) требуется ввести две части информации для входа.

Поэтому вам нужно будет ввести одноразовый пароль, сгенерированный Google Authenticator, для входа на ваш SSH-сервер.

Сейчас многие веб-сайты и службы (Facebook, Google, Twitter и т. д.) предлагают пользователям 2FA для защиты своих учетных записей, и также рекомендуется включить 2FA на вашем SSH-сервере.

Шаг 1: Установка и настройка Google Authenticator на Ubuntu 18.04, 18.10 Server

Войдите в свой сервер Ubuntu и выполните следующую команду для установки Google Authenticator из репозитория пакетов Ubuntu по умолчанию.

sudo apt install libpam-google-authenticator

Затем запустите команду Google-аутентификатора, чтобы создать новый секретный ключ в вашем домашнем каталоге.

google-authenticator

Система вас спросит “Do you want authentication tokens to be time-based?” Введите y и нажмите enter.

Затем вы увидите QR-код, который вы можете сканировать с помощью мобильного приложения Google Authenticator.

Установите приложение Google Authenticator через Google Play или магазин приложений Apple на свой мобильный телефон и отсканируйте QR-код.

Обратите внимание, что вам нужно увеличить окно терминала для сканирования полного QR-кода.

QR-код представляет собой секретный ключ, который известен только вашему SSH-серверу и вашему приложению Google Authenticator.

После сканирования QR-кода вы можете увидеть шестизначный одноразовый пароль на вашем телефоне.

По умолчанию он «живет» 30 секунд.

Вам нужно будет ввести этот одноразовый пароль, чтобы войти на сервер Ubuntu через SSH.

В окне терминала вы можете увидеть секретный ключ, код подтверждения.

Рекомендуется сохранить эту информацию в безопасном месте для последующего использования.

Затем вы можете ввести y, чтобы ответить на все оставшиеся вопросы.

Это обновит конфигурационный файл Google Authenticator, отключит несколько применений одного и того же токена аутентификации, увеличит временное окно и включит ограничение скорости для защиты от попыток входа через брутфорс.

Шаг 2. Настройте демон SSH для использования Google Authenticator.

Откройте файл конфигурации сервера SSH.

sudo nano /etc/ssh/sshd_config

Найдите в файле следующие два параметра и убедитесь, что для обоих из них установлено значение «yes».

UsePAM yes

ChallengeResponseAuthentication yes

PAM означает подключаемый модуль аутентификации. Это простой способ подключить другой метод аутентификации в вашу Linux-систему. Чтобы включить аутентификацию Google Authenticator с SSH, аутентификация PAM и Challenge-Response должна быть включена. Сохраните и закройте файл. Затем перезапустите демон SSH, чтобы изменения вступили в силу.

sudo systemctl restart ssh

По умолчанию для аутентификации требуется ввести пароль пользователя для входа в систему.

Теперь отредактируйте файл правила PAM для демона SSH.

sudo nano /etc/pam.d/sshd

В начале этого файла вы можете увидеть следующую строку, которая позволяет аутентифицировать пароль, если для параметра ChallengeResponseAuthentication установлено значение yes.

@include common-auth

Чтобы включить одноразовую аутентификацию по паролю, добавьте следующие две строки.

#One-time password authentication via Google Authenticator
auth required pam_google_authenticator.so

Сохраните и закройте файл.

С этого дня SSH-демону потребуется ввести пароль пользователя и код подтверждения (одноразовый пароль генерируется Google Authenticator).

Как включить аутентификацию с открытым ключом и аутентификацию c одноразовым паролем

 

Когда дело доходит до безопасности SSH, рекомендуется использовать аутентификацию открытого ключа вместо аутентификации по паролю пользователя.

После того, как вы настроили аутентификацию с открытым ключом и выполнили указанные выше 2 шага, вы можете объединить аутентификацию открытого ключа с аутентификацией одноразового пароля.

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

Добавьте следующую строку в конец этого файла.

AuthenticationMethods publickey,keyboard-interactive

Сохраните и закройте файл. Перезапустите демон SSH, чтобы изменения вступили в силу.

sudo systemctl restart ssh

Нам также нужно отредактировать конфигурационный файл SSH PAM.

sudo nano /etc/pam.d/sshd

Закомментируйте следующую строку (добавьте # в начале), чтобы отключить аутентификацию по паролю.

@include common-auth

Сохраните и закройте файл.

С этого момента вам необходимо использовать SSH-ключ и код подтверждения аутентификации Google для входа в систему.

Заключение

  • Каждому пользователю на вашем сервере Ubuntu необходимо запустить команду аутентификации Google и отсканировать QR-код, чтобы использовать двухфакторную аутентификацию.
  • Emergency Scratch Code — это ваш резервный код. Если вы потеряете свой телефон, вы можете ввести один из пяти кодов аварийного кода вместо одноразового пароля для завершения двухэтапной проверки. Эти коды предназначены только для одноразового использования.
  • Если вы хотите изменить секретный ключ, просто войдите в свой сервер и снова запустите команду аутентификации Google, чтобы обновить файл ~ / .google_authenticator.
  • Поскольку одноразовый пароль вычисляется с использованием общего секретного ключа и текущего времени, поэтому рекомендуется включить синхронизацию времени NTP на вашем сервере Ubuntu.

 

cryptoparty

Cryptography is typically bypassed, not penetrated.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

5e7fa976b0640d40