Sudoers w LDAP

Oprócz standardowej konfiguracji w pliku sudoers, konfiguracja sudo może być umieszczona również w LDAP. Jest to szczególnie użyteczne jeśli chcemy ujednolicić konfigurację sudo w dużym, rozproszonym środowisku.
Potrzebny jest do tego serwer LDAP oraz skonfigurowany klient, jeśli tego nie posiadasz, zajrzyj do moich poprzednich wpisów. Wymagane jest także rozszerzenie schematu dla sudo w serwerze LDAP, można je znaleźć w dystrybucji sudo. Pakiet sudo musi mieć wkompilowane wsparcie dla LDAP. Proszę nie zapomnieć też o stworzeniu indeksu na atrybucie sudoUser w LDAP.
Sudo odczytuje konfigurację połączenia z serwerem LDAP z pliku /etc/sudo-ldap.conf. Jest to typowy plik jak dla konfiguracji klienta LDAP, zatem większość ustawień nie jest specyficzna dla sudo. Jednakże sudo parsuje ten plik i może z niego odczytywać opcje, które różnią się od tych opisanych w manualu dla ldap.conf(8).
Poniżej kilka specyficznych dla sudo opcji w Linux:

SUDOERS_BASE base
SUDOERS_SEARCH_FILTER ldap_filter
SUDOERS_TIMED on/true/yes/off/false/no
SUDOERS_DEBUG debug_level

Pakiet TCMsudo dla Solarisa 10 (TCMsudo-ldap-1.8.15-sparc.pkg), który ja zainstalowałem, przechowuje swoją konfigurację w /etc/ldap.conf. Skonfigurowałem tam tylko ścieżkę do katalogu z certyfikatami (tls_cert path), URI serwerów LDAP oraz bazowy wpis wyszukiwania dla sudo:

ssl on
tls_cert /var/ldap
uri ldaps://ldapsrvp01/ ldaps://ldapsrvp02/
sudoers_base ou=sudoers,dc=mycompany,dc=com

można tu także ustawić sudoers_debug jeśli jest potrzeba śledzenia jak się to zachowuje.
Po stronie serwera można także ustawić SERVICE_SEARCH_DESCRIPTOR w profilu Solaris LDAP, ale zauważyłem, że nie jest to (zawsze) wymagane.

SERVICE_SEARCH_DESCRIPTOR sudoers:ou=sudoers,dc=mycompany,dc=com

Bazowy wpis sudo w DIT jest standardowym wpisem OU:

dn: ou=sudoers,dc=mycompany,dc=com
objectClass: top
objectClass: organizationalUnit
ou: sudoers

Poniżej tego wpisu powinny być zdefiniowane wartości domyślne dla sudo, np.:

dn: cn=defaults,ou=sudoers,dc=mycompany,dc=com
objectClass: sudoRole
objectClass: top
cn: defaults
description: Default sudoOption's go here
sudoOption: logfile=/var/log/sudo.log
sudoOption: iolog_dir=/var/log/sudo-io/%{user}
sudoOption: log_input
sudoOption: log_output
sudoOption: always_set_home

Można także użyć skryptu perlowego o nazwie ‚sudoers2ldif’, który jest zawarty w pakiecie sudoers (/usr/share/doc/sudoers lub /usr/local/share/doc/sudo). Ten skrypt potrafi utworzyć wpis wartości domyślnych dla sudo oraz utworzyć wpisy w formacie LDIF z podanego pliku sudoers. Te wpisy mogą być później zaimportowane do katalogu LDAP.
Aby użyć sudoers z LDAP w systemie należy jeszcze dodać źródło ldap do Name Service Switch:

% grep sudo /etc/nsswitch.conf
sudoers:    files ldap

Użyteczne linki:
https://linux.die.net/man/5/sudoers.ldap
https://www.sudo.ws/sudo/readme_ldap.html
https://www.sudo.ws/man/1.8.13/sudoers.man.html
Troubleshooting:
https://serverfault.com/questions/444219/troubleshooting-sudoers-via-ldap

Może Ci się również spodoba

Dodaj komentarz