Você está na página 1de 8

Apache2 dengan kerberos

Posted on February 20, 2011 by blackshirt 0

Ini catatan ringan pribadi bagaimana menggunakan kerberos untuk proses authentikasi di apache2 web server menggunakan modul untuk apache libapache2-mod-auth-kerb di sistem GNU/Debian Linux tentunya ini hanya sebagai catatan kecil dan bukan dimaksudkan untuk production system. Untuk OS linux lain mungkin perlu penyesuaian..mudah-mudahan bermanfaat Sebelum mengkonfig modul tersebut, pastikan kita sudah memiliki setup Kerberos yang berfungsi dengan baik ( KDC, /etc/krb5.conf, dll). Di Debian, bisa gunakan MIT Kerberos maupun Heimdal Kerberos. Sementara untuk directory yang dipakai contoh adalah alias doc/ di konfigurasi apache2 di Debian. umumnya seperti ini kalau diakses lokal

Pastikan web server Apache2 sudah terinstall dan berfungsi dengan baik.. ! Installasi Heimdal Kerberos najwa@debian:~$ sudo aptitude install heimdal-kdc The following NEW packages will be installed: heimdal-clients{a} heimdal-kdc krb5-config{a} libasn1-8-heimdal{a} libgssapi2heimdal{a} libhdb9-heimdal{a} libheimntlm0-heimdal{a} libhx509-5-heimdal{a} libkadm5clnt7-heimdal{a} libkadm5srv8-heimdal{a} libkafs0-heimdal{a} libkdc2-heimdal{a} libkrb5-26-heimdal{a} libotp0-heimdal{a} libroken18-heimdal{a} libsl0-heimdal{a} libwind0-heimdal{a} 0 packages upgraded, 17 newly installed, 0 to remove and 700 not upgraded. Need to get 0 B/1,705 kB of archives. After unpacking 4,792 kB will be used. Do you want to continue? [Y/n/?]

Preconfiguring packages Selecting previously deselected package krb5-config. . Unpacking heimdal-kdc (from /heimdal-kdc_1.4.0-2_i386.deb) Processing triggers for man-db Setting up krb5-config (2.2) .. Starting Heimdal KDC: heimdal-kdc. Starting Heimdal password server: kpasswdd. Saat proses pengkonfigurasian dan setup Heimdal Kerberos, debconf akan meminta input dari kita, sesuaikan dengan kondisi masing-masing.. 1. Isikan di Default Kerberos 5 Realm : EXAMPLE.COM (sesuaikan dengan punya kita, dan disarankan pakai huruf besar)

2. Pada Kerberos server for your realm : debian.example.com (ini adalah alamat server kerberos yang kita gunakan)

3. Isikan alamat pada Administrative server for your Kerberos realm : debian.example.com (kebetulan pada alamat yang sama)

4. Kalau debconf meminta untuk menambahkan informasi tersebut ke /etc/krb5.conf : Yes

5. Kemudian pada KDC password : 123456 (sesuaikan dan cari password yang lebih baik )

Kerberos server bergantung dengan setingan jaringan kita, jadi pastikan name resolving bisa berfungsi dengan baik.. sangat disarankan memakai DNS server, tapi buat simpelnya saja kita pakai file /etc/hosts. sesuaikan dengan ip dan hostname kita di file /etc/hosts-nya., ini di tempat saya 127.0.0.1 localhost.localdomain localhost 127.0.1.1 debian.example.com debian 192.168.253.1 debian.example.com debian pastikan sudah berfungsi najwa@debian:~$ ping debian.example.com PING debian.example.com (127.0.1.1) 56(84) bytes of data. 64 bytes from debian.example.com (127.0.1.1): icmp_req=1 ttl=64 time=0.071 ms 64 bytes from debian.example.com (127.0.1.1): icmp_req=2 ttl=64 time=0.062 ms 64 bytes from debian.example.com (127.0.1.1): icmp_req=3 ttl=64 time=0.064 ms . Installasi modul kerberos untuk Apache najwa@debian:~$ sudo aptitude install libapache2-mod-auth-kerb The following NEW packages will be installed: libapache2-mod-auth-kerb 0 packages upgraded, 1 newly installed, 0 to remove and 700 not upgraded. Need to get 0 B/18.8 kB of archives. After unpacking 111 kB will be used. Selecting previously deselected package libapache2-mod-auth-kerb. (Reading database 190150 files and directories currently installed.) Unpacking libapache2-mod-auth-kerb (from /libapache2-mod-auth-kerb_5.41+b1_i386.deb) Setting up libapache2-mod-auth-kerb (5.4-1+b1) Enabling module auth_kerb. Run /etc/init.d/apache2 restart to activate new configuration! Sekarang buka dan edit file etc/apache2/sites-available/default

najwa@debian:~$ gksudo gedit /etc/apache2/sites-available/default Defaultnya ada alias /doc untuk berbagai dokumentasi paket yang ada di sistem Gnu/Debian Linux. di tempat saya seperti ini :
... Alias /doc/ "/usr/share/doc/"

Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 Untuk menggunakan authentikasi kerberos, tambahkan beberapa opsi seperti berikut ( untuk lengkapnya coba merujuk ke http://modauthkerb.sourceforge.net/configure.html ) tentang keterangan masing-masing opsi.
Alias /doc/ "/usr/share/doc/"

Options Indexes MultiViews FollowSymLinks AllowOverride None Order deny,allow Deny from all Allow from 127.0.0.0/255.0.0.0 ::1/128 AuthType Kerberos KrbMethodNegotiate On KrbMethodK5Passwd On AuthName "Kerberos Login" KrbAuthRealms EXAMPLE.COM Krb5KeyTab /etc/krb5.keytab KrbServiceName HTTP/debian.example.com require valid-user <Directory Tutup dan simpan, kemudian restart web server apache-nya Kita sebelumnya belum menyetup user buat ngetest kdc-nya, tapi tidak ada salahnya di lihat dulu, apa betul sudah berfungsi

Kalau meminta username dan passwordnya, memang modul kerberosnya berfungsi dan jika kita coba masukan user sembarang tentunya kita tak dapat mengakses /doc, dan

akibatnya Kita perlu user yang bisa akses, Konfigurasi test user di Server Kerberos Gunakan kadmin untuk menambah, mengedit, maupun meremove principal di kerberos najwa@debian:~$ sudo kadmin -l Lihat principal bawaan yang secara default terinstall oleh proses konfigurasi awal kadmin> list * default kadmin/admin kadmin/hprop kadmin/changepw changepw/kerberos krbtgt/EXAMPLE.COM WELLKNOWN/ANONYMOUS kadmin> Tambahkan user testuser untuk percobaan, dengan password testuser juga (sesuaikan sendiri) kadmin> add testuser Max ticket life [1 day]: Max renewable life [1 week]: Principal expiration time [never]: Password expiration time [never]: Attributes []: testuser@EXAMPLE.COMs Password: Verifying testuser@EXAMPLE.COMs Password: kadmin> q Dari keterangannya Now you have to create an service key for the module, which is needed to perform client authentication. Verification of the kerberos password has two steps. In the first one the KDC is contacted using the password trying to receive a ticket for the client. After this

ticket is sucessfuly acquired, the module must also verify that KDC hasnt been deliberately faked and the ticket just received can be trusted. If this check would havent been done any attacker capable of spoofing the KDC could impersonate any principal registered with the KDC. In order to do this check the apache module must verify that the KDC knows its service key, which the apache shares with the KDC. This service key must be created during configuration the module. This service key is also needed when the Negotiate method is used. In this case the module acts as a standard kerberos service (similarly to e.g. kerberized ssh or ftp servers). Default name of the service key is HTTP/@REALM, another name of the first instance can be set using the KrbServiceName option. The key must be stored in a keytab on a local disk, the Krb5Keytab and Krb4Srvtab options are used to specify the filename with the keytab. This file should be only readable for the apache process and contain only the key used for www authentication. Kita memerlukan sebuah service key untuk module authentikasi bisa bekerja untuk mengauthentikasi client. Kita akan buat service key tersebut dalam format HTTP/debian.example.com sesuai yang disarankan di atas. Kemudian key tersebut di simpan di dalam keytab di disk lokal..saya memakai default keytab file yang biasanya ada di /etc/krb5.keytab dan memberi akses kepada user yang menjalankan apache (biasanya www-data di debian / ubuntu).. Sekarang kita lihat apakah betul keytab masih kosong najwa@debian:~$ sudo ktutil list FILE:/etc/krb5.keytab: Vno Type Principal Aliases dan memang masih kosong. Tambahkan testuser yang baru di buat kadmin> ext testuser kemudian lihat lagi apakah sudah ada najwa@debian:~$ sudo ktutil list FILE:/etc/krb5.keytab: Vno Type Principal Aliases 1 aes256-cts-hmac-sha1-96 testuser@EXAMPLE.COM 1 des3-cbc-sha1 testuser@EXAMPLE.COM 1 arcfour-hmac-md5 testuser@EXAMPLE.COM najwa@debian:~$ Tambahkan service key seperti yang disarankan di atas kemudian tambahkan ke keytab kadmin> add -r HTTP/debian.example.com Max ticket life [1 day]: Max renewable life [1 week]: Principal expiration time [never]: Password expiration time [never]: Attributes []: kadmin> ext HTTP/debian.example.com kadmin> gunakan opsi -r (random-key) untuk menggunakan opsi random password, kemudian

lihat lagi dengan ktutil apakah sudah masuk najwa@debian:~$ sudo ktutil list FILE:/etc/krb5.keytab: Vno Type Principal Aliases 1 aes256-cts-hmac-sha1-96 testuser@EXAMPLE.COM 1 des3-cbc-sha1 testuser@EXAMPLE.COM 1 arcfour-hmac-md5 testuser@EXAMPLE.COM 1 arcfour-hmac-md5 HTTP/debian.example.com@EXAMPLE.COM 1 des3-cbc-sha1 HTTP/debian.example.com@EXAMPLE.COM 1 aes256-cts-hmac-sha1-96 HTTP/debian.example.com@EXAMPLE.COM Seperti yang kita lihat di atas,sudah ada di keytab-nya, jangan lupa beri akses Apache ke keytab tersebut ( di sarankan menggunakan keytab tersendiri untuk akses apachenya) $sudo chown root.www-data /etc/krb5.keytab Kemudian kita test

Kalau sukses seharusnya akan memperbolehkan akses dan membuka /doc alias di browsernya

Gitu deh

Posted in: Debian

Você também pode gostar