Realmd, adcli, sssd ja Active Directory kasutamine

Allikas: Imre kasutab arvutit

Sissejuhatus

Tundub, et 2016 aasta kevadel on suhteliselt mõnus kasutada Linux operatsioonisüsteemi koostöös Active Directory domeenikontrolleriga või samaväärse Samba v. 4 põhineva lahendusega, nt Zentyal. Käesolev tekst keskendub Debian v. 8 Jessie liidestamisele Zentyal v. 4.2 põhineva Active Directory'ga. Eraldi punktides kirjeldatakse lühidalt ka teisi operatsioonisüsteeme. Lahenduses teeb keskset tööd SSSD (System Security Services) https://fedorahosted.org/sssd/ tarkvara.

Tööpõhimõte

Töötav AD kataloogiga liidestatud süsteem paistab selline

              ----|----------------------------|------------------------------|---
                  |                            |                              |
                __|__                        __|__                          __|__
               |     |                      |     |                        |     |
               |_____|                      |_____|                        |_____|

        AD domeenikontroller               server 1         ...        töökohaarvuti 1    ...
          samba protsessid              sssd protsessid                sssd protsessid
        port 53, 88, 389 jne         realm, adcli käivitamine       realm, adcli käivitamine

kus

  • AD domeenikontrolleris töötab Zentyal puhul Samba v. 4
  • serverites ja töökohaarvutites töötavad sssd protsessid
  • realm, adcli jt utiliite kasutatakse korra, nt arvuti liidestamisel domeeniga

Tulemusena on kasutada selliste omadustega süsteem

  • kasutaja saab logida sisse arvutisse oma AD ligipääsuga
  • sisselogimist saab kontrollida AD gruppi kuuluvuse alusel
  • esmakordsel sisselogimisel tekitatakse kasutajale lokaalne kodukataloog, nt /home/priit
  • peale sisselogimist saab kasutaja muuta nö tavalise passwd utiliidi abil oma AD kasutaja parooli
  • kasutajate uid:gid väärtused on pealtnäha juhuslikud
  • kui ajutiselt puudub ligipääs domeenikontrollerile, saab siiski kasutaja oma AD ligipääsuga sisse logida (eeldusel, et ta on piisavalt hiljuti sisse loginud ja vajalikud andmed on sssd puhvris)

Süsteem koosneb sellistest tarkvaralistest komponentidest

  • realmd https://www.freedesktop.org/software/realmd/ - juhib teiste komponentide paigaldamist, kasutamist ja seadistamist, nö deemon protsessi ei ole; hädapärast saab süsteemi seadistada ning seejärel kasutada ka ilma realm utiliidi endata
  • server-software - domeenikontrolleri tarkvara, active-directory
  • membership-software - tarkvara, mille abil toimub arvuti liidestamine domeeniga; samba (net programm) või adcli; nö deemon protsessi ei ole
  • client-software - winbind või sssd; tööd tegev deemon protsess

Antud juhul kasutatakse eelistatult vastavalt adcli ja sssd https://fedorahosted.org/sssd/ tarvkara. Põhimõtteliselt ei ole väga oluline, millise membership tarkvara abil toimub liidestamine.

realm programm on võimeline https://wiki.debian.org/PackageKit süsteemi abil automaatselt operatsioonisüsteemi paketihaldusest vajalikku tarkvara paigaldama.

SSSD tööpõhimõte

  • NSS seadistusfailis /etc/nsswitch.conf kirjeldatakse sss teekide kasutamine
passwd:     files sss
shadow:     files sss
group:      files sss
  • PAM seadistused failides /etc/pam.d/common-auth jt, kus kirjeldatakse sss teekide kasutamine

Erinevad SSSD komponendid suhtlevad omavahel sarnaselt

                                   SSSD
                   _____________________________________
                  |                                     |
 SSS klient --->  |  NSS Responder                      |
                  |                                     |
                  |                 AD Provider plugin  | ---> AD server
                  |                                     |
 SSS klient --->  |  PAM Responder                      |
                  |_____________________________________|

kus

  • SSS NSS klient on nt käsk id, mis nö läbi teekide jõuab SSSD vastava komponendi juurde (NSS responder)
  • SSL PAM klient on nt ssh klient
  • SSS klientide pöördumisi teenindavad vastava responderid
  • väliste teenuste poole pöördutakse vastavate provider pluginate abil

Kasulikud lisamaterjalid

Ettevalmistamine

Domeeniga liidestatavas arvutis on

  • ntp abil kell õige
  • nimeserveriks domeenikontroller
  •  ? arvuti hostname on registreeritud AD dns'is (arvutinimi.sise.moraal.ee)

Debian v. 8 Jessie keskkonnas tarkvara paigaldamine

Tarkvara paigaldamiseks sobib öelda, seejärel realm käsu andmisel paigaldatakse vajadusel automaatselt muud vajalikud paketid

# apt-get install realmd

Tundub, et sellise komplekti paigaldamine on ka sobiv

# apt-get install krb5-user realmd sssd sssd-tools adcli samba-common-bin

Tundub, et realmd seadistusfaili /etc/realmd.conf ilmutatud kujul ei kasutata, aga olemas on midagi

/usr/lib/realmd/realmd-defaults.conf
/usr/lib/realmd/realmd-distro.conf

Debian v. 8 Jessie sisaldab

  • realmd v. 0.15.1
  • sssd v. 1.11.7

Debian v. 8 Jessie liidestamine

AD nägemise kontrollimiseks, domeenikontrollerit aitab leida vastav SRV kirje

# realm --verbose discover sise.moraal.ee
 * Resolving: _ldap._tcp.sise.moraal.ee
 * Performing LDAP DSE lookup on: 192.168.10.125
 * Successfully discovered: sise.moraal.ee
sise.moraal.ee
  type: kerberos
  realm-name: SISE.MORAAL.EE
  domain-name: sise.moraal.ee
  configured: no
  server-software: active-directory
  client-software: sssd
  required-package: sssd-tools
  required-package: sssd
  required-package: libnss-sss
  required-package: libpam-sss
  required-package: adcli
  required-package: samba-common-bin

kus

  • configured: no tähistab asjaolu, et arvuti ei ole parasjagu domeeniga liidestatud

Arvuti AD'ga liidestamiseks

# realm --verbose join sise.moraal.ee -U Administrator
 * Resolving: _ldap._tcp.ad-z1.sise.moraal.ee
 * Resolving: ad-z1.sise.moraal.ee
 * Performing LDAP DSE lookup on: 192.168.10.125
 * Successfully discovered: sise.moraal.ee
Password for Administrator: 
 * Unconditionally checking packages
 * Resolving required packages
 * LANG=C /usr/sbin/adcli join --verbose --domain sise.moraal.ee --domain-realm SISE.MORAAL.EE \
   --domain-controller 192.168.10.125 --login-type user --login-user Administrator --stdin-password
 * Using domain name: sise.moraal.ee
 * Calculated computer account name from fqdn: REALM-1
 * Using domain realm: sise.moraal.ee
 * Sending netlogon pings to domain controller: ldap://192.168.10.125
 * Received NetLogon info from: ad-z1.sise.moraal.ee
 * Wrote out krb5.conf snippet to /var/cache/realmd/adcli-krb5-2XOkML/krb5.d/adcli-krb5-conf-bhYqJX
 * Authenticated as user: Administrator@SISE.MORAAL.EE
 * Looked up short domain name: SISE
 * Using fully qualified name: realm-1
 * Using domain name: sise.moraal.ee
 * Using computer account name: REALM-1
 * Using domain realm: sise.moraal.ee
 * Calculated computer account name from fqdn: REALM-1
 * Generated 120 character computer password
 * Using keytab: FILE:/etc/krb5.keytab
 * Using fully qualified name: realm-1
 * Using domain name: sise.moraal.ee
 * Using computer account name: REALM-1
 * Using domain realm: sise.moraal.ee
 * Looked up short domain name: SISE
 * Computer account for REALM-1$ does not exist
 * Found well known computer container at: CN=Computers,DC=sise,DC=moraal,DC=ee
 * Calculated computer account: CN=REALM-1,CN=Computers,DC=sise,DC=moraal,DC=ee
 * Created computer account: CN=REALM-1,CN=Computers,DC=sise,DC=moraal,DC=ee
 * Set computer password
 * Retrieved kvno '1' for computer account in directory: CN=REALM-1,CN=Computers,DC=sise,DC=moraal,DC=ee
 * Modifying computer account: dNSHostName
 * Modifying computer account: userAccountControl
 * Modifying computer account: operatingSystem, operatingSystemVersion, operatingSystemServicePack
 * Modifying computer account: userPrincipalName
 * Discovered which keytab salt to use
 * Added the entries to the keytab: REALM-1$@SISE.MORAAL.EE: FILE:/etc/krb5.keytab
 * Added the entries to the keytab: HOST/REALM-1@SISE.MORAAL.EE: FILE:/etc/krb5.keytab
 * Added the entries to the keytab: HOST/realm-1@SISE.MORAAL.EE: FILE:/etc/krb5.keytab
 * Added the entries to the keytab: RestrictedKrbHost/REALM-1@SISE.MORAAL.EE: FILE:/etc/krb5.keytab
 * Added the entries to the keytab: RestrictedKrbHost/realm-1@SISE.MORAAL.EE: FILE:/etc/krb5.keytab
 * /usr/sbin/update-rc.d sssd enable
 * /usr/sbin/service sssd restart
 * Successfully enrolled machine in realm

kus

  • hea on vaadata, milliste argumentidega nt adcli programmi taustal kasutatakse juhul kui peaks seda kuskil tarvis olema iseseisvalt kasutada

Tegevuse käigus genereeritakse muu hulgas

# find /etc/ -mmin -5 -type f -ls
   354    4 -rw-------   1 root     root         2148 May  8 01:32 /etc/krb5.keytab
 38569    4 -rw-r--r--   1 root     root         3709 May  8 01:32 /etc/krb5.conf
   344    4 -rw-------   1 root     root          452 May  8 01:32 /etc/sssd/sssd.conf

Peale liidestamist paistab

# realm list
sise.moraal.ee
  type: kerberos
  realm-name: SISE.MORAAL.EE
  domain-name: sise.moraal.ee
  configured: kerberos-member
  server-software: active-directory
  client-software: sssd
  required-package: sssd-tools
  required-package: sssd
  required-package: libnss-sss
  required-package: libpam-sss
  required-package: adcli
  required-package: samba-common-bin
  login-formats: %U@sise.moraal.ee
  login-policy: allow-realm-logins

Töö käigus genereeritakse, kasutamiseks on otstarbekas siin teha mõned muudatused, vt allpool

# cat /etc/sssd/sssd.conf 

[sssd]
domains = sise.moraal.ee
config_file_version = 2
services = nss, pam

[domain/sise.moraal.ee]
ad_server = ad-z1.sise.moraal.ee
ad_domain = sise.moraal.ee
krb5_realm = SISE.MORAAL.EE
realmd_tags = manages-system joined-with-adcli 
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = True
fallback_homedir = /home/%d/%u
access_provider = ad

/etc/krb5.keytab faili sisu

# klist -ke
Keytab name: FILE:/etc/krb5.keytab
KVNO Principal
---- --------------------------------------------------------------------------
   1 REALM-1$@SISE.MORAAL.EE (aes256-cts-hmac-sha1-96) 
   1 REALM-1$@SISE.MORAAL.EE (aes128-cts-hmac-sha1-96) 
   1 REALM-1$@SISE.MORAAL.EE (des3-cbc-sha1) 
   1 REALM-1$@SISE.MORAAL.EE (arcfour-hmac) 
   1 REALM-1$@SISE.MORAAL.EE (des-cbc-md5) 
   1 REALM-1$@SISE.MORAAL.EE (des-cbc-crc) 
   1 HOST/REALM-1@SISE.MORAAL.EE (aes256-cts-hmac-sha1-96) 
   1 HOST/REALM-1@SISE.MORAAL.EE (aes128-cts-hmac-sha1-96) 
   1 HOST/REALM-1@SISE.MORAAL.EE (des3-cbc-sha1) 
...

TGT hankimine arvuti konto keytab sissekande abil

# kinit -k -t /etc/krb5.keytab 'REALM-1$@SISE.MORAAL.EE'
root@realm-1:~# klist 
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: REALM-1$@SISE.MORAAL.EE

Valid starting       Expires              Service principal
05/08/2016 14:18:10  05/09/2016 00:18:10  krbtgt/SISE.MORAAL.EE@SISE.MORAAL.EE
        renew until 05/09/2016 14:18:10

Seejärel toimib nt ldapsearch

# ldapsearch -H ldap://ad-z1.sise.moraal.ee/ -Y GSSAPI -N -b "dc=sise,dc=moraal,dc=ee"

sssd deemonit saab juhtida systemctl abil

# systemctl status sssd
● sssd.service - System Security Services Daemon
   Loaded: loaded (/lib/systemd/system/sssd.service; enabled)
   Active: active (running) since Sun 2016-05-08 10:16:47 EEST; 2h 17min ago
  Process: 3864 ExecStart=/usr/sbin/sssd -D -f (code=exited, status=0/SUCCESS)
 Main PID: 3866 (sssd)
   CGroup: /system.slice/sssd.service
           ├─3866 /usr/sbin/sssd -D -f
           ├─3867 /usr/lib/x86_64-linux-gnu/sssd/sssd_be --domain sise.moraal.ee --debug-to-files
           ├─3868 /usr/lib/x86_64-linux-gnu/sssd/sssd_nss --debug-to-files
           └─3869 /usr/lib/x86_64-linux-gnu/sssd/sssd_pam --debug-to-files

May 08 10:16:47 realm-1 sssd_be[3867]: GSSAPI client step 1
May 08 10:16:47 realm-1 sssd_be[3867]: GSSAPI client step 2
...
# systemctl status realmd
● realmd.service - Realm and Domain Configuration
   Loaded: loaded (/lib/systemd/system/realmd.service; static)
   Active: inactive (dead)
     Docs: man:realmd(8)

Seoses sssd'ga töötavad sellised protsessid

# ps aux | grep sssd
root      3866  0.0  1.2 140272  6292 ?        Ss   10:16   0:00 /usr/sbin/sssd -D -f
root      3867  0.0  2.9 233564 14904 ?        S    10:16   0:00 /usr/lib/x86_64-linux-gnu/sssd/sssd_be --domain \
  sise.moraal.ee --debug-to-files
root      3868  0.0  3.7 133836 19004 ?        S    10:16   0:00 /usr/lib/x86_64-linux-gnu/sssd/sssd_nss --debug-to-files
root      3869  0.0  1.3 122220  7028 ?        S    10:16   0:00 /usr/lib/x86_64-linux-gnu/sssd/sssd_pam --debug-to-files

Lokaalsed andmebaasid jms asuvad kahes kataloogis, kui sssd on segadusse sattunud, aitab vahel nende kustutamine

# ls -ld /var/lib/sss/{db,mc}/*
-rw------- 1 root root 1609728 May  8 12:35 /var/lib/sss/db/cache_sise.moraal.ee.ldb
-rw------- 1 root root    3355 May  8 12:35 /var/lib/sss/db/ccache_SISE.MORAAL.EE
-rw------- 1 root root 1286144 May  8 10:16 /var/lib/sss/db/config.ldb
-rw------- 1 root root 1286144 May  8 01:32 /var/lib/sss/db/sssd.ldb
-rw-r--r-- 1 root root 5206312 May  8 10:55 /var/lib/sss/mc/group
-rw-r--r-- 1 root root 6806312 May  8 12:35 /var/lib/sss/mc/passwd
  • Domeenist arvuti eemaldamine
# realm --verbose leave sise.moraal.ee -U Administrator
Password for Administrator: 
 * LANG=C /usr/sbin/adcli delete-computer --verbose --domain sise.moraal.ee \
   --domain-realm SISE.MORAAL.EE --domain-controller  ad-z1.sise.moraal.ee --login-user Administrator --stdin-password
 * Using domain name: sise.moraal.ee
 * Calculated computer account name from fqdn: REALM-1
 * Using domain realm: sise.moraal.ee
 * Sending netlogon pings to domain controller: ldap://192.168.10.125
 * Received NetLogon info from: ad-z1.sise.moraal.ee
 * Wrote out krb5.conf snippet to /var/cache/realmd/adcli-krb5-JBNsEe/krb5.d/adcli-krb5-conf-tKxdpl
 * Authenticated as user: Administrator@SISE.MORAAL.EE
 * Looked up short domain name: SISE
 * Using fully qualified name: realm-1
 * Using domain name: sise.moraal.ee
 * Using computer account name: REALM-1
 * Using domain realm: sise.moraal.ee
 * Calculated computer account name from fqdn: REALM-1
 * Found computer account for REALM-1$ at: CN=REALM-1,CN=Computers,DC=sise,DC=moraal,DC=ee
 * Deleted computer account at: CN=REALM-1,CN=Computers,DC=sise,DC=moraal,DC=ee
 * Removing entries from keytab for realm
 * /usr/sbin/sss_cache --users --groups --netgroups --services --autofs-maps
 * Removing domain configuration from sssd.conf
 * /usr/sbin/update-rc.d sssd disable
insserv: warning: current start runlevel(s) (empty) of script `sssd' overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `sssd' overrides LSB defaults (0 1 6).
 * /usr/sbin/service sssd restart
Job for sssd.service failed. See 'systemctl status sssd.service' and 'journalctl -xn' for details.
 * Successfully unenrolled machine from realm

Seejuures eemaldatakse ka AD pealt arvuti konto, arvutist endast /etc/krb5.keytab, /etc/sssd/sssd.conf faili sisu jne.

Ligipääsu piirangute kehtestamine

AD gruppidele ja kasutajatele ligipääsupiirangute kehtestamiseks sobib öelda nt

# realm deny --all
# realm permit -g mgrupp
# realm permit priit

Tulemusena tehakse sssd.conf failis sellised muudatused

# diff /var/tmp/sssd.conf /etc/sssd/sssd.conf 
< access_provider = ad
---
> access_provider = simple
> simple_allow_groups = mgrupp
> simple_allow_users = imre

Parasjagu kehtestatud ligipääsu piiranguid näeb

# realm list
sise.moraal.ee
  type: kerberos
  realm-name: SISE.MORAAL.EE
  domain-name: sise.moraal.ee
  configured: kerberos-member
  server-software: active-directory
...
  required-package: samba-common-bin
  login-formats: %U
  login-policy: allow-permitted-logins
  permitted-logins: priit
  permitted-groups: mgrupp

Gruppi kuuluvate kasutajate esitamiseks

# getent group mgrupp
mgrupp:*:701401133:priit,tiina
# getent passwd tiina
tiina:*:701401134:701400513:Tiina Err:/home/tiina:/bin/bash

Üks grupp kasutusala on sudo juures kasutamine. Nt selleks, et sysadmin gruppi kuuluvad kasutajad ja ainult nad saaksid teha sudo peab olema fail

# cat /etc/sudoers.d/sysadmin
%sysadmin ALL=(ALL:ALL) ALL

adcli kasutamine

Otseselt ei ole adcli utiliidi kasutamise järele vajadust, programm realm teeb seda automaatselt. AD domeeniga liidestatud arvutis info küsimine

# adcli info sise.moraal.ee
[domain]
domain-name = sise.moraal.ee
domain-short = SISE
domain-forest = sise.moraal.ee
domain-controller = ad-z1.sise.moraal.ee
domain-controller-site = Default-First-Site-Name
domain-controller-flags = pdc gc ldap ds kdc timeserv closest writable good-timeserv
domain-controller-usable = yes
domain-controllers = ad-z1.sise.moraal.ee
[computer]
computer-site = Default-First-Site-Name

adcli utiliidi abil arvuti domeeni liidestamine

/usr/sbin/adcli join --verbose --domain sise.moraal.ee --domain-realm SISE.MORAAL.EE --domain-controller 192.168.10.125 \
  --computer-ou OU=Tookohaarvutid,OU=MORAAL,DC=sise,DC=moraal,DC=ee --login-type user \
  --login-user Administrator --stdin-password

kus

  • --computer-ou - kus AD kataloogi hierarhias asub arvuti

Põhimõtteliselt saab adcli abil domeenikontrollerisse teha kasutajaid, gruppe jms.

Liidestatud arvuti kasutamine

  • Logida sisse ssh abil
$ ssh priit@arvuti

küsida

$ id
$ id -G
$ getent passwd priit

Operatsioonisüsteemide liidestamine

Üldiselt töötava AD liidestusega ja sssd tarkvara kasutavad arvutid sarnaselt, erinevused on tarkvara paigaldamisel, seadistuste kehtestamisel ja nt seadistusfailide asukohtades failisüsteemis. Operatsioonisüsteemides on kasutada natuke erinev komplekt asjassepuutuvaid utiliite.

Ubuntu v. 14.04 liidestamine

# realm --verbose join sise.moraal.ee -U Administrator --client-software=sssd --server-software=active-directory \
  --membership-software=adcli

Selleks, et esmakordsel sisselogimisel tekiks kasutaja kodukataloog, õpetab https://wiki.debian.org/LDAP/PAM

# cat /usr/share/pam-configs/mkhomedir
Name: Create home directory during login
Default: yes
Priority: 900
Session-Type: Additional
Session:
       required        pam_mkhomedir.so umask=0022 skel=/etc/skel

ning, seejuures avaneb dialoog ja vastata jaatavalt

# pam-auth-update

Tulemusena muudetakse kahte faili

/etc/pam.d/common-session
/etc/pam.d/common-session-noninteractive

Lisaks tuleb teha sssd.conf faili sellised muudatused

# diff /var/tmp/sssd.conf /etc/sssd/sssd.conf 
17,18c17,18
< use_fully_qualified_names = True
< fallback_homedir = /home/%d/%u
---
> use_fully_qualified_names = False
> fallback_homedir = /home/%u

ning muudatus kehtestada

# systemctl restart sssd

Tulemusena saab sisse logida ssh kliendiga, kasutada sudo programmi, küsida id ja id -G jne.

Ubuntu v. 16.04 liidestamine

Tarkvara paigaldamisel

# apt-get install krb5-user realmd sssd sssd-tools adcli samba-common-bin

küsitakse

Configuring Kerboros Authentication
 
..

Default Kerberos version 5 realm

ja vastata nt MORAAL

Tundub, et võrreldes nö tavalise 14.04 arvutiga tuleb öelda, https://answers.launchpad.net/ubuntu/+question/293540

 # realm --verbose join sise.moraal.ee -U Administrator --client-software=sssd --server-software=active-directory \
  --membership-software=adcli --install=/

CentOS v. 6.7

Tundub, et CentOS v. 6.7 keskkonnas puudub realmd tarkvara tervikuna, kuid adcli on olemas EPEL repositooriumis

# yum install adcli

Märkus: (EPEL sisaldas adcli utiliiti kuni 2016 kevad, siis eemaldati https://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/letter_a.group.html andmetel, näis kuidas edasi

# rpm -ql adcli
/usr/sbin/adcli
/usr/share/doc/adcli-0.8.0
/usr/share/doc/adcli-0.8.0/AUTHORS
/usr/share/doc/adcli-0.8.0/COPYING
/usr/share/doc/adcli-0.8.0/ChangeLog
/usr/share/doc/adcli-0.8.0/NEWS
/usr/share/doc/adcli-0.8.0/README
/usr/share/man/man8/adcli.8.gz

Kui mõnes arvutis on /usr/sbin/adcli programm juhtumisi olemas, siis kopeerida vajalikku kohta ja käib. Alternatiiv on tõenäoliselt arvuti konto tekitada AD andmebaasi Samba tarkvara komplektist mingi utiliidiga.

Lisaks on vajalikud paketid, aga paistab, et need on vaikimisi olemas

sssd
oddjob-mkhomedir

Praktiliselt saab adcli abil arvuti domeeni ära liidestada

# adcli join --verbose --domain moraal.ee --domain-realm MORAAL.EE --domain-controller 10.0.9.4 
  --computer-ou  OU=linux,OU=Serverid,DC=moraal,DC=ee --login-type user --login-user adm-imreo
 * Using domain name: moraal.ee
 * Truncated computer account name from fqdn: IMRE-CENTOS6-MA
 * Using domain realm: moraal.ee
 * Sending netlogon pings to domain controller: cldap://10.0.9.4
 * Received NetLogon info from: AD1.moraal.ee
  * Wrote out krb5.conf snippet to /tmp/adcli-krb5-CZFHQa/krb5.d/adcli-krb5-conf-gLo7b1
Password for adm-imreo@MORAAL.EE: 
 * Authenticated as user: adm-imreo@MORAAL.EE
 * Looked up short domain name: MORAAL
 * Using fully qualified name: imre-centos6-ma-1.test.kit
 * Using domain name: moraal.ee
 * Using computer account name: IMRE-CENTOS6-MA
 * Using domain realm: moraal.ee
 * Truncated computer account name from fqdn: IMRE-CENTOS6-MA
 * Generated 120 character computer password
 * Using keytab: FILE:/etc/krb5.keytab
 * Computer account for IMRE-CENTOS6-MA$ does not exist
 ! Couldn't find a computer container in the ou, creating computer account directly in: OU=linux,OU=Serverid,DC=moraal,DC=ee
 * Calculated computer account: CN=IMRE-CENTOS6-MA,OU=linux,OU=Serverid,DC=moraal,DC=ee
 * Created computer account: CN=IMRE-CENTOS6-MA,OU=linux,OU=Serverid,DC=moraal,DC=ee
 * Set computer password
 * Retrieved kvno '2' for computer account in directory: CN=IMRE-CENTOS6-MA,OU=linux,OU=Serverid,DC=moraal,DC=ee
 * Modifying computer account: dNSHostName
 * Modifying computer account: userAccountControl
 * Modifying computer account: operatingSystem, operatingSystemVersion, operatingSystemServicePack
 * Modifying computer account: userPrincipalName
 * Cleared old entries from keytab: FILE:/etc/krb5.keytab
 * Discovered which keytab salt to use
 * Added the entries to the keytab: IMRE-CENTOS6-MA$@MORAAL.EE: FILE:/etc/krb5.keytab
 * Cleared old entries from keytab: FILE:/etc/krb5.keytab
 * Added the entries to the keytab: host/IMRE-CENTOS6-MA@MORAAL.EE: FILE:/etc/krb5.keytab
 * Cleared old entries from keytab: FILE:/etc/krb5.keytab
 * Added the entries to the keytab: host/imre-centos6-ma-1.test.kit@MORAAL.EE: FILE:/etc/krb5.keytab
 * Cleared old entries from keytab: FILE:/etc/krb5.keytab
 * Added the entries to the keytab: RestrictedKrbHost/IMRE-CENTOS6-MA@MORAAL.EE: FILE:/etc/krb5.keytab
 * Cleared old entries from keytab: FILE:/etc/krb5.keytab
 * Added the entries to the keytab: RestrictedKrbHost/imre-centos6-ma-1.test.kit@MORAAL.EE: FILE:/etc/krb5.keytab

Tulemusena

  • arvuti on AD andmestikus
  • arvutisse genereeriti sobiva sisuga /etc/krb5.keytab
  • tõenäoliselt on vaja /etc/krb5.conf faili sisu natuke järele aidata, nt sellisele kujule (aga katse näitab, et võib olla ka default sisuga EXAMPLE.COM vms)
# cat /etc/krb5.conf
logging]
default = FILE:/var/log/krb5libs.log

[libdefaults]
 default_realm = MORAAL.EE
 dns_lookup_realm = true
 dns_lookup_kdc = true
 ticket_lifetime = 24h
 renew_lifetime = 7d
 rdns = false
 forwardable = yes

Kuna realm genereerib tavalisel /etc/sssd/sssd.conf seadisusfaili sisu, tuleb realm utiliidi puudumisel see käsitsi moodustada

# cat /etc/sssd/sssd.conf
[sssd]
services = nss, pam
config_file_version = 2
domains = moraal.ee 

[domain/moraal.ee]

id_provider = ad
auth_provider = ad
access_provider = simple
ad_hostname = IMRE-CENTOS6-MA$

simple_allow_groups = sysadmin
default_shell = /bin/bash
fallback_homedir = /home/%u

kus

  • access_provider = simple ja simple_allow_groups = sysadmin teevad koostööd, sysadmin on AD grupp
  • ad_hostname on tehtud kindlaks klist -ke abil, nö $ märgiga sissekanne

Öelda

# chmod 0600 /etc/sssd/sssd.conf

Seadistusfaili muudatuse kehtestamiseks sobib öelda (esmakordsel käivitamisel start)

# service sssd restart

Seejärel tuleb muuda NSS ja PAM seadistusfaile

/etc/nsswitch.conf
/etc/pam.d/*

öeldes (paistab, et man authconfig ei maini --enablemkhomekdir parameetrit, aga esmakordselt sisselogimisel kasutaja kodukataloogi automaatseks tekitamiseks on see oluline)

# authconfig --enablesssd --enablesssdauth --enablemkhomedir --update

Tulemusena saavad ssh abil sisse logida sysadmin gruppi kuuluvad AD kasutajad. Kui seadistada veel sudo, siis saavad nad ka minna root kasutajaks

# cat /etc/sudoers.d/sysadmin 
%sysadmin ALL=(ALL)ALL

Arvuti domeenist eemaldamiks adcli vist ise ei sobib, AD poolelt saab niisama vastava sissekande kustutada.

Märkused

Tundub, et sarnaselt saab ldap avaldise abil määrata ligipääsu piirangu

..
access_provider = ad
ad_access_filter = (memberOf=CN=sysadmin,OU=Infra,OU=MORAAL,DC=moraal,DC=ee)
...

Kasulikud lisamaterjalid

Märkused

# cat /usr/share/pam-configs/mkhomedir
Name: Create home directory during login
Default: yes
Priority: 900
Session-Type: Additional
Session:
       required        pam_mkhomedir.so umask=0022 skel=/etc/skel

ning

# pam-auth-update

Tulemusena muudetakse kahte faili

/etc/pam.d/common-session
/etc/pam.d/common-session-noninteractive

Lisaks tuleb teha sssd.conf faili sellised muudatused

# diff /var/tmp/sssd.conf /etc/sssd/sssd.conf 
17,18c17,18
< use_fully_qualified_names = True
< fallback_homedir = /home/%d/%u
---
> use_fully_qualified_names = False
> fallback_homedir = /home/%u

ning muudatus kehtestada

# systemctl restart sssd
  • Muudatuste kiireks kehtestamiseks vms juhul sobib öelda
# systemctl stop sssd
# rm /var/lib/sss/{db,mc}/*
# systemctl start sssd
  • Kasutades [domain/...] sektsioonis rida
enumerate = True

esitab getent passwd kõik kataloogi sissekanded.

  • 'Software' kasutamine realm kasutamisel, man realm kõneleb, et saab kasutada erinevat tarkvara domeeniga liidestamiseks
--client-software=xxx
  Only discover realms for which we can use the given client software. Possible values include sssd or winbind.

--server-software=xxx
  Only discover realms which run the given server software. Possible values include active-directory or ipa.

--membership-software=xxx
  Only discover realms for which the given membership software can be used to subsequently perform enrollment.
  Possible values include samba or adcli.

nt

# realm --verbose join sise.moraal.ee -U Administrator --client-software=sssd \
  --server-software=active-directory --membership-software=adcli
 * Resolving: _ldap._tcp.sise.moraal.ee
 * Performing LDAP DSE lookup on: 192.168.10.125
 * Successfully discovered: sise.moraal.ee
Password for Administrator: 
 * Unconditionally checking packages
 * Resolving required packages
 * Installing necessary packages: adcli, libpam-sss, libnss-sss, sssd, sssd-tools
...
  • Arvuti lisamine OU alla
# realm --verbose join sise.moraal.ee -U Administrator --client-software=sssd --server-software=active-directory \
  --membership-software=adcli --computer-ou=OU=Tookohaarvutid,OU=MORAAL,DC=sise,DC=moraal,DC=ee

Kasulikud lisamaterjalid