Töömasinate seadistamine autentimaks vastu LDAP serverit31. Oct '13

Kui LDAP server on paigaldatud ning kasutajad ja grupid sinna loodud saab Debian Jessie või Ubuntu baasil töömasina autentima vastu LDAP serverit üsna hõlpsalt.

Esiteks tuleks enda jaoks lahti mõtestada tarkvarapaketid millega on võimalik vastu LDAP serverit autentida ning valida nende seast kõige sobivam. Valikus on neid neli ning minu hinnangul ülevalt-alla pädevuse järjekorras:

  1. libpam-ldap

  2. libpam-ldapd + nslcd

  3. nsscache + libpam-ldap + libpam-ccreds

  4. libpam-sss + sssd

libpam-ldap

See PAM moodul teeb iga päringu kohta uue ühenduse LDAP serveri pihta. Ilma täiendavate mooduliteta sülearvuti peal kasutuskõlbmatu, vt nsscache.

Paigaldamine:

sudo apt-get install libpam-ldap libnss-ldap

Seis distributsioonides:

  • wheezy - Testitud, töötab

  • jessie - Olemas

  • precise - Testitud, töötab

  • trusty - Eemaldatud, libpam-ldap pakett asendab libpam-ldapd paketti

libpam-ldapd + nslcd

Hoiab masina kohta nslcd deemonit käigus mis multipleksib kõik LDAP päringud ühte ühendusse. Vanades versioonides sülearvutitest autentimist ma ei suutnud kuidagi rahuldavalt käima saada kuna see tegi hard bindi LDAP serveri pihta ja kui LDAP server kättesaadav polnud siis blokeeris mitmed olulised toimingud kaasa arvatud sisselogimine.

Esiteks tuleb paigladada vastavad PAM moodulid:

apt-get install libnss-ldapd libpam-ldapd nslcd

Paigaldusel küsitakse informatsiooni mis salvestub faili /etc/nslcd.conf:

# Käita teenust privilegeerimata kasutajana
uid nslcd
gid nslcd

# LDAP serveri aadress
uri ldap://212.47.220.203/

# Kasutajate ja gruppide otsingu tee
base dc=ldap,dc=povi,dc=ee

# Luba ainult LDAPv3 protokolli
ldap_version 3

Selle faili muutmisel tuleb teenus ka taaskäivitada:

sudo service nslcd restart

Seadista töömasina /etc/nsswitch.conf failis ära kuskohast informatsiooni loeb süsteem:

passwd: files ldap      # Kasutajanimed
group: files ldap       # Grupid
shadow: files ldap      # Parooliräsid
hosts: files dns ldap   # Domeeninimed
networks: files ldap    # ?
protocols: db files
services: db files
ethers: db files
rpc: db files
netgroup: nis

Peale seda peaks töötama getent käsk LDAP serveri pihta kuhu lisanduvad LDAP serveri kirjed:

getent passwd

Käivita pam-auth-config ning lülita sisse LDAP moodulid ning paroolide puhverdamine.

Ilmselt pole otstarbekas audio, video, cdrom, floppy jms gruppe LDAPi lisada. Seetõttu saame töömasina PAM seadistustes /etc/security/group.conf öelda, et iga kasutaja lisataks sisselogimisel süsteemigruppidesse:

*;*;*;Al0000-2400;cdrom,floppy,audio,dip,video,plugdev,netdev
*;*;*;Al0000-2400;vboxusers

Peale sisse logimist peaks groups käsk kajastama muudatusi, samas vaadates ühe kasutaja gruppi kuuluvust siis neid gruppe seal pole:

lauri@itx ~ $ groups lauri
lauri : lauri sudo
lauri@itx ~ $ groups
lauri cdrom floppy sudo audio dip video plugdev netdev

Niiviisi seadistatud töömasinas saab ühele kasutajale administraatori õigused lisada järgnevalt:

gpasswd -a <LDAP kasutajanimi> sudo

Seis distributsioonides:

  • wheezy - Testitud, töötas, enam pole kasutuses

  • jessie - Olemas

  • precise - Olemas

  • trusty - Ümber nimetatud ning asendab libpam-ldap paketti (?)

nsscache + libpam-ldap + libpam-ccreds

Googlest pärit projekt mille eesmärk puhverdada kasutajad ning grupid kohalikku arvutisse. Autentimisel pöördutakse ikkagi LDAP serveri poole libpam-ldap mooduli abil ning libpam-ccreds moodulit saab kasutada paroolide puhverdamiseks näiteks sülearvuti puhul. Praegune Tallinna koolide piloot kasutab käesolevat skeemi.

sudo apt-get install nsscache libpam-ldap libpam-ccreds

Sisesta konfiguratsioon /etc/nsscache.conf faili:

[DEFAULT]
source = ldap
cache = nssdb
maps = passwd, group
timestamp_dir = /var/lib/nsscache
ldap_uri = ldap://ldap.povi.ee
ldap_base = dc=edu,dc=ee
ldap_filter = (objectclass=posixAccount)
ldap_bind_dn = ""
ldap_bind_password = ""
nssdb_dir = /var/lib/misc
nssdb_makedb = /usr/bin/makedb
files_cache_filename_suffix = cache

[passwd]
ldap_base = dc=edu,dc=ee
ldap_filter = (objectclass=posixAccount)

[group]
ldap_base = dc=edu,dc=ee
ldap_filter = (objectclass=posixGroup)

[shadow]
ldap_filter = (objectclass=shadowAccount)

[netgroup]
ldap_base = ou=netgroup,dc=example,dc=com
ldap_filter = (objectclass=nisNetgroup)
files_cache_filename_suffix =

[automount]
ldap_base = ou=automounts,dc=example,dc=com
files_cache_filename_suffix =
cache = files

Puhverda kasutajad ja grupid, mul on /etc/cron.daily all skript mis paneb selle käsu käima iga päev:

nsscache update --full

Pane PAM kasutajaid ja gruppe pärima kohalikust andmebaasist failis /etc/nsswitch.conf:

passwd:         compat db
group:          compat db
shadow:         compat
hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
networks:       files
protocols:      db files
services:       db files
ethers:         db files
rpc:            db files
netgroup:       nis

Seadista PAM ümber, lülita sisse LDAP ning ccreds moodulid:

sudo pam-auth-config

Seis distributsioonides:

  • wheezy - Testitud, töötab

  • jessie - nsscache pakett eemaldatud

  • precise - Testitud, töötab

  • trusty - Testitud, töötab

libpam-sss + sssd

Red Hatist pärit projekt mille eesmärk kõige modernsemal moel autentimist sooritada FreeIPA serveri vastu. Toetab nii LDAP-i kui Kerberosega sisse logimist. Testisin OpenLDAP-iga, kuid Samba4 ning Active Directory vastu peaks saama ka autentida. Toetab domeeni järgi sisse logimist kasutaja@domeen.ee järgi. Nõuab TLS sertifikaate LDAP ühenduse jaoks kasutaja autentimisel.

Paigalda paketid:

sudo apt-get install sssd libpam-sss libnss-sss

Sisesta konfiguratsioon /etc/sssd/sssd.conf faili:

[sssd]
config_file_version = 2
domains = koodur.com
services = nss, pam

[nss]

[pam]

[domain/koodur.com]
description = LDAP domain with AD server
debug_level = 4
cache_credentials = true
enumerate = false
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
access_provider = ldap
ldap_uri = ldap://ldap.koodur.com
ldap_tls_cacert = /etc/ldap/root.crt
#ldap_tls_cert = /etc/ldap/hypercubie.crt
#ldap_tls_key = /etc/ldap/hypercubie.key
#ldap_id_use_start_tls = True
ldap_schema = rfc2307bis
ldap_search_base = dc=koodur,dc=com
ldap_user_search_base = ou=People,dc=koodur,dc=com
ldap_user_object_class = posixAccount
ldap_user_home_directory = homeDirectory
#ldap_user_principal = userPrincipalName
ldap_group_search_base = ou=Groups,dc=koodur,dc=com
ldap_group_object_class = posixGroup
ldap_access_order = expire
ldap_account_expire_policy = ad
ldap_force_upper_case_realm = true
ldap_pwd_policy = none
#krb5_server = wspace.mydomain.com
#krb5_realm = WSPACE.MYDOMAIN.NL
#ldap_default_bind_dn = CN=Administrator,CN=Users,DC=koodur,DC=com
#ldap_default_authtok_type = password
#ldap_default_authtok = salakala
ldap_tls_reqcert = allow # Mul on sertidega mingi kala

Taaskäivita sssd deemon:

sudo /etc/init.d/sssd restart

Seis distributsioonides:

  • wheezy - Ilma backports repositooriumita vist töötaks, sssd on lingitud mingi vana libldb teegi vastu

  • jessie - Testitud ning kasutuses, oli palju jebimist TLS sertifikaatidega

  • precise - ?

  • trusty - Pakett olemas, kui pam-auth-config all sisse lülitada siis masina alglaadimine jäi pooleli

libpam-ldap sssd PAM libpam-ldapd nsscache LDAP