сценарий входа для использования машинного пароля для kinit для получения билета при входе в систему

Я синхронизировал свои пароли/парольные фразы для входа в систему, разблокировки ключевого файла ssh (~/.ssh/id_rsa, см. man ssh-keygen) и для Kerberos. Когда я вхожу в систему, я ввожу пароль один раз, чтобы получить доступ к своей учетной записи на локальном компьютере, и в качестве бонуса мой файл ключа ssh также разблокирован.

Я также хотел бы автоматизировать аутентификацию Kerberos, которая также использует тот же пароль. По сути, мне нужен безопасный способ добиться эффекта, эквивалентного помещению этого в мой «~/.bash_profile»:

# PASSWORD SHOULD NEVER BE HARDCODED - FOR EXPLANATION PURPOSE ONLY
PASSWORD="qwerty" # NEVER DO THIS!!!
echo "$PASSWORD" | kinit -u $KRBUSR

Какие-либо предложения? Понимание того, как ключевой файл разблокирован?


person kidmose    schedule 30.08.2016    source источник
comment
Что именно вы подразумеваете под ключевым файлом? Кэш билетов по умолчанию?   -  person Samson Scharfrichter    schedule 30.08.2016
comment
@SamsonScharfrichter Я имею в виду файл, содержащий мой закрытый ключ, сгенерированный openssh. Текст обновлен.   -  person kidmose    schedule 30.08.2016


Ответы (2)


Ваш вопрос может быть помечен как дубликат этого, но для устранения любая оставшаяся путаница, давайте начнем с четкого утверждения: ИМИТАЦИЯ ВВОДА ИНТЕРАКТИВНОГО ПАРОЛЯ В СЦЕНАРИИ — ЭТО ЧИСТОЕ ЗЛО.

Более того, существует правильный способ автоматического создания билета Kerberos — его можно использовать, например, для аутентификации служб Linux во время загрузки.

  • Шаг 0: запустите klist -e, чтобы получить список алгоритмов шифрования, которые были согласованы с KDC, например "aes256-cts-hmac-sha1-96" и "arcfour-hmac"
    Примечание: устаревшая версия Arc4 по-прежнему разрешена во многих корпоративных каталогах Active Directory, фу!
  • Шаг 1: создайте keytab-файл для вашего принципала с помощью ktutil (например, здесь), добавив одна запись на алгоритм шифрования
  • Шаг 2: сразу после создания файла keytab ограничьте доступ к файлу с помощью chmod, в противном случае любой может использовать этот файл для «кражи вашего идентификатора Kerberos».
  • Шаг 3: используйте kinit -kt <path/to/keytab_file> <principal@REALM> для аутентификации без ввода пароля
  • Шаг 4: вы можете периодически запускать kinit -R для запроса продления билета (для этого продления не требуется пароль) — при условии, что у вас есть возобновляемый билет, срок его действия еще не истек и вы не достигли максимального предела продления < em>(см. ниже)


Дополнительное примечание: алгоритмы шифрования, используемые kinit, соответствуют тем, которые настроены в вашем локальном /etc/krb5.conf под permitted_enctypes и default_tkt_enctypes и default_tgs_enctypes — при условии, что сервер Kerberos (KDC) принимает эти алгоритмы.

Дополнительное примечание: срок действия билета, созданного kinit, настроен в /etc/krb5.conf до ticket_lifetime -- при условии, что он не превышает лимита KDC (обычно 10 часов).
Продлеваемый срок действия составляет менее renew_lifetime -- при условии и т. д. ( нулевой срок действия означает, что билет будет помечен как невозобновляемый)


Между прочим, если ваш Linux-компьютер использует SSSD-аутентификацию, поддерживаемую Active Directory, вы можете активировать автоматическое создание и обновление своего билета Kerberos с такими свойствами, как:

ldap_krb5_init_creds = True
krb5_ccname_template = FILE:/tmp/krb5cc_%U
krb5_lifetime           =  86400
krb5_renewable_lifetime = 604800
krb5_renew_interval     =   7200
person Samson Scharfrichter    schedule 30.08.2016
comment
Извините, что не ясно дал понять, что фрагмент должен был проиллюстрировать мою цель: я вообще не хочу взаимодействовать с kerberos - аутентификация должна происходить в фоновом режиме. Обновлено соответственно. - person kidmose; 30.08.2016
comment
Я не согласен с вашим предложением о дублировании: мой вопрос отличается (по крайней мере, то, что у меня было в голове. Теперь, когда я отредактировал вопрос, это может быть яснее). Однако решение то же самое. Тем не менее я бы сказал unix.stackexchange .com/questions/12021/ имеет лучшее качество и поэтому должен быть ссылкой - person kidmose; 30.08.2016
comment
Не заставит ли меня продление жизни время от времени повторять шаг 1? Тогда ваше решение просто предлагает компромисс между сложностью аутентификации и частотой ее выполнения. Это не устраняет этап аутентификации путем повторного использования введенного пароля для входа в систему и разблокировки ключа ssh. - person kidmose; 30.08.2016
comment
@kidmose: да, мой ответ предполагает, что вы используете кратковременные интерактивные сеансы. Если вы хотите, чтобы билет обновлялся в фоновом режиме, просто используйте два задания CRON — одно, которое воссоздает билет (используя keytab) каждое воскресенье в полдень, а второе обновляет билет каждые 8 ​​часов. . При стандартном сроке службы 10 часов / 7 дней. - person Samson Scharfrichter; 30.08.2016

Это должно быть решено с помощью PAM: https://unix.stackexchange.com/questions/12021/automatic-kerberos-ticket-initialization-on-login

Хотя я не добился успеха. Возможно, потому что мои имена пользователей не совпадают между локальным компьютером и kerberos или потому что я использую heimdal реализацию kerberos.

person kidmose    schedule 30.08.2016