Как защитить SSH при помощи Google Authenticator: двухфакторная авторизация

Хотите защитить свой SSH сервер при помощи удобной двухфакторной авторизации? Google предоставляет все необходимое программное обеспечение для интеграции Google Authenticator’s time-based one-time password (TOTP) c вашим SSH сервером. Вам будет необходимо ввести дополнительный код, полученный на ваш телефон, когда вы подключаетесь.

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



Установка Google Authenticator

Для реализации многофакторной авторизации с помощью Google Authenticator нам понадобится свободно распространяемый модуль Google Authenticator PAM. PAM расшифровывается как “pluggable authentication module”, или, по-русски, подключаемый авторизационный модуль. Этот модуль является одним из способов реализовать многие формы авторизации в системе Linux.

Модуль Google Authenticator PAM можно найти в виде простого в установке пакета в репозиториях вашей операционной системы, например, в репозитории Ubuntu. Если же в репозиториях вашего дистрибутива Linux не содержится этот пакет, вам придется скачать файлы со страницы Google Authenticator в хранилище Google Code и самостоятельно скомпилировать его.

Для установки модуля Google Authenticator PAM на Ubuntu, запустите следующую команду:

sudo apt-get install libpam-google-authenticator


(Имейте в виду, эта команда всего лишь установит модуль PAM на вашу систему, а активировать его для логина через SSH нам придется вручную.)



Создание ключа авторизации

Залогиньтесь как пользователь, от имени которого вы в дальнейшем будете логиниться удаленно и запустите команду google-authenticator, чтобы создать секретный код для этого пользователя.

Разрешите команде обновить файл Google Authenticator, нажав Y. Затем вам нужно будет ответить на несколько вопросов, которые позволят вам ограничить использование одинаковых временных ключей доступа, увеличить период действия ключа доступа или ограничить возможные попытки доступа (чтобы снизить возможность хакерской атаки). Возьмите на заметку, что при использовании этих функций вам придется пожертвовать некоторой простотой в использовании системы.



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



Введите секретный ключ в приложении Google Authenticator app на вашем мобильном телефоне (официальные приложения доступны для Android, iOS и Blackberry). Вы можете также воспользоваться функцией сканирования штрих-кода. Для этого перейдите по ссылке, которая отображается сверху вывода команды и отсканируйте QR-код с помощью камеры телефона.



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



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

Активация Google Authenticator
Далее, вам необходимо будет настроить Google Authenticator для логина по SSH. Для этого откройте файл /etc/pam.d/sshd в вашей системе (например, с помощью команды sudo nano /etc/pam.d/sshd) и добавьте в файл следующую строку:

auth required pam_google_authenticator.so


Затем откройте файл /etc/ssh/sshd_config, найдите строку ChallengeResponseAuthentication и измените ее следующим образом:

ChallengeResponseAuthentication yes


(если строки ChallengeResponseAuthentication еще не существует, просто добавьте строку выше в файл)

Ну и, наконец, перезапустите SSH, чтобы ваши изменения вступили в силу:

sudo service ssh restart




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



Данная статья является вольным переводом статьи с howtogeek.com




Вас также может заинтересовать:

Двухфакторная аутентификация SSH с использованием YubiKey
МТС просит государство защитить себя от Skype
SIM-карта в nanoSIMку при помощи ножниц
Создание сайтов при помощи CMS e107
Перехват WEB трафика через протокол WPAD при помощи Intercepter-NG
Facebook сэкономил 1,2 миллиарда долларов при помощи внедрения принципов Open Compute