I stort sett varje företag som har fler än en handfull anställda behöver en centra l databas som håller koll på användarnamn och lösenord till nätverket. Novell och Sun Microsystems var tidigt ute med sina produkter Edirectory och Iplanet, men det var egentligen först när Microsoft gav sig in matchen som marknaden för katalogtjänster tog fart.

Active Directory såg dagens ljus 1999 och var en vital del i Windows 2000 Server. Sedan starten har katalogtjänsten vuxit explosionsartat och majoriteten av alla stora företag har i dag implementerat Active Directory.

Framgångarna har varit ett horn i sidan på alla förespråkare av öppen källkod. I början fanns där ingen utmanare som ens försökte sig på att utmana Active Directory, och det skulle dröja sju år innan ett projekt vågade plocka upp handsken.

2006 släppte Samba bomben med en Technical Preview av Samba 4, som lovade att helt ersätta Microsofts katalogtjänst Active Directory. Men vägen framåt har varit både krokig och kantats med diverse problem. Tekniska hinder och interna stridigheter har under stundom hotat hela projektets existens, men hösten 2014 blev det äntligen möjligt att kasta ut Active Directory och ersätta med Samba 4 utan att klientanvändarna behöver märka något.

Även på klientsidan gick det lång tid utan att där fanns någon förtroendeingivande, öppen mjukvara som klarade av att binda en Linux-klient mot Active Directory, eller åtminstone göra processen enkel. Winbind från Samba-projektet var länge vägen framåt om du ville gå den öppna vägen.

Samtidigt har det funnits proprietära mjukvaror för anslutning mot Active Directory som Powerbroker Identity Services for Active Directory Bridging från Beyondtrust Software och Authentication Services från Dell Software (som tidigare hette Quest Software).

Red Hat-anställde Stef Walter tog tag i problemet och skapade 2012 mjukvaran Adcli – Active Directory Command Line Interface – för att göra processen enkel.

Adcli växte upp och namnet byttes mot Realmd, där Adcli blev en komponent. Nu två år senare är det fullt möjligt att använda Realmd på en Linux-klient och ansluta mot en Samba 4-baserad Active Directory-server. Cirkeln är därmed äntligen sluten.

För att testa behöver du använda dig av en Linuxdistribution som levereras med senare versioner av Samba 4 på servern, och Realmd på klienten – du behöver minst Samba 4.1.8 och Realmd 0.15.0-1.

Om du provar med tidigare versioner kommer du att stöta på buggar i Netlogon, den servertjänst som används för autentisering av användare.

Vi väljer själva att använda Ubuntu 14.10 på både server- och klientsidan för att vara på den säkra sidan.

Så här sätter du upp servern

För att göra installationsprocessen av Samba 4 smidigare har vi satt ihop ett paket, dcpromo, som automatiserar hela förfarandet.

På din server lägger du till ett personal package archive med kommandot ”add-apt-repository ppa:niklas-andersson/dcpromo”.

Uppdatera därefter mjukvarucachen med kommandot ”apt-get update”.

Skapa en temporär fil som du döper till /tmp/dcpromo. debconf med följande innehåll: (I vårt exempel har vi använt oss av testdomänen openforce.org med servernamn dc. Välj det domännamn och värdnamn som du tycker passar dig och din miljö bäst)

dcpromo dcpromo/workgroup string OPENFORCE
dcpromo dcpromo/domain string openforce
dcpromo dcpromo/dnsdomainname string openforce.org
dcpromo dcpromo/netbios_name string DC
dcpromo dcpromo/host_name string DC
dcpromo dcpromo/password string Secret007!
dcpromo dcpromo/adminpass string Secret007!
dcpromo dcpromo/krbtgtpass string Secret007!
dcpromo dcpromo/machinepass string Secret007!
dcpromo dcpromo/dnspass string Secret007!
dcpromo dcpromo/root string root
dcpromo dcpromo/nobody string nobody
dcpromo dcpromo/users string staff
dcpromo dcpromo/server_role string dc
dcpromo dcpromo/kerberos_servers string dc.openforce.org
dcpromo dcpromo/admin_server string dc.openforce.org
dcpromo dcpromo/use_rfc2307 boolean false
dcpromo dcpromo/dns_backend string SAMBA_INTERNAL

Nästa steg är att förprogrammera mjukvarupaketet dcpromo med de här uppgifterna innan det installeras. Det gör du med kommandot ”sudo debconf-setselections /tmp/dcpromo.debconf”.

När det är gjort installerar du dcpromo genom att slå in ”sudo apt-get install dcpromo”. Starta därefter hela processen med kommandot ”dcpromo” och vårt skript kommer sköta resten.

dcpromo
Efter att du installerat mjukvaran dcpromo kommer skriptet /etc/dcpromo/dcpromo skapas, förkonfi gurerat med de växlar du behöver för att skapa din katalogtjänst.

Direkt efter installationen kommer Samba 4 starta i fel läge, men det löser du genom att starta om maskinen. När servern väl är uppe igen kan du slå en processor-listning med ”ps aux | grep samba”, där du ska få upp drygt tio processer som heter ”samba -D”. Varje process är ansvarig för en delkomponent i Samba.

Något som också är intressant när servern väl är installerad och uppe är att se vilka portar som nu är öppna. Installera portskannern Nmap med kommandot ”sudo apt-get install nmap” och slå in ”nmap localhost”. Du kommer få fram en lista med följande öppna portar:

PORT STATE SERVICE
22/tcp ssh
53/tcp domain
88/tcp kerberos-sec
135/tcp msrpc
139/tcp netbios-ssn
389/tcp ldap
445/tcp microsoft-ds
464/tcp kpasswd5
636/tcp ldapssl
1024/tcp kdm
3268/tcp globalcatLDAP
3269/tcp globalcatLDAPssl

När servern väl är installerad och uppe och snurrar är det dags att lägga in några användare. Det gör du med universal-kommandot samba-tool. Om du exempelvis vill lägga in användaren nandersson med lösenordet Secret007! gör du det med kommandot ”samba-tool user create nandersson Secret007!”.

Ett alternativ till att sköta administrationen via kommandoprompten är att använda Microsofts egna verktyg Active Directory Users and Computers. Tyvärr finns fortfarande inget trevligt grafiskt gränssnitt baserad på öppen källkod att använda.

Avslutningsvis när det gäller servern: Du måste ställa om dns-pekaren så att servern pekar på sig själv. Det vill säga mot 127.0.0.1, så att servern kan utföra namnuppslagningar i katalogtjänsten.

Så här sätter du upp klienterna

På den klient som du vill ansluta till din Samba 4-server börjar du med att installera programpaketen Realmd, packagekit och krb5-user.

Du måste också peka om dns på klienten så att du använder din Samba 4-server. Om klienten hämtar sina adressuppgifter via dhcp kan du i Ubuntu redigera filen /etc/dhcp/ dhclient.conf och lägga till raden ”supersede domain-name-servers [ipaddress- till-din-samba-4-server]”.

När du startat om klienten och kontrollerat att dns-uppslagning fungerar som den ska (i vårt fall innebär det att vi kan pinga dc.openforce.org), ändra innehållet i filen /etc/krb5.conf till följande:

[libdefaults]
default_realm = OPENFORCE.ORG
dns_lookup_realm = false
dns_lookup_kdc = true
dns_canonicalize_hostname = false
rdns = false

Om allting gått vägen ska du nu kunna verifiera att Kerberos fungerar genom att slå in kommandot ”kinit Administrator@ OPENFORCE.ORG”. Skriv in administratörslösenordet och därefter har du fått en så kallad Kerberosbiljett som används vid autentisering. Information om din Kerberos-biljett får du genom att slå kommandot ”klist”.

kinit
Här verifierar vi att innehållet i /etc/krb5.conf stämmer i den klient vi vill ansluta till domänen, och autentiserar därefter med kommandot kinit Administrator@OPENFORCE.ORG. Efteråt kan vi se vår Kerberosbiljett med kommandot klist.

Nästa steg är att ansluta till domänen med hjälp av Realmd. Börja genom att skapa en fil du döper till /etc/realmd. conf där du skriver in följande:

[users]
default-home = /home/%U
default-shell = /bin/bash
[active-directory]
default-client = sssd
os-name = Ubuntu
os-version = 14.04
[service]
automatic-install = yes
[openforce.org]
user-principal = yes
automatic-id-mapping = yes
manage-system = no
fully-qualified-names = no

När det är gjort är det dags för själva anslutningen till domänen. Slå in kommandot ”realm join -v openforce. org”. Eftersom du redan har skaffat en Kerberos-biljett för användaren Administrator kommer den biljetten att användas för att ansluta till domänen. Realmd kommer se till att alla nödvändiga mjukvarupaket installeras, och utför en grundkonfiguration av mjukvaran Sssd som du strax ska redigera.

Nu ska du kunna verifiera att din klient är ansluten till domänen genom att slå in kommandot ”getent passwd” följt av namnet på en användare som du lagt till i Samba 4, till exempel ”getent passwd nandersson”.

realm
Vi ansluter till vår domän med kommandot realm join -v OPENFORCE.ORG. Växeln -v ger oss ytterligare information om vad som händer. Tänk bara på att din klient måste använda Samba 4-servern som dnsserver. Vill du ”torröva” först gör du det med kommandot realm -v discover OPENFORCE.ORG.

Om du inte får fram information om din användare är det möjligt att något gått snett och du får se över din konfiguration, eller titta i loggfilerna.

Realmd hjälper visserligen till med grovarbetet, men tyvärr är det fortfarande en hel del finlir kvar innan du kan logga in på klienten med en användare från Samba 4. Du behöver gå in och redigera filerna för Ubuntus inloggning, filerna för Pam (Pluggable authentication module) och konfigurationsfilen för Sssd (System security services daemon).

Vi börjar med Ubuntu-filen /etc/ lightdm/lightdm.conf, där du skriver in följande:

[SeatDefaults]
greeter-hide-users=true
greeter-session=unity-greeter
user-session=ubuntu
greeter-show-manual-login=true
allow-guest=false

De raderna behövs för att Ubuntu inte ska hämta senaste inloggade användare, eller de konton du har lokalt i / etc/passwd. Vi talar också om att vi inte vill tillåta gästinloggning.

När det är gjort går du vidare och redigerar filen /etc/pam.d/commonsession. Strax under raden där det står ”session required pam_unix.so” ska du lägga en ny rad med texten ”session required pam_mkhomedir. so umask=0022 skel=/etc/skel”. Den raden behövs för att en inte tidigare känd användare som loggar in på din maskin automatiskt får en hemmakatalog. Det är bra om du nu vill ha en lokal hemmakatalog förstås, men behövs inte i de fall där du har hemmakatalogerna på en utdelad resurs på nätverket.

Slutligen behöver du redigera filen /etc/sssd/sssd.conf och kommentera bort raden simple_allow_users = $, och se till att du har access_provider = permit, i stället för simple som det stod från början. ”Permit” behövs för att du ska tillåta användare från Samba 4 att logga in på maskinen.

Vår sssd.conf ser ut så här i sin helhet. Observera att vi har lagt in rader för extra loggning som gör det enklare att spåra problem i loggarna som du hittar i katalogen /var/log/sssd.

[sssd]
domains = openforce.org
config_file_version = 2
services = nss, pam
debug_level = 5
[nss]
debug_level = 5
[pam]
debug_level = 5
[domain/openforce.org]
ad_domain = openforce.org
krb5_realm = OPENFORCE.ORG
realmd_tags = joined-with-adcli
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = False
fallback_homedir = /home/%u
#simple_allow_users = $
access_provider = permit
create_homedir = True
debug_level = 5

När du kommit så här långt rekommenderar vi att du startar om maskinen så att du vet att alla konfigurationsfiler har lästs om.

När du kommer till inloggningsskärmen ska du nu få upp en ruta där du kan skriva in vilket användarnamn som helst, och inte bara de konton du har lokalt på maskinen. Skriv in ett användarnamn som du vet är lagrat i Samba 4 med tillhörande lösenord.

login
Efter du skapat /etc/lightdm/lightdm.conf och startat om klienten ska du nu kunna ange vilket användarnamn som helst för att logga in. Logga in med användaren du skapade på din Samba 4-server.

Om allting gått som det ska kommer du nu att logga in med de användaruppgifter som finns lagrade i Samba 4.

Nu ska du ha en Samba 4-server som fungerar exakt som Active Directory, och du ska ha en Ubuntu-klient ansluten mot katalogtjänsten.

Men alla miljöer är inte så här enkla. Eventuellt vill du byta ut Sambas dnsserver mot Bind9, och kanske vill du också hantera ssh-inloggningar och sudo-regler i katalogtjänsten.

För mer komplexa scenarion får du vara beredd på att dyka ner i en rad manualsidor och lägga en tid på felsökning och optimering. Både Samba 4, Sssd och Realmd är projekt där utvecklingen går fort framåt, saker ändras snabbt och nya buggar kan dyka upp.

TechWorlds slutsats

Både Samba 4 och Realmd har vuxit upp och används faktiskt i produktionsmiljöer hos en del våghalsiga företag. Framför allt Realmd har blivit populärt då det ersätter proprietära mjukvaror från Quest (numera Dell) och kvaliteten på det projektet är riktigt hög, även om det krävs en hel del konfiguration i efterhand.

För Sambas del känns det däremot som att det fortfarande finns en hel del att göra. Administrationen måste skötas via kommandoprompten direkt på servern, eller via ssh. Visst kan du fuska genom att använda dig av Active Directory Users and Computers, men det hade varit trevligt med ett administrativt gränssnitt som också är baserat på öppen mjukvara.

Framtiden för Samba 4 är spännande. Spanska företaget Zentyal som står bakom projektet Openchange, en öppen motsvarighet till Microsoft Exchange Server, har börjat bidra mer aktivt till Samba 4. Målsättningen är att skapa en solid bas som är lämpad för kritiska miljöer. När det är klart kan vi bara spekulera om.

Fortfarande krävs en hel del innan vi vågar rekommendera att kasta ut allt vad Windows heter och köra på Samba 4 och Realmd, men stannar inte utvecklingen upp är det bara en tidsfråga innan du kan sätta upp en helt Microsoft-fri miljö baserad på öppna komponenter som du enkelt kan administrera.

Niklas reflektion

Jag skrev min första artikel om Samba 4 redan 2006. Nu känns det definitivt som att projektet nått en viktig milstolpe, samtidigt finns det en hel del kvar att göra.

Bara för att det nu är tekniskt möjligt att kasta ut AD, behöver det inte betyda att det är smart att göra så.

Både Samba 4 och Realmd behöver en hel del handpåläggning för att fungera. Du behöver också väldigt goda kunskaper i hur AD och katalogtjänster generellt fungerar.

Däremot har jag fått indikationer från personer med väldigt god inblick att det kommer hända spännande saker det närmsta året som kommer lyfta Samba 4 ytterligare. Jag håller tummarna för att vi får se grafiska administrativa gränssnitt som matchar Microsofts.

Men om jag ska vara kritisk finns det anledning att ifrågasätta hur intressant autentisering av skrivbords- os egentligen är. Allt fler applikationer körs i webbläsaren, och då är varken Active Directory eller Samba 4 nödvändiga komponenter.

Fakta

TINYTW.SE/SAMBADC
Samba har en utomordentlig wiki som guidar dig.

TINYTW.SE/FEDORAHOSTED
Fedorahosted är en sajt där Fedora-utvecklare kan drifta projekt. Där hittar du bra information om möjligheterna med Sssd.

TINYTW.SE/REALMD
Kolla gärna dokumentationen för Realmd och Adcli.

TINYTW.SE/DCPROMO
Källkoden till undertecknads hemsnickrade skript dcpromo finns på Github.