Authenticatie middels de Active Directory AD met SSSD

By | 8 maart 2016

Intro

In oudere versies van Linux wat het soms lastig om users te authenticeren met behulp van de Active Directory van Windows. Echter uit bijvoorbeeld beheersoogpunt is het soms wel gewenst dat dit gebeurd. Users hebben dan 1 inlog voor Windows en Linux. Deze uitleg is bruikbaar voor Redhat/CentOS 7.x servers en soortgelijken.

Software

Om middels sssd te kunnen authenticeren zijn een aantal packages nodig die als volgt geinstalleerd kunnen worden:

yum install realmd samba samba-common oddjob oddjob-mkhomedir adclie sssd ntp ntpdate

Opmerking: Voordat we verder kunnen met het joinen van een domein moet de linux server in time-sync zijn met de AD. Hiervoor moet een ntp daemon zoals ntpd of chrony worden geconfigureerd. Dit valt buiten de scope van dit artikel. 

Joinen van een domein

Als root wordt een Linux server (eenmalig) in het domein toegevoegd middels:

realm join --user=<administrator> exampe.com

Let op: Zorg ervoor dat chrony of ntp draait en de Linux server in time-sync is.

Als dit geslaagd is moet de server deze vorm van authenticatie ook gaan gebruiken, dat kan via:

authconfig --update --enablesssd --enablesssdauth --enablemkhomedir 

Hierdoor wordt /etc/nsswitch.conf aangepast, er zal in eerste instantie worden gekeken of de gebruiker lokaal bekend is, zo niet, zal de authenticatie via de AD worden afgehandeld. Om ervoor te zorgen dat gebruikers niet hun volledige gebruikersnaam en domein hoeven te gebruiken wordt de volgende regel toegevoegd in /etc/sssd/sssd.conf:

[sssd]
.... 
default_domain_suffix=example.com
..... 

Toegang beperken tot groepen

Om ervoor te zorgen dat niet iedereen met een valide account kan inloggen kan op basis van bestaande AD groepen toegang tot een Linux server worden verleend:

realm permit --groups "example.com\\linuxadmins" 

In /etc/sssd/sssd.conf is dit vervolgens te controleren:

[domain/example.com] 
.... 
access_provider = simple 
simple_allow_groups = example.com\linuxadmins
..... 

Na deze wijziging(en) is een restart nodig van de sssd daemon:

systemctl restart sssd