LDAP itu kependekan dari Lightweight Directory Access Protocol.  Berupa direktori secara hirarki yang menyimpan informasi, dan dapat di akses melalui jaringan.  LDAP merupakan salah satu contoh dari yang namanya directory service, direktori dalam hal ini mengacu pada informasi yang terpusat.

Penggunaan LDAP itu salah satunya adalah melakukan sentralisasi login pada jaringan. Lalu bisa dikombinasikan dengan aplikasi lain, seperti email, manajemen groups, profiles dan lain-lain.

Skenarionya adalah membuat ldap server pada mesin berbasis linux, dan clientnya itu bisa berbasis windows atau linux pula. Yang selanjutnya melakukan sentraliasasi pada server ldap.

Di sini saya menggunakan distro gnewsense 2.3 turunan dari ubuntu. Jadi untuk segala distro berbasis ubuntu atau debian seperti linux mint, dll akan sama. Tapi kalau distro berbasis Redhat, seperti centos/fedora ada beberapa kemiripan. Berikut langkah-langkah nya pada pc yang akan menjadi openldap-server :

Instalasi Openldap

1.

sudo apt-get install slapd ldap-utils

2.

1
sudo dpkg-reconfigure slapd
Omit OpenLDAP server configuration? ... No
DNS domain name: ... alfach.org
Name of your organization: ... Whatever & Co
Admin Password: XXXXX
Confirm Password: XXXXX
OK
BDB
Do you want your database to be removed when slapd is purged? ... No
Move old database? ... Yes

Allow LDAPv2 Protocol? ... No

3. Untuk mengecek berhasil atau tidak dengan menjalankan ldapsearch

ldapsearch -x -b dc=alfach,dc=org

4. Setelah itu kita restart ldap nya

/etc/init.d/slapd start

Populating LDAP

untuk populating ldap bisa menggunakan 2 cara, yaitu dengan menggunakan aplikasi migration-tools yang berarti memindahkan user yang dimiliki di system ke dalam ldap. Yang kedua dengan membuat tersendiri untuk ldap itu.

Untuk membuat populating awalnya kita perlu yang namanya Ldap directory interchange format (ldif) untuk di populate oleh si ldap. misal saya memberi nama alfach.org.ldif yang isinya seperti ini :



dn: ou=people,dc=alfach,dc=org
objectClass: organizationalUnit
ou: people

dn: ou=groups,dc=alfach,dc=org
objectClass: organizationalUnit
ou: groups

dn: uid=fahri,ou=people,dc=alfach,dc=org
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: fahri
sn: achmad
givenName: Fahri
cn: Fahri Achmad
displayName: Fahri Achmad
uidNumber: 1000
gidNumber: 10000
userPassword: <password>
gecos: Fahri Achmad
loginShell: /bin/bash
homeDirectory: /home/fahri
shadowExpire: -1
shadowFlag: 0
shadowWarning: 7
shadowMin: 8
shadowMax: 999999
shadowLastChange: 10877
mail: fahri@alfach.org
postalCode: 31000
l: Pinang
o: Example
mobile: + xx xx xx xx
homePhone: + xx xx xx xx
title: System Administrator
postalAddress:
initials: JD

dn: cn=example,ou=groups,dc=alfach,dc=org
objectClass: posixGroup
cn: example
gidNumber: 10000

lalu kita masukkan ke dalam direktori ldap menggunakan ldapadd

ldapadd -x -D cn=admin,dc=alfach,dc=org -W -f alfach.org.ldif

Untuk mengecek berhasil atau tidak, kita gunakan ldapsearch :

ldapsearch -xLLL -b "dc=alfach,dc=org" uid=fahri sn givenName cn
dn: uid=fahri,ou=people,dc=alfach,dc=org
cn: Fahri Achmad
sn: Achmad
givenName: Fahri

Ok, instalasi openldap-server selesai 🙂

Instalasi Samba

1.

1
sudo apt-get install samba samba-doc smbldap-tools

2. Copy samba.schema di LDAP server :

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

3. edit /etc/ldap/slapd.conf untuk memasukkan konfigurasinya

include         /etc/ldap/schema/samba.schema
include         /etc/ldap/schema/misc.schema

edit jg yg ada tulisan ini ”

Tulisan Lain   Daftar/List Repostiory Ubuntu di Indonesia
1
access to attribute=userPassword,shadowLastChange


jadi :

access to attrs=userPassword,shadowLastChange,sambaNTPassword,sambaLMPassword

4. lalu restart samba nya :

sudo /etc/init.d/samba restart

Konfigurasi Samba

1. Backup dulu smb.conf

cd /etc/samba/
cp smb.conf smb.conf.original

2. edit smb.conf nya, edit ini (bukan copy paste) :

workgroup = ALFACH
security = user
passdb backend = ldapsam:ldap://localhost/
obey pam restrictions = no

lalu di bawahnya copy paste ini :

#
#	Begin: Custom LDAP Entries
#
ldap admin dn = cn=admin,dc=alfach,dc=org
ldap suffix = dc=alfach, dc=org
ldap group suffix = ou=Groups
ldap user suffix = ou=Users
ldap machine suffix = ou=Computers
ldap idmap suffix = ou=Users
; Do ldap passwd sync
ldap passwd sync = Yes
passwd program = /usr/sbin/smbldap-passwd %u
passwd chat = *New*password* %nn *Retype*new*password* %nn *all*authentication*tokens*updated*
add user script = /usr/sbin/smbldap-useradd -m "%u"
ldap delete dn = Yes
delete user script = /usr/sbin/smbldap-userdel "%u"
add machine script = /usr/sbin/smbldap-useradd -w "%u"
add group script = /usr/sbin/smbldap-groupadd -p "%g"
delete group script = /usr/sbin/smbldap-groupdel "%g"
add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
set primary group script = /usr/sbin/smbldap-usermod -g "%g" "%u"
domain logons = yes
#
#	End: Custom LDAP Entries
#

Edit tulisan ini :

invalid users = root

menjadi :

;invalid users = root

tambahkan ini :

logon path =

3. Mengingat kita akan menggunakan windows juga, maka kita perlu menentukan direktori yang di share, dalam hal ini kita berdasarkan direktori /tmp, jika anda ingin yang lain, maka buat terlebih dahulu, dan pastikan path nya. Dan buat ini di paling bawah :

[share]
path = /tmp
guest ok = yes
browseable = Yes
writable = yes

4. restart lagi samba nya :

/etc/init.d/samba restart

4. Lalu samba ini perlu tahu password LDAP melalui samba ini :

smbpasswd -w 123456

Sekarang konfigurasi smbldap-tools :

1. Copy file yang dibutuhkan untuk konfigurasi :


1
2
3
4
cd /usr/share/doc/smbldap-tools/examples/
cp smbldap_bind.conf /etc/smbldap-tools/
cp smbldap.conf.gz /etc/smbldap-tools/
gzip -d /etc/smbldap-tools/smbldap.conf.gz

2. Lalu kita membutuhkan Secuirty ID (SID) untuk domain samba yang kita buat :


1
net getlocalsid

misal hasilnya adalah :


SID for domain DC01-UBUNTU is: S-1-5-21-949328747-3404738746-3052206637

3. Masukkan SID tersebut ke dalam /etc/smbldap-tools/smbldap.conf


SID="S-1-5-21-949328747-3404738746-3052206637"
sambaDomain="ALFACH"
ldapTLS="0"
suffix="dc=alfach,dc=org"
sambaUnixIdPooldn="sambaDomainName=ALFACH,${suffix}" ## Be careful with this section!!
userHome="/ldaphome/%U" ## This is found in the UNIX section.
userSmbHome=
userProfile=
userHomeDrive=
userScript=
mailDomain="alfach.org"

4. Lalu kita edit /etc/smbldap-tools/smbldap_bind.conf


slaveDN="cn=admin,dc=alfach,dc=org"
slavePw="123456"
masterDN="cn=admin,dc=alfach,dc=org"
masterPw="123456"

pada smbldap_bind.conf ini merupakan salah satu fungsi ldap untuk menjadi master dan slave yang berfungsi melakukan syncronize jika salah satu mati, maka yang satu akan menangani.

5. Lalu kita ganti permission dua file sebelumnya :


chmod 0644 /etc/smbldap-tools/smbldap.conf
chmod 0600 /etc/smbldap-tools/smbldap_bind.conf

Populate LDAP menggunakan smbldap-tools

Jika sebelumnya kita melakukan populate juga, maka yang sebeumnya hanya tersendiri. Jika menggunakan samba, maka smbldap-tools perlu melakukan populate.

1.  ketik :


smbldap-populate -u 30000 -g 30000

2. maka akan menanyakan password, isi : 123456

3. Untuk mengecek, kita bisa lakukan dengan menjalankan perintah ldapsearch :


ldapsearch -x -b dc=alfach,dc=org | less

Konfigurasi client linux ldap

Tulisan Lain   PHP Security (1)

Kali ini kita melakukan konfigurasi client untuk terhubung melakukan autentikasi ke ldap server yang sudah kita buat.

1. Install aplikasi yang dibutuhkan :


1
apt-get install auth-client-config libpam-ldap libnss-ldap

2. Seketika,maka akan muncul wizard konfigurasi, isikan seperti ini :


1
Should debconf manage LDAP configuration?: Yes
LDAP server Uniform Resource Identifier: ldap://alfach.org   <-- ini juga bisa ip server ldap Distinguished name of the search base: dc=alfach,dc=org LDAP version to use: 3 Make local root Database admin: Yes Does the LDAP database require login? No LDAP account for root: cn=admin,dc=alfach,dc=org LDAP root account password: 123456

3. Kita akan mengedit ldap.conf, maka backup dulu yang aslinya :


1
cp /etc/ldap.conf /etc/ldap.conf.original

4. Lalu kita edit ldap.conf nya :


1
2
3
4
5
host alfach.org
base dc=alfach,dc=org
uri ldap://alfach.org/    &lt;-- ini juga bisa berupa IP ldap server
rootbinddn cn=admin,dc=alfach,dc=org
bind_policy soft

5. Kita akan men-copy

1
/etc/ldap.conf

ke

1
/etc/ldap/ldap.conf

, maka sebelumnya kita mem-backup terlebih dahulu :


1
2
cp /etc/ldap/ldap.conf /etc/ldap/ldap.conf.original
cp /etc/ldap.conf /etc/ldap/ldap.con

6. Lalu kita membuat file dari auth_client_config tadi :


1
vim /etc/auth-client-config/profile.d/open_ldap

dengan isi seperti ini :

[open_ldap]
nss_passwd=passwd: files ldap
nss_group=group: files ldap
nss_shadow=shadow: files ldap
nss_netgroup=netgroup: files ldap
pam_auth=auth       required     pam_env.so
auth       sufficient   pam_unix.so likeauth nullok
#the following line (containing pam_group.so) must be placed before pam_ldap.so
#for ldap users to be placed in local groups such as fuse, plugdev, scanner, etc ...
auth       required     pam_group.so use_first_pass
auth       sufficient   pam_ldap.so use_first_pass
auth       required     pam_deny.so
pam_account=account    sufficient   pam_unix.so
account    sufficient   pam_ldap.so
account    required     pam_deny.so
pam_password=password   sufficient   pam_unix.so nullok md5 shadow
password   sufficient   pam_ldap.so use_first_pass
password   required     pam_deny.so
pam_session=session    required     pam_limits.so
session    required     pam_mkhomedir.so skel=/etc/skel/
session    required     pam_unix.so
session    optional     pam_ldap.so

7. Backup beberapa file yg digunakan pada saat autentikasi


1
2
3
cp /etc/nsswitch.conf /etc/nsswitch.conf.org
mkdir /root/pam.d_backup
cp /etc/pam.d/* /root/pam.d_backup/

8. Selanjutnya kita mengaktifkan autentikasi berdasarkan file open_ldap yang sebelum nya di buat dengan auth_config_client :


1
auth-client-config -a -p open_ldap

9. Untuk mengetahui berhasil melakukan komunikasi dengan ldap server, dengan menjalankan :


1
getent passwd

atau

1
 
getent group

Jika tidak ada masalah, maka akan menampilkan user yang berada pada direktori ldap server yg sudah dibuat. Selanjutnya anda tinggal reboot dan siap melakukan login menggunakan user ldap yang sudah tersedia 🙂

Join Domain windows client

Nah, sekarang kita akan coba menggunakan windows client untuk join domain yang selanjutnya melakukan autentikasi ke ldap server. Cara nya :

1. Ke control panel-system-computer name

pilih change untuk mengubah menjad domain, isi dengan : ALFACH

seketika akan meminta autentikasi. Isi

user : root
password : 123456

jika berhasil, maka si windows akan meminta reboot.

2. Pada layar login user, maka akan ada pilihan untuk menggunakan domain. Selesai 🙂

By alfach

32 thoughts on “Install Samba-LDAP pada distro basis Ubuntu dan windows client”
  1. fachri, ini tuh bikin server buat penyimpanan data dan file tersentralisasi yah, kaya yang di lab komputer UAI ga? termasuk buat nge- boot komputer client? kali yang di komputer labkom namanya apa? kayaknya perlu buat satu artikel lagi nih buat menjelaskan secara mudah tentang LDAP dan contoh penggunaannya….heheheheh. good work friend

  2. @mirza
    beda antara yg dikampus.. klo itu thin client, tp bisa dikombinasiin sama ldap ini… tau microsoft active directory ga? nah mirip kaya gitu… utk artikel yg ngejelasinnya… hehe… insya Allah gw buat 🙂 thanx

  3. Abang fachri, Klo untuk active directory di windows, klo ga salah kan bisa rubah privilage user domain jadi admin domain yah.. jadi setiap mau join domain bisa pake user client yg privilagenya admin di domain..
    Nah aye punya 2 pertanyaan nih untuk samba+ldap sebagai active directory/PDC (ceritanya pake distro ubuntu server dan clientnya windows juga nih) :
    1. setiap join domain harus selalu pake root, bisa ga di ganti pake usernya si sysadmin/admin (maksudnya user domain yg privilagenya admin atau user yang haknya sama dengan root?
    2. setiap join domain privilage clientnya user semua.. klo salah satu user cliennya mau di jadiin admin gmn yah?
    btw tutorialnya bagus.. maap banyak tanya yah.. 😉
    makasih sebelumnya.. 🙂

  4. @mario
    1. Bisa selain root, setau sy ada 2 cara. Yaitu mendefinisikan, siapa yg menjadi admin utk samba ini. Tp sy lupa script nya (begini nih klo kurang dokumentasi :p ).

    Yg kedua itu, melalui command line, dgn menggunakan SeMachineAccountPrivileg (definisinya tnya om google :). Kurang lbh spt ini :

    membuat group server admin windows berdasarkan unixgroup admin
    # net groupmap add unixgroup=srvadmin ntgroup=”Server Admins”

    lalu baru memasukkan user ke groups server admins
    # net rpc rights grant ‘nama_workgroup_atau_domainServer Admins’ SeMachineAccountPrivilege
    -S nama_netbios -U nama_user

    2. Utk yg ini, sbnrnya mirip dgn diatas. Berarti mengubah user tsb bukan user biasa, saya pernah menggunakan LAM (LDAP Account Manager) itu memudahkan, dgn catatan bahwa groupmap sudah ada, nti via LAM tersebut, tersedia fitur utk kita bisa mengganti user client menjadi domain admins dan group lainnya yg priviliges nya sudah ditentukan. Seharusnya via command line pun ada, tp sy kurang hapal :p

    regards,

  5. pada waktu “smbldap-populate -u 30000 -g 30000”, keluar tulisan

    Please provide a password for the domain root:
    /usr/sbin/smbldap-passwd: user root doesn’t exist

  6. @ joe

    iya, itu minta dimasukkan password yg sama sewaktu melakukan smbpasswd, klo di tutorial sy itu berarti 123456.

    Kalau user root doesn’t exist, mungkin ada langkah yg terlewat. Mengenai user root ini, sebelumnya ada 2 langkah, yaitu sewaktu smbpasswd dan sewaktu smbldap_bind.conf

  7. om nanya donk .

    klo saat domain ga ada atau lagi down ,, user masih bisa connect ga ?

    klo seandai nya bisa .. gmn cara matiinnya .. ( domain mati user ga bisa connect .. )

    soalnya saya juga bikin user acconet d komputer windows ..

    username yang sama dengan user yang ada di domain .. ( roaming profile )

  8. Klo domainnya mati, harusnya user ga bisa connect. Itu kejadian klo di client nya linux.

    Klo di windows, setahu sy juga ga bisa connect. Lgpula di windows kan pada menu login (dibawah username dan password) ada pilihan domain. Klo ga mau masuk login domain, ya berarti jgn pilih domain tsb. Begitu kan maksudnya.

  9. makasih mas tutorialnya
    udah work
    cuman pas dibuka di windows, dia g mau muncul autentikasi user password nya knp ya ??
    jdi langsung aja ke buka direcotory yg di share nya ???
    mohon bantuannya

    1. Maksudnya tidak muncul autentikasi itu saat buka direktori atau login windows?

      Jika saat buka direktori, itu memang tidak muncul, karena konsepnya bukan share direktori tapi active direktori, user yg login sudah diberikan akses langsung ke direktori tersebut. Autentikasinya ya pada saat login di windows tersebut.

      1. saat saya buka wind+r , trus \ipsamba mas
        dia tidak muncul autentikasi

        apa autentikasi nya pass user login di windows setelah ganti workgroup ??

          1. gak mau login ketika ganti domain mas
            dan pas smbldap-populate -u 30000 -g 30000 , dia tidak ada input password
            knp ya mas?

  10. numpang tanya gan
    kok waktu net getlocalsid
    Failed to issue the StartTLS instruction: Protocol error
    Failed to issue the StartTLS instruction: Protocol error
    Failed to issue the StartTLS instruction: Protocol error
    smbldap_search_domain_info: Adding domain info for KARYAAKHIR failed with NT_STATUS_UNSUCCESSFUL
    SID for domain SAMBA-SERVER is: S-1-5-21-3167243821-559290230-27764152

    dan ketika perintah smbldap-populate -u 30000 -g 30000
    Use of qw(…) as parentheses is deprecated at /usr/share/perl5/smbldap_tools.pm line 1423, line 522.
    Populating LDAP directory for domain KARYAAKHIR (S-1-5-21-3167243821-559290230-27764152)
    (using builtin directory structure)

    entry dc=karyaakhir,dc=com already exist.
    entry ou=Users,dc=karyaakhir,dc=com already exist.
    entry ou=Groups,dc=karyaakhir,dc=com already exist.
    entry ou=Computers,dc=karyaakhir,dc=com already exist.
    failed to search entry: invalid DN at /usr/sbin/smbldap-populate line 480.

    1. Kalau berdasarkans searching saya, itu karena perbedaan versi yang berpengaruh pada protokol ldap, coba tambahkan pada file smb.conf dengan :

      ldap ssl = off

    1. saya di fb tidak terlalu aktif. Untuk tutorial ini sudah lama implementasinya ketika di kantor lama. Jadi, sy tidak menyimpan file smb.conf nya.

      Tapi, sy implemenatasikan spt pada tutorial ini.

    1. Mas Agil, setelah sy cek. Untuk yg :

      passwd program = /usr/sbin/smbldap-passwd %u
      passwd chat = *New*password* %nn *Retype*new*password* %nn *all*authentication*tokens*updated*

      Ada 2 kali. Coba dihapus salah satunya. Setelah itu sambanya di restart.

      Untuk “smbpasswd -w” bagaimana?

      Sekalian cek log nya di syslog. Bisa di cek di /var/log atau “System” –> “Administration: –> “System logs”

      1. owh iya bener ada 2, udah saya matiin yg default , masih permission denied
        sebaliknya, saya pake yg passwd program punya mas fachri juga sama masih permission denied

        untuk smbpasswd -w bebas

        lancar2 aja

        1. permission denied itu maksudnya ketika apa? udh sudo blm?

          ketika smbpasswd -w dijalankan kan minta password, password nya itu sama ketika konfigurasi slapd dan sama dengan di file smbldap_bind.conf

          1. permission denied pas ganti domain di windows nya mas
            kan ada prompt user password
            user : root
            pass : bebas

            smbpasswd dan smbldap_bind.conf udah sama passwordnya mas

  11. syslog nya

    Jan 27 23:39:59 ldap-server kernel: [34823.877091] init: smbd main process (2852) killed by TERM signal
    Jan 27 23:39:59 ldap-server slapd[872]: conn=1166 op=4 do_add: invalid dn (sambaDomainName=KARYAAKHIR,dc=karyaakhir,dc=com)
    Jan 27 23:39:59 ldap-server slapd[872]: <= bdb_equality_candidates: (uid) not indexed

        1. Mas,sepertinya masih ada yg kurang pas… :

          1. Antara file smb.conf dan ldap.conf. Di smb.conf cn=admin tapi di ldap.conf cn=manager. Pastikan cn disini juga sesuai dengan file ldif dan juga di smbldap_bind.conf. Coba dicek lagi konfigurasinya

          2. di file ldap.conf juga tidak ada :

          bind_policy soft

          3. di file ldap.conf juga ada kekeliruan penulisan :

          uri ldapi://192.168.1.1/

          harusnya

          uri ldap://192.168.1.1/

          4. di file slapd.conf, juga blm mengedit :

          access to attrs=userPassword,shadowLastChange

          dengan

          access to attrs=userPassword,shadowLastChange,sambaNTPassword,sambaLMPassword

          saya khawatir, sewaktu setting berupa wizard juga terjadi kesalahan. Di bidang network harus lbh hati2, karena kesalahan setting dpt berakibat fatal

          Sebaiknya dicoba setting dari awal lg mas. Supaya clean dan kelihatan langkah2nya.

          1. mas, sudah saya ulang lagi dari awal
            emang berkurang error nya
            cuman pas “smbldap-populate -u 30000 -g 30000”
            muncul
            Use of qw(…) as parentheses is deprecated at /usr/share/perl5/smbldap_tools.pm line 1423, line 522.
            Populating LDAP directory for domain KARYAAKHIR (S-1-5-21-525345708-3972212799-2964888534)
            (using builtin directory structure)

            entry dc=karyaakhir,dc=com already exist.
            entry ou=Users,dc=karyaakhir,dc=com already exist.
            entry ou=Groups,dc=karyaakhir,dc=com already exist.
            entry ou=Computers,dc=karyaakhir,dc=com already exist.
            failed to search entry: invalid DN at /usr/sbin/smbldap-populate line 480.

            dan hasil syslog
            Jan 30 08:55:13 samba slapd[5508]: conn=1008 op=5 do_search: invalid dn: “sambaDomainName=KARYAAKHIR,dc=karyaakhir,dc=com”

            ini file konfig saya yg baru
            http://speedy.sh/Mn4tA/samba.rar

          2. Mas, di file smb.conf tidak ada :

            passdb backend = ldapsam:ldap://localhost/

            Setelah itu coba restart lg samba nya. Cek syslog.

  12. ini log setelah saya tambahin passdb

    Jan 30 11:04:16 samba kernel: [ 3278.086848] init: smbd main process (2806) killed by TERM signal
    Jan 30 11:04:16 samba slapd[1553]: conn=1008 op=4 do_add: invalid dn (sambaDomainName=KARYAAKHIR,dc=karyaakhir, dc=com)
    Jan 30 11:04:16 samba slapd[1553]: <= bdb_equality_candidates: (uid) not indexed

    pass gk saya tambain g ada mas

    1. Mas, mungkin ada perbedaan setting domain/host/FQDN, krn log nya menyatakan invalid dn. Krn tutorial saya tidak disertakan screenshot yg lengkap, bisa jadi saat wizard, sy berikan referensi yg mirip dgn setting sy, yg dilengkapi screenshot.

      Mengingat jg tutorial sy cukup lama, tahun 2009, bisa jadi ada perbedaan konfigurasi. Coba bandingkan dengan referensi ini :

      http://www.unixmen.com/setup-samba-domain-controller-with-openldap-backend-in-ubuntu-13-04/

      bisa dibandingkan beberapa yg mirip. Jika direferensi itu, menggunakan LAM (Ldap Account Manager) via web.

      semoga sukses mas.

Leave a Reply

Your email address will not be published. Required fields are marked *