SSSD - zmiana domyślnej wartości dla ad_gpo_access_control w RHEL 8

Zmiana domyślnej wartości dla ad_gpo_access_control w RHEL 8 – wpływ na uwierzytelnianie użytkowników Active Directory.

Co to jest SSSD?

SSSD (System Security Services Daemon) jest używane do zarządzania dostępem i uwierzytelnianiem użytkowników i jest używane do integracji systemu uwierzytelniania z modułami PAM (Pluggable Authentication Modules) oraz NSS (Name Service Switch). Umożliwia to korzystanie z zewnętrznych źródeł tożsamości we wszystkich usługach systemowych wymagających uwierzytelnienia, takich jak SSH, logowanie do systemu, sudo, i inne. SSSD pozwala na uwierzytelnianie użytkowników z usług katalogowych takich jak Active Directory (AD), LDAP, FreeIPA czy Microsoft Azure AD, umożliwiając integrację systemów Linux z infrastrukturą opartej na tych usługach. SSSD pobiera informacje o użytkownikach, grupach jak i politykach, obsługuje np. zasady grupowe (GPO) z Active Directory, które mogą być stosowane do kontrolowania dostępu użytkowników.

Czym jest kontrola dostępu oparta na GPO?

Funkcjonalność kontroli dostępu opartej na Zasadach Grupowych (GPO) w SSSD używa ustawień GPO w Active Directory do określenia, czy dany użytkownik ma prawo logowania się do hosta. Aby zasady te były skuteczne, opcja access_provider w pliku konfiguracyjnym /etc/sssd/sssd.conf musi być ustawiona na ad (Active Directory).

Każde logowanie użytkownika jest weryfikowane pod kątem zastosowania powiązanych z hostem zasad GPO. Aby zasada GPO była stosowana wobec użytkownika, musi on (lub jedna z grup, do której należy) mieć uprawnienia do odczytu właściwości GPO oraz prawo do stosowania tej zasady. Domyślnie grupa "Authenticated Users" (Użytkownicy Uwierzytelnieni) ma te uprawnienia, co sprawia, że po pomyślnym uwierzytelnieniu użytkownik może być poddany regułom GPO.

Warto zwrócić uwagę, że obecna wersja SSSD nie obsługuje wpisów hostów (komputerów) w liście "Security Filtering" dla zasad GPO. Obsługiwani są tylko użytkownicy i grupy, jednak nie są obsługiwane wbudowanych grup Active Directory, takich jak np. grupa Administratorzy (SID S-1-5-32-544). Zasady oparte na takich grupach będą więc ignorowane, co może prowadzić do problemów z dostępem, jeśli są one używane w regułach dostępu GPO.

Zmiana domyślnej wartości dla ad_gpo_access_control w RHEL 8

Wraz z wprowadzeniem RHEL 8, zaszła istotna zmiana w domyślnej konfiguracji opcji SSSD, która może powodować problemy z logowaniem. Opcja ad_gpo_access_control, która ma wpływ na uwierzytelnianie użytkowników Active Directory,  jest aktualnie na Enforcing (wymuszającą przestrzeganie zasad). We wcześniejszych wersjach domyślną wartością tej opcji było Permissive (dozwalającej na dostęp). Opcja ad_gpo_access_control ma trzy tryby działania:

- disabled – zasady GPO nie są ani oceniane, ani wymuszane.

- enforcing – zasady GPO są oceniane i wymuszane.

- permissive – zasady GPO są oceniane, ale nie wymuszane. Zamiast tego, pojawia się wpis w logu systemowym, informujący, że użytkownikowi odmówiono by dostępu, gdyby tryb był ustawiony na enforcing.

Domyślnym trybem od RHEL 8 jest enforcing, co oznacza, że zasady GPO są teraz aktywnie wymuszane, co może skutkować odmową dostępu dla użytkowników, którzy wcześniej mogli się logować bez problemów.

Po czym poznać, że zmiana ad_gpo_access_control jest odpowiedzialna za problem z logowaniem?

Jeśli autoryzacja użytkownika AD w systemie RHEL nie powiedzie się, można napotkać komunikat o błędzie:

Broken gpo data received from ad. Check ad child logs for more information

Jak rozwiązać problem z logowaniem?

Najłatwiejesze i naszybsze jest tymczasowe wyłączenie kontroli dostępu opartej na GPO, poprzez dodanie wpisu:

ad_gpo_access_control = disabled

w sekcji [domain/...] pliku /etc/sssd/sssd.conf, a następnie zrestartowanie usługi SSSD komendą:

# systemctl restart sssd

Jeśli kontrola GPO jest wymagana, należy poprawić konfiguracji zasad GPO w Active Directory. Administratorzy mogą jednocześnie rozważyć przetestowanie w tryb permissive, co może pomóc zidentyfikować problemy.