Sudo/Domain: различия между версиями

Материал из ALT Linux Wiki
Нет описания правки
Строка 38: Строка 38:
=== Samba DC ===
=== Samba DC ===
Не смотря на всю схожесть с AD, конфигурация данного решения требует некоторых корректив
Не смотря на всю схожесть с AD, конфигурация данного решения требует некоторых корректив
== Настройка клиентской части ==
* Для того чтобы правила sudo из LDAP можно было использовать нужно установить пакет libsss_sudo
apt-get update; apt-get install libsss_sudo
* Сконфигурировать службу sssd (/etc/sssd/sssd.conf)
[sssd]
services = nss,pam,sudo
....
[domain/TEST.ALT]
sudo_provider = ad
#ad_sudo_search_base не обязателен если вместо samba используется ms ad
ad_sudo_search_base = ou=sudoers,dc=test,dc=alt
* Добавить в /etc/nsswitch.conf
sudoers: files sss


== Примечания ==
== Примечания ==

Версия от 10:56, 4 декабря 2023


Предназначение

В доменной среде удобно размещать правила sudo не в виде отдельных файлов в /etc/sudoers.d, а хранить их в LDAP каталоге. Именно это реализовано при использовании домена на базе FreeIPA. Но и в среде AD/Samba такая же возможность присутствует и не сложна в настройке. Ниже я опишу 2 варианта конфигурации исходя из того на базе чего поднят домен.

Для того, чтобы иметь возможность хранить правила sudo в LDAP, нужно расширить текущую схему добавив класс sudoRole и его атрибуты.

Формат правил sudo

Класс sudoRole предоставляет множество опций задания правил. Самые базовые это sudoCommand, sudoHost, sudoUser. Кроме этого доступны также sudoOption, sudoRunAsUser, sudoRunAsGroup, sudoNotBefore, sudoNotAfter и т.п.

Таким образом, правило с именем run-coreutils разрешающее запускать /bin/ls, /usr/bin/cat для пользователя username1 и username2 на всех хостах без запроса пароля будет выглядеть примерно так

cn=run-coreutils,ou=sudoers,dc=test,dc=alt 
sudoCommand: /bin/ls
sudoCommand: /usr/bin/cat
sudoHost: ALL
sudoUser: username1
sudoUser: username2
sudoOption: !authenticate

Для задания имени пользователя можно использовать короткое имя (username1), длинное (username1@test.alt), числовой идентификатор (#12345678). Для группы перед именем указывается знак % - (%mygroup)

Изменение LDAP схемы

Схема LDAP для хранения правил sudo - https://github.com/sudo-project/sudo/blob/main/docs/schema.ActiveDirectory

Microsoft ActiveDirectory

Для MS AD все достаточно просто.

  1. Скачиваем файл схемы - https://raw.githubusercontent.com/sudo-project/sudo/main/docs/schema.ActiveDirectory
  2. В скачаном файле меняем DC=X на корень нашего домена (к примеру, DC=test,DC=alt)
  3. В консоли с правами доменного администратора, втягиваем схему командой
ldifde -i -f schema.ActiveDirectory -c "CN=Schema,CN=Configuration,DC=X" #schemaNamingContext

Для непосредственного создания правил, на стороне MS нужно использовать инструмент Редактирование ADSI в котором нужно создать объект класса sudoRole с соответствующими атрибутами.

Samba DC

Не смотря на всю схожесть с AD, конфигурация данного решения требует некоторых корректив

Настройка клиентской части

  • Для того чтобы правила sudo из LDAP можно было использовать нужно установить пакет libsss_sudo
apt-get update; apt-get install libsss_sudo
  • Сконфигурировать службу sssd (/etc/sssd/sssd.conf)
[sssd]
services = nss,pam,sudo
....
[domain/TEST.ALT]
sudo_provider = ad
#ad_sudo_search_base не обязателен если вместо samba используется ms ad 
ad_sudo_search_base = ou=sudoers,dc=test,dc=alt
  • Добавить в /etc/nsswitch.conf
sudoers: files sss

Примечания

Все это работает при использовании sssd. В случае использования winbind, вероятно, придется пересобирать sudo с поддержкой ldap (получив в награду небезопасное решение).

Ссылки по теме

  1. https://github.com/sudo-project/sudo/blob/main/docs/schema.ActiveDirectory
  2. https://learn.microsoft.com/ru-ru/windows/win32/secauthz/sid-strings
  3. https://learn.microsoft.com/ru-ru/windows/win32/secauthz/security-descriptor-string-format
  4. https://learn.microsoft.com/ru-ru/windows/win32/secauthz/security-descriptor-definition-language-for-conditional-aces-