Я доказал, что аутентификация UNIX / AD Kerberos работает без наличия файла keytab, поэтому я хотел бы знать, стоит ли мне беспокоиться об этом (учитывая, что мне понадобится отдельная keytab для каждого сервера, на котором я хочу предоставлять службы аутентификации AD на ).
Основное использование локальной keytab во время локальной аутентификации - защита от спуфинга KDC.
Аутентификация входа в систему Kerberos работает, запрашивая TGT из Kerberos KDC, а затем расшифровывая его с помощью ключа, сформированного из пароля, введенного локально. Если эта расшифровка работает, вход в систему считается успешным (если нет keytab). Проблема с этим подходом заключается в том, что злоумышленник может одновременно подделывать ответ KDC с помощью TGT, зашифрованного паролем, выбранным злоумышленником. Если система получит этот ответ до реального ответа, она с радостью расшифрует его паролем злоумышленника, а затем посчитает аутентификацию успешной. Это довольно легко сделать, если у вас есть система в той же локальной сети, учитывая, что Kerberos является протоколом UDP.
Если существует локальная keytab, процесс входа в систему делает еще один шаг: он запрашивает у KDC билет службы для принципала, хранящегося в локальной keytab, а затем проверяет этот билет, расшифровывая его с помощью ключа в keytab. KDC злоумышленника не знает закрытого ключа keytab в системе и поэтому не выполнит этот шаг. (Это, конечно, означает, что системная вкладка клавиш должна быть заблокирована, чтобы она была доступна только пользователю root, так как любой, кто имеет доступ к этой вкладке, может успешно атаковать систему.)
(Требования: я являюсь автором модуля Kerberos PAM, используемого в Debian и Ubuntu.)