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