Назад | Перейти на главную страницу

Почему в Kerberos HOWTO указано безопасное копирование вкладок ключей на хост? Сетевой кадмин небезопасен?

В Kerberos HOWTO часто встречаются слова, похожие на эти:

Безопасно перенесите (через флэш-накопитель, диск или зашифрованное соединение) keytab на клиентский хост.

Является ли вход на клиентский хост как root, запуск kinit для получения учетных данных для административной учетной записи и запуск kadmin от клиента недостаточно хорош?

Я думаю, что это в основном пережиток старых выпусков MIT Kerberos, в которых были либо проблемы с безопасностью, либо более низкая функциональность (kadmin в сетевом режиме раньше не мог делать ряд вещей; тебе пришлось бежать kadmin.local на главном KDC). Конечно, Хеймдаль никогда не беспокоился о подобных ограничениях и на самом деле немного упростил и оптимизировал процесс (ktutil get). Кроме того, большая часть официальной документации MIT Kerberos предполагает наличие большого количества паранойи, которую я редко встречал при реальном использовании где-либо, например, предположение, что любые учетные данные безопасности всегда вручную копируются из системы в систему.

Также с этим связана «проблема ktadd» Массачусетского технологического института. Команда MIT kadmin ktadd не извлекает ключи из KDC; скорее, он генерирует новые ключи, записывает их в keytab, а затем заменяет ключи для принципала в KDC. Только kadmin.local имеет возможность извлекать ключи; RPC-интерфейс kadmin их просто не вернет. Это рекламируется как функция безопасности, не позволяющая скомпрометированной учетной записи kadmin считывать ключи всех пользователей. Проблема в том, что это означает, что одна ошибочная команда ktadd сломает работающую службу: если она не обновит правильную keytab, KDC немедленно начнет выдавать билеты с новыми ключами, которых у службы нет. Если у вас есть несколько серверов для одной и той же службы (скажем, за балансировщиком нагрузки), вы не можете просто перейти к ним один за другим и использовать ktadd для создания или обновления их вкладок ключей: каждый раз, когда вы запускаете его, вы меняете ключи и ломаете все остальные экземпляры службы. Вы должны создать keytab один раз, а затем распространить его отдельно (например, с помощью scp).

Операционная опасность этой функции безопасности настолько велика, что много лет назад я взломал наш MIT KDC, чтобы добавить извлечение ключей в протокол RPC и сделать его по умолчанию для нашей команды ktadd. У Хеймдаля такой проблемы нет.