Arch Linux Egyéb

SSSD telepítése Active Directory és krb5 beállításával Arch Linuxon

Az SSSD a System Security Services Daemon rövidítése. Elsődleges célja az, hogy egy keretrendszeren keresztül hozzáférést és autentikációs, hitelesítési megoldást adjon távoli erőforrásokon található személyazonosságokhoz cache és offline állapot támogatással.

Az SSSD PAM és NSS modulokat is biztosít (illetve D-BUS alapú felületet is a későbbiekben), míg a háttérben számos backend támogatja a különböző rendszerek elérhetőségét. A backendek tárolják az identitásokat és egyéb adatokat. A backend nevet Én akasztottam rá, egyébként authentication provider-nek hívják. Backendek a teljesség igénye nélkül:

  • LDAP
  • Windows Active Directory (AD)
  • FreeIPA
  • krb5
  • local SSSD
  • proxy

Azt nem mondanám, hogy a téma zsebemben van, így elképzelhető, hogy egy-két részlet nem teljes, következetlen, vagy más rendszereken (pl. Ubuntu) nem teljes mértékben használható.  A krb5 például teljesen felesleges (csak szerverek között az Active Directory is, elég lenne az LDAP), de korábban még ezzel alakítottam ki a rendszereket, és nem volt időm foglalkozni a krb5 nélküliséggel.

A leírás során azt feltételezem, hogy van már egy beállított Samba 4 vagy Windows AD rendszered unixos felhasználókkal és csoportokkal.

Az SSSD telepítése rém egyszerű:

pacman -Sy sssd

Amennyiben nem létezik az /etc/sssd/sssd.conf fájl, hozd létre az alábbi tartalommal:

[sssd] services = nss, pam, sudo, ssh domains = domain.tld #debug_level = 9 [nss] [pam] [domain/domain.tld] #debug_level = 9 cache_credentials = true krb5_store_password_if_offline = true id_provider = ad access_provider = ad auth_provider = ad krb5_keytab=/etc/krb5.keytab krb5_realm = DOMAIN.TLD ldap_id_mapping = false #fallback_homedir = /home/%u #default_shell = /bin/bash enumerate = true

A domain.tld tartomány egy példa tartomány, Neked le kell cserélned a sajátodéra. Az sssd.conf fájlt csak a root írhatja és olvashatja (0600).

Az /etc/krb5.conf fájlban az  alábbiakat állítsd be:

[libdefaults]         default_realm = DOMAIN.TLD         dns_lookup_realm = true         dns_lookup_kdc = true         ticket_lifetime = 1d         forwardable = true         proxiable = true [realms]         DOMAIN.TLD = {                 kdc = domain.tld                 admin_server = domain.tld                 default_domain = domain.tld         } [domain_realm]         .domain.tld = DOMAIN.TLD         domain.tld = DOMAIN.TLD #       domain = DOMAIN.TLD [appdefaults]         pam = {         ticket_lifetime         = 1d         renew_lifetime          = 1d         forwardable             = true         proxiable               = false         retain_after_close      = false         minimum_uid             = 10000         debug                   = false         } [logging]         default                 = FILE:/var/log/krb5libs.log         kdc                     = FILE:/var/log/kdc.log         admin_server            = FILE:/var/log/kadmind.log

A domain.tld tartomány szintén lecserélendő a saját tartományoddal. A kdc és admin_server értéke a valós szerver legyen ne a tartomány neve. Ha samba-t használsz, akkor annak a neve, ha pedig ténylegesen Windows AD-hoz akarsz csatlakozni, akkor azét. Előfordulhat, hogy megegyezik a tartomány nevével, de általában külön aldomaint kap, mivel a domain controller szokta ezt a funkciót ellátni (pl. ad.domain.tld, pdc.domain.tld, kdc.domain.tld, stb).

Exportáld ki a krb5 machine keytab fájlt a samba vagy AD szerveren. Samba esetében:

net ads keytab create -U Administrator

Az Administrator nevű user a Te rendszeredben más is lehet, erre figyelj oda. Ha esetleg egy másik gépeden már megvan a keytab fájl, akkor csak másold át. A keytab fájlt csak a root írhatja és olvashatja (0600).

/etc/nssswitch.conf módosítása:

# Begin /etc/nsswitch.conf passwd: files sss group: files sss shadow: files sss sudoers: files sss publickey: files hosts: files dns myhostname networks: files protocols: files services: files ethers: files rpc: files netgroup: files # End /etc/nsswitch.conf

Ebben tulajdonképpen felvettük az sss értéket, illetve a sudoers teljes sort.

Az /etc/nscd.conf fájlban kapcsoljuk ki a rendszer cache funkcióját userek és groupok tekintetében. A módosítandó rekordok:

enable-cache            passwd          no enable-cache            group           no

Létrehozzuk az /etc/pam.d/sss fájlt az alábbi tartalommal:

auth     sufficient pam_unix.so nullok try_first_pass auth     sufficient pam_sss.so use_first_pass auth     required   pam_deny.so account  required   pam_unix.so #account  [default=bad success=ok user_unknown=ignore] pam_sss.so account  optional   pam_sss.so password    requisite     pam_cracklib.so try_first_pass retry=3 minlen=8 dcredit=0 ucredit=0 ocredit=0 lcredit=0 type= password sufficient pam_unix.so try_first_pass nullok sha512 shadow password sufficient pam_sss.so use_authtok password required   pam_deny.so session         required        pam_mkhomedir.so skel=/etc/skel umask=0077 session  required   pam_unix.so session  optional   pam_sss.so

Szintén létrehozzuk a /etc/pam.d/sssd-shadowutils fájlt (az sssd telepítése után valószínűleg már létezik):

#%PAM-1.0 auth        [success=done ignore=ignore default=die] pam_unix.so nullok try_first_pass auth        required      pam_deny.so account     required      pam_unix.so account     required      pam_permit.so

Az /etc/pam.d könyvtárban az alábbi fájlokat módosítjuk:

/etc/pam.d/passwd

#%PAM-1.0 password        include         sss 

/etc/pam.d/su

#%PAM-1.0 auth            sufficient      pam_rootok.so auth            include         sss account         include         sss session         include         sss

/etc/pam.d/su-l

#%PAM-1.0 auth            sufficient      pam_rootok.so auth            include         sss account         include         sss session         include         sss

/etc/pam.d/system-auth

#%PAM-1.0 auth      include   sss auth      required  pam_unix.so     try_first_pass nullok auth      optional  pam_permit.so auth      required  pam_env.so account   include   sss account   required  pam_unix.so account   optional  pam_permit.so account   required  pam_time.so password  include   sss #password  required  pam_unix.so     try_first_pass nullok sha512 shadow password  optional  pam_permit.so session   required  pam_limits.so session   include   sss session   required  pam_unix.so session   optional  pam_permit.so

Elméletileg az összes szükséges elem megvan, csupán a szolgáltatásokat kell elindítani vagy újra indítani:

systemctl restart nscd systemctl enable sssd systemctl start sssd 

Ezután a teszt, például felhasználók listázása. Ebben már meg kell jelennie az AD-ban lévő felhasználóknak is:

getent passwd vagy getent passwd username

A csoportok hasonlóképpen működnek:

getent group vagy  getent group groupname

Amit még ne felejts el: /etc/sudoers fájl szerkesztése felhasználók és/vagy csoportok jogosultság beállításának érdekében. Nem kötelező, de általában szoktuk.

Loading