Как я могу использовать генератор паролей для аутентификации для удаленного входа?

55

Я хотел бы усилить аутентификацию моих SSH-входов, добавив еще один фактор: устройство генерации пароля или приложение для генерации пароля на моем мобильном телефоне. Единственными очевидными параметрами в настройках по умолчанию являются фиксированный пароль и пара ключей. Как я могу это сделать?

(Если я использую пароль плюс генератор паролей, это обеспечивает двухфакторную аутентификацию (2FA): пароль «то, что я знаю», а пароль «то, что у меня есть».)

Хорхе Кастро
источник

Ответы:

49

Один из способов сделать это с помощью инструмента Google Authenticator .

  1. Установите libpam-google-authenticator Установите libpam-google-authenticator

    • или просто sudo apt-get install libpam-google-authenticator
  2. Изменить, /etc/pam.d/sshdчтобы включить модуль:

    • sudoedit /etc/pam.d/sshd
    • а затем включите эту строку вверху файла и сохраните:

      auth required pam_google_authenticator.so
      
  3. Отредактируйте ваш конфигурационный файл SSH, чтобы включить задачу:

    • sudoedit /etc/ssh/sshd_config а затем измените аутентификацию ответа с:

      ChallengeResponseAuthentication no 
      

      в

      ChallengeResponseAuthentication yes
      

      и затем сохраните файл.

  4. sudo restart ssh перезапустить SSH

  5. Бегать google-authenticator

    • Это даст вам ваш секретный ключ, код подтверждения и аварийные коды. Он также задаст вам несколько вопросов, ограничивающих скорость.

Мобильные приложения:

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

Связанные и полезные:

Обратите внимание, что объединение пароля с одноразовыми паролями является двухфакторной аутентификацией: оно объединяет «то, что вы знаете» (пароль) с «тем, что у вас есть» (устройство генерации пароля). С другой стороны, если вы комбинируете одноразовые пароли с парой ключей SSH, это все о том, «что у вас есть». Когда два фактора аутентификации имеют одинаковый тип, у вас нет двухфакторной аутентификации; это иногда называют «полу-факторной аутентификацией».

Хорхе Кастро
источник
12

Google Authenticator подходит для ваших личных серверов, но вы можете обнаружить, что он не очень хорошо сочетается с вашей существующей инфраструктурой идентификации. Если вы хотите изучить другие варианты, подумайте об использовании RADIUS в качестве протокола аутентификации и плагина pam-radius. Все ориентированные на предприятие системы двухфакторной аутентификации поддерживают радиус. Мы написали документ о том, как добавить двухфакторную аутентификацию WiKID через pam-radius в Ubuntu .

Использование радиуса позволяет связать в других системах помимо SSH тот же сервер аутентификации. Вы также можете направить запросы авторизации через freeradius на LDAP, а затем на сервер 2FA, чтобы отделить авторизацию от аутентификации. Вы можете сделать то же самое с AD, кстати.

nowen
источник
1

Я призываю всех поставить следующую строку в верхней части , а не в нижней части , /etc/pam.d/sshdкак описано выше , ранее (теперь исправлено):

auth required pam_google_authenticator.so

В противном случае ваша система останется открытой для атак методом «грубой силы» на ваш пароль, включающий первую часть двухфакторной аутентификации: ваш пароль.

Сначала вас попросят ввести код подтверждения, а затем пароль (независимо от того, был ли этот код правильным). Если один из них неправильный, вам нужно ввести оба снова. Вы можете настроить его наоборот, но это немного более сложное изменение, чтобы описать его в текущей конфигурации Ubuntu (15.04) sshd по умолчанию.

Для деталей, почему это необходимо, проверьте эту проблему:

https://github.com/google/google-authenticator/issues/514

Маартен
источник