Rabu, 13 Juli 2016

LDAP Ubuntu

Install Samba-LDAP pada distro basis Ubuntu dan windows client



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.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.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 “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 :
<code>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</code>
2. Lalu kita membutuhkan Secuirty ID (SID) untuk domain samba yang kita buat :
<code>net getlocalsid</code>
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
Kali ini kita melakukan konfigurasi client untuk terhubung melakukan autentikasi ke ldap server yang sudah kita buat.
1. Install aplikasi yang dibutuhkan :
<code>apt-get install auth-client-config libpam-ldap libnss-ldap</code>
2. Seketika,maka akan muncul wizard konfigurasi, isikan seperti ini :
<code>Should debconf manage LDAP configuration?: Yes</code>

LDAP server Uniform Resource Identifier: ldap://alfach.org   &lt;-- 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 :
<code>cp /etc/ldap.conf /etc/ldap.conf.original</code>
4. Lalu kita edit ldap.conf nya :
<code>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
</code>
5. Kita akan men-copy/etc/ldap.confke/etc/ldap/ldap.conf, maka sebelumnya kita mem-backup terlebih dahulu :
<code>cp /etc/ldap/ldap.conf /etc/ldap/ldap.conf.original
cp /etc/ldap.conf /etc/ldap/ldap.con</code>
6. Lalu kita membuat file dari auth_client_config tadi :
<code>vim /etc/auth-client-config/profile.d/open_ldap</code>
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
<code>cp /etc/nsswitch.conf /etc/nsswitch.conf.org
mkdir /root/pam.d_backup
cp /etc/pam.d/* /root/pam.d_backup/
</code>
8. Selanjutnya kita mengaktifkan autentikasi berdasarkan file open_ldap yang sebelum nya di buat dengan auth_config_client :
<code>auth-client-config -a -p open_ldap</code>
9. Untuk mengetahui berhasil melakukan komunikasi dengan ldap server, dengan menjalankan :
<code>getent passwd </code>
atau

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 :)

Tidak ada komentar:

Posting Komentar