Teenusserveri domeeni liitmine19. May '15

Sissejuhatus

Tööjaamade ja just eriti sülearvutite puhul soovitatakse kasutada SSSD tarkvara, kuna see on väga paindlik, kuid parema integratsiooni just Active Directory ning Samba4 paigaldustega tagab winbind.

Domeeni liitmine kätkeb endas mitut sammu:

  • Kerberose vaikimisi realm paika sättimine

  • Samba klientrakenduse konfiguratisooni paika sättimine

  • Domeeni liitmise operatsioon -- masina jaoks konto loomine domeenikontrolleris, parooli genereerimine ning Kerberose keytabi genereermine

  • PAM autentimismoodulite ning teenuste ümber seadistamine

  • (Valikuline) Domeenikontrolleri LDAPS sertifikaadi salvestamine masinasse

Important

Enne, kui jätkad tee kindlaks, et Kerberose klient on õigesti seadistatud.

Paigaldus

Eemalda SSSD, juhul kui see peaks olema eelnevalt paigaldatud.

apt-get remove sssd sssd-common libpam-sss libnss-sss

Samba kliendi ümber seadistamine

Paigalda Samba klientrakendused:

apt-get install samba-common-bin winbind

Eemalda Samba konfiguratsiooni näidisfail:

rm -fv /etc/samba/smb.conf

Domeeni liitmiseks net ads join käsuga on vaja seadistada Samba failis /etc/samba/smb.conf:

[global]
# Use domain controller security model
security = ads

# NetBIOS name up to 15 characters, SAME AS HOSTNAME
netbios name = lauri-t420

# NetBIOS workgroup
workgroup = EXAMPLE

# Kerberos realm
realm = EXAMPLE.ORG

# Use system keytab at /etc/krb5.keytab
kerberos method = system keytab

# Configuration for libpam-winbind and libnss-winbind
winbind nss info = rfc2307
winbind trusted domains only = no
winbind use default domain = yes
winbind refresh tickets = yes

# Disable user list enumeration (getent passwd)
winbind enum users  = no

# Disable group list enumeration (getent group)
winbind enum groups = no

# Map Windows permissions to extended attributes
vfs objects = acl_xattr
map acl inherit = yes
store dos attributes = yes

Kui UNIX attribuute pole domeenikontrolleris defineeritud ja soovid, et winbind tuletaks UNIX kasutajate UID/GID domeenikontrolleris olevate SID kirjete järgi kasuta järgnevaid ridu:

# UNIX attribute templates for rid backend
template homedir = /home/%U
template shell = /bin/bash

# Reserve 1 000 000 to 16 777 216 for algorithmically generated UID-s
idmap config *:backend = rid
idmap config *:range = 1000000-16777216

Juhul kui plaanid UNIX attribuudid lisada domeenikontrollerisse RFC2307 1 skeemi alusel lisa ka järgnevad read:

# Include users and groups with UID/GID from 10000 to 20000
idmap config *:backend = ad
idmap config *:range = 10000-20000
idmap config *:schema_mode = rfc2307

RFC2307 1 eeldab, et uidNumber, gidNumber, gecos, homeDirectory, loginShell jms attribuudid on kättesaadavad üle LDAP-i. Neid attribuute saab määrata ka Active Directory Users and Computers all, kasutajate ning gruppide UNIX attributes kaardil.

../cfgmgmt/img/aduc-group-unix-attributes.png

Grupi UNIX attribuudid

../cfgmgmt/img/aduc-user-unix-attributes.png

Kasutaja UNIX attribuudid

Ka vanematele Microsoft Active Directory paigaldustele saab lisada Identity Management for UNIX Components 2 mooduli.

1(1,2)

https://wiki.samba.org/index.php/Using_RFC2307_on_a_Samba_DC

2

https://msdn.microsoft.com/en-us/library/cc731178.aspx

Domeeni liitmine

Esimalt küsi Administrator kasutaja jaoks Kerberose ticket:

kinit Administrator

Seejärel proovi domeenikontrolleriga liituda:

net ads join -k

Selle sammu sooritamisel kohalik masin võtab domeenikontrolleriga ühendust üle LDAP-i: püüab luua või uuendada olemasolevat arvuti objekti, lähtestab arvuti objekti parooli ning salvestab selle ka kohalikku masinasse, seab kasutusvalmis Kerberos keytabid.

Käivita winbind teenus:

service winbind restart

Kontrolli kas winbind leiab kasutajakontod ning grupid üles:

wbinfo -u
wbinfo -g

Probleemid domeeni liitmisel

Järgnev veateade tähendab üldjuhul, et sisestati vale administraatori parool:

Failed to join domain: failed to lookup DC info for domain 'EXAMPLE.ORG' over rpc: Logon failure

Kui domeeni liitmine ebaõnnestuma peaks kontrolli, et SRV kirjed õigesti lahenduks:

nslookup -type=SRV _ldap._tcp.example.org
nslookup -type=SRV _kerberos._tcp.example.org
nslookup -type=SRV _ldap._tcp.dc._msdcs.example.org

Täieliku zone transfer päringu saab dig abil teha, kui BIND9 konfiguratsioonis allow-transfers kirjete hulka on lisatud IP mille pealt zone transfer päringuid tahetakse teha:

dig -t AXFR example.org @domeenikontrolleri-ip

Vastus näeb välja järgnev:

; <<>> DiG 9.9.5-3ubuntu0.2-Ubuntu <<>> -t AXFR example.org @192.168.1.2
;; global options: +cmd
example.org.                3600    IN      SOA     dc1.example.org. hostmaster.example.org. 1 900 600 86400 3600
example.org.                900     IN      NS      dc1.example.org.
example.org.                900     IN      A       192.168.1.2
dc1.example.org.    900     IN      A       192.168.1.2
_msdcs.example.org. 900     IN      NS      dc1.example.org.
_gc._tcp.example.org.       900     IN      SRV     0 100 3268 dc1.example.org.
_ldap._tcp.example.org. 900 IN      SRV     0 100 389 dc1.example.org.
_kpasswd._udp.example.org. 900 IN   SRV     0 100 464 dc1.example.org.
_kpasswd._tcp.example.org. 900 IN   SRV     0 100 464 dc1.example.org.
_kerberos._udp.example.org. 900 IN  SRV     0 100 88 dc1.example.org.
_kerberos._tcp.example.org. 900 IN  SRV     0 100 88 dc1.example.org.
ForestDnsZones.example.org. 900 IN  A       192.168.1.2
DomainDnsZones.example.org. 900 IN  A       192.168.1.2
_ldap._tcp.ForestDnsZones.example.org. 900 IN       SRV 0 100 389 dc1.example.org.
_ldap._tcp.DomainDnsZones.example.org. 900 IN       SRV 0 100 389 dc1.example.org.
_gc._tcp.Default-First-Site-Name._sites.example.org. 900 IN SRV 0 100 3268 dc1.example.org.
_ldap._tcp.Default-First-Site-Name._sites.example.org. 900 IN       SRV 0 100 389 dc1.example.org.
_kerberos._tcp.Default-First-Site-Name._sites.example.org. 900 IN SRV       0 100 88 dc1.example.org.
_ldap._tcp.Default-First-Site-Name._sites.ForestDnsZones.example.org.       900 IN SRV 0 100 389 dc1.example.org.
_ldap._tcp.Default-First-Site-Name._sites.DomainDnsZones.example.org.       900 IN SRV 0 100 389 dc1.example.org.
example.org.                3600    IN      SOA     dc1.example.org. hostmaster.example.org. 1 900 600 86400 3600
;; Query time: 4 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Tue May 26 09:59:40 EEST 2015
;; XFR size: 21 records (messages 1, bytes 948)

PAM seadistamine

Enne kui jätkad lähtesta root kasutaja parool ning veendu, et saad sisse logida root kasutajana. Jäta lahti mitu sessiooni root kasutajana, et muudatusi tagasi võtta, muidu võib juhtuda, et lukustad end masinast välja!

Paigalda winbind NSS ning PAM moodulid:

apt-get install libpam-winbind libnss-winbind \
    libpam-pwquality libpam-ck-connector \
    libpam-cap libpam-systemd

Samba koosseisu kuuluv winbind pakub kõiki nelja funktsionaalsust mida PAM vajab: konto info pärimine, autentmine, sessiooni algatamine ning paroolivahetus. Selleks, et root ning teenuste jaoks vajalikud kasutajakontod tööle jääksid jätame alles ka PAM-i UNIX mooduli:

Pluggable Authentication Module account auth session password PAM facilities PAM libraries pam_unix.so (/etc/passwd, /etc/shadow) pam_winbind.so (/etc/samba/smb.conf, DNS, LDAP, Kerberos, AD RPC)

PAM koos UNIX ning winbind moodulitega.

Seadistame nimeteenuse (Name Service Switch) failis /etc/nsswitch.conf. Siinkohal compat viitab just /etc/passwd, /etc/group ja /etc/shadow failipõhistele andmebaasidele:

# Need võid otse käsurealt käivitada
sed -i -e "s/^passwd:.*/passwd: compat winbind/" /etc/nsswitch.conf
sed -i -e "s/^group:.*/group: compat winbind/" /etc/nsswitch.conf
sed -i -e "s/^shadow:.*/shadow: compat/" /etc/nsswitch.conf

Nüüd saad kontrollida kas kasutajad ning grupid üles leitakse:

getent passwd kasutajanimi
getent group 'domain users'

Important

Kui mõnda kasutajat või gruppi ei leita, võib kahtlustada UNIX attribuutide puudumist vastavalt objektil.

Seadista ringi konto info pärimine failis /etc/pam.d/common-account:

#%PAM-1.0
account required pam_unix.so broken_shadow
account sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account [default=bad success=ok user_unknown=ignore] pam_winbind.so
account required pam_permit.so

Seadista ringi autentimise etapp failis /etc/pam.d/common-auth:

#%PAM-1.0
auth sufficient pam_unix.so nullok try_first_pass
auth requisite pam_succeed_if.so uid >= 500 quiet
auth sufficient pam_winbind.so try_first_pass
auth requisite pam_deny.so
auth optional pam_cap.so

Seadista ringi sessiooni algatamise etapp failis /etc/pam.d/common-session:

#%PAM-1.0
session [default=1] pam_permit.so
session requisite pam_deny.so
session required pam_permit.so
session required pam_unix.so
session optional pam_systemd.so
session optional pam_winbind.so
session required pam_mkhomedir.so umask=0077
session optional pam_ck_connector.so nox11

Seadista ringi paroolivahetuse etapp failis /etc/pam.d/common-password:

#%PAM-1.0
password requisite pam_pwquality.so retry=3
password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok
password sufficient pam_winbind.so use_authtok
password required pam_permit.so
password optional pam_gnome_keyring.so
password requisite pam_deny.so

Proovi lülituda ümber kasutajaks mis on defineeritud domeenikontrolleris:

su kasutajanimi

Probleemide korral jälgi autentimise logi:

tail -f /var/log/auth.log

Puhvrite tühjendamine

Samba puhul võib täheldada, et winbind puhverdab infot aggresiivselt ning puhvrite täielikult tühjendamiseks võib vaja minna midagi säärast:

service winbind stop
service smbd stop
net cache flush
rm -f /var/lib/samba/*.tdb
rm -f /var/lib/samba/group_mapping.ldb
service smbd start
service winbind start

Siit edasi võid jätkata OpenSSH Kerberiseerimisega või Samba4 baasil failiserveri seadistamise.

Kokkuvõte

Ülalt on näha, et Linuxi masina domeeni liitmine ei ole väga kerge ning kätkeb endas mitmete failide redigeerimist. Elu teeb märgatavalt lihtsamaks skript mis küsib domeeni suffiksit ning administraatori parooli.

Active Directory Samba4 SSSD Kerberos LDAP