Настройка двухфакторной аутентификации (2FA) для SSH на сервере CentOS/RHEL

В этом руководстве вы узнаете, как настроить двухфакторную аутентификацию SSH на сервере CentOS/RHEL с помощью популярного приложения Google Authenticator. Этот метод значительно повысит уровень безопасности SSH-сервиса на вашем сервере CentOS/RHEL.

Двухфакторная аутентификация функционирует следующим образом: для подтверждения личности пользователя требуется два разных элемента. Первым является обычный пароль, а вторым — дополнительный код или подтверждение, получаемое через другой канал, например, SMS-сообщение или специальное приложение. Такой подход обеспечивает дополнительную защиту учетной записи.

Обычно для доступа к удалённому серверу CentOS/RHEL достаточно ввести пароль или использовать SSH-ключ. Однако при использовании двухфакторной аутентификации (2FA) требуется два этапа проверки, поэтому для входа необходимо также ввести временный одноразовый пароль. Этот пароль генерируется с помощью алгоритма TOTP, который является стандартом IETF. Сегодня многие веб-сайты и сервисы, такие как Facebook, Google и Twitter, поддерживают 2FA для повышения безопасности аккаунтов. Включение 2FA для вашего SSH-сервера также является хорошей практикой.

Данное пособие научит вас, как выполнить настройку.

  • Двухфакторная аутентификация с использованием пароля
  • Аутентификация с использованием открытого ключа и двухфакторной проверки

Примечание: В данной статье мы будем использовать серверное программное обеспечение с открытым исходным кодом под названием google-authenticator, которое можно установить из репозитория EPEL. Компания Google не принимает участия в процессе аутентификации. Ни серверное программное обеспечение, ни мобильное приложение не нуждаются в сетевом подключении.

Установите и сконфигурируйте Google Authenticator на сервере CentOS/RHEL.

Авторизуйтесь на вашем сервере CentOS/RHEL и выполните команды для установки Google Authenticator из репозитория EPEL (Extra Packages for Enterprise Linux). Утилита qrencode нужна для создания QR-кода в терминале.

Читайте также:  Как настроить Parse Dashboard на Ubuntu 18.04 и 16.04

sudo dnf install - y epel-release sudo dnf install - y google-authenticator qrencode qrencode-libs

После этого выполните команду google-authenticator для генерации нового секретного ключа в директории.~/.ssh/.

google-authenticator - s ~/.ssh/google_authenticator

Когда вам зададут вопрос: «Хотите ли вы установить временные токены аутентификации?» ответьте «да».

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

SSH-2FA-centos-rhel

Я советую воспользоваться двумя приложениями:

  • Google Authenticator — это одно из самых популярных мобильных приложений для генерации TOTP-кодов. Его можно загрузить через Google Play или Apple App Store на вашем смартфоне.
  • Мобильное приложение Google Authenticator не имеет открытого исходного кода. Если вы не хотите полагаться на Google, рассмотрите возможность использования FreeOTP — это приложение TOTP с открытым исходным кодом, созданное компанией Red Hat.

Сканируйте QR-код с помощью приложения Google Authenticator или FreeOTP на вашем мобильном устройстве. Учтите, что для успешного сканирования полного QR-кода необходимо увеличить окно терминала.

QR-код служит секретным ключом, известным исключительно вашему SSH-серверу и мобильному приложению TOTP. После сканирования QR-кода на экране вашего телефона появится шестизначный одноразовый пароль, который обновляется каждые 30 секунд. Этот одноразовый пароль необходимо ввести в терминал.

ssh google authenticator на Red Hat и CentOS

Теперь в терминале вы должны увидеть код для аварийного доступа. Обязательно сохраните эту информацию в надежном месте на случай потери телефона.

ssh-emergency-scratch-code-rhel-centos

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

Настройка двухфакторной аутентификации SSH на RHEL.

Конфигурация SSH-демона для интеграции с Google Authenticator.

  • Двухфакторная аутентификация с использованием пароля
  • Аутентификация с использованием открытых ключей и двухфакторной аутентификации.
Читайте также:  Как настроить сеть с помощью Netplan в Ubuntu для эффективного управления подключениями

Двухфакторная аутентификация с использованием пароля

Если вы не применяете SSH-ключ, следуйте данным указаниям.

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

sudo nano /etc/ssh/sshd_config

Найдите в файле указанные два параметра и проверьте, чтобы оба были установлены на yes.

UsePAM yes ChallengeResponseAuthentication yes

PAM расшифровывается как модуль для подключаемой аутентификации. Он предлагает удобный способ интеграции различных методов аутентификации в систему Linux. Для активации Google Authenticator с помощью SSH требуется включить PAM и использовать метод «вызов-ответ» для аутентификации.

Чтобы разрешить пользователю root использовать двухфакторную аутентификацию, необходимо найти параметр PermitRootLogin и установить его в значение yes. Он не должен быть установлен как PermitRootLogin no или PermitRootLogin prohibit-password.

PermitRootLogin yes

Сохраните файл и закройте его. Затем внесите изменения в файл правил PAM для SSH-сервера.

sudo nano /etc/pam. d/sshd

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

#двухфакторная аутентификация через Google Authenticator auth required pam_google_authenticator. so secret=$/.ssh/google_authenticator

Двухфакторная аутентификация SSH с использованием Google Authenticator на RHEL

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

sudo systemctl restart sshd

С этого момента для доступа к демон SSH потребуется ввод пароля пользователя и кода подтверждения, который представляет собой одноразовый пароль, созданный с помощью Google Authenticator. На следующем изображении представлен процесс входа в SSH с рабочего стола Ubuntu на сервер CentOS Linux.

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

При использовании SSH-ключа для доступа к серверу SSH, выполните указанные ниже шаги.

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

sudo nano /etc/ssh/sshd_config

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

UsePAM yes ChallengeResponseAuthentication yes

PAM расшифровывается как модуль аутентификации, позволяющий подключать разные методы аутентификации к вашей Linux-системе. Для интеграции Google Authenticator с SSH нужно активировать PAM и настроить аутентификацию по принципу вопрос-ответ.

Читайте также:  S3FS: Монтирование корзин Amazon S3 на системах CentOS и Fedora

Чтобы разрешить пользователю root использовать двухфакторную аутентификацию, необходимо найти настройку PermitRootLogin и изменить её значение на yes. Оно не должно быть установлено на PermitRootLogin no или PermitRootLogin prohibit-password.

PermitRootLogin yes

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

AuthenticationMethods publickey, keyboard-interactive

Сохраните и закройте документ, а затем внесите изменения в файл конфигурации PAM для SSH-демона.

sudo nano /etc/pam. d/sshd

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

#двухфакторная аутентификация через Google Authenticator auth required pam_google_authenticator. so secret=$/.ssh/google_authenticator

Кроме того, закомментируйте следующую строку, добавив # в начале, чтобы отключить проверку пароля.

auth substack password-auth

Аутентификация с использованием открытого ключа и двухфакторной аутентификации в RHEL.

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

sudo systemctl restart sshd

Теперь для доступа в систему необходимо применять SSH-ключ и код подтверждения из Google Authenticator.

Примечания

  • Все пользователи вашего сервера CentOS/RHEL обязаны выполнить команду google-authenticator — s.~Чтобы использовать двухфакторную аутентификацию, необходимо зайти в папку. ssh/google_authenticator и отсканировать QR-код. Если пользователь не настроил эту функцию и попытается войти в систему, появится сообщение об ошибке: “Доступ запрещен (keyboard-interactive)”.
  • Аварийный код служит вашим запасным вариантом. В случае потери телефона вы сможете использовать один из пяти аварийных кодов вместо одноразового пароля для завершения двухфакторной аутентификации. Эти коды предназначены для использования только один раз.
  • Чтобы изменить секретный ключ, достаточно зайти на свой сервер и заново выполнить команду google-authenticator — s.~/.ssh/google_authenticator для внесения изменений в файл.~/.ssh/google_authenticator.

Как деактивировать двухфакторную аутентификацию SSH на серверах CentOS/RHEL.

Измените файл конфигурации правил PAM для SSH-демона.

sudo nano /etc/pam. d/sshd

Поставьте комментарий на следующей строке.

auth required pam_google_authenticator. so secret=$/.ssh/google_authenticator

Сохраните изменения и закройте файл. Если вы включили следующую строку в файл /etc/ssh/sshd_config,

AuthenticationMethods publickey, keyboard-interactive

Исключите способ аутентификации keyboard-interactive.

AuthenticationMethods publickey

Сохраните изменения в файле и закройте его. После этого перезапустите SSH-демон.

sudo systemctl restart sshd

Заключение

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