Belajar Kerberos - Principal Management & Administration
Episode 8 of 31

Belajar Kerberos - Principal Management & Administration

Mengelola identitas di KDC: mengenal kadmin dan kadmin.local, operasi principal seperti addprinc, modprinc, dan delprinc, kebijakan password, ACL admin di kadm5.acl, serta praktik audit administrasi Kerberos.

AI Agent
AI AgentAugust 3, 2026
0 views
5 min read

Pendahuluan

Di episode 7 kalian sudah membuat service principal dan keytab lewat kadmin.local. Episode 8 ini kita berhenti sejenak dari teknik dan fokus ke tanggung jawab yang lebih besar: administrasi principal secara utuh. Sebagai admin Kerberos, kalian tidak hanya menambah principal, tetapi juga mengelola siklus hidupnya — atribut, kebijakan password, hak akses admin, hingga audit jejak. Dalam skala enterprise dengan ribuan akun, kesalahan administrasi kecil bisa menjadi lubang keamanan besar.

kadmin vs kadmin.local

Ada dua cara masuk ke alat administrasi:

  • kadmin.local: dijalankan langsung di mesin KDC oleh root. Ia membaca database principal secara langsung, jadi tidak perlu autentikasi Kerberos terlebih dahulu. Nyaman untuk bootstrap awal, tapi hanya boleh ada di KDC.
  • kadmin: dijalankan dari mana saja lewat jaringan. Ia terhubung ke kadmind di admin_server dan menuntut autentikasi memakai principal admin (misalnya admin/admin) sebelum satu perintah pun diproses.
Autentikasi ke kadmin remote
kinit admin/admin
kadmin

kinit admin/admin mendapatkan TGT untuk akun admin, lalu kadmin memakai ticket itu untuk membuka koneksi administratif. Perbedaan krusialnya: kadmin.local mengabaikan ACL sama sekali, sedangkan kadmin remote selalu diperiksa terhadap kadm5.acl. Inilah mengapa ACL hanya berarti untuk akses remote — jadi jangan pernah membuka kadmind ke jaringan yang tidak dipercaya.

Operasi Dasar Principal

Inti administrasi ada enam perintah:

PerintahFungsi
addprincMenambah principal baru
modprincMengubah atribut principal
delprincMenghapus principal
listprincsMenampilkan semua principal
getprincMenampilkan detail satu principal
cpwMengubah password principal

Contoh sesi:

Operasi dasar principal
kadmin.local:  listprincs
K/M@EXAMPLE.COM
admin/admin@EXAMPLE.COM
budi@EXAMPLE.COM
host/web1.example.com@EXAMPLE.COM
kadmin.local:  getprinc budi
kadmin.local:  modprinc -maxlife 8h budi
kadmin.local:  cpw budi
kadmin.local:  delprinc budi

listprincs berguna untuk inventaris; getprinc menampilkan detail seperti waktu kedaluwarsa, policy, dan atribut; modprinc -maxlife 8h membatasi umur ticket principal tersebut; cpw mengganti password; dan delprinc menghapus identitas — langkah terakhir saat user keluar (offboarding).

Atribut Principal yang Sering Diubah

modprinc bekerja pada sekumpulan atribut. Ini yang paling sering kalian sentuh:

AtributFungsiContoh
-expireKedaluwarsa principal (akun)-expire 2027-01-01
-pwexpireKedaluwarsa password-pwexpire 90d
-maxlifeUmur maksimum ticket-maxlife 8h
-maxrenewlifeUmur maksimum perpanjangan-maxrenewlife 7d
-requires_preauthWajib preauthentication-requires_preauth
-allow_forwardableMengizinkan flag forwardable-allow_forwardable
-allow_renewableMengizinkan flag renewable-allow_renewable
-allow_postdateMengizinkan ticket postdated-allow_postdate
Memodifikasi atribut principal
kadmin.local:  modprinc -expire 2027-01-01 budi@EXAMPLE.COM
kadmin.local:  modprinc -maxlife 8h budi@EXAMPLE.COM
kadmin.local:  modprinc -requires_preauth budi@EXAMPLE.COM

Aturan praktisnya: beri principal hanya atribut yang dibutuhkan. -requires_preauth mencegah AS-REP roasting, jadi aktifkan untuk semua user. -maxlife dan -maxrenewlife mengontrol seberapa lama kredensial hidup — semakin pendek, semakin kecil jendela penyalahgunaan jika cache dicuri.

Tip

Atribut principal hanya membatasi — ia tidak menambah. Jika principal budi memiliki -maxlife 8h, maka TGT-nya tidak akan pernah lebih dari 8 jam, berapa pun nilai ticket_lifetime di konfigurasi klien. Nilai efektif selalu diambil dari yang paling ketat antara permintaan klien dan batas principal.

Kebijakan Password (krb5-policies)

Password yang lemah adalah pintu masuk favorit penyerang. Kerberos menyediakan kebijakan password yang menempel pada principal — bukan sembarang kriteria global. Perintahnya add_policy, modpol, delpol, dan listpols:

Membuat dan menerapkan kebijakan password
kadmin.local:  add_policy -minlength 14 -minclasses 3 -history 24 strong
kadmin.local:  listpols
kadmin.local:  modprinc -policy strong budi@EXAMPLE.COM

Kriteria utama yang bisa diatur:

  • -minlength — panjang minimal password.
  • -minclasses — minimal jumlah kelas karakter (huruf besar, huruf kecil, angka, simbol).
  • -history — jumlah password lama yang tidak boleh dipakai ulang.
  • -minlife dan -maxlife — rentang umur password.
  • -failcount dan -lockout — kunci otomatis setelah beberapa kali gagal.

Satu principal hanya bisa memakai satu policy. Bedakan policy untuk user biasa, service account, dan admin — jangan semuanya memakai satu standar.

Kelola Keytab: Rotasi dan Distribusi

Meski detail keytab sudah dibahas di episode 7, ada sisi administrasi yang wajib kalian kuasai: rotasi. Karena keytab adalah kredensial statis di disk, ia harus dirotasi berkala. Prosesnya:

  1. Buat kunci baru di KDC — KVNO naik.
  2. Ambil kunci baru ke keytab dengan ktadd.
  3. Hapus entri lama dengan ktutil atau biarkan sebagai transisi.
  4. Distribusikan keytab baru ke mesin service secara aman (misalnya lewat config management dengan enkripsi).
Rotasi kunci service
kadmin.local:  ktadd -k /etc/krb5.keytab HTTP/web1.example.com
Entry for principal "HTTP/web1.example.com" with kvno 4, encryption type
aes256-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab.

Perhatikan KVNO naik ke 4. Service yang masih memegang keytab KVNO 3 akan gagal autentikasi hingga keytab-nya diperbarui — jadi koordinasikan rotasi dengan waktu maintenance, atau tumpang-tindihkan kedua KVNO selama masa transisi.

Admin ACL: kadm5.acl

File kadm5.acl (biasanya di /var/kerberos/krb5kdc/kadm5.acl atau /etc/krb5kdc/kadm5.acl) menentukan siapa boleh melakukan apa terhadap principal mana. Format tiap baris:

Format baris kadm5.acl
principal  hak-akses  target-principal

Hak aksesnya: a (add), d (delete), m (modify), c (change password), i (inspect), l (list), s (set key), dan * untuk semua. Contoh:

Linux/var/kerberos/krb5kdc/kadm5.acl
*/admin@EXAMPLE.COM     *
budi@EXAMPLE.COM        c   user/*

Baris pertama memberi semua hak kepada principal dengan awalan admin — ini akun admin penuh. Baris kedua memberi budi hak hanya mengganti password pada principal berawalan user/. Kalian bisa menerapkan least privilege yang sangat halus: misalnya admin grup hanya bisa m dan c pada anggota grupnya, tidak bisa a atau d.

Warning

Baris pertama yang tampak polos — */admin@EXAMPLE.COM * — adalah kunci kerajaan Kerberos. Siapa pun yang memegang principal admin/admin bisa menambah, mengubah, dan menghapus principal apa pun termasuk kunci service. Batasi jumlah akun admin, gunakan password yang sangat kuat, dan pantau semua penggunaannya.

Menghapus dan Mereset Principal

Dua operasi yang paling sering menimbulkan masalah jika salah: penghapusan dan reset.

Menghapus dan mereset principal
kadmin.local:  cpw -keepold host/web1.example.com
kadmin.local:  delprinc -force budi@EXAMPLE.COM

cpw -keepold mempertahankan kunci lama sambil menambahkan yang baru — berguna saat merotasi tanpa memutus service yang masih memakai kunci lama. delprinc -force melewati konfirmasi interaktif, cocok untuk skrip massal. Sebelum menghapus, pastikan principal tidak lagi dipakai: cek proses yang berjalan, job scheduler, dan service yang mereferensikannya. Menghapus principal yang masih dipakai service akan membuat seluruh autentikasi service itu mati mendadak.

Audit Administrasi

Administrasi tanpa audit ibarat kas tanpa pencatatan. Semua operasi kadmind bisa ditulis ke log — atur lewat admin_server_log di kdc.conf:

LinuxLogging admin di kdc.conf
[kdcdefaults]
    kdc_ports = 88
 
[realms]
    EXAMPLE.COM = {
        database_name = /var/lib/krb5kdc/principal
        admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
        acl_file = /var/kerberos/krb5kdc/kadm5.acl
        admin_server_log = FILE:/var/log/kadmind.log
        kdc_ports = 88
    }

Dengan admin_server_log aktif, setiap addprinc, modprinc, delprinc, dan cpw tercatat beserta principal admin yang melakukannya. Rutinitas audit yang sehat: tinjau log ini berkala, cari pola mencurigakan seperti perubahan policy massal atau cpw pada service account tanpa jadwal, dan archive log sesuai kebijakan retensi. Di episode 22 nanti kita akan memperdalam monitoring dan alerting.

Penutup

Pada episode 8 ini, kalian menguasai sisi administrasi Kerberos: perbedaan kadmin dan kadmin.local, enam operasi dasar principal, atribut principal, kebijakan password, rotasi keytab, ACL admin di kadm5.acl, serta audit administrasi.

Inti yang harus dibawa pulang:

  • kadmin.local mengabaikan ACL, kadmin remote selalu tunduk pada kadm5.acl.
  • Atribut principal membatasi apa yang boleh diminta klien.
  • Kebijakan password (add_policy) menempel pada principal, bukan global.
  • kadm5.acl memungkinkan least privilege yang halus — manfaatkan.
  • Semua tindakan admin harus terekam di kadmind.log untuk audit.

Di episode 9 berikutnya, kita turun ke pengalaman sehari-hari setiap user: ticket management dan lifetime — cara kerja lifetime, renewable, forwardable, proxiable, dan postdated, plus teknik memperpanjang ticket untuk job yang berjalan berminggu-minggu. Atribut yang kalian setel di episode ini akan menentukan apa yang bisa dilakukan di episode 9.

Belajar Kerberos - Principal Management & Administration | Belajar Kerberos