OpenLdap ja Samba

From EIK wiki

Sissejuhatus

OpenLDAP on LDAP-i avatud lähtekoodiga implementatsioon, mis võimaldab keskhaldusega standartset kataloogiteenust kasutajate, rühmade, seadmete ja muude andmete haldamiseks. OpenLDAP-i kasutamise muudab praktiliseks tema liidestatus erinevate rakendustega.

Samba on failiserveri tarkvara, mis implementeerib SMB/CIFS protokolli. Selle abil on võimalik faile ja printereid jagada nii Windowsi kui UNIX-i laadsete operatsioonisüsteemide jaoks.

Eeldused

Antud lahendus on testitud Ubuntu 9.10 Serveril.

Eeltab kasutaja varasemat kokkupuudet Unix/Linux/BSD käsustikuga ja arusaamist Unix-i laadsete operatsioonisüsteemide toimimisest.

Installeerimine

Esmalt logime ennast juurkasutaja õigustesse. Selleks anname korralduse:

sudo -i

Seejärel uuendame tarkvara nimekirjad, milleks anname korralduse:

apt-get update

Nüüd saame asuda OpenLDAP-i ja Sambat installeerima. Selleks anname korralduse:

apt-get -y install slapd ldap-utils samba samba-doc smbldap-tools smbclient

Installeerimise käigus paigaldati järgnevad pakkid:

  • slapd - stand-alone LDAP daemon (server)
  • ldap-utils - kasulikud utiliidid LDAP kataloogi administreerimiseks
  • samba - Samba 3 versiooni server
  • samba-doc - Samba man lehel mittesisalduv dokumentatsioon
  • smbldap-tools - kogum kasulikest skriptidest samba ja LDAP-i administreerimiseks
  • smbclient - Samba klient

Seadistamine

OpenLDAP-i seadistamine

Liigume OpenLDAP-i konfi kataloogi käsuga:

cd /etc/ldap

Lisame mõned schemad, mida võib vaja minna:

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif

Nüüd seadistame andmebaasi backend mooduli. Selleks tuleb luua seadistamise skript:

nano backdb.ldif

Konfi faili tuleb sisestada järgmised kirjed, kus:

  • olcSuffix: dc=example,dc=com - example ja com tuleb asendada enda domeeniga;
  • olcRootDN: cn=admin,dc=example,dc=com - admin tuleb asendada enda poolt soovitud LDAP-i administraatori kasutajanimega ning example ja com tuleb asendada enda domeeniga;
  • olcRootPW: example - example tuleb asendada enda poolt soovitud LDAP-i administraatori konto parooliga.
# Load dynamic backend modules
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: {0}back_hdb

# Create the database
dn: olcDatabase={1}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=example,dc=com
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW: example
olcDbConfig: {0}set_cachesize 0 2097152 0
olcDbConfig: {1}set_lk_max_objects 1500
olcDbConfig: {2}set_lk_max_locks 1500
olcDbConfig: {3}set_lk_max_lockers 1500
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcDbIndex: uid pres,eq
olcDbIndex: cn,sn,mail pres,eq,approx,sub
olcDbIndex: objectClass eq

Järgneva käsuga laeme mooduli ja initsialiseerime andmebaasi:

ldapadd -Y EXTERNAL -H ldapi:/// -f backdb.ldif

Nüüd loome krüpteeritud administraatori konto parooli räsi:

slappasswd -h {MD5}
  • Sisestage soovitud parool 2 korda ja kopeeriga genereeritud räsi.

Loome baas dn-i ja administraatori konto OpenLDAP serverile:

nano base.ldif

Konfi faili tuleb sisestada järgnevad kirjed, kus:

  • dn: dc=example,dc=com - example ja com tuleb asendada enda domeeni nimega;
  • o: example.com - example.com tuleb asendada enda domeeni nimega;
  • dc: example - example asendada domeeni nimega;
  • dn: cn=admin,dc=example,dc=com - admin asendada administraatori kasutajanimega, example ja com asendada enda domeeni nimega;
  • cn: admin - admin asendada administraatori kasutajanimega;
  • userPassword: {MD5}Gnmk1g3mcY6OWzJuM4rlMw== - {MD5}Gnmk1g3mcY6OWzJuM4rlMw== asendada genereeritud ja kopeeritud parooli räsiga
dn: dc=example,dc=com
objectClass: dcObject
objectclass: organization
o: example.com
dc: example
description: My LDAP Root

dn: cn=admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
userPassword: {MD5}Gnmk1g3mcY6OWzJuM4rlMw==
description: LDAP administrator

Laeme tekitatud konfiguratsiooni skripti sisse:

ldapadd -Y EXTERNAL -H ldapi:/// -f base.ldif

Muudame süsteemi ACL-e. OpenLDAP installimisel seadistatakse mõned ACL-id, mis ei võimalda näiteks phpldapadmin liidesel kataloogiteenusega suhelda. Seega nüüd eemaldame need piirangud ja seadistame OpenLDAP-i muudatuste läbiviimisel tuvastama muudatuste läbiviijat ja õigusi. Nüüdsest ei saa endm teha kataloogi muudatusi vanal viisil ldapadd -Y EXTERNAL -H ldapi:// -f fail, vaid nüüdsest ldapadd -x -Y EXTERNAL -H ldapi:// -D cn=admin,cn=config -W -f fail kujul, mille puhul admin tuleb asendada administraatori kasutajanimega ja peale käsu sisestamist küsitakse parooli.

Loome faili config.ldif:

nano config.ldif

Konfi faili tuleb sisestada järgnevad kirjed:

  • olcRootDN: cn=admin,cn=config - admin tuleb asendada valitud administraatori kasutajanimega;
  • olcRootPW: {MD5}Gnmk1g3mcY6OWzJuM4rlMw== - {MD5}Gnmk1g3mcY6OWzJuM4rlMw== tuleb asendada genereeritud räsiga;
dn: cn=config
changetype: modify
delete: olcAuthzRegexp

dn: olcDatabase={-1}frontend,cn=config
changetype: modify
delete: olcAccess

dn: olcDatabase={0}config,cn=config
changetype: modify
delete: olcRootDN

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootDN
olcRootDN: cn=admin,cn=config

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {MD5}Gnmk1g3mcY6OWzJuM4rlMw==

dn: olcDatabase={0}config,cn=config
changetype: modify
delete: olcAccess

Laeme config.ldif seadistused OpenLDAP serverisse:

ldapadd -Y EXTERNAL -H ldapi:/// -f config.ldif 

Nüüd on vaja lisada veel mõned acl-id kataloogiteenusele, root kasutajal on alati lugemise ja kirjutamise õigus, kuid see on baas acl, mis oli alati OpenLDAP-iga kaasas.

Selleks loome faili acl.ldif:

nano acl.ldif

Konfi faili tuleb sisestada järgnevad kirjed:

  • olcAccess: to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=example,dc=com" write by anonymous auth by self write by * none - admin tuleb asendada validud administraatori kasutajanimega, example ja com domeeninimega;
  • olcAccess: to * by dn="cn=admin,dc=example,dc=com" write by * read - admin tuleb asendada validud administraatori kasutajanimega, example ja com domeeninimega.
dn: olcDatabase={1}hdb,cn=config
add: olcAccess
olcAccess: to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=example,dc=com" write by anonymous auth by self write by * none
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=example,dc=com" write by * read

Nüüd laeme acl.ldif konfi OpenLDAP-i:

  • cn=admin - admin asendada valitud OpenLDAP administraatori kasutajanimega.
ldapmodify -x -D cn=admin,cn=config -W -f acl.ldif

Lõpetuseks taaskäivitame LDAP serveri käsuga:

/etc/init.d/slapd restart

Ja nüüd peaks OpenLDAP kataloogiteenus olema töökorras.

Samba seadistamine

Selleks, et kasutada LDAP-i Samba autentimisvahendina, peab LDAP-i objektidele lisama Samba atribuute, mis on kirjeldatud samba.schema failis. Paketist samba-doc on võimalik nimetatud fail lahti pakkida ja kopeerida /etc/ldap/schema kausta.

Kopeerime samba.schema.gz faili LDAP-i konfiguratsiooni schema kausta käsuga:

cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema/

Pakime lahti eelnevalt kopeeritud faili:

gzip -d /etc/ldap/schema/samba.schema.gz

Loome schema_convert.conf nimelise konfiguratsiooni faili:

nano schema_convert.conf

Sisestame faili järgnevad read:

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/samba.schema

Loome ajutise kausta:

mkdir /tmp/ldif_output

Nüüd kasutame slapcat käsku schema failide ldif failideks konvertimiseks:

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

Muudame /tmp/samba.ldif faili sisu. Selleks avame faili:

nano /tmp/samba.ldif
  • muudame järgnevaid ridu:
dn: cn=samba,cn=schema,cn=config
...
cn: samba
  • ja kustutame järgnevad read faili lõpust:
structuralObjectClass: olcSchemaConfig
entryUUID: b53b75ca-083f-102d-9fff-2f64fd123c95
creatorsName: cn=config
createTimestamp: 20080827045234Z
entryCSN: 20080827045234.341425Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20080827045234Z
  • NB! Osad atribuutide väärtused võivad olla teised. Kuid vastavad read tuleb eemaldada ikkagi!

Nüüd lisame ldapadd tööriistaga uue schema kataloogi:

ldapadd -x -D cn=admin,cn=config -W -f /tmp/cn\=samba.ldif

Tekitame Samba indexite konfiguratsioonifaili:

nano samba_indexes.ldif

Sisestame sinna järgnevad kirjed:

dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: uidNumber eq
olcDbIndex: gidNumber eq
olcDbIndex: loginShell eq
olcDbIndex: uid eq,pres,sub
olcDbIndex: memberUid eq,pres,sub
olcDbIndex: uniqueMember eq,pres
olcDbIndex: sambaSID eq
olcDbIndex: sambaPrimaryGroupSID eq
olcDbIndex: sambaGroupType eq
olcDbIndex: sambaSIDList eq
olcDbIndex: sambaDomainName eq
olcDbIndex: default sub

Nüüd laeme uued seaded sisse:

ldapmodify -x -D cn=admin,cn=config -W -f samba_indexes.ldif

Kui kõik läks hästi, siis peaksid nägema uusi indexeid käsuga:

ldapsearch -xLLL -D cn=admin,cn=config -x -b cn=config -W olcDatabase={1}hdb

Nüüd seadistama Samba konfiguratsioonifaili. Selleks kopeerime algkonfiguratsioonifaili varufaili:

cp /etc/samba/smb.conf /etc/samba/sample.smb.conf

Nüüd seadistama Samba seaded vastavalt vajadusele. Kõigepealt avame konfiguratsioonifaili ja tühjendame sisu:

nano /etc/samba/smb.conf

Nüüd lisame järgnevad kirjed:

  • workgroup = DOMEEN - DOMEEN asendada enda soovitud väärtusega
  • interfaces = lo, eth0 - sinna kirjeldada ära, milliste võrgukaartide kaudu Samba serverit kasutatakse. Kui masinal on rohkem, kui 1 võrgukaart, mille kaudu sambat hakatakse kasutama, siis Linux laadsetes tuleks lisada ka teised ethX võrgukaardid.
  • ldap admin dn = "cn=admin,dc=example,dc=com" - admin, example ja com asendada enda poolt valitud väärtustega.
  • ldap suffix = dc=example,dc=com - example ja com asendada enda poolt valitud väärtustega.
[global]
        display charset = UTF-8
        unix charset = UTF-8
        workgroup = DOMEEN
        server string = %h server (Samba, Ubuntu)
        interfaces = lo, eth0
        bind interfaces only = Yes
        passwd program = /usr/bin/passwd %u
        passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
        log level = 3
        log file = /var/log/samba/log.%m
        max log size = 1000
        dns proxy = No
        guest account = nobody

        #Ldap settings
        passdb backend = ldapsam:ldap://localhost
        ldap admin dn = "cn=admin,dc=example,dc=com"
        ldap group suffix = ou=Groups
        ldap idmap suffix = ou=Idmap
        ldap machine suffix = ou=Computers
        ldap replication sleep = 2000
        ldap suffix = dc=example,dc=com
        ldap ssl = no
        ldap timeout = 300
        ldap user suffix = ou=People
        usershare allow guests = Yes
        panic action = /usr/share/samba/panic-action %d

        #Do not show hidden files.
        veto files = /.*/

[homes]
        comment = Home Directories
        valid users = %S
        create mask = 0700
        directory mask = 0700
        browseable = No
        read only = No

Nüüd taaskäivitame Samba serveri:

/etc/init.d/samba restart

sambaldap-tools seadistamine

Seadistame sambaldap-tools pakki enda keskkonnale sobivaks. Pakk sisaldab konfigureerimisscripti, mis seadistab konfifaili vastavalt sisestatud vajalikele väärtustele. Selleks pakkime pakki lahti andes käsu:

gzip -d /usr/share/doc/smbldap-tools/configure.pl.gz

Ja nüüd käivitame scripti:

perl /usr/share/doc/smbldap-tools/configure.pl

Sisestage vajalikud väärtused.

Nüüd peaks olema tekkinud /etc/smbldap-tools/smbldap.conf ja /etc/smbldap-tools/smbldap_bind.conf konfiguratsioonifailid. Kui on tehtud vigu scripti kasutamisel, siis saab neid konfiguratsiooni faile nüüd ka mõne teksti muutmise programmi nagu nano abil muuta.

Teeme varufaili ennem samba kasutajate, gruppide jne. seadistamist senisest seisust:

slapcat -l backup.ldif

Nüüd lisame Sambale vajalikud kasutajad, grupid jne. kasutades käsku:

smbldap-populate

Ning Sambal on vaja teada ka LDAP administraatori konto parooli, mille saame sisestada käsuga:

  • smbpasswd -w parool - parool asendada valitud LDAP-i tegeliku praooliga.
smbpasswd -w parool

Kui LDAP-is juba on kasutajaid, mis peaksid Sambaga audentima, siis saab järgneva käsuga neid Sambale selgeks teha:

  • smbpasswd -a kasutajanimi - kasutajanimi asendada reaalse kasutajanimega.
smbpasswd -a kasutajanimi

Kasutatud kirjandus

http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol

http://en.wikipedia.org/wiki/Samba_%28software%29

http://www.openldap.org/project/

https://wiki.itcollege.ee/index.php/OpenLDAP-i_seadistamine

https://wiki.itcollege.ee/index.php/Failiserver_Samba_labor_2

http://www.howtoforge.com/install-and-configure-openldap-on-ubuntu-karmic-koala

https://help.ubuntu.com/9.10/serverguide/C/samba-ldap.html

Autor

Kalev Jõgi