FreeBSD OpenLDAP - Menginstal dan Mengkonfigurasi OpenLDAP dengan Sertifikat TLS
· 2 min read · Label LinuxMeskipun sebagian besar buku tentang topik ini membuat Anda percaya, LDAP sebenarnya tidak terlalu sulit digunakan. Cara terbaik untuk mempelajari LDAP adalah dengan menjalankan server LDAP Anda sendiri. Dokumen ini membahas instalasi dan konfigurasi dasar server LDAP OpenLDAP.
Banyak situs menggunakan OpenLDAP daripada solusi komersial karena:
- Gratis. Sebagian besar departemen TI memiliki anggaran tahunan yang tetap, dan administrator sistem lebih suka menghabiskan sedikit uang yang mereka peroleh untuk perangkat keras baru daripada perangkat lunak yang bisa mereka dapatkan secara gratis.
- Ini sumber terbuka. Siapa pun dapat mengunduh dan melihat isi server, dan Anda juga dapat mengubah cara kerja bagian mana pun dari server agar sesuai dengan kebutuhan Anda.
- Ini sesuai dengan versi terbaru protokol LDAP: LDAP Versi 3 (LDAPv3).
- OpenLDAP adalah sumber terbuka dan ditulis dalam C, sehingga dapat dikompilasi untuk berjalan di hampir semua platform yang dimiliki situs Anda: Linux, Solaris, Tru64, VMS, Windows, MacOS, OpenBSD, HP-UX, dll.
Persyaratan System
Seperti kebanyakan paket perangkat lunak sumber terbuka yang besar, OpenLDAP bergantung pada beberapa paket sumber terbuka lainnya agar dapat berjalan. Diperlukan basis data untuk menyimpan data direktori, dan sebagian besar situs akan menginginkan server LDAP mereka mendukung Transport Layer Security (TLS). TLS menyediakan enkripsi menyeluruh untuk data yang dikirim ke dan dari server LDAP. Karena data tersebut mungkin berisi kata sandi pengguna, enkripsi mungkin diperlukan.a. Database
OpenLDAP menyimpan data direktori dalam berkas terindeks yang mengikuti format DBM. Penggunaan berkas terindeks mempercepat pencarian data, yang merupakan hal yang paling banyak dilakukan oleh sebagian besar server LDAP. Perangkat lunak manajemen basis data yang paling umum yang mendukung DBM adalah Berkeley DB, yang tersedia dari SleepyCat Software.
Anda harus menggunakan versi Berkeley DB terbaru yang tersedia. Saat white paper ini ditulis, versi terbarunya adalah 4.3.28.
Untuk menginstal Berkeley DB, lakukan langkah-langkah berikut:
- Unduh versi Berkeley DB terkini ke direktori kerja Anda pada sistem tempat Anda ingin menginstal OpenLDAP. URL unduhannya adalah sleepycat.
- Buka kompresi dan arsipkan paket distribusi
$ gzip -d db-4.3.28.NC.tar.gz
$ tar xfv db-4.3.28.NC.tar
db-4.3.28.NC
[...]
db-4.3.28.NC/docs/utility/index.html
db-4.3.28.NC/docs/index.html
$
- Ubah direktori Anda saat ini ke direktori db-x.x.xx.NC/build_unix, dan jalankan skrip konfigurasi yang terletak di subdirektori dist. Secara default, Berkeley DB dikonfigurasi untuk menginstal dirinya sendiri ke direktori instalasi non-standar. Kami akan memberi tahu skrip konfigurasi untuk menginstal Berkeley DB ke direktori /usr/local/.
$ cd db-4.3.28.NC/build_unix
$ ../dist/configure --prefix=/usr/local/
checking build system type... sparc-sun-solaris2.9
checking host system type... sparc-sun-solaris2.9
checking if building in the top-level or dist directories... no
checking if --disable-cryptography option specified... no
checking if --disable-hash option specified... no
[...]
config.status: creating include.tcl
config.status: creating db.h
config.status: creating db_config.h
$
- Kompilasi paket Berkeley DB dengan menjalankan make.
$ make
/bin/sh ./libtool --mode=compile cc -c -I. -I../dist/.. -D_REENTRANT -O2
../dist/../mutex/mut_pthread.c
mkdir .libs
cc -c -I. -I../dist/.. -D_REENTRANT -O2 ../dist/../mutex/mut_pthread.c -
fPIC -DPIC -o .libs/mut_pthread.o
[...]
cc -O2 -o .libs/db_verify .libs/db_verify.o .libs/util_cache.o
.libs/util_sig.o ./.libs/libdb-4.3.so -lrt -R/usr/local/lib
creating db_verify
/bin/sh ./libtool --mode=execute true db_verify
$
- Instal paket Berkeley DB dengan menjalankan make install sebagai pengguna root.
$ sudo1
make install
Installing DB include files: /usr/local/include ...
Installing DB library: /usr/local/lib ...
[...]
cp -p .libs/db_verify /usr/local/bin/db_verify
Installing documentation: /usr/local/docs ...
$
b. TLS
Meskipun TLS tidak diwajibkan untuk menjalankan OpenLDAP, kemampuan enkripsi yang disediakannya merupakan sesuatu yang diinginkan oleh sebagian besar situs. Paket OpenSSL yang tersedia secara gratis menyediakan pustaka TLS yang sesuai untuk digunakan dengan OpenLDAP. Seperti yang Anda duga, Anda harus menggunakan versi OpenSSL terkini yang tersedia. Saat makalah ini ditulis, versi terkini adalah 0.9.8.
Untuk menginstal OpenSSL, lakukan tugas berikut:
- Unduh versi OpenSSL terkini ke direktori kerja Anda di sistem tempat Anda ingin menginstal OpenLDAP. URL unduhannya adalah http://www.openssl.org/source/.
- Buka kompresi dan arsipkan paket distribusi:
$ gzip -d openssl-0.9.8.tar.gz
$ tar xfv openssl-0.9.8.tar
openssl-0.9.8/apps/
openssl-0.9.8/apps/app_rand.c
[...]
openssl-0.9.8/VMS/VMSify-conf.pl
$
- Ubah direktori Anda saat ini ke direktori openssl-0.x.x, dan jalankan skrip konfigurasi. Sama seperti yang kita lakukan dengan Berkeley DB, kita akan memberi tahu OpenSSL untuk menginstal dirinya sendiri di direktori /usr/local/. Kita juga akan memerintahkannya untuk membuat versi bersama dari pustakanya, yang akan dibutuhkan OpenLDAP.
$ cd openssl-0.9.8
$ ./config shared --openssldir=/usr/local
Operating system: sun4u-whatever-solaris2
Configuring for solaris-sparcv9-gcc
[...]
make[1]: Leaving directory `~/openssl-0.9.8/test'
Configured for solaris-sparcv9-gcc.
$
- Kompilasi paket OpenSSL dengan menjalankan make.
$ make
making all in crypto...
( echo "#ifndef MK1MF_BUILD"; \
[...]
make[1]: Nothing to be done for `all'.
make[1]: Leaving directory `~/openssl-0.9.8/tools'
$
- Instal paket OpenSSL dengan menjalankan make install sebagai pengguna root.
$ sudo make install
making all in crypto...
make[1]: Entering directory `~/openssl-0.9.8/crypto'
[...]
cp openssl.pc /usr/local/lib/pkgconfig
chmod 644 /usr/local/lib/pkgconfig/openssl.pc
$
Downloading and Installing OpenLDAP
Setelah Berkeley DB dan OpenSSL terinstal, saatnya mengunduh dan menginstal paket OpenLDAP. Seperti biasa, Anda harus menggunakan rilis stabil terbaru dari perangkat lunak tersebut. Saat makalah ini ditulis, 2.2.26 adalah versi stabil terbaru OpenLDAP.
Untuk menginstal OpenLDAP, ikuti langkah-langkah berikut:
- Unduh versi OpenLDAP terkini ke direktori kerja Anda. URL unduhannya adalah http://www.openldap.org/software/download/
- Buka kompresi dan arsipkan paket distribusi.
$ gzip -d openldap-2.2.26.tgz
$ tar xfv openldap-2.2.26.tar
openldap-2.2.26/
openldap-2.2.26/doc/
[...]
openldap-2.2.26/tests/scripts/test020-proxycache
openldap-2.2.26/tests/scripts/test021-certificate
$
- Ubah direktori Anda saat ini ke direktori openldap-2.x.x, dan jalankan skrip konfigurasi.
$ cd openldap-2.2.26
$ ./configure
Configuring OpenLDAP 2.2.26-Release ...
checking host system type... sparc-sun-solaris2.9
[...]
creating include/ldap_features.h
creating include/lber_types.h
$
Secara default, beberapa versi UNIX dan Linux tidak mencari file yang dapat dibagikan di direktori /usr/local/. Itu menjadi masalah saat menginstal OpenLDAP, karena bergantung pada Berkeley DB dan file yang dapat dibagikan OpenSSL yang kita instal di /usr/local/. Di Linux, tambahkan /usr/local/lib/ ke file /etc/ld.so.conf, lalu jalankan perintah ldconfig -v. Di versi UNIX lainnya, tetapkan variabel lingkungan LD_LIBRARY_PATH ke /usr/local/lib/.
- Bangun beberapa program yang bergantung pada proses pembangunan OpenLDAP dengan menjalankan make depend.
$ make depend
Making depend in ~/openldap-2.2.26
Entering subdirectory include
[...]
make[1]: Leaving directory `~/openldap-2.2.26/doc'
$
- Bangun OpenLDAP dengan menjalankan make.
$ make
Making all in ~/openldap-2.2.26
Entering subdirectory include
[...]
make[1]: Leaving directory `~/openldap-2.2.26/doc'
$
- Jalankan rangkaian pengujian OpenLDAP untuk memastikan paket telah dibangun dengan benar.
$ make test
Initiating LDAP tests for BDB...
Running ./scripts/all...
[...]
>>>>> ./scripts/test021-certificate completed OK.
>>>>> waiting 10 seconds for things to exit
$
- Jalankan make install sebagai root untuk menginstal OpenLDAP pada sistem Anda.
$ sudo make install
Making all in ~/openldap-2.2.26
Entering subdirectory include
[...]
make[1]: Leaving directory `~/openldap-2.2.26/doc'
$
Konfigurasi OpenLDAP
OpenLDAP dikontrol terutama oleh pengaturan dalam berkas slapd.conf. (Berkas yang dapat dieksekusi yang menangani
permintaan LDAP yang masuk diberi nama slapd - mungkin kependekan dari "Standalone Lightweight Access Protocol Daemon".) Secara default, slapd.conf terletak di direktori /usr/local/etc/openldap/. slapd.conf berisi daftar variabel konfigurasi dan nilainya, dipisahkan oleh spasi. Baris kosong diabaikan, begitu pula baris yang dimulai dengan tanda pagar (#).
Berikut ini adalah contoh berkas slapd.conf yang telah dibagi menjadi beberapa bagian logis. Berikut ini adalah penjelasan singkat tentang variabel konfigurasi dan kemungkinan nilainya. Untuk informasi terperinci tentang setiap variabel konfigurasi yang didukung oleh OpenLDAP, lihat Panduan Administrator OpenLDAP di situs web OpenLDAP.
# /usr/local/etc/openldap/slapd.conf
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
Skema menggambarkan satu atau beberapa objek yang dapat berada dalam direktori LDAP. File core.schema dan cosine.schema menyertakan deskripsi untuk objek tingkat sangat rendah2 yang dibutuhkan untuk direktori LDAP sederhana. File inetorgperson.schema menggambarkan objek inetOrgPerson3 yang digunakan oleh sebagian besar perangkat lunak terintegrasi LDAP.
loglevel 264
pidfile /usr/local/var/run/slapd.pid
argsfile /usr/local/var/run/slapd.args
Variabel konfigurasi loglevel mengontrol jumlah pencatatan yang dilakukan OpenLDAP. Jenis pencatatan yang mungkin adalah:
loglevel adalah bit mask integer, yang berarti Anda tinggal menambahkan nilai level untuk setiap jenis pencatatan yang Anda inginkan. Misalnya, loglevel dalam contoh file slapd.conf kami ditetapkan ke 264. Nilai 264 berarti bahwa statistik operasional dan pencatatan manajemen koneksi diaktifkan (256 + 8 = 264).
Menetapkan loglevel ke nilai -1 akan mengaktifkan semua pencatatan. Anda hanya boleh melakukan ini jika Anda mencoba men-debug suatu
masalah. Jika tidak, OpenLDAP akan menghasilkan begitu banyak data log sehingga akan membanjiri sistem.
OpenLDAP menyimpan ID prosesnya (PID) dalam file yang diberi nama oleh variabel konfigurasi pidfile. Skrip yang memulai dan menghentikan server OpenLDAP menggunakan konten file ini. Variabel argsfile menentukan file yang berisi argumen baris perintah OpenLDAP. Server OpenLDAP akan secara otomatis menggunakan argumen ini setiap kali dimulai, yang dapat menghemat banyak pengetikan jika Anda ingin menentukan banyak argumen baris perintah.
# TLS options
TLSCipherSuite HIGH:MEDIUM
TLSCertificateFile /usr/local/etc/openldap/slapd-cert.pem
TLSCertificateKeyFile /usr/local/etc/openldap/slapd-key.pem
Variabel konfigurasi ini mengontrol pengaturan enkripsi TLS, jika Anda membuat OpenLDAP dengan dukungan TLS. TLSCipherSuite menentukan metode enkripsi mana yang akan diterima server, serta urutan yang disukai untuk menerimanya. Anda dapat menentukan grup cipher (grup HIGH dan MEDIUM digunakan dalam contoh ini), atau metode cipher individual (seperti AES:3DES:SHA1:RC4). Pisahkan setiap metode cipher dengan titik dua.
Variabel konfigurasi TLSCertificateFile dan TLSCertificateKeyFile menentukan file yang
masing-masing berisi sertifikat publik dan kunci privat server. Jika Anda sudah memiliki sertifikat TLS4 untuk sistem tempat Anda menjalankan OpenLDAP, Anda dapat mengatur variabel ini untuk menunjuknya. Jika Anda tidak memiliki sertifikat TLS, lihat Lampiran A - Membuat Sertifikat TLS di akhir makalah ini untuk petunjuk langkah demi langkah tentang cara membuatnya.
#######################################################################
# BDB database definitions
#######################################################################
database bdb
Variabel database menentukan database backend yang digunakan oleh OpenLDAP untuk menyimpan data. Modul bdb digunakan untuk mendukung Berkeley DB, yang merupakan hal yang kami buat untuk mendukung OpenLDAP.
suffix "dc=apes.process,dc=com"
Variabel konfigurasi sufiks menentukan nama entri dasar dalam direktori. Semua entri lain dalam direktori akan menjadi turunan dari objek ini. Kecuali jika Anda mencoba melakukan sesuatu yang tidak biasa, entri dasar harus didasarkan pada nama domain lokal. Dalam contoh di atas, direktori LDAP akan menampung entri untuk domain apes.process.com.
rootdn "cn=Directory Manager,dc=apes.process,dc=com"
rootpw secret
Setiap direktori LDAP memiliki nama khusus (DN) root, yang secara garis besar mirip dengan pengguna root pada sistem UNIX. Pengguna yang ditentukan oleh variabel rootdn dapat membaca, menulis, dan mencari bagian mana pun dari direktori tersebut. Anda dapat memberi nama DN root apa pun yang Anda inginkan, tetapi cn=Manager atau cn=Directory Manager umumnya digunakan. Perhatikan bahwa nilai variabel sufiks ditambahkan di akhir nama DN root. Variabel konfigurasi rootpw menentukan kata sandi untuk akun DN root.
directory /usr/local/var/openldap-data
Variabel direktori menentukan lokasi pada sistem berkas tempat berkas basis data aktual yang berisi data direktori disimpan. Pastikan direktori ini ada, dan hanya dapat diakses oleh pengguna yang menjalankan OpenLDAP (menjalankan perintah chmod 700 /usr/local/var/openldap-data akan menetapkan izin yang benar).
# Indices to maintain
index objectClass eq
Variabel index menentukan atribut objek yang harus dipertahankan indeksnya oleh OpenLDAP. Sebuah index dapat mengurangi waktu yang dibutuhkan untuk menemukan sebuah objek berdasarkan atribut tertentu. Pengaturan index default akan membuat index untuk atribut objectClass, yang seharusnya cukup untuk semua situs kecuali yang paling banyak dimuat. Penyetelan index OpenLDAP berada di luar cakupan white paper ini, tetapi seharusnya tidak ada alasan untuk melakukannya di sebagian besar situs.
Berkas konfigurasi slapd.conf lengkap terlihat seperti ini:
# /usr/local/etc/openldap/slapd.conf
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
loglevel 264
pidfile /usr/local/var/run/slapd.pid
argsfile /usr/local/var/run/slapd.args
# TLS options
TLSCipherSuite HIGH:MEDIUM
TLSCertificateFile /usr/local/etc/openldap/slapd-cert.pem
TLSCertificateKeyFile /usr/local/etc/openldap/slapd-key.pem
#######################################################################
# BDB database definitions
#######################################################################
database bdb
suffix "dc=my-domain,dc=com"
rootdn "cn=Manager,dc=my-domain,dc=com"
rootpw secret
directory /usr/local/var/openldap-data
# Indices to maintain
index objectClass eq
Menjalankan OpenLDAP
Sekarang OpenLDAP telah dikonfigurasi untuk situs Anda, saatnya untuk memulainya. Memulai OpenLDAP mudah - jalankan slapd sebagai root.
$ sudo /usr/local/libexec/slapd
Anda dapat memverifikasi bahwa OpenLDAP dimulai dengan memeriksa daftar proses sistem untuk proses slapd:
$ ps -ef | grep slapd
root 23932 1 0 09:52:03 ? 0:00 /usr/local/libexec/slapd
Cara yang disarankan untuk mematikan OpenLDAP adalah dengan mengirimkan sinyal interupsi (SIGINT) ke proses slapd. Ini memungkinkan slapd menulis semua data yang di-cache dan keluar dengan lancar. Anda bisa mendapatkan ID proses slapd dengan menjalankan ps (seperti pada contoh di atas) atau dengan melihat isi file /usr/local/var/run/slapd.pid.
$ sudo kill -INT `cat /usr/local/var/run/slapd.pid`
Anda harus menghindari penggunaan kill -9 untuk menghentikan slapd dengan cara apa pun. Menggunakan cara yang drastis untuk mematikan OpenLDAP akan merusak data direktori.
Jika Anda ingin OpenLDAP secara otomatis dimulai saat sistem di-boot dan secara otomatis berhenti saat sistem berhenti, Anda dapat membuat skrip inisialisasi sederhana di direktori /etc/init.d. Skrip Anda akan terlihat seperti ini:
#!/sbin/sh
# NAME: /etc/init.d/openldap
case “$1” in
’start’)
[ -f /usr/local/libexec/slapd ] && /usr/local/libexec/slapd
;;
’stop’)
kill -INT `cat /usr/local/var/run/slapd.pid`
;;
*)
echo “Usage: $0 { start | stop }”
exit 1
esac
exit 0
Mengisi Direktori OpenLDAP
Direktori LDAP yang tidak berisi data apa pun tidaklah terlalu berguna. Alat ldapmodify digunakan untuk menambahkan entri baru ke direktori atau mengubah entri yang sudah ada. Rincian entri baru ditentukan dalam jenis berkas teks khusus yang disebut berkas LDIF. Rincian lengkap LDIF berada di luar cakupan white paper ini, tetapi sebagian besar buku referensi LDAP berisi deskripsi lengkap.
Kita akan membuat berkas LDIF yang berisi entri untuk simpul akar, entri untuk unit organisasi bernama "people", dan dua objek inetOrgPerson. Anda perlu mengubah atribut dn agar sesuai dengan sufiks yang Anda tentukan dalam berkas slapd.conf.
#NAME: users.ldif
#root node
dn: dc=apes.process,dc=com
dc: apes.process
objectClass: dcObject
objectClass: organizationalUnit
ou: Apes Incorporated
#people organizational unit
dn: ou=people,dc=apes.process,dc=com
ou: people
objectClass: organizationalUnit
#entry for "Charlton Heston"
dn: cn=Charlton Heston,ou=people,dc=apes.process,dc=com
cn: Charlton Heston
sn: Heston
mail: heston@apes.process.com
telephoneNumber: 508-555-1212
objectclass: inetOrgPerson
#entry for "Roddy McDowall"
dn: cn=Roddy McDowall,ou=people,dc=apes.process,dc=com
cn: Roddy McDowall
sn: McDowall
mail: mcdowall@apes.process.com
telephoneNumber: 508-555-1234
objectclass: inetOrgPerson
Sangat penting bahwa ada tepat satu baris kosong di antara setiap objek dalam berkas LDIF. Baris tersebut harus benar-benar kosong - tidak ada karakter spasi seperti tab atau spasi yang diizinkan. Jika Anda mendapatkan pesan kesalahan yang mengikuti bentuk "info tambahan: objectClass: nilai #1 diberikan lebih dari sekali", maka Anda memiliki baris yang tidak kosong di antara objek di suatu tempat dalam berkas.
Sekarang, gunakan ldapmodify untuk menambahkan entri ke direktori. Pastikan OpenLDAP berjalan sebelum Anda menjalankan ldapmodify. Perhatikan bahwa Anda perlu menyediakan ldapmodify dengan DN root dan kata sandi yang Anda tentukan di slapd.conf, karena ia memerlukan akses tulis ke direktori untuk menambahkan entri.
$ ldapmodify -D "cn=Directory Manager,dc=apes.process,dc=com” -w secret \
-x -a -f users.ldif
adding new entry "dc=apes.process,dc=com"
adding new entry "ou=people,dc=apes.process,dc=com"
adding new entry "cn=Charlton Heston,ou=people,dc=apes.process,dc=com"
adding new entry "cn=Roddy McDowall,ou=people,dc=apes.process,dc=com"
$
Jika Anda mau, Anda dapat menggunakan alat baris perintah ldapsearch untuk memverifikasi bahwa entri telah ditambahkan ke direktori.
$ ldapsearch -x -b "dc=apes.process,dc=com"
# extended LDIF
#
# LDAPv3
# base <dc=apes.process,dc=com> with scope sub
# filter: (objectclass=*)
# requesting: ALL
#
# apes.process.com
dn: dc=apes.process,dc=com
dc: apes.process
objectClass: dcObject
objectClass: organizationalUnit
ou: Apes Incorporated
[...]
# search result
search: 2
result: 0 Success
# numResponses: 5
# numEntries: 4
$
Silahkan Berkomentar, Kakak...! Bunda...!
Posting Komentar