Я использую Ubuntu.
Мне просто интересно, возможно ли иметь libpam-google-authenticator (который позволяет вам входить в систему с помощью кода, сгенерированного вашим телефоном) И настроить аутентификацию сертификата для совместной работы, и если это возможно, как бы я поступил настраивая это. Таким образом - чтобы войти в мою учетную запись, вам понадобятся мой пароль, мой телефон (и его код доступа) И мой сертификат / закрытый ключ и его пароль.
Я заставил обоих работать независимо, но никогда не мог заставить их работать вместе. Я уверен, что как-то это возможно.
Спасибо.
Ответы:
Это можно сделать, связав вместе модули PAM. Но прежде чем углубляться в детали:
Неправильная настройка PAM может и не позволит вам войти в вашу систему
К счастью, вы всегда можете загрузиться в однопользовательском режиме и устранить проблему, но имейте в виду, что PAM - это не то, с чем вы хотите связываться больше, чем нужно.
Во всяком случае, идея в том , что можно использовать для штабелирования модулей PAM , чтобы убедиться , что
pam-google-authenticator
,pam_unix
(это проверяет ваш пароль) и модуль сертификата все должны преуспеть , чтобы позволить вам доступ. По умолчанию PAM настроен так, что любой модуль аутентификации может аутентифицировать вас, пропуская остальные.В /etc/pam.d/common-auth рядом с верхней частью вы увидите строку, которая выглядит примерно так:
Это говорит PAM о том, что он должен быть
pam_unix.so
успешным, пропустит следующие два правила (которые обычно являются другим модулем аутентификации, а затемpam_deny.so
) и перейдет к дополнительным модулям. Однако, если модуль выйдет из строя, он будет проигнорирован, и управление перейдет к следующему модулю в цепочке. Это продолжается в каждом модуле аутентификации до тех пор, пока либо элемент управления не перейдет к необязательному блоку, либо PAM не ударит pam_deny.so и не завершится с ошибкой.Это можно использовать для обеспечения того
pam-google-authenticator
, чтобыpam_unix.so
все модули PAM сертификата все успешно выполнялись, чтобы предоставить вам доступ. Я не знаю названия модуля аутентификатора Google или модуля сертификатов, который вы используете, но вы сможете найти их в своем файле общей аутентификации. Итак, поместив что-то вроде этого вверху:Замена
<n>
на количество модулей между модулем pam_permit.so здесь и следующимpam_permit.so
модулем - другими словами, это должно быть установлено на код [success = n default = ignore] самого верхнего модуля auth + 1. Этот синтаксис немного фанк , но по существу пропускает модули авторизации после того, как вышеупомянутые модули преуспели.Конечно, вам может быть интересно, как ограничить эту трехэтапную аутентификацию только вашей учетной записью. Это может быть сделано с
pam_succeed_if.so
модулем, и должно быть вставлено выше трехэтапного блока аутентификации, описанного выше:Где
<username>
заменяется ваше имя пользователя. Эта строка просто говорит, что если pam_succeed_if.so будет успешным (иначе ваше имя пользователя совпадает с именем пользователя в этой строке), тогда PAM должен продолжить работу со следующими модулями, которые являются трехэтапными модулями аутентификации. В противном случае PAM должен перейти к реальным модулям, которые находятся на расстоянии 4 модулей от этого.Чтобы сопоставить несколько вещей, например членство в группе вместе с определенным именем пользователя, необходимо использовать несколько строк, например:
Прежде чем делать что-либо из этого, я бы сделал резервную копию файла общей аутентификации, а также ознакомился с однопользовательским режимом и тем, как восстановить старый файл в случае чрезвычайной ситуации. Эта конфигурация не была проверена мной, но она должна работать.
Чтобы проверить это в первый раз, откройте одну или две корневые оболочки и просто оставьте их в покое. Они действуют как запасные варианты на случай, если что-то пойдет не так, поскольку вы можете легко заменить обычную аутентификацию резервной копией. Затем внесите эти изменения. Затем попробуйте использовать
su
для входа в свою учетную запись пользователя - вам необходимо пройти трехэтапный процесс аутентификации.Полная документация для
pam_succeed_if.so
модуля может быть найдена в http://linux.die.net/man/8/pam_succeed_ifисточник
ChallengeResponseAuthentication
иUsePAM
установить «да», а затем установить строки, подробно описанные в моем ответе выше, либо в /etc/pam.d/sshd, либо в /etc/pam.d/common. -auth, в зависимости от того, хотите ли вы выполнить это для всех входов в систему или только для SSH. Не забудьте удалить строку-заполнитель pam_certificate_auth.so и в результате изменить строку [success = <n>.Я прочитал этот пост и подумал, что он звучит круто - вот как я получил трехфакторную аутентификацию для работы. Я написал пост в блоге об этом здесь .
По сути, я настроил Google Authenticator и пароль в PAM, а затем настроил аутентификацию с открытым ключом в OpenSSH (это обходит два других), и, наконец, OpenSSH потребовал также аутентификации через PAM (последняя строка)
Из / etc / ssh / sshd_conf
источник
Только Pubkey + GoogleAuth нужно добавить в начало вашего /etc/pam.d/sshd
Я полагаю, у вас есть OpenSSH> = 6.2 и sshd_config отредактированы
Для большей безопасности добавьте несколько дополнительных настроек: D
источник