Installasi Server Ldap Centos

A. Skenario:
DNS = depbhub.comlabs.itb.ac.id
IP = 167.205.79.48
Ldap server ini akan menjadi server authentikasi untuk server proxy, email, FTP, Aplikasi, Login ubuntu Desktop.
B. Langkah Konfigurasi Server LDAP
1. Install sistem Operasi Centos 6.3
2. Ubah Ip address dengan 167.205.79.48
3.  Install paket Ldap server dengan menggunakan perintah yum:
# yum -y install openldap-servers openldap-clients
4. edit file berikut bahwa kita akan menggunakan LDAPS sebagai security agar password terencrypt:
# nano /etc/sysconfig/ldap
ubah baris 16 menjadi
SLAPD_LDAPS=yes
5. Buat file konfigurasi slapd.conf baru dan masukan baris berikut:
# nano /etc/openldap/slapd.conf
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
6. Hapus semua isi file dari directory slapd.d
# rm -rf /etc/openldap/slapd.d/*
7. Periksa file konfgurasi slapd.conf yang tadi telah dibuat dengan perintah
# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d
config file testing succeeded
8. ubah file berikut dan pada baris ke 4 ganti dengan seperti dibawah ini:
# /etc/openldap/slapd.d/cn=config/olcDatabase\={0}config.ldif
olcAccess: {1}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
9. Buat file konfigurasi untuk schema monitor ldap:
# nano /etc/openldap/slapd.d/cn=config/olcDatabase\={1}monitor.ldif
dn: olcDatabase={1}monitor
objectClass: olcDatabaseConfig
olcDatabase: {1}monitor
olcAccess: {1}to * by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * break
olcAddContentAcl: FALSE
olcLastMod: TRUE
olcMaxDerefDepth: 15
olcReadOnly: FALSE
olcMonitoring: FALSE
structuralObjectClass: olcDatabaseConfig
creatorsName: cn=config
modifiersName: cn=config
10. Ubah owner dan file mode folder slapd.d:
# chown -R ldap. /etc/openldap/slapd.d
# chmod -R 700 /etc/openldap/slapd.d
11. Jalankan service Ldap kemudian atur agar service tersebut autostart saat booting:
# /etc/init.d/slapd start
  Starting slapd:                                                        [ OK ]
# chkconfig slapd on
12. Langkah selanjutnya kita memasukan file schema ke Ldap server kita yang terdiri dari core, cosine, nis, inetorgperson.
a. Core
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/core.ldif
  SASL/EXTERNAL authentication started
  SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
  SASL SSF: 0
  adding new entry "cn=core,cn=schema,cn=config"
b. cosine
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=cosine,cn=schema,cn=config"
c. nis
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=nis,cn=schema,cn=config"
 d. inetorgperson
# ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry “cn=inetorgperson,cn=schema,cn=config”
13. Selanjutnya genrate password server ldap kita dengan menggunakan perintah:
# slappasswd
New password: 
Re-enter new password: 
{SSHA}xxxxxxxxxxxxx
14. Buat file konfigurasi Backend, File konfigurasi Backend bekerja sebagai pengambil data dan penyimpan data dari request yang dilakukan oleh ldap.
*masukan nama domain dan password dari LDAP password yang tadi digenrate*
# nano backend.ldif
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib64/openldap
olcModuleload: back_hdb
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {2}hdb
olcSuffix: dc=dephub,dc=comlabs,dc=itb,dc=ac,dc=id
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=dephub,dc=comlabs,dc=itb,dc=ac,dc=id
olcRootPW: {SSHA}xxxxxxx
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcMonitoring: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=dephub,dc=comlabs,dc=itb,dc=ac,dc=id" write by anonymous auth by self write by * none
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=dephub,dc=comlabs,dc=itb,dc=ac,dc=id" write by * read

15.  export file backend tersebut ke LDAP.
# ldapadd -Y EXTERNAL -H ldapi:/// -f backend.ldif 
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=module,cn=config"
16. buat file konfigurasi frontend.ldif.
# nano frontend.ldif
dn: dc=dephub,dc=comlabs,dc=itb,dc=ac,dc=id
objectClass: top
objectClass: dcObject
objectclass: organization
o: dephub comlabs
dc: dephub
dn: cn=admin,dc=dephub,dc=comlabs,dc=itb,dc=ac,dc=id
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
userPassword: {SSHA}xxxxx
dn: ou=pegawai,dc=dephub,dc=comlabs,dc=itb,dc=ac,dc=id
objectClass: organizationalUnit
ou: pegawai
dn: ou=groups,dc=dephub,dc=comlabs,dc=itb,dc=ac,dc=id
objectClass: organizationalUnit
ou: groups
17. export frontend.ldif tersebut ke LDAP server, nanti akan ditanya untuk password server ldap:
# ldapadd -x -D cn=admin,dc=dephub,dc=comlabs,dc=itb,dc=ac,dc=id -W -f frontend.ldif 
Enter LDAP Password: 
adding new entry "dc=dephub,dc=comlabs,dc=itb,dc=ac,dc=id"
adding new entry "cn=admin,dc=dephub,dc=comlabs,dc=itb,dc=ac,dc=id"
adding new entry "ou=pegawai,dc=dephub,dc=comlabs,dc=itb,dc=ac,dc=id"
adding new entry "ou=groups,dc=dephub,dc=comlabs,dc=itb,dc=ac,dc=id"
18. untuk menambah user pada ldap, saya coba tambahkan user local ke ldap dengan cara:
# nano ldahuser.sh
#!/bin/bash
SUFFIX='dc=dephub,dc=comlabs,dc=itb,dc=ac,dc=id'
LDIF='ldapuser.ldif'
echo -n > $LDIF
for line in `grep "x:[5-9][0-9][0-9]:" /etc/passwd | sed -e "s/ /%/g"`
do
 UID1=`echo $line | cut -d: -f1`
 NAME=`echo $line | cut -d: -f5 | cut -d, -f1`
 if [ ! "$NAME" ]
 then
 NAME=$UID1
 else
 NAME=`echo $NAME | sed -e "s/%/ /g"`
 fi
 SN=`echo $NAME | awk '{print $2}'`
 if [ ! "$SN" ]
 then
 SN=$NAME
 fi
 GIVEN=`echo $NAME | awk '{print $1}'`
 UID2=`echo $line | cut -d: -f3`
 GID=`echo $line | cut -d: -f4`
 PASS=`grep $UID1: /etc/shadow | cut -d: -f2`
 SHELL=`echo $line | cut -d: -f7`
 HOME=`echo $line | cut -d: -f6`
 EXPIRE=`passwd -S $UID1 | awk '{print $7}'`
 FLAG=`grep $UID1: /etc/shadow | cut -d: -f9`
 if [ ! "$FLAG" ]
 then
 FLAG="0"
 fi
WARN=`passwd -S $UID1 | awk '{print $6}'`
 MIN=`passwd -S $UID1 | awk '{print $4}'`
 MAX=`passwd -S $UID1 | awk '{print $5}'`
 LAST=`grep $UID1: /etc/shadow | cut -d: -f3`
 echo "dn: uid=$UID1,ou=people,$SUFFIX" >> $LDIF
 echo "objectClass: inetOrgPerson" >> $LDIF
 echo "objectClass: posixAccount" >> $LDIF
 echo "objectClass: shadowAccount" >> $LDIF
 echo "uid: $UID1" >> $LDIF
 echo "sn: $SN" >> $LDIF
 echo "givenName: $GIVEN" >> $LDIF
 echo "cn: $NAME" >> $LDIF
 echo "displayName: $NAME" >> $LDIF
 echo "uidNumber: $UID2" >> $LDIF
 echo "gidNumber: $GID" >> $LDIF
 echo "userPassword: {crypt}$PASS" >> $LDIF
 echo "gecos: $NAME" >> $LDIF
 echo "loginShell: $SHELL" >> $LDIF
 echo "homeDirectory: $HOME" >> $LDIF
echo "shadowExpire: $EXPIRE" >> $LDIF
 echo "shadowFlag: $FLAG" >> $LDIF
 echo "shadowWarning: $WARN" >> $LDIF
 echo "shadowMin: $MIN" >> $LDIF
 echo "shadowMax: $MAX" >> $LDIF
 echo "shadowLastChange: $LAST" >> $LDIF
 echo >> $LDIF
done
19. Jalankan script tersebut kemudian akan ada output file yaitu ldapuser.ldif.
# sh ldapuser.sh
20. export file ldapuser.ldif ke LDAP server.
# ldapadd -x -D cn=admin,dc=depbhub,dc=comlabs,dc=itb,dc=ac,dc=id -W -f ldapuser.ldif

21.  Sekarang tambahkan group yang sudah ada di system kita dengan membuat sebuah script ldapgroup.sh
# nano ldapgroup.sh

#!/bin/bash

SUFFIX='dc=dephub,dc=comlabs,dc=itb,dc=ac,dc=id'
LDIF='ldapgroup.ldif'

echo -n > $LDIF
for line in `grep "x:[5-9][0-9][0-9]:" /etc/group`
do
   CN=`echo $line | cut -d: -f1`
   GID=`echo $line | cut -d: -f3`
   echo "dn: cn=$CN,ou=groups,$SUFFIX" >> $LDIF
   echo "objectClass: posixGroup" >> $LDIF
   echo "cn: $CN" >> $LDIF
   echo "gidNumber: $GID" >> $LDIF
   users=`echo $line | cut -d: -f4 | sed "s/,/ /g"`
   for user in ${users} ; do
      echo "memberUid: ${user}" >> $LDIF
   done
   echo >> $LDIF
done
22. jalankan script ldapgruop tersebut dan akan menghasilkan output filel ldapgroup.ldif kemudian export:
# sh ldapgroup.sh
# ldapadd -x -D cn=admin,dc=dephub,dc=comlabs,dc=itb,dc=ac,dc=id -W -f ldapgroup.ldif
23. sekarang saatnya pengujian, kita search user ghulam dari domain dephub.comlabs.itb.ac.id, menggunakan perintah:
# ldapsearch -xLL -b dc=dephub,dc=comlabs,dc=itb,dc=ac,dc=id uid=ghulam
version: 1

dn: uid=ghulam,ou=pegawai,dc=dephub,dc=comlabs,dc=itb,dc=ac,dc=id
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: ghulam
sn: ghulam
givenName: ghulam
cn: ghulam
displayName: ghulam
uidNumber: 500
gidNumber: 500
gecos: ghulam
loginShell: /bin/bash
homeDirectory: /home/ghulam
shadowExpire: -1
shadowFlag: 0
shadowWarning: 7
shadowMin: 0
shadowMax: 99999
shadowLastChange: 15618
Jika sudah tampil output seperti diatas, berarti ldap server sudah berhasil, dari output tersebut kita dapat melihat semua informasi tentang user ghulam. Dan artikel tentang ldap ini masih akan berlanjut dengan topik.
1. set TLS ldap server.
2. Install phpldapadmin.
3. authentikasi squid menggunakan LDAP.
4. authentikasi zimbra menggukan LDAP.
5. authentikasi ubuntu menggunakan LDAP.
6. authentikasi Proftpd menggunakan LDAP.

terima kasih salam komunitas kribo.

Tolong Laporkan Jika Ada Link Yang Error Atau Gambar Tidak Muncul :)
dan mohon untuk mengklik iklan banner untuk kelangsungan blog :)"
Sekalian juga untuk biaya sekolah admin nya. :) terimakasih :)
EmoticonEmoticon