Kerberos adalah protokol otentikasi jaringan.
Kerberos menyediakan otentikasi kriptografi yang kuat terhadap perangkat yang memungkinkan klien &server untuk berkomunikasi dengan cara yang lebih aman. Ini dirancang untuk mengatasi masalah keamanan jaringan.
Ketika firewall bertindak sebagai solusi untuk mengatasi intrusi dari jaringan eksternal, Kerberos biasanya digunakan untuk mengatasi intrusi dan masalah keamanan lainnya di dalam jaringan.
Versi Kerberos saat ini adalah versi 5 yang disebut sebagai KRB5 .
Untuk mengimplementasikan Kerberos, kita perlu menjalankan layanan otentikasi terpusat di server.
Layanan ini disebut KEY DISTRIBUTION CENTER (KDC).
Server yang terdaftar di KDC dipercaya oleh semua komputer lain di ranah Kerberos.
Contoh File krb5.conf
Berikut adalah contoh file krb5.conf yang berisi semua informasi pemetaan REALM dan domain ke REALM,
# cat /etc/krb5.conf [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = EXAMPLE.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] EXAMPLE.COM = { kdc = kerberos.example.com admin_server = kerberos.example.com } [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM
Instal server KDC Kerberos
Untuk alasan keamanan, disarankan untuk menjalankan server Kerberos (KDC) di server terpisah.
Unduh dan instal paket server krb5.
# rpm -ivh krb5-server-1.10.3-10.el6_4.6.x86_64.rpm Preparing... ########################################### [100%] 1:krb5-server ########################################### [100%]
Pastikan rpm berikut telah diinstal sebelum mengkonfigurasi KDC:
# rpm -qa | grep -i krb5 pam_krb5-2.3.11-9.el6.x86_64 krb5-server-1.10.3-10.el6_4.6.x86_64 krb5-workstation-1.10.3-10.el6_4.6.x86_64 krb5-libs-1.10.3-10.el6_4.6.x86_64
Ubah File /etc/krb5.conf
Ubah /etc/krb5.conf untuk mencerminkan seperti di bawah ini dengan pemetaan REALM dan DOMAIN_REALM yang sesuai.
# cat /etc/krb5.conf [logging] default = FILE:/var/log/krb5libs.log kdc = FILE:/var/log/krb5kdc.log admin_server = FILE:/var/log/kadmind.log [libdefaults] default_realm = MYREALM.COM dns_lookup_realm = false dns_lookup_kdc = false ticket_lifetime = 24h renew_lifetime = 7d forwardable = true [realms] MYREALM.COM = { kdc = elserver1.example.com admin_server = elserver1.example.com } [domain_realm] .myrealm.com = MYREALM.COM myrealm.com = MYREALM.COM
Ubah File kdc.conf
Juga kdc.conf harus dimodifikasi seperti yang ditunjukkan di bawah ini.
# cat /var/kerberos/krb5kdc/kdc.conf [kdcdefaults] kdc_ports = 88 kdc_tcp_ports = 88 [realms] MYREALM.COM = { #master_key_type = aes256-cts acl_file = /var/kerberos/krb5kdc/kadm5.acl dict_file = /usr/share/dict/words admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal }
Buat basis data KDC
Selanjutnya buat database KDC menggunakan perintah kdb5_util seperti gambar di bawah ini. Pada tahap ini, masukkan kata sandi yang sesuai untuk kunci master basis data KDC.
# /usr/sbin/kdb5_util create -s Loading random data Initializing database '/var/kerberos/krb5kdc/principal' for realm 'MYREALM.COM', master key name 'K/[email protected]' You will be prompted for the database Master Password. It is important that you NOT FORGET this password. Enter KDC database master key: Re-enter KDC database master key to verify:
Tetapkan Hak Istimewa Administrator
Pengguna dapat diberikan hak administrator ke database menggunakan file /var/kerberos/krb5kdc/kadm5.acl.
# cat /var/kerberos/krb5kdc/kadm5.acl */[email protected] *
Dalam contoh di atas, setiap prinsipal di MYREALM dengan instans admin memiliki semua hak administrator.
Buat Kepala Sekolah
Buat kepala sekolah menggunakan perintah berikut. Dalam contoh ini, saya membuat prinsipal dengan nama pengguna “eluser”.
# kadmin.local -q "addprinc eluser/admin" Authenticating as principal root/[email protected] with password. WARNING: no policy specified for eluser/[email protected]; defaulting to no policy Enter password for principal "eluser/[email protected]": Re-enter password for principal "eluser/[email protected]": Principal "eluser/[email protected]" created.
Mulai Layanan Kerberos
Jalankan daemon KDC dan kaadmin seperti yang ditunjukkan di bawah ini.
# service krb5kdc start Starting Kerberos 5 KDC: [ OK ] # service kadmin start Starting Kerberos 5 Admin Server: [ OK ]
Konfigurasi Klien Kerberos
Konfigurasikan klien Kerberos untuk mengautentikasi terhadap database KDC:
Sekarang mari kita lihat cara mengonfigurasi klien krb5 untuk mengautentikasi terhadap basis data KDC Kerberos yang kita buat di atas.
Langkah 1:Instal paket krb5-libs dan krb5-workstation pada mesin klien.
Langkah 2:Salin /etc/krb5.conf dari server KDC ke mesin klien.
Langkah 3:Sekarang kita perlu membuat prinsipal untuk klien di database KDC/Kerberos.
Anda dapat menggunakan perintah di bawah ini untuk membuat prinsipal untuk mesin klien di server master KDC. Dalam contoh di bawah ini, saya membuat prinsip host untuk klien elserver3.example.com di server master KDC elserver1.example.com
# kadmin.local -q "addprinc host/elserver3.example.com" Authenticating as principal root/[email protected] with password. WARNING: no policy specified for host/[email protected]; defaulting to no policy Enter password for principal "host/[email protected]": Re-enter password for principal "host/[email protected]": Principal "host/[email protected]" created.
Langkah 4:Ekstrak krb5.keytab untuk klien dari server master KDC menggunakan perintah di bawah ini:
# kadmin.local -q "ktadd -k /etc/krb5.keytab host/elserver3.example.com" Authenticating as principal root/[email protected] with password. Entry for principal host/elserver3.example.com with kvno 2, encryption type aes256-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type aes128-cts-hmac-sha1-96 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type des3-cbc-sha1 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type arcfour-hmac added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type des-hmac-sha1 added to keytab WRFILE:/etc/krb5.keytab. Entry for principal host/elserver3.example.com with kvno 2, encryption type des-cbc-md5 added to keytab WRFILE:/etc/krb5.keytab.
Ini menyelesaikan konfigurasi. Anda sudah selesai pada tahap ini.
Mulai sekarang, setiap kali Anda membuat koneksi SSH, RSH, host memverifikasi identitasnya terhadap database KDC menggunakan file keytab dan membuat koneksi aman melalui Kerberos.
Ktadd digunakan untuk membuat tab kunci baru atau menambahkan prinsip ke tab kunci yang ada dari perintah kadmin.
Ktremove digunakan untuk menghapus prinsipal dari tab kunci yang ada. Perintah untuk menghapus prinsip yang kita buat di atas adalah,
kadmin.local -q "ktremove -k /etc/krb5.keytab –q all"
Menghapus basis data KDC
Untuk beberapa alasan, jika Anda harus menghapus database KDC, gunakan perintah berikut:
# kdb5_util -r MYREALM.COM destroy kdb5_util: Deleting KDC database stored in /usr/local/var/krb5kdc/principal, you sure (type yes to confirm)? <== yes OK, deleting database '/usr/local/var/krb5kdc/principal'...
Opsi -f pada perintah di atas memaksa penghapusan basis data KDC.
Cadangkan dan Pulihkan Basis Data KDC
Untuk mencadangkan basis data KDC ke file, gunakan krb5_util_dump.
# kdb5_util dump kdcfile # ls -l kdcfile -rw-------. 1 root root 5382 Apr 10 07:25 kdcfile
Untuk memulihkan database KDC dari file dump yang dibuat pada langkah di atas, lakukan hal berikut:
# kdb5_util load kdcfile