In Ubuntu 9.10 Karmic Koala the installation of OpenLDAP got a bit complicated. Upon installation you are not asked for your password anymore, and you have to set up the database yourself. And this is only possible using the OpenLDAP server’s root account. Yes, you read correctly: only a very minimal cn=config is provided by default.
There is an official statement about this [1] (in short: this is part of a future strategy to bring OpenLDAP to a broader spectrum - keyword: Kerberos), but unfortunately there is neither (november 4th, 2009) an official nor an inofficial HowTo on how to set up the whole thing. So here is my take:
First, install OpenLDAP:
Code:
apt-get -y install slapd ldap-utils
A dpkg-reconfigure slapd is useless btw.
Now add a few schemata (only core.schema is provided by default):
Code:
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
After that, we set up the initial cn=config database. Open a temporary file in your favourite text editor:
Code:
vi /root/db.ldif
and insert the following listing:
Code:
###########################################################
# DATABASE SETUP
###########################################################
# Load modules for database type
dn: cn=module{0},cn=config
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_hdb
# Create directory database
dn: olcDatabase={1}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcDbDirectory: /var/lib/ldap
olcSuffix: dc=home,dc=com
olcRootDN: cn=admin,dc=home,dc=com
olcRootPW: 1234
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn=”cn=admin,dc=home,d
c=com” write by anonymous auth by self write by * none
olcAccess: {1}to dn.base=”" by * read
olcAccess: {2}to * by dn=”cn=admin,dc=home,dc=com” write by * read
olcLastMod: TRUE
olcDbCheckpoint: 512 30
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
olcDbIndex: uid pres,eq
olcDbIndex: cn,sn,mail pres,eq,approx,sub
olcDbIndex: objectClass eq
###########################################################
# DEFAULTS MODIFICATION
###########################################################
# Some of the defaults need to be modified in order to allow
# remote access to the LDAP config. Otherwise only root
# will have administrative access.
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
add: olcRootPW
olcRootPW: {CRYPT}7hzU8RaZxaGi2
dn: olcDatabase={0}config,cn=config
changetype: modify
delete: olcAccess
Apply this configuration with the following command:
Code:
ldapadd -Y EXTERNAL -H ldapi:/// -f /root/db.ldif
This creates an administrative LDAP user cn=admin,dc=home,dc=com with the password 1234. Be aware: from now on this user has all privileges on your LDAP-server!
Now set up a minimal LDAP DIT. Open another temporary file:
Code:
vi /tmp/base.ldif
and insert the following:
Code:
# Tree root
dn: dc=home,dc=com
objectClass: dcObject
objectclass: organization
o: home.com
dc: home
description: Tree root
# LDAP admin
dn: cn=admin,dc=home,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
userPassword: 1234
description: LDAP administrator
…and apply it:
Code:
ldapadd -x -D cn=admin,dc=home,dc=com -W -f /tmp/base.ldif -h 127.0.0.1
when asked for a password, enter 1234. From now on you should be on the level of a fresh OpenLDAP installation in Jaunty. The rest is your part.
By the way, with the following commands you can read your cn=config:
Code:
ldapsearch -xLLL -b cn=config -D cn=admin,cn=config -W olcDatabase={1}hdb
ldapsearch -xLLL -b cn=config -D cn=admin,cn=config -W
and your LDAP DIT (this time as anonymous user - hence no password is shown for your cn=admin,dc=home,dc=com):
Code:
ldapsearch -xLLL -b dc=home,dc=com
TAHAPAN SELANJUTNYA …..
Skenario berikut untuk memfungsikan Openldap sebagai server untuk menyimpan data email client supaya bisa diakses dari komputer mana saja dalam jaringan (sudah ditest pakai email client Thunderbird, Outlook 2003, outlook 2002 dan Outlook express).
*** Membuat Directory Addressbook di Domain home.com
sudo ldapadd -x -D cn=admin,dc=home,dc=com -W -f /tmp/address.ldif -h 127.0.0.1
isi address.ldif :
# addressbook, home, com
dn: ou=addressbook, dc=home, dc=com
objectClass: top
objectClass: organizationalUnit
ou: addressbook
# search result
search: 2
result: 0 Success
*** Input data di Directory Addressbook di Domain home.com
sudo ldapadd -x -D cn=admin,dc=home,dc=com -W -f /tmp/contact.ldif -h 127.0.0.1
isi contact.ldif :
dn: cn=John Doe, ou=addressbook, dc=home, dc=com
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
cn: John Doe
gn: John
sn: Doe
mail: johndoe@test.com
physicalDeliveryOfficeName: Breketek, Tbk., Staff
postalAddress: -
l: -
ou: addressbook
st: -
postalCode: -
telephoneNumber: 0
facsimileTelephoneNumber: 0
pager: 0
mobile: 0361-7927014
homePhone: 0
BACKUP DATABASE OPENLDAP
script sederhana:
buat file backup-ldap.sh yang isinya :
#!/bin/bash
DATADIR=/var/backup/ldap
DATE=$(date +%Y-%m-%d)
# Backup LDAP
echo “Backup LDAP”
slapcat -l $DATADIR/ldap-backup-$DATE.ldif
echo “Compress LDAP backup files”
gzip -9 $DATADIR/ldap-backup-$DATE.ldif
echo “Delete backup file older than 5 days”
# Delete old file
find $DATADIR/*.gz -mtime +5 -exec rm {} \;echo “Done!”
exit
buat executable dengan chmode +x backup-ldap.sh, terus jalankan :
sudo backup-ldap.sh
RESTORE DATABASE OPENLDP
Pertama-tama decompress file gzip :
#gunzip ldap-backup-2009-12-30.ldif.gz
setelah itu jalankan perintah:
#slapadd -v -c -l ldap-backup-2009-12-30.ldif -f /etc/ldap/slapd.conf
setelah itu restart slapd
#/etc/init.d/slapd restart
Hanya catatan …………………
Artikel diambil dari : http://www.nixnux.or.id/2009/12/10/openldap-sambapdc-ubuntu-karmic/
Artikel ini menjelaskan cara mengatur Windows domain menggunakan Samba dengan OpenLDAP sebagai Domain Controler utama yang menyimpan informasi account Windows. Ini menyediakan otentikasi terpusat untuk Windows pengguna pada jaringan, sehingga menghindari kebutuhan untuk mengelola account pengguna lokal di setiap Windows PC. Ini dapat juga memungkinkan penggunaan profil roaming, di mana pengguna dapat masuk ke setiap Windows PC pada jaringan dan pengaturan pribadi yang sama di setiap sesi.
Dengan menggunakan LDAP sebagai database Samba bukan salah satu alternatif, meskipun, jauh lebih dapat dicapai. Database LDAP dapat juga mengadakan kelas-kelas lain informasi pada masing-masing pengguna yang dapat digunakan untuk sistem otentikasi lainnya, atau untuk informasi umum seperti dalam kasus e-mail dari daftar kontak. Dalam artikel ini, LDAP kelas ‘person’, ‘organizationalPerson’ dan ‘inetOrgPerson’ menyimpan informasi umum tentang pengguna, termasuk alamat e-mail, nomor telepon dan alamat fisik. Informasi ini dapat dimanfaatkan oleh klien e-mail seperti Evolution dan Thunderbird. Kelas LDAP ‘posixAccount’ menyimpan informasi account pengguna Linux. Sama seperti Windows PC, PC Linux dapat dikonfigurasi untuk menggunakan database OpenLDAP sebagai pusat titik otentikasi. Dengan demikian, kita memiliki sebuah server LDAP yang menyediakan otentikasi untuk Windows dan Linux PC. Selain itu, server LDAP dapat berpotensi digunakan untuk mengontrol akses ke sistem Web – silakan lihat artikel sangat membantu OpenLDAPServer.
Sepanjang artikel ini, silahkan ganti dc=masterpop3,dc=local dengan yang sesuai dengan organisasi Anda – misalnya. dc=myorganisation, dc=org. Demikian juga, pilih nama yang cocok untuk domain Anda.
Password root/admin yang digunakan = 12345
System Telah Teruji
Hal ini telah diuji pada Ubuntu Karmic Server 9.10 -64bit, menginstal segalanya dari Ubuntu repositori – yaitu. samba 3.4.0, slapd 2.4.18, smbldap-tools 0.9.4-1. Windows XP SP2 digunakan sebagai klien Windows.
Item Tested:
* Windows PC dapat bergabung dengan domain
* Windows domain user dapat masuk ke PC
* Windows domain user bisa mengubah password mereka, dengan menekan Ctrl-Alt-Delete, dll
* Drive M: muncul dan akses benar
* Roaming profil secara otomatis dibuat bila pengguna domain log-off pada akhir sesi pertama mereka
* Ubuntu server sudah berhasil disiapkan untuk menggunakan LDAP gabungan dan file sebagai mekanisme otentikasi POSIX
Step 1: Install OpenLDAP dan Samba
Install OpenLDAP, Samba dan paket lainnya
aptitude install slapd ldap-utils migrationtools db4.7-util
aptitude install samba smbldap-tools smbclient samba-doc libtalloc1 libpam-smbpass
Step 2: Konfigurasi OpenLDAP untuk digunakan dengan Samba
Instal Samba dokumentasi yang berisi skema. ekstrak Samba.schema dan copy ke area sistem yang diperlukan untuk OpenLDAP.
cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema/
gzip -d /etc/ldap/schema/samba.schema.gz
Tentukan password admin LDAP dan menghasilkan kunci hash SSHA untuk itu.
root@masterpop3:~# slappasswd
New password:
Re-enter new password:
{SSHA}8ocqsGYGCeZI3tzNZUmO92/GjCW6MTa+ ; ini hasil generate slappasswd.
Buat file init.ldif. Nama 4 OUs (Organization Units) Users, Groups, Computer dan Idmap untuk digunakan dengan smbldap-tools.
~# vim /etc/ldap/init.ldif
dn: dc=masterpop3,dc=local
objectClass: dcObject
objectClass: organizationalUnit
dc: masterpop3
ou: masterpop3.local
dn: cn=admin,dc=masterpop3,dc=local
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword: {SSHA}8ocqsGYGCeZI3tzNZUmO92/GjCW6MTa+ ##masukkan hasil dari generate slappasswd.
dn: ou=Users,dc=masterpop3,dc=local
objectClass: organizationalUnit
ou: Users
dn: ou=Groups,dc=masterpop3,dc=local
objectClass: organizationalUnit
ou: Groups
dn: ou=Computers,dc=masterpop3,dc=local
objectClass: organizationalUnit
ou: Computers
dn: ou=Idmap,dc=masterpop3,dc=local
objectClass: organizationalUnit
ou: Idmap
Membuat file /etc/ldap/slapd.conf untuk domain ini, dan sesuaikan konfigurasinya…
~# vim /etc/ldap/slapd.conf
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/samba.schema
pidfile /var/run/slapd/slapd.pid
argsfile /var/run/slapd/slapd.args
loglevel 0
modulepath /usr/lib/ldap
moduleload back_bdb
sizelimit 500
tool-threads 1
backend bdb
database bdb
suffix “dc=masterpop3,dc=local” #sesuaikan dengan DN yg anda buat.
rootdn “cn=admin,dc=masterpop3,dc=local” #sesuaikan
rootpw {SSHA}8ocqsGYGCeZI3tzNZUmO92/GjCW6MTa+ #samakan seperti di init.ldif
directory “/var/lib/ldap”
dbconfig set_cachesize 0 2097152 0
dbconfig set_lk_max_objects 1500
dbconfig set_lk_max_locks 1500
dbconfig set_lk_max_lockers 1500
index objectClass eq
lastmod on
checkpoint 512 30
access to attrs=userPassword,shadowLastChange,sambaNTPassword,sambaLMPassword
by dn=”cn=admin,dc=masterpop3,dc=local” write
by anonymous auth
by self write
by * none
access to dn.base=”” by * read
access to *
by dn=”cn=admin,dc=masterpop3,dc=local” write
by * read
Inisialisasi OpenLDAP Database…
~# /etc/init.d/slapd stop
~# rm -rf /var/lib/ldap/*
~# mv /etc/ldap/slapd.d /etc/ldap/slapd.d.orig
~# mkdir /etc/ldap/slapd.d
~# slapadd -v -l init.ldif
/etc/ldap/slapd.conf: line 109: rootdn is always granted unlimited privileges.
/etc/ldap/slapd.conf: line 126: rootdn is always granted unlimited privileges.
added: “dc=masterpop3,dc=local” (00000001)
added: “cn=admin,dc=masterpop3,dc=local” (00000002)
added: “ou=Users,dc=masterpop3,dc=local” (00000003)
: : :
~# chown -R openldap:openldap /var/lib/ldap
Selanjutnya update konfigurasi OpenLDAP
~# cd /etc/ldap
~# slaptest -f slapd.conf -F slapd.d
Berhasil jika terlihat: config file testing succeeded
Ubah kembali kepemilikan direktory slapd.d
~# chown -R openldap:openldap slapd.d
~# /etc/init.d/slapd start
Konfirmasi semuanya OK dengan Pencarian ..
~# ldapsearch -x -b dc=masterpop3,dc=local -h 127.0.0.1 | less
dn: dc=masterpop3,dc=local
objectClass: dcObject
objectClass: organizationalUnit
dc: masterpop3
ou: masterpop3.local
: : :
Step 3: Konfigurasi Samba sebagai Primary Domain Controller (PDC)
Membuat folder samba untuk keperluan share dan logon …
~# mkdir -p /home/samba/{netlogon,profiles,public}
~# chmod 777 /home/samba/{profiles,public}
Membuat/ubah file /etc/samba/smb.conf .. seperti contoh berikut ini
[global]
workgroup = MASTERPOP3
netbios name = DC-UBUNTU
server string = DC SERVER
; menjadi sebuah PDC
domain logons = Yes
domain master = Yes
; menjadi sebuah WINS Server
wins support = Yes
security = user
encrypt passwords = Yes
obey pam restrictions = No
dns proxy = No
os level = 35
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
pam password change = Yes
unix password sync = No
ldap passwd sync = yes
passdb backend = ldapsam:ldap://localhost
ldap suffix = dc=masterpop3,dc=local
ldap admin dn = cn=admin,dc=masterpop3,dc=local
ldap machine suffix = ou=Computers
ldap user suffix = ou=Users
ldap group suffix = ou=Groups
ldap idmap suffix = ou=Idmap
ldap ssl = no
add user script = /usr/sbin/smbldap-useradd -m ‘%u’
delete user script = /usr/sbin/smbldap-userdel %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’
add machine script = /usr/sbin/smbldap-useradd -w ‘%u’
logon drive = M:
logon home = \\DC-UBUNTU\%U
logon path = \\DC-UBUNTU\%U\Profile
logon script = logon.bat
server signing = auto
server schannel = Auto
[homes]
comment = Home Directories
valid users = %S
read only = No
browseable = No
[netlogon]
comment = Network Logon Service
path = /home/samba/netlogon
admin users = root
guest ok = Yes
read only = Yes
browseable = No
[Profiles]
comment = Roaming Profile Share
path = /home/samba/profiles
read only = No
profile acls = Yes
browsable = No
[Public]
comment = Public Share
path = /home/samba/public
read only = No
guest ok = Yes
browsable = Yes
writeable = Yes
create mask = 0666
directory mask = 0777
membuat password untuk LDAP admin account (spt: cn=admin,dc=masterpop3,dc=local) ..
~# smbpasswd -W
Setting stored password for “cn=admin,dc=masterpop3,dc=local” in secrets.tdb
New SMB password: ; password yg sama dengan LDAP admin
Retype new SMB password:
Restart Samba ..
~# /etc/init.d/samba restart
Gunakan SMB klien untuk memeriksa bahwa server Samba merespons dengan benar.
~# smbclient -L dc-ubuntu -U anonymous%
Anonymous login successful
Domain=[MASTERPOP3] OS=[Unix] Server=[Samba 3.4.0]
Sharename Type Comment
——— —- ——-
IPC$ IPC IPC Service (DC SERVER)
Public Disk Public Share
Anonymous login successful
Domain=[MASTERPOP3] OS=[Unix] Server=[Samba 3.4.0]
Server Comment
——— ——-
DC-UBUNTU DC SERVER
DB-SRV
NIXNUX
TDS
WABAHTIAR-PC
Workgroup Master
——— ——-
MASTERPOP3 DC-UBUNTU
step 4: Konfigurasi paket SMBLDAP-TOOL
Kita akan menggunakan paket smbldap-tools untuk mengisi direktori ldap, menambahkan users, menambahkan groups, menambahkan workstation, dll .. Namun, toolsnya harus dikonfigurasi terlebih dahulu!
~# 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
Membuat SID (Security ID) untuk SAMBA domain.
~# net getlocalsid
SID for domain DC-UBUNTU is: S-1-5-21-1544440099-1215257018-185093263
Mengedit file /etc/smbldap-tools/smbldap.conf untuk dikonfigurasi :
~# cd /etc/smbldap-tools/
~# vim smbldap.conf
Konfigurasinya akan terllihat seperti ini, edit dan sesuaikan..
SID=”S-1-5-21-1544440099-1215257018-185093263″
sambaDomain=”MASTERPOP3″
slaveLDAP=”127.0.0.1″
slavePort=”389″
masterLDAP=”127.0.0.1″
masterPort=”389″
ldapTLS=”0″
verify=”require”
cafile=”/etc/smbldap-tools/ca.pem”
clientcert=”/etc/smbldap-tools/smbldap-tools.pem”
clientkey=”/etc/smbldap-tools/smbldap-tools.key”
suffix=”dc=masterpop3,dc=local”
usersdn=”ou=Users,${suffix}”
computersdn=”ou=Computers,${suffix}”
groupsdn=”ou=Groups,${suffix}”
idmapdn=”ou=Idmap,${suffix}”
sambaUnixIdPooldn=”sambaDomainName=MASTERPOP3,${suffix}”
scope=”sub”
hash_encrypt=”SSHA”
crypt_salt_format=”%s”
# Unix Accounts Configuration
userLoginShell=”/bin/bash”
userHome=”/home/%U”
userHomeDirectoryMode=”700″
userGecos=”System User”
defaultUserGid=”513″
defaultComputerGid=”515″
skeletonDir=”/etc/skel”
defaultMaxPasswordAge=”45″
userSmbHome=
userProfile=
userHomeDrive=
userScript=
mailDomain=”masterpop3.local”
with_smbpasswd=”0″
smbpasswd=”/usr/bin/smbpasswd”
with_slappasswd=”0″
slappasswd=”/usr/sbin/slappasswd”
Edit file /etc/smbldap-tools/smbldap_bind.conf ..
~# vim smbldap_bind.conf
slaveDN=”cn=admin,dc=masterpop3,dc=local”
slavePw=”passwordmu”
masterDN=”cn=admin,dc=masterpop3,dc=local”
masterPw=”passwordmu”
Set permision file ..
~# chmod 0644 /etc/smbldap-tools/smbldap.conf
~# chmod 0600 /etc/smbldap-tools/smbldap_bind.conf
step 5: Mengisi/populate OpenLDAP Database
Sesuai namanya, smbldap-tools menyediakan hubungan antara Samba dan LDAP database. Tool ini juga meletakkan/memasukkan inetOrgPerson dan POSIX ke dalam database.
Smbldap-tools memberikan perintah berikut ..
* smbldap-groupadd – menambahkan grup baru
* smbldap-groupdel – menghapus grup
* smbldap-groupmod – memodifikasi sebuah grup, termasuk menambahkan atau menghapus member
* smbldap-groupshow – menampilkan propertis dari sebuah grup, termasuk member
* smbldap-passwd – mengganti password user
* smbldap-populate – mengisi LDAP database, menyediakan struktur yang diperlukan untuk Samba
* smbldap-useradd – menambahkan akun user baru
* smbldap-userdel – menghapus sebuah akun user
* smbldap-userlist – daftar user atau mesin dengan beberapa info
* smbldap-usershow – menampilkan informasi untuk akun user
* smbldap-usermod – mengubah Unix dan Samba propertis dalam satu user (banyak properti)
* smbldap-userinfo – mengubah gecos informasi dalam sebuah akun user (hanya beberapa properti)
Mengisi LDAP database dengan entri Samba sangat penting. Ini meliputi pembentukan grup standard, seperti Administrators dan Domain Users.
Jalankan perintah berikut untuk mengisi LDAP database..
~# smbldap-populate -u 30000 -g 30000
Populating LDAP directory for domain MASTERPOP3 (S-1-5-21-1544440099-1215257018-185093263)
(using builtin directory structure)
entry dc=masterpop3,dc=local already exist.
entry ou=Users,dc=masterpop3,dc=local already exist.
entry ou=Groups,dc=masterpop3,dc=local already exist.
entry ou=Computers,dc=masterpop3,dc=local already