Image

База знаний → Настройка двух факторной авторизации в SSH используя Google Authenticator на Centos 7

[Виртуальные сервера]
Дата публикации: 29.11.2022

На службу SSH приходится наибольшее число атак по подбору паролей, Вы только запустили свой сервер и уже через несколько часов в логах можно увидеть попытки подключения с неизвестных ip адресов. Чтобы уменьшить число попыток, мы сразу рекомендуем в настройках sshd сменить номер порта. Конечно же стоит указать пароль хорошей сложности используя буквы, символы и числа с учетом регистра. Для linux серверов как правило Вам необходимо будет помнить 2 пароля, 1 для обычного пользователя, второй для root. Если серверов несколько то как правило прибегают к различным приложениям, которые будут хранить настройки сессий (хост, логин и пароль), что вполне нормально до тех пор пока злоумышленник не получит доступ к Вашей рабочей станции. В любом случае встречаются зараженные сайты, софт и т.д. Получается нельзя быть полностью уверенным в том, что эти данные в сохранности и доступны только Вам. На этот случай есть решение.

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

Установим необходимые пакеты

yum install pam pam-devel google-authenticator 

Установим мобильное приложение

 

Настройка

По умолчанию логин от пользователя лучше запретить в настройках sshd, соответственно если Вы только начали настройку нового сервера, создайте пользователя. задайте ему пароль и зайдите под ним командой:

adduser username
passwd username
su username


Запустите команду из под того пользователя для которого настраиваете двухфакторную аутентификацию:

google-authenticator

Нажмите «y» в первом сообщении, где вас спросят, хотите ли вы обновить файл ./google_authenticator. Когда вам будет предложено запретить многократное использование, снова нажмите «y», чтобы другой пользователь не мог использовать ваш код. Для остальных параметров нажмите «y», поскольку все они повышают эффективность этого программного обеспечения.

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

Теперь настроим PAM чтобы применить все наши настройки к службе SSH, данные действия уже нужно делать от пользователя root

vi /etc/pam.d/sshd

Добавьте строки в самое начало файла, чтобы выглядело так:

#%PAM-1.0
auth required pam_unix.so no_warn try_first_pass 
auth required pam_google_authenticator.so

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

vi /etc/ssh/sshd_config

Найдите параметр ChallengeResponseAuthentication no", и поменяйте "no" на "yes". Сохраните изменения и перезапустите службу.

service sshd restart

Теперь настройте приложение на мобильном устройстве. Найдите опцию «вручную ввести ключ» и нажмите на нее. Введите секретный ключ, который вы записали ранее, и сохраните. Теперь появится код, который Вам понадобится для ввода в поле Verification code после ввода пароля.

Модификации:

  • Смена последовательности ввода:

Мы специально задали последовательность логин - пароль и потом уже код верификации. Если Вы хотите чтобы сначала вводить код из приложения и потом пароль просто удалите первую строку, чтобы файл выглядел так:

#%PAM-1.0
auth required pam_google_authenticator.so
  • Двухфакторная аутентификация при заходе под root

К примеру Вы хотите заходить на сервер под обычным пользователем с логином и паролем, а при вводе команды su - вводить пароль от root и код из приложения. Запустите приложение ./google_authenticator из под root как делали до этого. Настройте мобильное приложение с новым кодом и добавьте в файл:

vi /etc/pam.d/su

в самое начало строки:

#%PAM-1.0
auth required pam_unix.so no_warn try_first_pass 
auth required pam_google_authenticator.so


Готово, службу при этом перезапускать не нужно. Теперь при попытке зайти под root команда будет требовать код верификации из приложения.


P.S. Рекомендуем делать проверку в другой ssh сессии во избежании ошибок, у Вас будет возможность вернуться и исправить.





Нет комментариев