Linux als server
- May 18, 2017
- 0
Als je een Linux server alleen draait, zal je niets met Windows te maken krijgen. Indien de server in een bedrijfsomgeving gebruikt wordt, kom je onvermijdelijk met Windows in aanraking. Met name een koppeling naar Active Directory is vaak interessant.
Als gebruikers voorkomen in Active Directory en toegang moeten krijgen tot je Linux server, dan kan je dat op twee manieren oplossen. Je kunt er natuurlijk voor zorgen dat de gebruikers opnieuw aangemaakt worden. Dit werkt wellicht voor een kleine omgeving, maar als in een grotere bedrijfsomgeving Linux servers door Windows gebruikers benaderd moeten worden, is deze werkwijze niet echt aan te raden. Een koppeling naar Active Directory ligt dan meer voor de hand.
Wanneer in een Linux omgeving gesproken wordt over koppelingen naar Active Directory, kan dat betrekking hebben op een ruime verscheidenheid aan zaken:
De Linux server gaat als domein controller deel uitmaken van een Active Directory;
-
De Linux server gaat als domein member server deel uitmaken van een Active Directory;
-
De Linux server gebruikt het Samba onderdeel winbind om zich als client aan te melden op Active Directory;
-
De Linux server gebruikt een generieke Linux authenticatie-client zoals sssd om gegevens uit AD te halen.
Linux als lid van een Active Directory domeinEr is een periode geweest dat de configuratie van Linux als onderdeel van een Active Directory domein beschouwd werd als de heilige graal. Windows gebruikers kunnen hierdoor automatisch repliceren naar Linux omgevingen en dat maakt het heel eenvoudig voor die Windows gebruikers om resources op de Linux server in te zetten. In de meeste omgevingen heeft het echter weinig zin om dit type configuratie in te zetten. Daarnaast is dit type configuratie behoorlijk problematisch.
De problematiek in een koppeling tussen Linux en Windows in dezelfde Active Directory bestaat uit de compatibiliteit van het schema. Het Active Directory schema bepaalt welke objecten met welke attributen aangemaakt kunnen worden. Om meerdere servers in te zetten in dezelfde Active Directory is het zaak dat niet alleen de inhoud van het domein gesynchroniseerd wordt, maar dat ook deze schema attributen meegenomen worden in de synchronisatie. En dit is niet alleen problematisch om te configureren, maar vaak ook helemaal niet nodig.
Als het desalniettemin toch nodig is om Linux in te zetten als Active Directory server bestaan daarvoor twee oplossingen. De eerste oplossing bestaat eruit een Samba server in richten als onderdeel van een Active Directory domein. Met Samba versie 4 is het mogelijk om Linux controller te maken in een Active Directory domein en op die manier gegevens uit te wisselen met de Windows AD. Als alternatief kan gebruik gemaakt worden van FreeIPA, een Linux service die bestaat uit Kerberos, LDAP, een Directory server en geïntegreerde DNS. Hiermee kan Linux zelf als Active Directory controller ingezet worden, zonder dat er rechtstreeks gesynchroniseerd hoeft te worden met Active Directory.
Linux als Active Directory client
In heel veel gevallen is het helemaal niet nodig om de Linux server domein controller te maken in Active Directory en volstaat het de server als client systeem aan te melden op Active Directory. Ook hiervoor zijn twee opties. Om te beginnen kan Winbind gebruikt worden om de server aan te melden op AD en daarnaast is er de sssd service.
Winbind is een wat oudere methode die deel uitmaakt van de Samba oplossing. De installatie van Winbind betekent niet automatisch dat er ook een volledige Samba server geïnstalleerd moet worden, alleen die onderdelen zijn nodig die het mogelijk maken om een server (of werkstation) aan te melden op AD. De Winbind configuratie bestaat eruit de Linux server door middel van Kerberos aan te melden op Active Directory en de bijbehorende winbind configuratie op te voeren.
De Kerberos configuratie bestaat eruit een keytab bestand aan te maken voor de Linux server. In dit keytab bestand staan de credentials van de Linux server en hiermee kan deze server zich aanmelden op AD. Vervolgens moet in het Samba deel van Winbind de idmap backend parameter ingesteld worden op rid. Dit zorgt ervoor dat Windows SID’s op de juiste manier omgezet kunnen worden naar POSIX UID’s en GID’s, Als dat gebeurd is, kan met de opdracht net join ad -U Administrator als gebruiker Administrator aangemeld worden op de Active Directory (het onderdeel ad in het voorgaande commando is de naam van de Active Directory waarop aangemeld moet worden).
System Security Services Daemon
Enkele jaren geleden is de system security services daemon (sssd) geïntroduceerd als alternatieve methode om de integratie externe authenticatiebronnen eenvoudiger te maken. Sssd biedt niet alleen de mogelijkheid te integreren met AD, maar ook met tal van andere authenticatiebronnen, zoals LDAP, LDAP met Kerberos of het klassieke NIS dat in vroegere UNIX omgevingen vaak gebruikt werd. Het voordeel van het gebruik van sssd boven winbind moge duidelijk zijn. Als gebruik gemaakt wordt van sssd, kan één service ingezet worden om met alle mogelijke authenticatiebronnen te verbinden. Saillant detail daarbij is dat sssd op de achtergrond toch ook gebruik maakt van winbind om het contact met AD te bewerkstelligen, je stelt het alleen niet als dusdanig in. Vanuit de authconfig tools configureer je authenticatie en user validatie op basis van LDAP en Kerberos, vervolgens moet je zelf nog de bijbehorende configuratiebestanden bewerken.
Ook biedt sssd een authenticatiecache. Dat betekent dat de client die ooit eens met sssd verbonden is geweest met een externe authenticatiebron zijn credentials opslaat in een goed beveiligde cache en een volgende keer via die cache kan authenticeren. Dat is gemakkelijk als de gebruiker in kwestie even niet verbonden is met de server waarop geauthentiseerd moet worden.De manier waarop een server door middel van sssd aan Active Directory verbonden wordt, varieert naar gelang de distributie die gebruikt wordt. Op Red Hat bijvoorbeeld wordt gebruik gemaakt van de authconfig utilities, een drietal tools waardoor een command line interface, een text user interface en ook een grafische interface geboden worden.
Eenvoudig de basisconfiguratie wegzetten met Red Hat’s authconfig-tui
Wanneer gewerkt wordt met sssd, wordt een drietal configuratiebestanden aangemaakt. De Kerberos specifieke informatie staat in /etc/krb5.conf, de Samba configuratie in /etc/samba/smb.conf en de sssd configuratie zelf staat in /etc/sssd.conf. Als deze bestanden met authconfig op de juiste wijze zijn aangemaakt, is het joinen van de server zelf een eenvoudige procedure die in twee stappen voor elkaar is. Eerst moet met kinit Administrator de Kerberos credentials binnengehaald worden. Vervolgens wordt gebruik gemaakt van net ads join -k om de server lid te maken van Active Directory.
Realmd
Hoewel de combinatie van sssd en authconfig zaken eenvoudiger maakt, is het nog steeds geen sinecure om een Linux server echt succesvol met AD te joinen. Met als doel de configuratie nog eenvoudiger te maken, is realmd ontwikkeld. Deze tool is in Red Hat gebaseerde distributies beschikbaar sinds Fedora 18. Het doel is om op een eenvoudige wijze een server of werkstation te joinen met een AD of een Kerberos domain. Realmd zorgt ervoor dat de computer automatisch aangemeld wordt op het domein en het daarvoor noodzakelijke computeraccount ook automatisch aangemaakt wordt. Hoewel de software beschikbaar is in Red Hat Enterprise Linux (waarin eigenlijk alleen stabiele software voor zou moeten komen), werkt deze nog niet helemaal naar behoren en heeft de tool nog wat meer tijd nodig om verder tot rijping te komen.
Van alle methodes die momenteel beschikbaar zijn om Linux computers op te nemen in een Active Directory domein zijn winbind en sssd momenteel de meest relevante. Configuratie met winbind bestaat al een tijdje en is daarom behoorlijk volwassen. Winbind biedt echter slechts voor één probleem een oplossing en om die reden is het aan te raden om gebruik te maken van sssd om Linux met Windows te joinen. In het volgende artikel in deze serie lees je stap voor stap hoe dat dan precies werkt.