Linuxi sülearvuti domeeni liitmine19. May '15

Sissejuhatus

Linuxi masina domeeni lisamine ei puuduta ainult sülearvuteid ja tööjaamu, vaid ka kõiki samas domeenis tegutsevaid teenusservereid.

Domeeni liitmine kätkeb endas mitut sammu:

  • Kerberose vaikimisi realm paika sättimine

  • Samba klientrakenduse konfiguratisooni paika sättimine

  • Masina jaoks konto loomine domeenikontrolleris, parooli genereerimine ning Kerberose keytabi genereermine

  • PAM autentimismoodulite ning teenuste ümber seadistamine

  • (Valikuline) Domeenikontrolleri LDAPS sertifikaadi salvestamine masinasse

Käesolevas näites kasutame System Security Services Daemon (SSSD) tarkvara, et pakkuda autentimist domeenikontrolleri vastu. SSSD on üks paljudest meetoditest kuidas Linux masinas autentida saab.

Important

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

Samba kliendi ümber seadistamine

Paigalda Samba klientrakendused:

apt-get install samba-common-bin libpam-sss libnss-sss libsasl2-modules-gssapi-heimdal \
    libpam-pwquality libpam-ck-connector libpam-cap libpam-systemd

Eemalda Samba konfiguratsiooni näidisfail:

rm -fv /etc/samba/smb.conf

Domeeni liitmiseks net ads join käsuga on vaja eelnevalt seadistada Samba kliendi pool:

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

# NetBIOS nimi, 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

Domeeni liitumine

Kui Samba konfiguratsioon on paigas võib proovida domeenikontrolleriga liitumist:

net ads join -U Administrator

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.

Kui domeeniga liitmine peaks ebaõnnestuma, kontrolli et kasutaja oleks Domain Administrators grupis ning et kellaaeg oleks õige nii kohalikus masinas kui domeenikontrolleris. Kella erinevust saab kontrollida järgnevalt:

net ads info

Seadista SSSD

Loo fail /etc/sssd/sssd.conf: 1

[sssd]
services = nss, pam
config_file_version = 2
domains = example.org

[nss]
fallback_homedir = /home/%u
override_shell = /bin/bash

[pam]

[domain/example.org]
# Kasutajakontode pärimine üle LDAP
id_provider = ad

# Autentmine üle Kerberose
auth_provider = ad
access_provider = ad

# Paroolivahetus üle Kerberose
chpass_provider = ad
sudo_provider = ad

# Parooli räside puhverdamine kohalikus masinas
cache_credentials = true

# Ära uuenda selle masina DNS kirjet automaatselt
dyndns_update = false
krb5_use_enterprise_principal = false
ldap_disable_referrals = true

# Kasuta RFC2307 attribuute domeenikontrollerist
ldap_id_mapping = false

Kuna SSSD on generic autentimise raamistik, siis ülal näidatud SSSD konfiguratsiooni taustal toimub umbes-täpselt midagi säärast. Järgnev lõik on lihtsalt selgituseks:

[domain/example.org]
id_provider = ldap
ldap_schema = rfc2307bis
ldap_referrals = false
ldap_uri = ldap://dc1.example.org
ldap_search_base = dc=example,dc=org
ldap_force_upper_case_realm = true

# User object attribute mapping
ldap_user_object_class = user
ldap_user_name = samAccountName
ldap_user_home_directory = unixHomeDirectory
ldap_user_principal = userPrincipalName
ldap_user_shell = loginShell

# Group object attribute mapping
ldap_group_object_class = group

# Account expiration policy
access_provider = ldap
ldap_access_order = expire
ldap_account_expire_policy = ad

# Authentication and password change is provided by Kerberos
auth_provider = krb5
chpass_provider = krb5

# Kerberos credentials
ldap_sasl_mech = gssapi
ldap_sasl_authid = dc1$@EXAMPLE.ORG
krb5_realm = EXAMPLE.ORG
krb5_server = dc1.example.org
krb5_kpasswd = dc1.example.org
ldap_krb5_keytab = /etc/krb5.keytab

Määra failiõigused:

chmod 0600 /etc/sssd/sssd.conf

Käivita teenus:

service sssd restart
1

https://www.freeipa.org/images/d/dd/Freeipa30_sssd-ad-provider.pdf

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 NSS ning PAM moodulid SSSD jaoks:

apt-get install libpam-sss libnss-sss

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_sss.so (/etc/sssd/sssd.conf, DNS, LDAP, Kerberos)

PAM koos UNIX ning sss moodulitega.

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

sed -i -e "s/^passwd:.*/passwd: compat sss/" /etc/nsswitch.conf
sed -i -e "s/^group:.*/group: compat sss/" /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'

Kui mõnda kirjet 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_succeed_if.so uid < 1000 quiet
account [default=bad success=ok user_unknown=ignore] pam_sss.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 >= 1000 quiet
auth sufficient pam_sss.so use_first_pass
auth required pam_deny.so
auth optional pam_cap.so

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

#%PAM-1.0
session required pam_limits.so
session required pam_unix.so
session optional pam_sss.so
session required pam_mkhomedir.so
session     optional pam_systemd.so
session optional pam_ck_connector.so nox11
session optional pam_umask.so

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

#%PAM-1.0
password sufficient pam_unix.so sha512 obscure min=4 max=8 nullok try_first_pass
password sufficient pam_sss.so use_authtok
password optional pam_gnome_keyring.so
password required 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
Kerberos LDAP SSSD Samba4 Active Directory