Saatnya merakit lab menjadi kerajaan Kerberos yang hidup. Episode ini memandu instalasi MIT Kerberos KDC, konfigurasi realm di krb5.conf dan kdc.conf, pembuatan database dengan kdb5_util, pembuatan principal pertama lewat kadmin.local, sampai verifikasi kinit dan klist.

Di episode 4 kalian sudah menyiapkan dua prasyarat infrastruktur Kerberos: waktu yang sinkron lewat chrony dan DNS yang siap menemukan KDC. Sekarang semua fondasi itu akan diuji di dunia nyata. Episode ini adalah momen paling memuaskan dalam lab ini: menginstall MIT Kerberos KDC dan melihat realm EXAMPLE.COM benar-benar hidup.
Kita akan memasang paket Kerberos, menyusun konfigurasi realm di dua file penting (/etc/krb5.conf dan /etc/krb5kdc/kdc.conf), membuat database KDC dengan kdb5_util, menyalakan layanan krb5-kdc dan krb5-admin-server, membuat principal pertama lewat kadmin.local, lalu membuktikan semuanya bekerja dengan kinit dan klist. Setelah episode ini, kalian memiliki kerajaan autentikasi sendiri.
Sebelum menginstall, pilih implementasinya. Ada dua implementasi Kerberos utama di dunia open source:
| Implementasi | Catatan |
|---|---|
| MIT Kerberos | Implementasi referensi, paling banyak dipakai dan didokumentasikan |
| Heimdal | Implementasi alternatif yang valid, beberapa perbedaan di tools dan path |
Untuk series ini kita konsisten memakai MIT Kerberos karena mendominasi dokumentasi, ekosistem, dan path konfigurasi yang akan kalian temui di dunia kerja. Pilihan ini juga sudah kita tetapkan di episode 0.
Di server KDC (kdc.example.com), install dua paket inti: krb5-kdc dan krb5-admin-server. Pada klien, cukup krb5-user yang berisi tools kinit, klist, dan kdestroy.
sudo apt update
sudo apt install krb5-kdc krb5-admin-server -yNote
Saat instalasi di Debian/Ubuntu, kalian akan ditanya nama realm dan server KDC. Jika sudah dijawab benar (realm EXAMPLE.COM, server kdc.example.com), bagian itu otomatis terisi ke /etc/krb5.conf. Jika ragu, biarkan default lalu perbaiki di file konfigurasi — kita akan menulisnya secara eksplisit sebentar lagi.
Ada dua cara membuat realm: memakai skrip krb5_newrealm yang interaktif, atau menulis konfigurasi manual. Untuk memahami apa yang terjadi di balik layar, kita pilih manual.
File ini mengatur perilaku client Kerberos — semua host di realm membutuhkannya, termasuk klien. Isi minimalnya:
[libdefaults]
default_realm = EXAMPLE.COM
clockskew = 300
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
[realms]
EXAMPLE.COM = {
kdc = kdc.example.com
admin_server = kdc.example.com
}
[domain_realm]
.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM
[logging]
default = SYSLOG:INFO:LOCAL0[realms] memberi tahu client di mana KDC dan admin server berada; [domain_realm] memetakan domain ke realm. Jika DNS belum penuh, baris kdc di sini menjadi penentu penemuan KDC.
File ini mengatur perilaku server KDC — hanya ada di mesin KDC. Di Debian/Ubuntu lokasinya /etc/krb5kdc/kdc.conf; di RHEL family di /var/kerberos/krb5kdc/kdc.conf:
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
EXAMPLE.COM = {
database_name = /var/lib/krb5kdc/principal
admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
acl_file = /etc/krb5kdc/kadm5.acl
key_stash_file = /etc/krb5kdc/stash
max_life = 10h 0m 0s
max_renewable_life = 7d 0h 0m 0s
master_key_type = aes256-cts
supported_enctypes = aes256-cts:normal aes128-cts:normal
}Catatan penting: supported_enctypes di atas sengaja dibatasi hanya AES — DES dan 3DES sudah lama dianggap lemah dan tidak boleh dipakai. Ini praktik yang akan kita bahas lebih dalam di episode 11.
Database menyimpan semua principal dan kuncinya. Buat dengan kdb5_util:
sudo kdb5_util create -sPerintah ini akan meminta master password — kunci rahasia untuk melindungi seluruh database. Jangan lupakan password ini; kehilangannya berarti kehilangan akses ke seluruh realm. Opsi -s membuat stash file (/etc/krb5kdc/stash), yaitu salinan master key yang memungkinkan KDC membaca database secara otomatis saat boot, tanpa menunggu input manusia.
Loading random data
Initializing database '/var/lib/krb5kdc/principal' for realm 'EXAMPLE.COM',
master key name 'K/M@EXAMPLE.COM'
You will be prompted for the database Master Password.Warning
Stash file menyimpan master key dalam bentuk file — jika dicuri, seluruh realm bisa dipecahkan. Lindungi dengan permission yang ketat (sudo chmod 600 /etc/krb5kdc/stash) dan pahami bahwa keamanan KDC adalah keamanan realm, karena KDC adalah satu titik kepercayaan dari seluruh desain Kerberos.
Dua layanan harus berjalan: krb5-kdc (melayani port 88) dan krb5-admin-server (melayani port 749 untuk kadmin). Aktifkan dan mulai keduanya:
sudo systemctl enable --now krb5-kdc krb5-admin-serversystemctl status krb5-kdc krb5-admin-serverPastikan keduanya berstatus active (running). Jangan lupa firewall: izinkan port 88 (TCP dan UDP) untuk KDC dan 749 (TCP) untuk kadmin.
Principal pertama dibuat lewat kadmin.local — tools administrasi yang berjalan langsung di mesin KDC dan tidak memerlukan autentikasi jaringan (karena sudah berjalan sebagai root). Buat principal admin dan principal user:
sudo kadmin.local
kadmin.local: addprinc admin/admin
kadmin.local: addprinc arman
kadmin.local: listprincs
kadmin.local: quitaddprinc admin/admin membuat principal dengan hak administrasi penuh — kita perlu mengizinkannya lewat file ACL /etc/krb5kdc/kadm5.acl:
*/admin@EXAMPLE.COM *Baris ini memberi akses administratif penuh (tanda bintang) kepada semua principal dengan instance admin di realm EXAMPLE.COM. Dengan ACL ini, kadmin jarak jauh (bukan kadmin.local) bisa dipakai dari klien — topik yang akan kita bedah di episode 8.
Semua komponen sudah berdiri. Sekarang uji dari klien (client1.example.com) — inilah momen pembuktian:
kinit armanMasukkan password yang tadi dibuat untuk principal arman, lalu lihat tiket yang diperoleh:
klistTicket cache: FILE:/tmp/krb5cc_1000
Default principal: arman@EXAMPLE.COM
Valid starting Expires Service principal
08/03/2026 09:00:00 08/03/2026 19:00:00 krbtgt/EXAMPLE.COM@EXAMPLE.COMTiket dengan service principal krbtgt/EXAMPLE.COM@EXAMPLE.COM adalah TGT — bukti bahwa seluruh alur AS-REQ/AS-REP dari episode 3 bekerja, dari kinit sampai klist. Kalian sekarang resmi memiliki realm Kerberos yang hidup.
Tip
Setelah puas melihat tiket pertama, bersihkan tiket dengan kdestroy dan periksa lagi dengan klist. Kebiasaan kinit, klist, kdestroy yang berurutan ini adalah siklus hidup ticket yang akan kalian ulangi terus sepanjang karier mengelola Kerberos — pahami dan hafalkan ritmenya sejak sekarang.
| Langkah | Perintah / File |
|---|---|
| Install paket | krb5-kdc, krb5-admin-server, krb5-user |
| Konfigurasi client | /etc/krb5.conf |
| Konfigurasi server | /etc/krb5kdc/kdc.conf |
| Buat database | sudo kdb5_util create -s |
| Mulai layanan | systemctl enable --now krb5-kdc krb5-admin-server |
| Buat principal | sudo kadmin.local lalu addprinc |
| Izinkan admin | /etc/krb5kdc/kadm5.acl |
| Verifikasi | kinit arman, klist, kdestroy |
Episode ini mengubah lab kalian dari tiga VM menjadi sebuah realm Kerberos yang berfungsi. Kalian menginstall MIT Kerberos, menyusun /etc/krb5.conf dan /etc/krb5kdc/kdc.conf, membuat database dengan kdb5_util create -s (lengkap dengan stash file), menyalakan krb5-kdc dan krb5-admin-server, membuat principal pertama lewat kadmin.local, lalu membuktikan semuanya dengan kinit, klist, dan kdestroy.
Poin penting yang harus kalian bawa:
krb5-kdc + krb5-admin-server./etc/krb5.conf mengatur client, /etc/krb5kdc/kdc.conf mengatur server.kdb5_util create -s membuat database + stash; master password wajib disimpan.kadmin.local membuat principal tanpa autentikasi jaringan; ACL kadm5.acl mengatur hak admin.krbtgt/EXAMPLE.COM@EXAMPLE.COM di klist) adalah bukti nyata alur Kerberos bekerja.Di episode 6 selanjutnya kita akan mengkonfigurasi klien Kerberos secara penuh — mendalami setiap section /etc/krb5.conf, membuat principal user dengan password policies, dan membedah credential cache (FILE vs KEYRING) yang menentukan di mana dan bagaimana tiket kalian disimpan. Kerajaan kalian sudah berdiri; sekarang saatnya memperkuat istananya. Sampai jumpa!