Konferencia OSSConf2013

Miesto konania: 
Žilina
Dátum akcie: 
2. - 4. júl 2013

Od utorka 2. júla do štvrtka 4. júla 2013 sa v  priestoroch Fakulty riadenia a informatiky Žilinskej univerzity uskutoční v poradí už piata, jubilejná, konferencia OSSConf 2013 (Otvorený softvér vo vzdelávaní, výskume a v IT riešeniach)

Tešíme sa na vašu účasť.

Kerberos a LDAP

Verzia pre tlačSend by emailPDF verzia
0
 
 

Replikovanie databázy splnomocniteľov systému Kerberos medzi dvoma servermi môže byť komplikované a navyše to pridáva do systému ďalšiu databázu používateľov. Našťastie sa dá systém Kerberos nakonfigurovať tak, aby použil pre uloženie databázy splnomocniteľov adresár  LDAP. V tejto časti si ukážeme, ako nastaviť primárny a sekundárny server Kerberosu tak, aby používali  OpenLDAP pre uloženie databázy splnomocniteľov.

Konfigurácia OpenLDAP

Ako prvé je potrebné nahrať príslušnú schému do OpenLDAP servera, ktorá bude zabezpečovať sieťové pripojenie k primárnemu a sekundárnemu KDC. Vo zvyšku tejto časti predpokladáme, že už máme nastavenú replikáciu LDAP adresára aspoň medzi dvoma servermi. Viac informácií o nastavení OpenLDAP sa nachádza v časti "OpenLDAP Server".

Je tiež potrebné nastaviť OpenLDAP server tak, aby prijímal TLS a SSL pripojenia, aby komunikácia medzi KDC a LDAP serverom bola šifrovaná. Viac informácií je v časti “TLS a SSL”.

  •  Schému do LDAP nahráme tak, že na LDAP serveri nainštalujeme balík krb5-kdc-ldap. Do príkazového riadka zadáme:

    sudo apt-get install krb5-kdc-ldap 
  • Potom rozbalíme súbor kerberos.schema.gz:

    sudo gzip -d /usr/share/doc/krb5-kdc-ldap/kerberos.schema.gz 
    sudo cp /usr/share/doc/krb5-kdc-ldap/kerberos.schema /etc/ldap/schema/ 
  • Schému kerberos je potrebné pridať do stromu cn=config. Postup ako pridávať schému do slapd je vysvetlený  v časti “Konfigurácia”.

    1. Najskôr vytvoríme konfiguračný súbor, ktorý pomenujeme schema_convert.conf, alebo podobným viacvravnejším názvom a prekopírujeme do neho tieto riadky:

      include /etc/ldap/schema/core.schema 
      include /etc/ldap/schema/collective.schema 
      include /etc/ldap/schema/corba.schema 
      include /etc/ldap/schema/cosine.schema 
      include /etc/ldap/schema/duaconf.schema 
      include /etc/ldap/schema/dyngroup.schema 
      include /etc/ldap/schema/inetorgperson.schema 
      include /etc/ldap/schema/java.schema 
      include /etc/ldap/schema/misc.schema 
      include /etc/ldap/schema/nis.schema 
      include /etc/ldap/schema/openldap.schema 
      include /etc/ldap/schema/ppolicy.schema 
      include /etc/ldap/schema/kerberos.schema 
    2. Vytvoríme dočasný priečinok, do ktorého sa uložia LDIF súbory:

      mkdir /tmp/ldif_output 
    3. Teraz použijeme nástroj slapcat na skonvertovanie súborov schém:

      slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={12}kerberos,cn=schema,cn=config\" > /tmp/cn=kerberos.ldif

      Keby sme použili iné meno konfiguračného súboru, je potrebné ho zmeniť aj v predchádzajúcom príkaze.

    4. Otvoríme vygenerovaný súbor /tmp/cn\=kerberos.ldif a zmeníme nasledujúce atribúty:

    5. dn: cn=kerberos,cn=schema,cn=config 
      ... 
      cn: kerberos 

      a odstránime nasledujúce riadky z konca súboru:

      structuralObjectClass: olcSchemaConfig 
      entryUUID: 18ccd010-746b-102d-9fbe-3760cca765dc 
      creatorsName: cn=config 
      createTimestamp: 20090111203515Z 
      entryCSN: 20090111203515.326445Z#000000#000#000000 
      modifiersName: cn=config 
      modifyTimestamp: 20090111203515Z 
      [Note]

      Hodnoty atribútov sa môžu líšiť, preto si pri mazaní dajte pozor, aby ste zmazali všetky uvedené atribúty.

    6. Načítame novú schému pomocou ldapadd:

      ldapadd -x -D cn=admin,cn=config -W -f /tmp/cn\\=kerberos.ldif
    7. Pridáme index pre atribút krb5principalname:

      ldapmodify -x -D cn=admin,cn=config -W 
      Enter LDAP Password: 
      dn: olcDatabase={1}hdb,cn=config 
      add: olcDbIndex 
      olcDbIndex: krbPrincipalName eq,pres,sub 
       
      modifying entry "olcDatabase={1}hdb,cn=config"

    8. Nakoniec aktualizujeme zoznamy prístupových práv (ACL):

      ldapmodify -x -D cn=admin,cn=config -W 
      Enter LDAP Password:  
      dn: olcDatabase={1}hdb,cn=config 
      replace: olcAccess 
      olcAccess: to attrs=userPassword,shadowLastChange,krbPrincipalKey by dn="cn=admin,dc=exampl 
       e,dc=com" write by anonymous auth by self write by * none 
      - 
      add: olcAccess 
      olcAccess: to dn.base="" by * read 
      - 
      add: olcAccess 
      olcAccess: to * by dn="cn=admin,dc=example,dc=com" write by * read 
       
      modifying entry "olcDatabase={1}hdb,cn=config" 

Teraz by LDAP adresár mal byť schopný spracovať zoznam splnomocniteľov systému Kerberos.

Konfigurácia primárneho KDC

Ak už máme nakonfigurovaný OpenLDAP, môžme sa pustiť do konfigurácie KDC.

  • Najskôr nainštalujeme potrebné balíky:

    sudo apt-get install krb5-kdc krb5-admin-server krb5-kdc-ldap
  • Potom otvoríme súbor /etc/krb5.conf a pridáme nasledujúce nastavenia do príslušnej časti súboru:

    [libdefaults] 
            default_realm = NIECO.SK 
     
    ... 
     
    [realms] 
            NIECO.SK = { 
                    kdc = kdc01.nieco.sk 
                    kdc = kdc02.nieco.sk 
                    admin_server = kdc01.neico.sk 
                    admin_server = kdc02.nieco.sk 
                    default_domain = nieco.sk 
                    database_module = openldap_ldapconf 
            } 
     
    ... 
     
    [domain_realm] 
            .nieco.sk = NIECO.SK 
     
     
    ... 
     
    [dbdefaults] 
            ldap_kerberos_container_dn = dc=nieco,dc=sk 
     
    [dbmodules] 
            openldap_ldapconf = { 
                    db_library = kldap 
                    ldap_kdc_dn = "cn=admin,dc=nieco,dc=sk" 
     
                    # this object needs to have read rights on 
                    # the realm container, principal container and realm sub-trees 
                    ldap_kadmind_dn = "cn=admin,dc=nieco,dc=sk" 
     
                    # this object needs to have read and write rights on 
                    # the realm container, principal container and realm sub-trees 
                    ldap_service_password_file = /etc/krb5kdc/service.keyfile 
                    ldap_servers = ldaps://ldap01.nieco.sk ldaps://ldap02.nieco.sk 
                    ldap_conns_per_server = 5 
            } 
    [Note]

    Hodnoty nieco.sk, dc=nieco,dc=sk, cn=admin,dc=nieco,dc=skldap01.nieco.sk zmeňte za hodnoty zodpovedajúce doméne, LDAP objektom a LDAP serveru, ktoré používate v sieti.

  • Ďalej použijeme nástroj kdb5_ldap_util a vytvoríme pôsobisko:

    sudo kdb5_ldap_util -D  cn=admin,dc=nieco,dc=sk create -subtrees dc=nieco,dc=sk -r NIECO.SK -s -H ldap://ldap01.nieco.sk
  • Vytvoríme obtlačok hesla, ktorý bude potrebný na prístup k LDAP serveru. Toto heslo použijeme pre nastavenie ldap_kdc_dnldap_kadmin_dn v súbore /etc/krb5.conf:

    sudo kdb5_ldap_util -D  cn=admin,dc=nieco,dc=sk stashsrvpw -f /etc/krb5kdc/service.keyfile cn=admin,dc=nieco,dc=sk
  • Nakopírujeme certifikáty CA z LDAP serveru:

    scp ldap01:/etc/ssl/certs/cacert.pem .
    sudo cp cacert.pem /etc/ssl/certs

     a nastavíme ich použitie v súbore /etc/ldap/ldap.conf:

    TLS_CACERT /etc/ssl/certs/cacert.pem
    [Note]

    Aby bolo možné pripojiť sa k LDAP serverom pomocou LDAPS, je potrebné certifikáty prekopírovať aj na sekundárne KDC.

Teraz je možné pridať splnomocniteľov systému Kerberos do LDAP databázy a tá sa automaticky replikuje na ostatné LDAP servery. Splnomocniteľov môžeme pridať pomocou nástroja kadmin.local zadaním:

sudo kadmin.local 
Authenticating as principal root/admin@NIECO.SK with password. 
kadmin.local:  addprinc -x dn="uid=stefan,ou=ludia,dc=nieco,dc=sk" stefan 
WARNING: no policy specified for stefan@NIECO.SK; defaulting to no policy 
Enter password for principal "stefan@NIECO.SK":  
Re-enter password for principal "stefan@NIECO.SK":  
Principal "stefan@NIECO.SK" created.

Teraz by sme mali mať v objekte používateľa uid=stefan,ou=ludia,dc=nieco,dc=sk pridané atribúty krbPrincipalName, krbPrincipalKey, krbLastPwdChange a krbExtraData. Na otestovanie toho, či bude používateľovi pridelaná vstupenka použijeme nástroje kinitklist.

[Note]

Ak objekt používateľa už existuje, je potrebné k atribútom systému Kerberos pridať ešte -x dn="...". Inak sa vytvorí nový objekt splnomocniteľa v strome pôsobiska.

Konfigurácia sekundárneho KDC

Konfigurácia sekundárneho KDC s použitím LDAP je podobná konfigurácii s normálnou Kerberos databázou.

  • Najskôr nainštalujeme potrebné balíky. V príkazovom riadku zadáme:

    sudo apt-get install krb5-kdc krb5-admin-server krb5-kdc-ldap
  • Potom otvoríme súbor /etc/krb5.conf a nastavíme použitie LDAP databázy:

    [libdefaults] 
            default_realm = NIECO.SK 
     
    ... 
     
    [realms] 
            NIECO.SK = { 
                    kdc = kdc01.nieco.sk 
                    kdc = kdc02.nieco.sk 
                    admin_server = kdc01.nieco.sk 
                    admin_server = kdc02.nieco.sk 
                    default_domain = nieco.sk 
                    database_module = openldap_ldapconf 
            } 
     
    ... 
     
    [domain_realm] 
            .nieco.sk = NIECO.SK 
     
    ... 
     
    [dbdefaults] 
            ldap_kerberos_container_dn = dc=nieco,dc=sk 
     
    [dbmodules] 
            openldap_ldapconf = { 
                    db_library = kldap 
                    ldap_kdc_dn = "cn=admin,dc=nieco,dc=sk" 
     
                    # this object needs to have read rights on 
                    # the realm container, principal container and realm sub-trees 
                    ldap_kadmind_dn = "cn=admin,dc=nieco,dc=sk" 
     
                    # this object needs to have read and write rights on 
                    # the realm container, principal container and realm sub-trees 
                    ldap_service_password_file = /etc/krb5kdc/service.keyfile 
                    ldap_servers = ldaps://ldap01.nieco.sk ldaps://ldap02.nieco.sk 
                    ldap_conns_per_server = 5 
            } 
  • Vytvoríme obtlačok LDAP hesla:

    sudo kdb5_ldap_util -D  cn=admin,dc=nieco,dc=sk stashsrvpw -f /etc/krb5kdc/service.keyfile cn=admin,dc=nieco,dc=sk
  • Teraz na primárnom KDC skopírujeme Master kľúč /etc/krb5kdc/.k5.NIECO.SK na sekundárny KDC. Súbor je kvôli bezpečnosti potrebné kopírovať cez zašifrované spojenie akým je napríklad scp alebo prostredníctvom fyzického média.

    sudo scp /etc/krb5kdc/.k5.NIECO.SK stefan@kdc02.nieco.sk:~
    sudo mv .k5.NIECO.SL /etc/krb5kdc/

    [Note]

    Rovnako nahraďte NIECO.SK pôsobiskom, ktoré používate.

  • Nakoniec spustíme démon krb5-kdc:

    sudo /etc/init.d/krb5-kdc start

Teraz by sme mali mať v našej sieti redundantdé distribučné centrá kľúčov KDC a vďaka redundantným LDAP serverom by sa mali používatelia vedieť prihlásiť aj po výpadku jedného LDAP servera a jedného Kerberos servera.

Zdroje