Официальные Yubico ведут только покрытия, разрешающие его для входа в систему GDM, как я могу включить его для всех логинов включая TTY, ssh, sudo, и т.д.?
Отказ от ответственности: Это руководство изменяет конфигурацию PAM по умолчанию, которая имеет потенциал для блокировки Вас из Вашего компьютера. Я не беру на себя ответственности ни за какую вредность, которая следует из этих инструкций. Как всегда, создайте резервную копию всех файлов прежде, чем изменить их, имейте живой диск, готовый вернуться изменения при необходимости и исследовать что-либо, в чем Вы не уверены понять то, что происходит.
Я протестировал это с YubiKey 4 и подтверждаю, что он работает. Это должно работать с любым ключом защиты, который поддерживает спецификацию U2F включая большую часть YubiKeys.
Это основано на руководстве Yubico с некоторыми изменениями в объеме защиты.
Во-первых, включите PPA Yubico и установите модуль U2F PAM:
sudo add-apt-repository ppa:yubico/stable && sudo apt-get update
sudo apt-get install libpam-u2f
Руководство Yubico создает конфигурацию в Вашем корневом каталоге, но если Ваш корневой каталог будет зашифрован, то Вы будете не мочь получить доступ к этому на перезагрузке. Для обхождения этого мы должны создать конфигурацию где-нибудь, которая не шифруется. Это до персонального предпочтения, но здесь мы создадим его под /etc
.
pamu2fcfg | sudo tee /etc/u2f_keys
Когда Ваше устройство высветится, коснитесь контакта для соединения ключа с учетной записью.
Если Вы хотите добавить дальнейшие ключи к своей учетной записи, то выполненный следующая команда вместо этого:
pamu2fcfg -n | sudo tee -a /etc/u2f_keys
(Наличие больше чем одного ключа является хорошей идеей: если Ваш первичный ключ теряется или поврежденный, у Вас все еще есть доступ к Вашей учетной записи с помощью другого ключа (ключей).)
Для тестирования этой конфигурации, мы сначала включим его для 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
снова, и удалите строку, которую мы добавили.
Это - точка, где мы отклоняемся от руководства 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. Следующее является дополнительным.
Лично, я не хотел должным быть использовать свой ключ для выполнения 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
, это покажет доступные файлы: каждого называют в честь сценария, которым они управляют. Еще раз не делайте этого, если Вы не знаете то, что Вы делаете и файлы резервных копий перед внесением изменений.
Конечно, любой может отключить это путем начальной загрузки с живым CD/картой памяти и возвращения изменений, поэтому если модель угрозы будет включать физический доступ, то Вы захотите включить полное системное шифрование, отключить начальную загрузку USB/CD и установить пароль BIOS или другой метод, чтобы препятствовать тому, чтобы третьи лица вмешались. Помните, Вы только так же в безопасности как самая слабая ссылка в Вашей конфигурации.