Tag Archives

3 Articles
Perbaikan LDAP

Perbaikan LDAP

Menyalin Seluruh Entri LDAP

Ada kalanya perlu menyalin seluruh entri LDAP untuk keperluan pencadangan.

sudo slapcat -l bekap.ldif

Menyalin dapat dilakukan saat peladen LDAP (SLAPD) masih menyala.

Membetulkan LDAP yang Rusak Karena Basisdata

Biasanya LDAP itu rusak karena basisdata BerkeleyDB-nya mengalami kerusakan. Hal ini terjadi misalnya karena ada yang utak-atik, peladen yang mati langsung secara fisik, atau sebab-sebab lainnya.

Kali ini anggap saja kita termasuk orang yang bagus karena melakukan pencadangan terhadap seluruh entri LDAP.

  1. Matikan SLAPD
    sudo invoke-rc.d slapd stop
  2. Salin dahulu direktori basis data SLAPD. Direktori ini biasanya mengandung $LDAP_ROOT_DB/log sebagai log basisdata dan $LDAP_ROOT_DB/data yang berisi berkas-berkas basisdata BerkeleyDB milik LDAP.Hapus semua berkas kecuali $LDAP_ROOT_DB/data/DB_CONFIG
    sudo rm $LDAP_ROOT_DB/data/*.bdb
    sudo rm $LDAP_ROOT_DB/data/__db.00*
    sudo rm $LDAP_ROOT_DB/data/alock
    sudo rm $LDAP_ROOT_DB/logs/*
  3. Sekarang saatnya menyalin kembali berkas cadangan yang sudah dibuat sebelumnya. Jangan lupa, waktu yang diperlukan sangat lama, bahkan bisa sampai berjam-jam bila LDAP sudah memiliki banyak entri.
    sudo -u openldap slapadd -q -l bekap.ldif
  4. Setelah sekian lama dan selesai tak ada lagi kesalahan, segera nyalakan kembali SLAPD.
    sudo invoke-rc.d slapd start
  5. Selesai!

Mudah-mudahan sudah beres dan dapat berjalan lagi. Ingat, rajin-rajinlah membuat pencadangan.

Integrasi LDAP dengan PAM pada GNU/Linux BlankOn Suroboyo

Integrasi LDAP dengan PAM pada GNU/Linux BlankOn Suroboyo

ldap

Sangkalan: BlankOn Suroboyo saat penulisan masih dijahit sehingga tidak cocok untuk konsumsi rakyat jelata. Tulisan ini hanya untuk heker terutama admin universitas yang mengelola komputer Lab dan punya akses ke LDAP.

Saya senang karena sudah menonton Azrax dan sudah menang DoTA 2. Untuk merayakannya, saya ingin menyambungkan BlankOn Suroboyo Jahitan 1 (+pembaharuan) saya dengan LDAP universitas.

Langkah Sebelumnya

Pastikan pelayan LDAP telah menyala dan berfungsi. Untuk menjaga keamanan, sebaiknya LDAP disambungkan dengan koneksi TLS (port 636) bukan yang biasa (port 389). Untuk terhubung, ada dua cara, yakni menggunakan STunnel ke port 636 dan mengarahkan ke localhost:389, atau langsung terhubung ke pelayan LDAP.

Cara STunnel dilakukan karena biasanya GNUTLS (pustaka enkripsi selain OpenSSL) bermasalah dengan sertifikat yang-ditandatangani-sendiri (self-signed). Tapi, saya menghindari cara tersebut karena kurang jantan. Saya mau menyusahkan diri untuk bisa menemukan jalan keluarnya.

Langkah 1: Pasang Paket Autentikasi LDAP

Pasang langsung:

$ sudo apt-get install libpam-ldapd

Selesai.

Kok, gampang? Mana NSS dan bla… bla… bla…?

Iya, soalnya libpam-ldapd adalah paket yang terbaru menggantikan libpam-ldap.

Langkah 2: Ubah Konfigurasi

Ada beberapa konfigurasi yang harus diubah.

Langkah 2a: Konfigurasi NSLCD

Layanan libpam-ldapd yang baru menggunakan layanan nslcd sebagai pelayan autentikasi LDAP. Untuk itu, ubah konfigurasinya:

$ sudo $EDITOR /etc/nslcd

Yang pertama, ubah URL berikut:

uri ldap://127.0.0.1/

menjadi IP pelayan LDAP Anda.

Yang kedua, Ubah DN dasar pada baris berikut:

base dc=example,dc=com

menjadi DN dasar LDAP Anda.

Jika Anda menggunakan skema LDAPS (seperti yang saya sebutkan sebelumnya) dan pelayan server Anda menggunakan sertifikat sendiri, maka harus diubah agar NSLCD tidak meminta sertifikat yang valid. Pastikan baris berikut diaktifkan:

tls_reqcert never

Selesai.

Langkah 2b: Mengubah  nsswitch.conf

Mengubah layanan yang terdaftar di NSS agar menggunakan LDAP:

$  sudo vi /etc/nsswitch.conf

Ubah layanan passwd, group, dan shadow menjadi:

passwd: files ldap
group: files ldap
shadow: files ldap

Awalnya menggunakan compat, tapi lebih baik menggunakan files baru ldap menurut dokumentasi libpam-ldapd. Omong-omong, setiap baris itu artinya layanan passwd misalnya akan memeriksa ke berkas (/etc/passwd) terlebih dahulu sebelum ke LDAP. Anda bisa buat sebaliknya kalau mau.

Langkah 2c: Tambahkan Baris Sesi

Tambahkan satu baris untuk membuat direktori rumah bila belum ada.

$ echo "session     required      pam_mkhomedir.so skel=/etc/skel umask=0022" | sudo tee -a  /etc/pam.d/common-session

Baris ini akan menyebabkan pengguna yang login bila direktori rumahnya belum ada akan dibuat otomatis.

Langkah 3: Uji Coba

Anda tentunya tidak akan nekat langsung menjalankan LDAP, ‘kan?

Matikan layanan NSCD dan NSLCD:

$ sudo /etc/init.d/nscd stop
$ sudo /etc/init.d/nslcd stop

Lalu jalankan manual NSLCD dengan mengaktifkan debugging:

$ sudo nslcd -d

Lalu, pindah ke terminal lain untuk mencoba login sebagai pengguna LDAP.

Kalau misalnya berhasil dan tidak ada masalah, berhentikan NSLCD dan nyalakan kembali kedua layanan tersebut.

$ sudo /etc/init.d/nslcd start
$ sudo /etc/init.d/nscd start

Selesai.

Langkah 4: Ubah Penyambut LightDM

BlankOn menggunakan tematik Manokwari. Sangat indah memang, namun sayangnya tidak bisa digunakan untuk LDAP.

Hal ini karena pengguna LDAP belum ada di sistem saat ia pertama kali masuk. Padahal, penyambut BlankOn hanya menampilkan ikon pengguna yang sudah ada. Untuk itu, dengan sangat terpaksa penyambut diubah menjadi penyambut baku dari Debian.

$ sudo apt-get install lightdm-gtk-greeter

Lalu, ubah berkas berikut:

$ sudo $EDITOR /etc/lightdm/lightdm.conf

Ubah baris berikut:

greeter-session=lightdm-webkit-greeter

menjadi:

greeter-session=lightdm-gtk-greeter

Tinggal mengulang LightDM.

Langkah 5: Jalankan Sistem dengan LDAP

Lebih baik jalankan ulang mesin Anda untuk mencoba sebenarnya dan lihat hasilnya.

Tulisan ini akan diperbaharui dari waktu ke waktu bila memungkinkan.

Daftar Pustaka

Arthur de Jong ([NO YEAR], [NO MONTH] [NO DAY]). LDAP authentication with nss-pam-ldapd Retrieved Sept. 25, 2013 from Arthur de Jong: http://arthurdejong.org/nss-pam-ldapd/setup.
Debian WIKI Team (2012, Oct. 16). Configuring LDAP Authentication Retrieved Sept. 25, 2013 from Debian WIKI Team: https://wiki.debian.org/LDAP/PAM.
Zoke (2011, Nov. 5). How to change the LightDM theme/greeter?. Ask Ubuntu. Retrieved Sept. 25, 2013 from Ask Ubuntu: http://askubuntu.com/questions/75755/how-to-change-the-lightdm-theme-greeter.
Dumping MD5 Password From MySQL to LDAP

Dumping MD5 Password From MySQL to LDAP

I got this knowledge from Koben. Credit goes to him.

Someone migrating from MySQL to LDAP as their profile backend. The problem is both of them using different conversion. MySQL using hexdump of the actual MD5sum while LDAP using BASE64 to store actual MD5sum.

Fortunately, GNU/Linux have this utility:

xxd

, a tool that convert hexdump to hex and vice versa. With MySQL, you would get this:

{md5}5fb1a056793ca0e9acd77cad95420afe==

Cut the “{md5}” prefix and the “==” suffix. And you get “5fb1a056793ca0e9acd77cad95420afe”. Then, using

xxd

, convert the hexdump into binary. Let’s assume the value “5fb…afe” was stored in

$REAL_VALUE

.

$ echo $REAL_VALUE | xxd -r -p

It would produce non-printable characters. That’s the real hex value. Convert it into BASE64:

$ echo $REAL_VALUE | xxd -r -p | base64

There, you would have:

X7GgVnk8oOms13ytlUIK/g==

Add “{MD5}” prefix so it would be:

{MD5}X7GgVnk8oOms13ytlUIK/g==

Now, that’s what you would like to have in the LDAP. But, if you want to put it in an LDIFF file, it has to be rebase with BASE64. So, the value that in the LDIFF file is:

$ echo "{MD5}X7GgVnk8oOms13ytlUIK/g==" | base64
e01ENX1YN0dnVm5rOG9PbXMxM3l0bFVJSy9nPT0K

So, the value in LDIFF is “

e01ENX1YN0dnVm5rOG9PbXMxM3l0bFVJSy9nPT0K

“.

To sum all, the steps to convert MySQL to LDAP MD5 hash are:

  1. Remove “{md5}” prefix and “==” suffix.
  2. Convert hexdump to hex with “xxd -r -p”.
  3. Convert hex to BASE64 with “base64”.
  4. Append “{MD5}” at the beginning.
  5. Do BASE64 again if you are trying to insert it via LDIFF file.
  6. DONE.

Don’t forget, sed awk or ViM is your friend.