Google-Authenticator (1)Среди множества способов защиты серверов, сайтов и прочего ценного и нужного, двухфакторная аутентификация представляется, как крайне удобный инструмент. Благо не проблема прикупить токен, либо использовать его софтовую версию на своем Android/IPhone/Blackberry. Около года назад я озаботился прикручиванием двухфакторки к своим серверам, морально готовясь к огню/воде/медным трубам, но оказалось, что это максимально просто. А раз просто, то откладывание на потом просто преступно по отношению к нашим серверам.

В данной статье я расскажу, как быстро настроить двухфакторную аутентификацию на базе pam модуля pam_google_authenticator и подружить SSH с Google токеном, свободно распространяемым через Apple Appstore и Google Play.

ВАЖНО: Двухфакторная аутентификация не будет работать, если для авторицации вы используете ключи.

ВАЖНО: Убедитесь, что время на вашем телефоне и на сервере, на котором будем производить настройку, идентично. В случае расхождения времени вы не сможете попасть на свой сервер!

Если вы не уверены в том, что время на сервере не рассинхронизируется и у вас не настроен ntp клиент, самое время его настроить:

Я использую стабильный Debian Sqeeze, в котором, в отличие от Wheezy, из коробки нужное нам ПО не ставится. Не беда, на странице http://packages.debian.org/wheezy/libpam-google-authenticator ищем последнюю версию под нашу архитектуру и качаем его. В примере я качаю версию под amd64, актуальную на момент написания статьи. Так-же скачаем и поставим генератор qr кодов.

Далее заходим под пользователем, под которым будем ходить с нашим кодом и запускаем:

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

Теперь нам надо ответить на несколько вопросов::

Настроим SSH.

Изменим  значение ключа ChallengeResponseAuthentication на yes:

Перезагрузим SSH:

 Создадим файл, в котором будут описаны условия аутентификации:

Настроим PAM:

Добавим строки после «auth required pam_env.so envfile=/etc/default/locale»:

Если мы все настроили правильно, то при следующей авторизации SSH попросит ввести Verification code.

На этом все. Спасибо за внимание.