Active Directory Integration

From ArchWiki
Revision as of 07:13, 30 April 2006 by Peq (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

HOWTO setup linuxserver i Windows-domæne:

This guide explains howto setup an Arch Linux server into an existing Windows domain.



General

This can be the solution in some networks,where windows server licens are pretty expensive,so here is a solution on what you have to do to make an Arch server be acceptet into a existing Windows domain.

The meaning with this are, that you can use an LDAP/AD to validate your users password, no matter if you are using your windows or Linux machine.. Later on hopefully some others will help to make the changes so you can change your passwords on any given machine.

Heldighvis kan Linux bruge de samme services som Windows bruger:

  • Name Service Switch(NSS) Dette bruges til at kunne validere authentication .
  • Pluggable Authentication Module(PAM) Dette gør at man kan få valideret sit passwords ud fra en central maskine som f.eks LDAP, Kerberus eller Active Directory(AD)
  • Winbind sammen med Samba. Winbind servicen bruger Samba's konfiguration til at integrere med AD. Derfor skal du bruge Samba 3.05 eller nyere.
  • Kerberus. Winbind bruger Kerberus for at hente tickets for at få tilgang til AD. En Windows Domain Controller

    opfører sig som et Nøgle Distrubtions Center.

Der er 2 alternative måder at gøre dette på - her har jeg valgt den ene kun, men vil for en god ordens skyld lige nævne den anden:

  • Ved brug af Kerberus Klient( Kræver Active Directory)
  • Ved brug af windbind og Samba klient.

Krav

Krav til at få følgende ting igennenm er:

  • En Windows2003 Enterprise server med et kørende AD

Følgende ting skal installeres her på:

    • Identity Manager for Unix-maskiner
    • DNS
    • Windows 2003 server tools
    • Windows 2003 server resource tools

På Linux-maskine: (Distrubtion er i bunden underordnet!

  • En kørende Arch Linux installation

  • En windows maskine til at køre diverse test fra.
  • Administrator adgang på alle maskiner du arbejder med
  • Domæne administrative rettigheder på AD

Når først alle disse krav er opfyldt, er det nu tid til at gå igang med installationen:
Der behøves ikke ingen konfiguration for OpenLDAP - MEN AD-support bliver ikke compileret ind i samba uden at have openLDAP installeret.

Installation :

Disse pakker skal vi bruge på Linux-maskinen:

  • Samba
  • Kerberus
  • NTP

Vi starter med at køre pacman for at installere disse pakker:

  • pacman -Sy samba
  • pacman -Sy ntp

Hermed bliver pakker hentet og installeret i de forskellige rigtige biblioteker på maskinen. og vi kan nu gå videre til vores Windows-installation.

Installation af windows :

For at det hele skal lykkes, er der nogle enkelte ændringer vi skal have lavet i vores Active Directory:

  • Gå til Start > Administrative tools > Domain Controllers Security Policies
  • Find derinde - Local policies > Security policies > Mikrosoft Network Server. Digitalt signeer kommunikation (ALTID)- Sæt flueben i define this policy og disable radioknappen.Tryk Aplly og bagefter OK

Nu skal vi så videre til det spændende - nemlig Linux maskinen.

Installation af Linux :

Kerberus - krb5.conf :

Konfigurer filen /etc/krb5.conf som følgende.Vi regner her med at vores domøne i AD hedder UDBY.DK

# Dette er lavet med henblik på at få denne server ind under AD på domænet UDBY.DK
 
  
[libdefaults]
default_realm = pdc-udby.udby.dk
clockskew = 300
ticket_lifetime = 1d
[realms]
MY.REALM = {
kdc = pdc-udby.udby.dk
kdc = pdc-udby.udby.dk:88
admin_server = pdc-udby.udby.dk:749
}
# OTHER.REALM = {
# v4_instance_convert = {
# kerberos = kerberos
# computer = computer.some.other.domain
# }
# } 

 
[domain_realm]
.udby.dk = pdc-udby.udby.dk
udby.dk = pdc-udby.udby.dk 


[logging]
default = SYSLOG:NOTICE:DEAMON
kdc = FILE:/var/log/kdc.log 
kadmin = FILE:/var/log/kadmin.log 

  
[appdefaults]
pam = {
ticket_lifetime = 1d
renew_lifetime = 1d
forwardable = true
proxiable = false
retain_after_close = false
minimum_uid = 0
debug = false
}

ADVARSEL: Lad nu være med at ændre dit domænenavn til andet end UDBY.DK (Det navn der står i AD) før end du er sikker på hvad det er du piller ved. Det skal være det domænenavn - som din PDC kører med

P.S. Dine tickets udløber nu efter den tid som du nu har defineret her oppe over.

Nu skal du editere filen /etc/hosts - således at maskinen ved hvor din PDC er, hvis tilfældet skulle være at din DNS går ned.

192.168.0.5 PDC.UDBY.DK

Man kan så spørge efter sine tickets ved hjælp af kommandoen :

# kinit ADMINISTRATOR@UDBY.DK < Ja det er vigtigt at det er sådane
# password for ADMINISTRATOR@UDBY.DK:

Du vil nu blive spurgt om password som vist ovenfor: - hvis du taster det korrekte ind – vil du blive returneret til prompten, hvilket betyder at det virker. Det kan her være et problem MHT klokkeslæt på de 2 maskiner – så derfor er det vigtigt at klokken stemmer overens på de 2 maskiner. For at tjekke dette kan man evt sætte tiden nogenlunde ved hjælp af kommandoerne:

# /usr/bin/ntpdate pdc.udby.dk > dette beder maskinen om at synkronisere tiden med PDC.

Ellers kan man lige editere ens /etc/ntp.conf således:

restrict default noquery notrust nomodify
restrict 127.0.0.1
restrict 192.168.0.0 mask 255.255.255.0
fudge 127.127.1.0 stratum 3
server 127.127.1.0
driftfile /etc/ntp.drift
logfile /var/log/ntp.log

Dermed har man nu fortalt sin maskine hvilke maskiner der må opdateres fra.

PAM (login) :

Nu skal vi så have ændret vores /etc/pam.d/login således at den validerer imod PDC´en. Dermed validerer serveren imod PDC for at tjekke brugerens navn og passwd:

#%PAM-1.0
auth    required        /lib/security/pam_securetty.so
auth    required        /lib/security/pam_nologin.so
auth    sufficient      /lib/security/pam_unix.so shadow md5 nullok likeauth
auth    required        /lib/security/pam_krb5.so use_first_pass

account required        /lib/security/pam_unix.so

password        required        /lib/security/pam_cracklib.so
password        required        /lib/security/pam_unix.so shadow md5 nullok use_authtok

session required        /lib/security/pam_unix.so
session optional        /lib/security/pam_krb5.so
session optional        /lib/security/pam_console.so

Nu skulle det faktisk i realiteten virke, så idet du prøver at logge ind på din server, skal du indtaste din brugernavn og passwd. Dette kan tage lidt længere tid end normalt, med det er NETVÆRK!!!

Samba Konfiguration :

Her kan man lave mange specielle ting – så der kan man evt starte med at læse på http://us3.samba.org/samba/ hvor man kan hente enormt meget info omkring dette emne. Herunder er således min Smb.conf fil:

[Global]
netbios name = Atlantis
workgroup = UDBY
realm = UDBY.dk
server string = Atlantis
map to guest = Bad User
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
winbind gid = 10000-20000
winbind separator =+
os level = 20

 
# Theres no shell defined for users in AD, so I define a default shell to use
# Not sure if its even possible to define a shell in AD
template shell = /bin/bash

 
# Er sat til dette som default
; encrypt passwords = yes

 
# I denne "mode", vil Samba opføre sig som et medlem af domæne i et AD's realm. For at operere i denne "mode"
# skal maskinen der kører Samba have Kerberus installeret og konfigureret (/etc/krb5.conf) og dermed vil Samba
# tvinges til at joine AD's realm ved hjælp af internettet.
security = ads
password server = 192.168.0.5
preferred master = no
dns proxy = no
wins server = 192.168.0.5
wins proxy = no

 
# Skulle ikke være nødvendig, da AD'et selv bestemmer hvem der er admins  
admin users = @"NET+domain admins"

 
# Sikrer at Samba kun lytter på Interfacet til brug af cluster-servicen
interfaces = 192.168.0.0/255.255.255.0
bind interfaces only = yes

 
load printers = no
debug level = 3
use sendfile = no

 
[homes]
comment = Hjemmemapper
path =/home/%U
# valid users = %S net+%S
browseable = no
read only = no

 
[Hjemmemapper]
comment = Brugernes Hjemmemapper
path = /home/%U
browseable = no
read only = no

 
# Find ud af om disse er nødvendige  
force group = "NET+domain admins"
inherit acls = Yes
map acl inherit = Yes

 
# Tillader brugere i gruppe at ændre rettighederne
acl group control = yes

 
[data]  
comment = Data
valid users = %S net+%S
path = /data
read only = no
browseable = yes

 
[Drift]
comment = Drifts data mm
valid users = @"NET+domain admins"
path = /drift
read only = no
browseable = yes

 
[Back-up]
comment = Diverse Backup filer
path = /backup
read only = no
browseable = yes
valid users = @"NET+Domain Admins"

Her kan man så køre en test for at tjekke om ens konfiguration er god nok.

# testparm<pre>
Fix de evt. fejl der nu måtte være og genstart herefter samba
<pre># /etc/rc.d/samba restart 

Vi skal nu forklare Samba at den skal spørge PDC´ens database omkring brugere.Her bruger vi winbind som er en del af samba´s suite.Winbind mapper således de UID og GID der ligger i PDC over på vores Unix-maskine. Winbind bruger en Unix-implementation af RPC-calls,Pluggable Authentication Module(PAM) Og Name Service Switch(NSS) for at tillade windows domæne og bruger til at opføre og give tilladelser til at operere på en Unix-maskine. Det bedste ved winbind er, at du ikke selv behøver at definere mapping selv, men kan nøjes med at specificere et range af UID og GID. Det var hvad vi definerede i smb.conf. Man skal editere /etc/nsswitch.conf . Du skal kun ændre de to linier som vist her:

passwd:            compat winbind
shadow:            compat winbind
group:             compat winbind

Note: nsswitch er en del af glib-pakken – vær sikker på at ændringer ikke sker under opdateringer – eller husk at ændre dem tilbage. Ellers vil du opleve store problemer senere. Registrer dine indstillinger og husk dem fremover med kommandoen:

wbinfo ----seth-auth-user=UDBY\\administrator%password

Testning :

Vi kan nu udføre forskellige test for at finde ud af om det hele virker? Dette kan gøres på følgende måder: Først tester vi vores samba og winbind konfiguration:

/etc/rc.d/samba restart
/usr/sbin/winbindd

For nogle af vores paranoie venner – kan vi teste om vores winbind virkelig kører effiktivt:

ps -aux | grep winbind

For at teste om vi kan få information fra vores PDC – kan vi taste følgende som gerne skulle

/usr/bin/wbinfo -u     eller wbinfo -u

Vi skulle nu gerne få udskrevet en liste på skærmen som viser de brugere i PDC. Vi kan gøre det samme med vores grupper:

/usr/bin/wbinfo -g   eller wbinfo -g

Som gerne skulle skrive en liste over vores brugere registreret. Vi kan bruge getent kommandoen for at få både locale og PDCéns brugere listet. Disse muligheder vil generere en liste af data – som svarer til /etc/passwd og /etc/group. Det er nu en god ide at teste for at sikre os at vores AD´s brugere er valide på vores Linux-server:

touch testfile $ chown ”UDBY+Guest” testfile

Hvis dette virker – Tja pissegodt – for så er der ikke flere problemer på vej.

Samba Server på Domænet :

Gode kommandoer der nu skulle virke – Nogle evt kun for root!

# net ads info
LDAP server: 192.168.0.5
LDAP server name: win2003
Realm: UDBY.DK
Bind Path: dc=UDBY,dc=DK
LDAP port: 389
Server time: Wed, 01 Mar 2006 14:59:44 GMT
KDC server: 192.168.0.30
Server time offset: -7

# net ads lookup
# net ads status

Men lad os nu komme videre til det vi gerne vil - Nemlig at registrere vores Linux-server på vores Windows-domæne

# net ads join -U Administrator
Administrator's password:
Using short domain name -- UDBY
Joined 'MASKIN-NAVN' to realm 'UDBY.DK'

For at tjekke om det hele er sket rigtigt – kan du nu hoppe over på din PDC og kigge i AD under computere. Der skulle gerne nu være en registrering af din maskine. Og for at tilsidst at ville forlade domænet kan man taste :

# net ads leave
Removed 'MASKIN-NAVN' from realm 'UDBY.DK'

Flere Oplysninger :

Alt hvad der er værd at vide om Samba