На этом уроке мы опишем необходимые шаги для настройки двухфакторной аутентификации (2fa) с помощью Google Authenticator на Ubuntu 16.04 VPS. Это приложение включает в себя реализацию единовременных генераторов кода доступа для нескольких мобильных платформ. Этот метод добавляет еще один уровень защиты для вашего сервера, добавив дополнительный шаг к основной процедуре регистрации.
Войдите на сервер с помощью SSH с правами суперпользователя
ssh root@IP_Address
Обновление всех установленных пакетов :
apt-get update && apt-get upgrade
Установите пакет Google Authenticator.
apt-get install libpam-google-authenticator
После того, как пакет установлен, запустите программу Google-authenticator, создайте ключ для пользователя с помощью которого вы будете входить. Программа может генерировать два типа маркеров аутентификации – time-based и one-time tokens. Time-based пароли будут изменяться случайным образом в определенное время, и one-time пароли действительны для одной проверки подлинности.
В нашем случае мы будем использовать пароли, основанные на время. Запустите программу для создания ключей
google-authenticator
Вам будет предложено time-based аутентификация.
Do you want authentication tokens to be time-based (y/n) y
Большой QR-код будет сгенерирован в вашем терминале. Вы можете сканировать код с приложением аутентификатора на телефоне Android/IOS/Windows, или планшета или ввести секретный ключ, созданный на экране.
Аварийный стрэч код будет также генерироваться. Вы можете использовать эти коды для аутентификации в случае утери мобильного устройства.
Your emergency scratch codes are: 35636725 07846932 87496712 94764389 78545233
Сохраните параметры аутентификации для корневого пользователя, ответив YES на следующий вопрос
Do you want me to update your "/root/.google_authenticator" file (y/n) y
Далее, вы можете настроить аутентификатор для генерации одноразовых паролей. Так как они длятся 30 секунд, все сгенерированные пароли могут быть использованы один раз.
Do you want to disallow multiple uses of the same authentication token? This restricts you to one login about every 30s, but it increases your chances to notice or even prevent man-in-the-middle attacks (y/n) y
Вы можете использовать следующий параметр, если у вас есть проблемы при синхронизации времени между устройствами, поэтому мы не будем использовать эту опцию
By default, tokens are good for 30 seconds and in order to compensate for possible time-skew between the client and the server, we allow an extra token before and after the current time. If you experience problems with poor time synchronization, you can increase the window from its default size of 1:30min to about 4min. Do you want to do so (y/n) n
Следующий параметр предотвращает атаки грубой силы. У вас будет только три шанса за 30 секунд, чтобы ввести правильный пароль.
If the computer that you are logging into isn't hardened against brute-force login attempts, you can enable rate-limiting for the authentication module. By default, this limits attackers to no more than 3 login attempts every 30s. Do you want to enable rate-limiting (y/n) y
Теперь у нас есть настроенное приложение Google Authenticator и следующим шагом является настройка параметров проверки подлинности в OpenSSH. Для этого откройте файл «/etc/pam.d/sshd» и добавьте следующую строку в конец файла:
# vim /etc/pam.d/sshd auth required pam_google_authenticator.so
Сохраните изменения и откройте файл “/etc/ssh/sshd_config” и включите вызов аутентификации Response.
# vim /etc/ssh/sshd_config ChallengeResponseAuthentication yes
Сохраните файл и перезапустите SSH на сервере для того, чтобы изменения вступили в силу.
systemctl restart ssh
Если вы внимательно следили за этим учебником, двухфакторная аутентификация включена на сервере и каждый раз, когда вы пытаетесь войти в свой Ubuntu VPS через SSH вы должны ввести пароль вашего пользователя и проверочный код, генерируемое приложением аутентификации Google на мобильном устройстве.