Как настроить ключ U2F (такой как YubiKey) для Аутентификации С 2 факторами в масштабе всей системы?

Официальные Yubico ведут только покрытия, разрешающие его для входа в систему GDM, как я могу включить его для всех логинов включая TTY, ssh, sudo, и т.д.?

2
задан 1 September 2018 в 04:35

1 ответ

Отказ от ответственности: Это руководство изменяет конфигурацию PAM по умолчанию, которая имеет потенциал для блокировки Вас из Вашего компьютера. Я не беру на себя ответственности ни за какую вредность, которая следует из этих инструкций. Как всегда, создайте резервную копию всех файлов прежде, чем изменить их, имейте живой диск, готовый вернуться изменения при необходимости и исследовать что-либо, в чем Вы не уверены понять то, что происходит.
Я протестировал это с YubiKey 4 и подтверждаю, что он работает. Это должно работать с любым ключом защиты, который поддерживает спецификацию U2F включая большую часть YubiKeys.

Это основано на руководстве Yubico с некоторыми изменениями в объеме защиты.


1. Инструменты U2F установки от PPA Yubico

Во-первых, включите PPA Yubico и установите модуль U2F PAM:

sudo add-apt-repository ppa:yubico/stable && sudo apt-get update
sudo apt-get install libpam-u2f

2. Настройте свой ключ (ключи)

Руководство Yubico создает конфигурацию в Вашем корневом каталоге, но если Ваш корневой каталог будет зашифрован, то Вы будете не мочь получить доступ к этому на перезагрузке. Для обхождения этого мы должны создать конфигурацию где-нибудь, которая не шифруется. Это до персонального предпочтения, но здесь мы создадим его под /etc.

pamu2fcfg | sudo tee /etc/u2f_keys

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

Если Вы хотите добавить дальнейшие ключи к своей учетной записи, то выполненный следующая команда вместо этого:

pamu2fcfg -n | sudo tee -a /etc/u2f_keys

(Наличие больше чем одного ключа является хорошей идеей: если Ваш первичный ключ теряется или поврежденный, у Вас все еще есть доступ к Вашей учетной записи с помощью другого ключа (ключей).)

3. Протестируйте свою ключевую конфигурацию

Для тестирования этой конфигурации, мы сначала включим его для sudo, управляют только. Удалите ключ из компьютера и редактирования /etc/pam.d/sudo:

sudo nano /etc/pam.d/sudo

Добавьте следующую строку ниже @include common-auth:

auth       required   pam_u2f.so authfile=/etc/u2f_keys

Откройте новое окно терминала и работайте sudo echo test. Вам предложат Ваш пароль, и затем команда перестанет работать. Это ожидается, поскольку Ваш ключ не находится в компьютере.

Вставьте свой ключ, работайте sudo echo test снова. Введите свой пароль и коснитесь своего ключа, когда он запрашивает касание, после которого должен Ваш терминал echo test.

Это подтверждает хорошую конфигурацию, и мы можем продолжить включать это для всей аутентификации.Править /etc/pam.d/sudo снова, и удалите строку, которую мы добавили.

4 Включения 2FA для всей аутентификации

Это - точка, где мы отклоняемся от руководства Yubico, поскольку это покрывает включение 2FA для GDM только, тогда как мы хотим включить его для всей аутентификации включая TTY, SSH, sudo и т.д. Сначала мы должны отредактировать /etc/pam.d/common-auth:

sudo nano /etc/pam.d/common-auth

Добавьте следующую строку в конце файла:

auth    required   pam_u2f.so nouserok authfile=/etc/u2f_keys cue
  • nouserok средства, что пользователю без связанного ключа не предложат 2FA и как таковой, все еще смогут войти в систему. Если Вы опустите эту опцию, то пользователь без ключа не сможет войти в систему.
  • authfile говорит модулю искать файл в /etc вместо местоположения по умолчанию (корневой каталог).
  • cue запросит касание с сообщением ("Коснитесь устройства").

(См. документацию Yubico для полного списка опций.)

На данном этапе мы закончены. Любая попытка входа в систему потребуется, чтобы использовать ключ для 2FA. Следующее является дополнительным.

5. Отключение 2FA для sudo

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

sudo nano /etc/pam.d/sudo

Удалите строку, которая говорит @include common-auth. Затем, скопируйте и вставьте содержание /etc/pam.d/common-auth в том же месте как строка мы удалили, но удалите строку, которую мы добавили прежде, чем включить модуль U2F. Этот последний момент является критическим: если Вы оставите ту строку внутри, то Вам все еще будет нужен ключ для выполнения sudo. Удаление той строки устраняет необходимость ключа для выполнения sudo.

Можно адаптировать эту процедуру, если Вы хотите отключить 2FA для ssh или других сценариев аутентификации. Если Вы работаете ls /etc/pam.d, это покажет доступные файлы: каждого называют в честь сценария, которым они управляют. Еще раз не делайте этого, если Вы не знаете то, что Вы делаете и файлы резервных копий перед внесением изменений.

6. Обеспечение физического доступа

Конечно, любой может отключить это путем начальной загрузки с живым CD/картой памяти и возвращения изменений, поэтому если модель угрозы будет включать физический доступ, то Вы захотите включить полное системное шифрование, отключить начальную загрузку USB/CD и установить пароль BIOS или другой метод, чтобы препятствовать тому, чтобы третьи лица вмешались. Помните, Вы только так же в безопасности как самая слабая ссылка в Вашей конфигурации.

1
ответ дан 2 December 2019 в 04:42

Другие вопросы по тегам:

Похожие вопросы: