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

Привилегии при выполнении sudo другому пользователю домена

Допустим, у меня есть корпоративный домен mydomain с помощью MS Active Directory. В домене у меня есть пользователи myuser и youruser. Теперь на одной конкретной машине Ubuntu mymachine, myuser имеет права sudo и делает sudo su youruser (или sudo -u youruser sh). Поскольку у myuser есть необходимая конфигурация sudoers, ему не нужно вводить пароль пользователя, и он фактически станет вашим пользователем. который машина.

  1. Какого рода youruser привилегии будут myuser есть в этот момент? Очевидно, если youruser также есть домашний каталог на машине, myuser теперь может получить к нему доступ и прочитать свои личные локальные файлы. Но что произойдет, если вы попытаетесь получить доступ к ресурсу сетевого домена с помощью Kerberos, Samba и т. Д.? Я думаю, так как он никогда не входил youruserон не аутентифицирован как пользователь домена, у него нет билета Kerberos и т. д. Итак, если есть сетевая служба, которая проверяет членство в группах по его идентификатору пользователя, это тоже не сработает? Как это работает? Считается ли он другим пользователем, скажем, mymachine\\youruser в отличие от mydomain\\youruser?

  2. Предположим, на машине запущена веб-служба как демон, использующая выделенного пользователя домена. myserviceuser. Если этой веб-службе требуется доступ к сетевым ресурсам, т. Е. Аутентификация с помощью Kerberos, как следует настроить демон, например, из сценария выскочки? Обычно вы начинаете с чего-то вроде sudo -u myserviceuser <cmd>, но с учетом приведенных выше предположений предоставит ли это веб-службе какие-либо права на доступ к сетевым ресурсам? Разве нельзя где-то вводить пароль для этого пользователя?

ИМО, по этому поводу не хватает четкой документации.

  1. Вы правы - если служба защищена Kerberos, то su / sudo недостаточно для обхода необходимой авторизации (ЕСЛИ целевой пользователь не имеет кэшированного билета, потому что он в настоящее время вошел в систему, или keytab). Большинство ресурсов (например, локальная файловая система) полагаются на uidnumber и gidnumber для идентификации пользователя, и их можно обойти с помощью root / sudo доступа.

  2. Это забавный вопрос, с которым я сейчас работаю. Скажите сервисный аккаунт Apache требуется доступ к керберизованному общему ресурсу NFS. Вам нужно экспортировать keytab для Apache в локальную файловую систему и источник, который при запуске службы периодически обновляет свой билет, возможно, через cron. RHEL7 имеет gssproxy, который, кажется, упрощает это, но я еще не дошел до этого момента.

Keytab - это фактически сохраненные учетные данные. Если кто-то может получить к нему доступ, он может выдать себя за этого пользователя. Экспорт новой вкладки в IPA и AD изменяет пароль учетной записи.

Microsoft kerberos немного отличается, но большинство правил все еще применяется.

У меня аналогичная ситуация с домашними каталогами autofs в каталогах с Kerberized NFSv4:

  • Если я прихожу с другой керберизованной машины, я могу подключиться к целевой машине по SSH с перенаправляемым TGT, и моя учетная запись на целевой машине обычно входит в систему с моим автоматически смонтированным домашним каталогом.
  • Если я прихожу не с другой керберизованной машины, я могу (в соответствии с локальным ACL) войти в систему с паролем на этой машине и заставить PAM сгенерировать билет. В этой ситуации также появляется автоматически смонтированный домашний каталог.
  • Я не могу войти на этот компьютер, если я зависим от учетной записи, имеющей запись в ~/.ssh/authorized_keys потому что домашний каталог недоступен для демона SSH на цели. Он не недоступен, потому что он отключен, скорее он недоступен, потому что демон SSH не имеет TGT для доступа к домашнему каталогу, содержащему authorized_keys файл.
  • Как только я получил доступ к машине, независимо от sudo разрешения, я не могу sudo su в учетную запись другого пользователя без недоступности их домашнего каталога - опять же, у меня нет их TGT.
  • На этой машине я жестяная банка su в свою учетную запись и иметь доступ к их домашнему каталогу при входе в систему, если у меня есть их пароль, потому что вход через su проходит через PAM, и это дает мне TGT, который позволяет успешно выполнить автоматическое монтирование.
  • На архитектурах, где TGT хранится в доступном хранилище ключей (например, в системной цепочке ключей), TGT не стирается при выходе из системы, если только не сделано явное kdestroy. Теперь я могу sudo su в учетную запись этого пользователя и домашний каталог автомонтирования будет успешным.

Общая тенденция здесь заключается в том, что TGT недоступен, если перенаправляемый билет не передан с другого компьютера или если у пользователя есть пароль для получения билета с какой-либо формой входа в систему или kinit.

Разрешение, что учетные записи служб могут иногда принимать пользователей (например, для централизации сложной конфигурации, такой как ~/.kube/) недостаточно поместить keytab в каталог учетной записи по той же причине, что и authorized_keys не работает. Недостаточно также полагаться на билеты с длительным сроком службы и задания cron для пополнения системной связки ключей, потому что при перезагрузке связка ключей будет стерта, и она будет недоступна до следующего вызова cron (что, вероятно, займет некоторое время). Также беспорядок настраивать подобный cron на кластере машин.