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.
Ka vanematele Microsoft Active Directory paigaldustele saab lisada Identity Management for UNIX Components 2 mooduli.
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:
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.