Spp Trik Mengelola Kuota Internet Bersama Dgn Squid

download Spp Trik Mengelola Kuota Internet Bersama Dgn Squid

of 49

Transcript of Spp Trik Mengelola Kuota Internet Bersama Dgn Squid

Spesifikasi:Ukuran: 11x18 cm Tebal: 123 hlm Harga: Rp 18.800 Terbit pertama: April 2005 Sinopsis singkat: Squid merupakan proxy server dengan kemampuan luar biasa. Selain mampu membagi akses Internet ke banyak pengguna (router) dan menyimpan aktivitas pengguna dalam cache (agar akses informasi lebih cepat diperoleh), Squid juga mampu mengelola lalu lintas permintaan data dari pengguna ke Internet dan membatasinya jika diperlukan. Pengelolaan tersebut kadangkala diperlukan karena manfaat Internet secara bersama-sama seringkali tidak dapat dirasakan secara optimal. Lalu lintas permintaan data dari Internet untuk masing-masing pengguna tidak diatur berdasarkan kebutuhan dan kondisi bandwidth yang dimiliki, bahkan pemanfaatan Internet lebih banyak didominasi oleh pengguna yang tidak berhak. Untuk itu diperlukan suatu manajemen agar Internet bersama dapat dinikmati oleh pengguna dengan adil berdasarkan kuotanya masing-masing. Setiap pengguna memperoleh hak akses Internet sesuai dengan bidang pekerjaaannya atau kebutuhan yang seharusnya diperoleh.

BAB 3

Hak Akses dengan Password

Pada bab ini, hak akses Internet untuk setiap pengguna akan diatur sesuai dengan nama user (username) dan password yang terdaftar di komputer server. Terdapat 3 (tiga) alternatif pilihan yang dapat Anda gunakan untuk memeriksa valid atau tidaknya nama user dan password setia pengguna. Ketiga pilihan tersebut antara lain adalah penggunaan program autentikasi (authentication program) seperti ncsa_auth, squid_ldap_auth, dan mysql_auth. Sebenarnya, cara kerja ketiga program tersebut cukup sederhana. Anda dapat membuatnya sendiri dan menyesuaikannya dengan kondisi dari tempat Anda bekerja karena yang terpenting dari ketiganya adalah output yang dihasilkan dari proses pembacaan nama user dan password. Program akan menghasilkan output berupa teks OK jika autentikasi berhasil dan output berupa teks ERR jika autentikasi gagal. Hasil berupa pesan OK akan diterima oleh Squid sebagai tanda dibukanya hak untuk mengakses Internet. Hasil berupa pesan ERR diterima oleh Squid sebagai tanda gagalnya hak untuk mengakses Internet. Alur proses yang bekerja pada ketiga program authenticate tersebut dapat Anda lihat dalam flowchart berikut ini.

41

Gambar 3.1. Flowchart program auth

Program ncsa_auth akan memanfaatkan data user dan password yang dibuat oleh program htpasswd. Program htpasswd merupakan salah satu program yang dipaketkan bersama instalasi web server Apache. Program squid_ldap_auth akan memanfaatkan data-data di server LDAP yang di dalamnya menyimpan nama user dan password. Informasi lebih lengkap tentang LDAP dapat Anda baca di dalam Subbab 3.2. Program yang terakhir, mysql_auth, merupakan program dalam bahasa C yang dibuat sendiri dengan memanfaatkan cara kerja Squid saat memeriksa nama user dan password yang berhak. Sesuai dengan namanya, mysql_auth akan memanfaatkan database MySQL dalam pengelolaan nama user dan password. Ketiga program di atas dapat dipercaya, cukup aman, dan andal dalam menangani pengaturan hak akses Internet berdasarkan pada nama user dan password. Berikut ini akan dibahas persiapan software, instalasi, dan pengaturan konfigurasi agar setiap alternatifnya dapat berjalan dengan baik.

42

3.1 Program ncsa_authProgram ncsa_auth dapat Anda temukan di dalam direktori /usr/lib/squid bersama beberapa program pendukung lainnya.[root@proxy-server root]# ls l /usr/lib/squid/ total 152 -rwxr-xr-x -rwxr-xr-x drwxr-xr-x drwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x -rwxr-xr-x 1 root 1 root 27 root 2 root 1 root 1 root 1 root 1 root 1 root 1 root 1 root root root root root root root root root root root root 24738 Aug 27 2002 cachemgr.cgi 16929 Aug 27 2002 diskd 4096 Nov 15 13:44 errors 4096 Nov 15 13:44 icons 39070 Aug 27 2002 msnt_auth 13974 Aug 27 2002 ncsa_auth 7467 Aug 272002 pam_auth 7171 Aug 272002 smb_auth 2280 Aug 272002 smb_auth.sh 11331 Aug 27 2002 squid_ldap_auth 5054 Aug 27 2002 unlinkd

Program ini dapat dijalankan secara manual melalui terminal asalkan sudah ada file yang menyimpan nama user dan password. Sintaks penulisannya adalah sebagai berikut:Prompt> /usr/lib/squid/ncsa_auth

/etc/squid/password

Contoh:Prompt> /usr/lib/squid/ncsa_auth

Untuk membuat file password tersebut, dibutuhkan program htpasswd yang terinstalasi bersama web server Apache. Untuk itu, periksalah terlebih dahulu keberadaan htpasswd dengan cara di bawah ini:Prompt> locate htpasswd | grep bin

Jika perintah di atas menghasilkan baris teks berupa /usr/bin/htpasswd atau sejenisnya maka Anda tidak perlu melakukan tindakan instalasi apapun. Jika ternyata tidak ditemukan hasil apapun, Anda perlu melakukan instalasi 43

web server Apache terlebih dahulu. Langkah-langkah instalasinya adalah sebagai berikut: 1. 2. Masukkan CD-ROM instalasi RedHat 8.0 ke-2 yang berisi paket httpd-2.0.40-8.i386.rpm. Periksa terlebih dahulu keberadaan paket httpd di dalam sistem Anda melalui perintah berikut ini:Prompt> rpm qa | grep httpd

3.

Jika perintah di atas tidak menghasilkan nama paket yang mengandung nama httpd maka instalasi dapat dilakukan dengan perintah berikut ini:rpm ivh /mnt/cdrom/httpd-2.0.40-8.i386.rpm

Selanjutnya Anda tinggal menunggu hingga proses instalasi mencapai 100 persen. 4. Jika proses kedua menghasilkan nama paket httpd, lakukan perintah di bawah ini untuk meng-update paket httpd yang sudah ada.rpm Uvh /mnt/cdrom/httpd-2.0.40-8.i386.rpm

Selanjutnya Anda tinggal menunggu hingga proses instalasi mencapai 100 persen. Dengan selesainya proses instalasi httpd, program htpasswd juga sudah terinstal ke komputer Anda. Anda dapat memeriksa keberadaan htpasswd di direktori /usr/bin.Prompt> ls -l /usr/bin/htpasswd

3.1.1

Membuat File Password dengan htpasswd

Dengan adanya program htpasswd, Anda dapat memulai pembuatan data nama pengguna dan password yang diperbolehkan untuk memperoleh akses Internet. Saat 44

pertama kali membuat password dengan htpasswd, perintah yang harus dilakukan adalah sebagai berikut:Prompt> htpasswd c

Tambahan parameter c digunakan untuk menciptakan file baru dengan nama yang sesuai . Contoh:Prompt> htpasswd c /etc/squid/password andi New password: Re-type new password:

Anda diminta untuk menulis password yang akan digunakan user andi sebanyak dua kali dan sama di antara keduanya, untuk memeriksa validitas password yang dimasukkan. Agar cocok dengan pembahasan di bawah, disarankan untuk menggunakan password abcdef. Untuk user kedua dan selanjutnya, Anda dapat langsung mengetikkan perintah di bawah ini:Prompt> htpasswd

Parameter c tidak lagi diperlukan karena sudah dibuat. Contoh:Prompt> htpasswd /etc/squid/password santi New password: Re-type new password:

Ulangi proses di atas sampai semua user yang mempunyai hak akses Internet selesai dimasukkan. Cobalah Anda ketik perintah di bawah ini untuk mencoba program ncsa_auth dengan data nama user dan password yang baru saja dimasukkan:Prompt> /usr/lib/squid/ncsa_auth /etc/squid/password

45

Selanjutnya, prompt akan berhenti menunggu sampai input nama user dan password dimasukkan. Sebagai contoh, jika Anda memasukkan nama andi dengan password qwerty namun menghasilkan output teks ERR, berarti password tidak benar. Akan tetapi jika Anda mengisi input password dengan benar dan sama seperti saat memasukkan data user ke dalam file /etc/squid/password, misalnya abcdef, maka output yang akan dihasilkan berupa teks OK. Teks inilah yang menentukkan seorang pengguna dapat menggunakan akses Internet atau tidak. Tampilan pengisian input dan hasilnya dapat Anda lihat pada ilustrasi proses di bawah ini:Prompt> /usr/lib/squid/ncsa_auth /etc/squid/password andi qwerty

ERR OK

andi abcdef

Dengan percobaan di atas, dapat dipastikan program ncsa_auth dan file password yang Anda buat dapat segera diterapkan untuk pengaturan hak akses pada Squid. Jika Anda ingin menghentikan proses input di atas, tekanlah Ctrl+C.

3.1.2

Mengubah Konfigurasi Squid

Agar web browser dapat menerima permintaan input berupa nama user dan password dari setiap pengguna, diperlukan perubahan konfigurasi Squid pada /etc/squid/squid.conf. Perubahan tersebut antara lain meliputi beberapa hal yang ditampilkan pada potongan listing di bawah ini: Potongan listing /etc/squid/squid.conf # TAG: authenticate_program authenticate_program /usr/lib/squid/ncsa_auth /etc/squid/password # ACCESS CONTROLS acl pengguna proxy_auth REQUIRED

46

# TAG: http_access http_access deny pengguna http_access deny all # TAG: proxy_auth_realm proxy_auth_realm Masukkan password akses Internet! Pada bagian tag authenticate_program, tampak bahwa program untuk autentikasi diaktifkan dengan program ncsa_auth di /usr/lib/squid/ dan file password di /etc/squid/. Penulisan ini sama dengan perintah yang dicoba secara manual melalui terminal pada Subbab 3.1.2. Di bagian ACCESS CONTROL pada potongan listing konfigurasi di atas, tampak bahwa terdapat definisi access control dengan nama pengguna yang akan menggunakan program autentikasi. Selanjutnya, modifikasi terakhir yang tampak pada bagian tag http_access menunjukkan bahwa selain pengguna (lihat tanda seru pada awal kata pengguna), akses Internet akan ditolak. Penulisan konfigurasi di atas akan mengakibatkan pengguna yang tidak terdaftar di file /etc/squid/password atau salah dalam menuliskan password tidak dapat memanfaatkan Internet. Web browser akan menampilkan kotak dialog yang berisi permintaan nama user dan password secara terus menerus sampai Anda menuliskan nama user dan password secara tepat atau menekan tombol Cancel. Gambar di bawah ini menunjukkan permintaan input user dan password saat pertama kali mengakses Internet (Gambar 3.2). Jika Anda gagal mengisi kotak dialog tersebut dengan benar sampai 3 kali atau akhirnya menekan tombol Cancel maka web browser akan menampilan pesan penolakan akses Internet. Gambar 3.3 menunjukkan kondisi penolakan tersebut.

47

Gambar 3.2 Permintaan input user dan password

Gambar 3.3 User tidak terdaftar atau password salah

48

Pengaturan konfigurasi ini dapat dimodifikasi dan digabungkan dengan aturan yang Anda pelajari pada pembahasan di bab sebelumnya seperti pengaturan hari dan jam akses atau nomor IP komputer. Dengan adanya penggabungan tersebut, akan dihasilkan kontrol akses Internet yang optimal. Sebagai contoh, konfigurasi di bawah ini hanya akan memberikan akses Internet kepada pengguna yang terdaftar dan menggunakan komputer tertentu dengan nomor IP yang telah dibatasi mulai 192.168.1.1 sampai dengan 192.168.1.25:

# TAG: authenticate_program authenticate_program /usr/lib/squid/ncsa_auth /etc/squid/password # ACCESS CONTROLS acl pengguna proxy_auth REQUIRED acl direktur src 192.168.1.1-192.168.1.25/255.255.255.255 # TAG: http_access http_access deny !pengguna http_access allow direktur http_access deny all # TAG: proxy_auth_realm proxy_auth_realm Masukkan password akses Internet! Selanjutnya, jalankan perintah service squid reload melalui terminal agar konfigurasi yang baru saja ditambahkan dapat digunakan.

3.1.3

Membuat Program Ubah Password

Apabila administrator atau pengguna ingin mengubah password, diperlukan suatu program untuk mengubah password berbasis web. Program berbasis web ini diperlukan karena pengguna tidak perlu masuk ke dalam server proxy untuk mengganti password. Selain pengguna 49

belum tentu memiliki akses ke server, perubahan manual tentunya akan melelahkan. Program tersebut tidak perlu Anda buat sendiri karena terdapat satu script cgi yang dapat di-download dari alamat http://www.squid-sarg.org dengan nama file chpasswd-2.2.2.tar.gz. Anda juga dapat mendownload program-program pendukung buku ini di http://ridwan.sanjaya.org. Yang perlu Anda lakukan adalah menginstal paket tersebut sehingga menghasilkan script cgi yang akan digunakan untuk pengelolaan password. Langkah-langkah untuk itu adalah sebagai berikut: 1. Ekstrak file chpasswd-2.2.2.tar.gz.Prompt> tar -xzvf chpasswd-2.2.2.tar.gz

2.

Selanjutnya masuklah ke dalam direktori chpasswd-2.2.2 yang baru saja terbuat karena proses ekstraksi.Prompt> cd chpasswd-2.2.2

3.

Bukalah file chpasswd.c untuk mengubah konfigurasi dengan lokasi file password. Gunakan program vi sebagai editor.Prompt> vi chpasswd.c

4.

Ubah baris 58 dan betulkan lokasi file password.Char PwdFile[MAXLEN]="/etc/squid/password";

5.

Selanjutnya, instal paket tersebut dengan 3 (tiga) perintah di bawah ini. Penggunaan bahasa Indonesia sangat dianjurkan untuk pengguna yang kurang memahami Bahasa Inggris. Dukungan Bahasa Indonesia pada script ini merupakan hasil kerja Dodi Maryanto ([email protected]).Prompt> ./configure --enable-language=Indonesian Prompt> make

50

Prompt> make install

Hasilnya adalah file chpasswd.cgi di direktori /var/www/cgi-bin. Anda dapat mengakses chpasswd.cgi melalui browser. Namun sebelumnya file /etc/squid/password perlu ditambahi hak menulis untuk user apache (web server) agar script cgi dapat mengubah password dengan 2 (dua) perintah sebagai berikut:Prompt> chgrp apache /etc/squid/password Prompt> chmod g+w /etc/squid/password

Selanjutnya, buka web browser dan tuliskan alamat tujuan dengan nomor IP server proxy seperti sintaks di bawah ini:http:///cgi-bin/chpasswd.cgi

Contoh:http://192.168.1.100/cgi-bin/chpasswd.cgi

Gambar 3.4 Mengganti password akses Internet melalui web

51

Anda hanya perlu menuliskan nama account (user) yang Anda miliki, password saat ini, dan password yang baru (dua kotak isian). Setelah semuanya terisi, tekan tombol OK. Jika proses penggantian benar maka akan dihasilkan informasi Password berubah untuk user xxxxx dan password baru sudah dapat digunakan.

Gambar 3.5 Password berhasil diubah

Sebaliknya jika pada proses penggantian password terdapat kesalahan penulisan, akan dihasilkan salah satu informasi berikut ini: 1. Password salah untuk user: xxxxx Kesalahan: User salah memasukkan password sekarang. Password sekarang adalah password saat ini sebelum diubah. 2. Password baru hilang atau terlalu pendek (kurang dari 4 karakter)

52

Kesalahan: User memasukkan password baru kurang dari 4 karakter. Panjang minimal password program ini adalah 4 karakter. 3. Jangan gunakan password yang sama dong Kesalahan: User memasukkan isian yang sama pada password sekarang dan password baru. Jika tidak ingin mengubah password, program akan menolak proses penggantian password. 4. Password baru tidak cocok Kesalahan: User tidak memasukkan isian yang sama pada kotak password baru dan mengetik ulang password baru. Kotak input password yang kedua sengaja dimunculkan untuk cross-check kesalahan dalam menuliskan password pada kotak pertama. Kesalahan tersebut akan mengakibatkan password tidak dapat diganti. Anda harus mengulangi halaman awal dengan menekan tombol Back pada web browser.

Gambar 3.6 Password gagal diubah

53

Dengan adanya program berbasis web untuk mengubah password, kerja Anda sebagai administrator akan sangat dimudahkan karena pengguna dapat mengubah passwordnya sendiri. Akan tetapi, tampaknya tidak mungkin untuk hanya mengandalkan script ini untuk pekerjaan yang lebih besar. Campur tangan sang administrator akan tetap diperlukan jika ada user baru dan user lupa dengan password-nya. Apabila Anda juga seorang programmer (terutama web), program untuk memperkecil campur tangan administrator tentunya dapat Anda buat sendiri.

3.2 Program squid_ldap_authSama seperti ncsa_auth, program squid_ldap_auth sudah ada saat instalasi Squid di direktori /usr/lib/squid. Cara kerja program ini juga sama, yaitu menghasilkan teks OK jika proses autentikasi berhasil dan teks ERR jika proses autentikasi gagal. Perbedaan yang nyata antara program ncsa_auth dan squid_ldap_auth adalah penggunaan LDAP (Lightweight Directory Access Protocol) sebagai data autentikasi. LDAP seringkali diterapkan untuk kepentingan login pengguna di jaringan komputer terpusat. Semua hak masuk ke komputer di kantor atau lab ditangani oleh satu komputer saja yang memiliki LDAP. LDAP juga menjembatani keinginan banyak administrator untuk memusatkan lokasi penyimpanan data sehingga data dapat dikelola dan di-backup dengan mudah. Pengguna dapat menggunakan komputer yang berbeda-beda untuk mengerjakan dokumen pekerjaannya di komputer. Asalkan user ID dan password benar, ia akan memperoleh semua dokumen yang disimpan sebelumnya. Implementasi LDAP lebih lengkap dapat Anda baca pada buku Membangun Jaringan Komputer dengan Linux (Ridwan Sanjaya, Penerbit PT. Elex Media Komputindo).

54

Jika pada ncsa_auth data user dan password berupa file teks, pada squid_ldap_auth data diambil dari server LDAP. Hal ini terlihat pada sintaks penulisan perintah squid_ldap_auth di bawah ini:/usr/lib/squid/squid_ldap_auth b

Contoh:/usr/lib/squid/squid_ldap_auth b ou=People,dc= jaringanku,dc=com 192.168.1.100

Untuk itu diperlukan instalasi server LDAP agar program squid_ldap_auth dapat digunakan. Sebagai latihan, server LDAP akan diinstal pada komputer yang sama dengan server proxy. Akan tetapi di kemudian hari sangat disarankan untuk menggunakan komputer yang berbeda untuk server LDAP dengan alasan keamanan.

3.2.1

Instalasi LDAP

Pertama-tama, periksalah terlebih dahulu keberadaan paket LDAP di dalam server melalui perintah di bawah ini:Prompt> rpm -qa | grep ldap

Jika perintah di atas tidak menghasilkan output apapun maka tidak ada paket server LDAP yang terinstalasi. Untuk itu, instal terlebih dahulu beberapa paket di bawah ini: 1. 2. 3. openldap-2.0.25-1.i386.rpm (dari CD 1 RedHat 8.0) openldap-clients-2.0.25-1.i386.rpm RedHat 8.0) openldap-servers-2.0.25-1.i386.rpm RedHat 8.0) (dari (dari CD CD 3 3

Cara instalasinya tidak berbeda jauh dengan instalasi paket RedHat yang lain. Anda cukup menggunakan rpm ivh untuk instalasi setiap 55

paketnya. Di bawah ini merupakan perintah untuk openldap-2.0.25-1.i386.rpm, openldapmenginstal servers-2.0.25-1.i386.rpm, openldap-clientsdan 2.0.25-1.i386.rpm yang ada di CD-ROM:Prompt> rpm -ivh /mnt/cdrom/RedHat/RPMS/openldap-2.0.251.i386.rpm Prompt> rpm -ivh /mnt/cdrom/RedHat/RPMS/openldap-servers2.0.25-1.i386.rpm Prompt> rpm -ivh /mnt/cdrom/RedHat/RPMS /openldap-clients2.0.25-1.i386.rpm

Selanjutnya, edit file /etc/openldap/slapd.conf untuk mengonfigurasi LDAP server. Lihatlah baris teks yang ditebalkan, pastikan konfigurasi tersebut sudah sesuai.[root@proxy-server root]# vi /etc/openldap/slapd.conf # $OpenLDAP: pkg/ldap/servers/slapd/slapd.conf,v 1.8.8.7 2001/09/27 20:00:31 kurt Exp $ # Sample Access Control

access to attrs=userPassword by self write by anonymous auth by * none

access to attrs=lmPassword,ntPassword by * none access to * by * read######################################### ############## # ldbm database definitions ######################################### ############## database ldbm

suffix rootdn

"dc=jaringanku,dc=com" "cn=Manager, dc=jaringanku,dc=com"

56

# Password di bawah ini : abcdef (bisa dibuat dengan slappasswd) rootpw {SSHA}hr9dJggkxVxuUkVj3fuglc0Nmqd3eCGh Kemudian, ubah pula file /etc/ldap.conf untuk memfungsikan server juga sebagai client LDAP. Lihat baris yang berhuruf tebal, pastikan konfigurasi tersebut sudah sesuai terutama dengan nomor IP komputer yang digunakan server LDAP, base pada /etc/openldap/slapd.conf.

[root@proxy-server root]# vi /etc/ldap.conf # @(#)$Id: ldap.conf,v 1.24 2001/09/20 14:12:26 lukeh Exp $ # Your LDAP server. Must be resolvable without using LDAP.host 192.168.1.100

# The distinguished name of the search base. base dc=jaringanku,dc=com ssl no pam_password md5

Setelah selesai mengubahnya, jalankan service ldap dengan perintah berikut ini:

Prompt> /sbin/service ldap startDari hasil konfigurasi slapd.conf, kita coba melihat hasil pencarian yang diperoleh oleh ldapsearch.

Prompt> ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts version: 2 # # filter: (objectclass=*) # requesting: namingContexts #57

# dn: namingContexts: dc=jaringanku,dc=com # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1Selanjutnya, kita akan mengisi database LDAP dengan base.ldif, group.ldif, dan user.ldif sebagai data awal.

Prompt> vi base.ldif dn: dc=jaringanku,dc=com dc: jaringanku objectClass: top objectClass: domain dn: ou=People,dc=jaringanku,dc=com ou: People objectClass: top objectClass: organizationalUnit dn: ou=Group,dc=jaringanku,dc=com ou: Group objectClass: top objectClass: organizationalUnit Prompt> vi group.ldif dn: cn=kelompok,ou=Group,dc=jaringanku,dc=com objectClass: posixGroup objectClass: top cn: kelompok userPassword: {SSHA}R8A31AX8Ukj1Bs4Kks/2aYq8eKYWDqPn gidNumber: 100 Prompt> vi user.ldif dn: uid=ridwan,ou=People,dc=jaringanku,dc=com uid: ridwan cn: ridwan objectClass: account58

objectClass: posixAccount objectClass: shadowAccount userPassword: {SSHA}R8A31AX8Ukj1Bs4Kks/2aYq8eKYWDqPn shadowLastChange: 12031 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 100 gidNumber: 100 homeDirectory: /home/ridwan gecos: ridwan

Gunakan ldapadd untuk memasukkan data dari ketiga file *.ldif di atas ke dalam database LDAP. Isilah password sesuai dengan konfigurasi yang terdapat pada /etc/openldap/slapd.conf.[root@proxy-server root]# [root@proxy-server root]# [root@proxy-server root]#ldapadd -x -D "cn=Manager,dc=jaringanku,dc=com" -W -f base.ldif ldapadd -x -D

"cn=Manager,dc=jaringanku,dc=com" -W -f group.ldif ldapadd -x -D

"cn=Manager,dc=jaringanku,dc=com" -W -f user.ldif

Setelah berhasil memproses ketiga file di atas, lihat hasil proses tersebut menggunakan ldapsearch.version: 2 # # filter: (objectclass=*) # requesting: ALL # # jaringanku, com dn: dc=jaringanku,dc=com dc: laptop objectClass: top objectClass: domain # People, jaringanku, com dn: ou=People,dc=jaringanku,dc=com ou: People

59

objectClass: top objectClass: organizationalUnit # ridwan, People, jaringanku, com dn: uid=ridwan,ou=People,dc=jaringanku,dc=com uid: ridwan cn: ridwan objectClass: posixAccount objectClass: shadowAccount objectClass: top objectClass: person objectClass: organizationalPerson objectClass: inetOrgPerson shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash uidNumber: 100 gidNumber: 100 homeDirectory: /home/ridwan gecos: ridwan shadowLastChange: 12740 userPassword:: e2NyeXB0fXQuOElNd3NOb3BUY1U= # Group, jaringanku, com dn: ou=Group,dc=jaringanku,dc=com ou: Group objectClass: top objectClass: organizationalUnit # kelompok, Group, jaringanku, com dn: cn=kelompok,ou=Group,dc=jaringanku,dc=com objectClass: posixGroup objectClass: top objectClass: groupOfNames cn: kelompok userPassword:: e1NTSEF9UjhBMzFBWDhVa2oxQnM0S2tzLzJhWXE4ZUtZV0RxUG4g gidNumber: 100 member: uid=ridwan,ou=People,dc=jaringanku,dc=com

Jangan lupa untuk membuat /home/ridwan beserta dengan hak akses ke dalam direktori tersebut sesuai dengan home directory yang dibuat dalam user.ldif: 60

Prompt> mkdir /home/ridwan Prompt> chown R ridwan:kelompok /home/ridwan Prompt> chmod R 755 /home/ridwan

Dengan demikian, LDAP sudah dapat digunakan dengan user dan group yang sudah terdaftar di atas.

3.2.2

Membuat User LDAP

Anda dapat mengulang penambahan user dan group dengan LDAPADD. Contohnya, Anda dapat membuat file sample.ldif seperti berikut ini. Perhatikan baris yang ditebalkan di dalam file sample.ldif. Nomor ID tersebut harus bertambah dan tidak sama dengan nomor ID user sebelumnya. Penggunaan group yang sama dengan user sebelumnya tidak menjadi masalah. File sample.ldifdn: uid=octavia,ou=People,dc=jaringanku,dc=com uid: octavia cn: octavia objectClass: account objectClass: posixAccount objectClass: shadowAccount userPassword: {SSHA}R8A31AX8Ukj1Bs4Kks/2aYq8eKYWDqPn shadowLastChange: 12031 shadowMax: 99999 shadowWarning: 7 loginShell: /bin/bash

uidNumber: 101

gidNumber: 100 homeDirectory: /home/octavia gecos: octavia

Selanjutnya, jalankan ldapadd untuk memasukkan data dari sample.ldif ke database LDAP:[root@proxy-server root]# ldapadd -x -D

"cn=Manager,dc=jaringanku,dc=com" -W -f sample.ldif

61

Terakhir, jangan lupa untuk membuat home directory sesuai dengan nama user yang tertulis dalam sample.ldif, yaitu /home/octavia beserta dengan hak akses ke dalam direktori tersebut:Prompt> mkdir /home/octavia Prompt> chown R octavia:kelompok /home/octavia Prompt> chmod R 755 /home/Octavia

Dengan demikian, data LDAP sudah dapat digunakan untuk user octavia. Hal yang sama juga dapat Anda lakukan untuk penambahan group. Anda cukup mengubah data di dalam file group.ldif dengan nama group yang baru, kemudian jalankan ldapadd untuk memasukkan data tersebut ke dalam database LDAP. Jika proses memasukkan data user di atas dirasakan agak menyulitkan, Anda dapat memanfaatkan paket Directory Administrator yang tersedia di dalam CD-ROM pendamping buku Membangun Jaringan Komputer dengan Linux (Ridwan Sanjaya, Penerbit PT. Elex Media Komputindo) atau mendapatkannya dari www.open-it.org.

Gambar 3.7 Program Directory Administrator

62

Oleh karena data LDAP sudah dibuat, Anda dapat mencoba program squid_ldap_auth di /usr/lib/squid secara manual untuk memastikan data telah siap digunakan:Prompt> /usr/lib/squid/squid_ldap_auth b ou=People,dc= jaringanku,dc=com 192.168.1.100

Perhatikan parameter b ou=People,dc=jaringanku,dc= com yang menunjukkan sumber data diambil dari DN People.jaringanku.com (lihat user.ldif dan sample.ldif). Nomor IP 192.168.1.100 menunjukkan lokasi server LDAP yang dijadikan tujuan. Setelah perintah tersebut dijalankan, akan muncul kursor kosong untuk pengisian nama user dan password. Jika nama user telah terdaftar dan pengisian password sudah benar, akan dihasilkan output OK.[root@proxy-server root]# /usr/lib/squid/squid_ldap_auth b ou=People,dc=jaringanku,dc=com 192.168.1.100 ridwan abcdef

OK

Jika salah, output yang keluar adalah teks ERR:ridwan asdfgh

ERR

3.2.3

Mengubah Konfigurasi Squid

Agar web browser dapat menerima permintaan input berupa nama user dan password dari setiap pengguna yang terdaftar di server LDAP, diperlukan perubahan konfigurasi Squid pada /etc/squid/squid.conf. Perubahan tersebut antara lain meliputi beberapa hal yang ditampilkan pada potongan listing di bawah ini: Potongan listing /etc/squid/squid.conf # TAG: authenticate_program

63

authenticate_program /usr/lib/squid/squid_ldap_auth b ou=People,dc=jaringanku,dc=com 192.168.1.100

# ACCESS CONTROLS

acl pengguna proxy_auth REQUIRED

# TAG: http_access http_access deny !pengguna http_access deny all # TAG: proxy_auth_realm proxy_auth_realm Masukkan password akses Internet! Pada bagian tag authenticate_program, tampak bahwa program untuk autentikasi diaktifkan dengan menggunakan program squid_ldap_auth di /usr/lib/squid/ dan data LDAP dengan DN ou=People,dc=jaringanku,dc=com. Penulisan ini sama dengan perintah yang dicoba secara manual melalui terminal pada Subbab 3.2.1. Di bagian ACCESS CONTROL pada potongan listing konfigurasi di atas, tampak bahwa terdapat definisi access control dengan nama pengguna yang akan menggunakan program autentikasi. Selanjutnya, modifikasi terakhir yang tampak pada bagian tag http_access menunjukkan bahwa selain untuk pengguna (lihat tanda seru pada awal kata pengguna), akses Internet akan ditolak. Penulisan konfigurasi di atas akan mengakibatkan pengguna yang tidak terdaftar di dalam server LDAP atau salah dalam menuliskan password tidak akan dapat memanfaatkan Internet. Web browser akan menampilkan kotak dialog yang berisi permintaan nama user dan password secara terus menerus sampai Anda menuliskan nama user dan password secara tepat atau menekan tombol Cancel. Gambar di bawah ini menunjukkan permintaan input user dan password saat pertama kali mengakses Internet (Gambar 3.8).

64

Gambar 3.8 Permintaan input user dan password

Jika Anda gagal mengisi kotak dialog tersebut dengan benar sampai 3 kali atau akhirnya menekan tombol Cancel maka web browser akan menampilan pesan penolakan akses Internet. Gambar di bawah ini menunjukkan kondisi penolakan tersebut.

Gambar 3.9 User tidak terdaftar atau password salah

65

Pengaturan konfigurasi ini dapat dimodifikasi dan digabungkan dengan aturan yang Anda pelajari pada pembahasan di bab sebelumnya seperti pengaturan hari dan jam akses atau nomor IP komputer. Dengan adanya penggabungan tersebut, akan dihasilkan kontrol akses Internet yang optimal. Sebagai contoh, konfigurasi di bawah ini hanya akan memberikan akses Internet kepada pengguna yang terdaftar dan menggunakan komputer tertentu dengan nomor IP yang telah dibatasi mulai 192.168.1.1 sampai dengan 192.168.1.25:

# TAG: authenticate_program authenticate_program /usr/lib/squid/squid_ldap_auth b ou=People,dc=jaringanku,dc=com 192.168.1.100 # ACCESS CONTROLS acl pengguna proxy_auth REQUIRED acl direktur src 192.168.1.1-192.168.1.25/255.255.255.255 # TAG: http_access http_access deny !pengguna http_access allow direktur http_access deny all # TAG: proxy_auth_realm proxy_auth_realm Masukkan password akses Internet! Selanjutnya, jalankan perintah service squid reload melalui terminal agar konfigurasi yang baru saja ditambahkan dapat digunakan. Agar user yang terdaftar pada server LDAP dapat dikenali oleh client, edit /etc/nsswitch.conf dan masukkan teks ldap pada beberapa baris passwd, shadow, group, protocols, services, netgroup, dan automount. File konfigurasi ini berfungsi untuk menunjukkan data user yang bisa digunakan oleh sistem, sehingga dapat dikenali dan digunakan. Jika tertulis files, maka sistem akan mencari informasi hosts pada /etc/hosts, password pada /etc/passwd, 66

atau shadow pada /etc/shadow. Begitu pula halnya dengan penulisan ldap, sistem akan mencari informasi mengenai suatu entri pada database LDAP.Prompt> vi /etc/nsswitch.conf passwd: files nisplus ldap shadow: files nisplus ldap group: files nisplus ldap protocols: files nisplus ldap services: files nisplus ldap netgroup: files nisplus ldap automount: files nisplus ldap

Untuk melibatkan ldap dalam proses authentifikasi, edit file /etc/pam.d/system-auth dan tambahkan baris-baris tebal di bawah ini:Prompt> vi /etc/pam.d/system-auth #%PAM-1.0 # This file is auto-generated. # User changes will be destroyed the next time authconfig is run. auth required /lib/security/pam_env.so auth sufficient /lib/security/pam_unix.so likeauth nullokauth

auth

required

sufficient

/lib/security/pam_ldap.so use_first_pass

/lib/security/pam_deny.so

account

required /lib/security/pam_unix.so

account [default=bad success=ok user_unknown=ignore service_err=ignore system_err=ignore] /lib/security/pam_ldap.so

password required /lib/security/pam_cracklib.so retry=3 type= password sufficient /lib/security/pam_unix.so nullok use_authtok md5 shadowpassword sufficient /lib/security/pam_ldap.so use_authtok

password

required /lib/security/pam_deny.so

67

session session

session

optional /lib/security/pam_ldap.so

required /lib/security/pam_limits.so required /lib/security/pam_unix.so

3.2.4

Membuat Program untuk Mengubah Password

Apabila Anda seorang administrator, perubahan password untuk user dapat dilakukan dengan mudah. Jika digunakan program ketiga seperti Directory Administrator, pekerjaan administrator akan sangat diringankan. Directory Administrator merupakan program dengan antarmuka grafis yang cukup mudah untuk mengelola data LDAP. Bagi user, mengubah password dapat dilakukan dengan cara login terlebih dahulu ke komputer server LDAP dengan nama user masing-masing, kemudian menjalankan perintah passwd dari terminal. Sebagai contoh, Anda dapat melihat proses di bawah ini:Prompt> ssh 192.168.1.100 l ridwan [email protected] password: Prompt> passwd Changing password for user ridwan Enter login(LDAP) password: New password: Re-enter new password: LDAP password information changed for ridwan

Cara tersebut tidak cukup nyaman dan mudah bagi pengguna awam. Diperlukan suatu program untuk mengubah password berbasis web. Program berbasis web ini diperlukan agar pengguna tidak perlu masuk ke dalam server untuk mengganti password. Program tersebut tidak perlu Anda buat sendiri karena terdapat 1 (satu) script cgi yang dibuat oleh Terry Davis dan dapat di-download gratis http://www.cloudamster.com/cloudmaster/projects dari dengan nama file changepass.pl. Anda juga dapat men68

download program-program pendukung buku ini di alamat http://ridwan.sanjaya.org. Yang perlu Anda lakukan adalah menginstal paket tersebut sehingga menghasilkan script cgi yang akan digunakan untuk pengelolaan password. Langkah-langkah untuk keperluan itu adalah sebagai berikut: 1. Edit isi changepass.pl pada beberapa baris yang ditebalkan dan sesuaikan konfigurasi dasar dengan kondisi server Anda.

# CONFIGURATION SECTION $masterLDAP = "192.168.1.100"; $basedn = "dc=jaringanku,dc=com"; $masterPw = "abcdef"; $masterDN = "cn=Manager,$basedn"; $ldap_path = "/usr/bin"; $ldap_opts = "-x"; $ldappasswd = "$ldap_path/ldappasswd $ldap_opts -h $masterLDAP -D '$masterDN' -w '$masterPw'"; $usersdn = "ou=People,$basedn"; # END CONFIGURATION2. Ubah nama changepass.pl menjadi changepass.cgi agar dapat dijalankan oleh server Apache tanpa mengubah konfigurasi. Pastikan server Apache telah terinstal di server.

Prompt> mv changepass.pl changepass.cgi3. Salin file changepass.cgi ke /var/www/cgi-bin.

Prompt> cp changepass.cgi /var/www/cgi-bin4. Berikan hak akses execute pada file changepass.cgi.

chgrp apache /var/www/cgi-bin/changepass.cgi chmod g+x /var/www/cgi-bin/changepass.cgiSelanjutnya, buka web browser dan tuliskan alamat tujuan dengan nomor IP server proxy seperti sintaks di bawah ini: 69

http:///cgi-bin/changepass.cgi

Contoh:http://192.168.1.100/cgi-bin/changepass.cgi

Gambar 3.10 Mengganti password LDAP melalui web

Anda hanya perlu menuliskan nama user (login) yang Anda miliki, password saat ini (current password), dan password yang baru (dua kotak isian). Setelah semuanya terisi, tekan tombol Change. Jika proses berhasil, Anda dapat menggunakan password yang baru untuk proses autentikasi akses Internet di server proxy. Sebetulnya halaman penggantian password ini dapat Anda buat sendiri dengan bahasa PHP yang telah memberikan dukungan penuh terhadap LDAP. Penggunaan PHP dalam pembuatan program juga akan meningkatkan kemudahan bagi Anda dalam mengatur tampilan program. Sebagai alternatif, Anda dapat melihat gambar dan listing program di bawah ini.

70

Gambar 3.11 Ganti Password LDAP dengan PHP

Sebelum script di bawah ini Anda tulis, pastikan bahwa paket php-ldap-4.2.2-8.0.5.i386.rpm yang ada pada CDROM ke-2 RedHat 8.0 telah terinstal dengan cara:Prompt> rpm qa | grep php-ldap

Jika belum, instal paket tersebut melalui perintah:Prompt> cd /mnt/cdrom/RedHat/RPMS Prompt> rpm ivh php-ldap-4.2.2-8.0.5.i386.rpm

Jika php-ldap sudah terinstal, buatlah 2 (dua) listing di bawah ini dan simpan di /var/www/html. Listing gantipassword.html Penggantian Password LDAP Penggantian Password LDAP
Oleh Ridwan Sanjaya, 2004

71

ID Login: Password sekarang: Password baru: Ketik ulang pasword baru: Listing gantipassword.php

Jika proses penggantian password berhasil, akan tampil pesan Penggantian password sukses! seperti gambar di bawah ini.

73

Gambar 3.12 Penggantian password LDAP sukses

3.3 Program mysql_authApabila Anda tidak cukup puas dengan alternatif autentikasi yang pertama (ncsa_auth) karena terlalu sederhana namun juga tidak ingin menggunakan alternatif kedua (squid_ldap_auth) karena terlalu kompleks, alternatif ketiga merupakan penengah di antara keduanya. Dengan mysql_auth, data user dan password tidak dapat dilihat kecuali oleh administrator database dan user yang diberi hak dan juga instalasi program tidaklah terlalu banyak. Anda cukup menambahkan paket MySQL dari CD-ROM instalasi RedHat 8.0 ke-3. Namun demikian karena mysql_auth tidak disediakan saat instalasi Squid, Anda harus membuatnya sendiri dan mengompilasinya sehingga menjadi file binner yang dapat dimanfaatkan sebagai program autentikasi. Akan tetapi berkat adanya sumbangan program mysql_auth dari Frank Liu ([email protected]), Anda 74

tidak perlu membuat sendiri program autentikasi mysql. Anda hanya perlu mengubah beberapa konfigurasi agar sesuai dengan kondisi server.

3.3.1

Instalasi MySQL

Pertama-tama, pastikan bahwa MySQL belum terinstal di komputer melalui perintah di bawah ini:Prompt> rpm qa | grep mysql

Jika belum terinstal, lakukan instalasi paket mysql yang tersedia pada CDROM ke-3 RedHat 8.0, yaitu: 1. Paket klien MySQL: mysql-3.23.52-3.i386.rpmPrompt> rpm ivh mysql-3.23.52-3.i386.rpm

2.

Paket server: mysql-server-3.23.52-3.i386.rpmPrompt> rpm ivh mysql-server-3.23.52-3.i386.rpm

3.

Paket Developer: mysql-devel-3.23.52-3.i386.rpmPrompt> rpm ivh mysql-devel-3.23.52-3.i386.rpm

Paket devel merupakan file yang paling dibutuhkan oleh programmer dan berguna untuk membuat program dengan database MySQL. Di dalam file tersebut tersedia library (pustaka) yang dibutuhkan dalam menghubungkan bahasa pemrograman dengan database MySQL. 4. Paket php-mysql untuk mendukung PHP terhadap MySQL..1.1 Prompt> rpm ivh php-mysql-4.2.2-8.0.5.i386.rpm

Setelah selesai, jalankan service mysql melalui perintah di bawah ini:Prompt> /bin/service mysql start

75

atau melalui tampilan grafis serviceconf agar service mysql dapat langsung aktif pada saat komputer dihidupkan.Prompt> serviceconf

Gambar 3.13 Service mysql diaktifkan

Berikan tanda pada checkbox mysql, lalu tekan tombol Save dan jalankan menggunakan tombol Start atau Restart.

3.3.2

Membuat Data User dan Password

Setelah instalasi MySQL selesai dilakukan, persiapkanlah data user dan password yang akan digunakan untuk proses autentikasi dengan langkah-langkah berikut ini: 1. Login ke MySQL dengan user root. Saat pertama kali digunakan, password masih kosong sehingga nantinya Anda perlu menggantinya...1.2 [root@proxy-server root]#

mysql u root

76

2.

Gunakan database MySQL untuk memasukkan user dan password yang akan mengelola data autentikasi dengan MySQL.

mysql> use mysql; mysql> INSERT INTO user VALUES ('localhost', -> 'squid', -> '', -> 'Y', -> 'Y', -> 'Y', -> 'N', -> 'N', -> 'N', -> 'N', -> 'N', -> 'N', -> 'N', -> 'N', -> 'N', -> 'N', -> 'N'); mysql> flush privileges;3. Selanjutnya, buatlah database dbsquid dan tabel user untuk menampung nama-nama pengguna dan password-nya.

mysql> create database dbsquid; mysql> CREATE TABLE user (username text, -> password text);4. Isilah tabel user dengan beberapa nama pengguna seperti contoh di bawah ini:

mysql> INSERT INTO user VALUES (ridwan','abcdef'); mysql> INSERT INTO user VALUES ('sianny','qwerty'); mysql> INSERT INTO user VALUES ('indra','asdfg');Lakukan tindakan yang sama untuk menambah user dan password. Jika hal ini dirasa menyulitkan, Anda dapat menggunakan phpmyadmin atau membuat 77

sendiri program berbasis web untuk menambah data user dan password-nya. Untuk keluar dari mysql, ketik perintah quit. Dengan adanya beberapa data pengguna, tentunya akan memudahkan kita dalam mencoba program mysql_auth.

3.3.3

Membuat Program mysql_auth

Seperti yang telah diceritakan sebelumnya, program mysql_auth tidak perlu Anda buat sendiri karena pada tanggal 13 November 1998 Frank Liu membuatnya dalam bahasa C dan program tersebut dapat disebarluaskan secara bebas dan gratis. Akan tetapi jika Anda bandingkan dengan listing program di bawah ini, terdapat sedikit modifikasi untuk menyesuaikan fungsi-fungsi MySQL yang sudah tidak dipakai lagi (deprecated). Anda hanya perlu melakukan sedikit modifikasi sesuai baris yang ditebalkan di bawah ini dan mengompilasinya menjadi file program. Konfigurasi tersebut antara lain adalah lokasi komputer server MySQL. Jika server MySQL terletak di 1 komputer maka DBHOST diisi dengan localhost. Jika terletak di komputer berbeda, DBHOST diisi dengan nomor IP komputer tersebut. Konfigurasi DBUSER diisi dengan nama user MySQL yang telah Anda buat sebelumnya untuk kepentingan mysql_auth (lihat Subbab 3.3.2 langkah ke-2), yaitu squid. Selanjutnya, konfigurasi DB diisi dengan dbsquid (lihat Subbab 3.3.2 langkah ke-3). Terakhir, konfigurasi DBPASSWORD diisi dengan NULL karena pada persiapan sebelumnya, password untuk user squid tidak diisi (lihat Subbab 3.3.2 langkah ke-2). Jika Anda menghendaki user squid mempunyai password, konfigurasi di bawah ini juga perlu Anda modifikasi.

#define DBHOST "localhost" #define DBUSER "squid" #define DB "dbsquid"78

#define DBPASSWORD NULLKode program selengkapnya dapat Anda lihat pada listing program berikut ini: Listing mysql_auth.c/* * mysql_auth.c * * Copyright 1998 Frank Liu ([email protected]) * Distributed under the GPL * * 26 Sep 1999, version 2: * * * * * 1. fixed a bug where A_TABLE is defined but never used. (thanks to [email protected]) 2. now you can choose to use either clear text password or encrypted password in the MySQL table. initial release

* 13 Nov 1998, version 1: * Needs to be compiled/linked with MySQL libs. * Assuming MySQL header files are installed in /usr/local/mysql/include * and MySQL libs in /usr/local/mysql/lib * * On my Linux box: * * cc -I /usr/local/mysql/include -O -o mysql_auth mysql_auth.c \ -L /usr/local/mysql/lib -lmysqlclient -lm * * Then modify the squid.conf to use this external auth program: * * authenticate_program /usr/local/squid/bin/mysql_auth * */ #include #include #include #include /* comment out next line if you use clear text password in MySQL DB */

79

/* #define ENCRYPTED_PASS /* can use NULL for localhost, current user, or no password */

#define DBHOST "localhost" #define DBUSER "squid" #define DB "dbsquid" #define DBPASSWORD NULL#define A_TABLE "user"

/* table for the user database for the squid authentication, column names for auth username and auth password */ #define A_USERNAME "username" #define A_PASSWORD "password" #define BUFSIZE 256

int main(int argc, char *argv[]) { char buf[BUFSIZE], qbuf[BUFSIZE]; char *p; MYSQL mysql,*sock; MYSQL_RES *res; /* make standard output line buffered */ if (setvbuf(stdout, NULL, _IOLBF, 0) != 0) return; while (1) { if (fgets(buf, BUFSIZE, stdin) == NULL) break; if ((p = strchr(buf, '\n')) != NULL) *p = '\0'; /* strip \n */ if ((p = strchr(buf, ' ')) == NULL) { (void) printf("ERR\n"); continue; } *p++ = '\0'; /* buf is username and p is password now */ mysql_init(&mysql); if (!(sock = mysql_real_connect(&mysql, DBHOST,

80

DBUSER, DBPASSWORD, DB, 0, 0, 0))) { /* couldn't connect to database server */ printf("ERR\n"); continue; } sprintf(qbuf, "select " A_USERNAME " from " A_TABLE " where "A_USERNAME "='%s' and " A_PASSWORD #ifdef ENCRYPTED_PASS #else #endif "=password('%s')", buf, p); "='%s'", buf, p); if(mysql_query(sock,qbuf) || !(res=mysql_store_result(sock))) { /* query failed */ printf("ERR\n"); mysql_close(sock); continue; } if ( res->row_count !=0 ) { printf("OK\n"); } else printf("ERR\n"); } exit(0); mysql_free_result(res); mysql_close(sock);

}

Selanjutnya, kompilasilah file di atas dengan perintah seperti di bawah ini:

gcc mysql_auth.c -o mysql_auth -I/usr/include/mysql L/usr/lib/mysql -lm -lmysqlclient -lz

Jika kompilasi berhasil dilakukan, cobalah program tersebut secara manual melalui terminal. Output ERR akan muncul 81

ketika autentikasi gagal, sedangkan output OK akan muncul ketika autentikasi sukses dilakukan.Prompt> ./mysql_auth ridwan zxcvbn

ERR OK

ridwan abcdef

3.3.4

Mengubah Konfigurasi Squid

Agar web browser dapat menerima permintaan input berupa nama user dan password dari setiap pengguna yang terdaftar di server MySQL, diperlukan perubahan konfigurasi Squid pada /etc/squid/squid.conf. Perubahan tersebut antara lain meliputi beberapa hal yang ditampilkan pada potongan listing di bawah ini: Potongan listing /etc/squid/squid.conf # TAG: authenticate_program # ACCESS CONTROLS # TAG: http_access

authenticate_program /usr/lib/squid/mysql_auth acl pengguna proxy_auth REQUIRED http_access deny !penggunahttp_access deny all # TAG: proxy_auth_realm

proxy_auth_realm Masukkan password akses Internet!

Pada bagian tag authenticate_program, tampak bahwa program untuk autentikasi diaktifkan dengan program mysql_auth di /usr/lib/squid/. Pilihan database dan tabel sudah disebutkan pada source program mysql_auth sehingga tidak perlu lagi ditulis pada squid.conf. Di bagian ACCESS CONTROL pada potongan listing konfigurasi di 82

atas, tampak bahwa terdapat definisi access control dengan nama pengguna yang akan menggunakan program autentikasi. Selanjutnya, modifikasi terakhir yang tampak pada bagian tag http_access menunjukkan bahwa selain untuk pengguna (lihat tanda seru pada awal kata pengguna), akses Internet akan ditolak. Hasil penulisan konfigurasi di atas akan mengakibatkan pengguna yang tidak terdaftar di dalam server MySQL atau salah menuliskan password tidak akan dapat memanfaatkan Internet. Web browser akan menampilkan kotak dialog yang berisi permintaan nama user dan password secara terus menerus sampai Anda menuliskan nama user dan password secara tepat atau menekan tombol Cancel. Gambar di bawah ini menunjukkan permintaan input user dan password saat pertama kali mengakses Internet (Gambar 3.14).

Gambar 3.14 Permintaan input user dan password

Jika Anda gagal mengisi kotak dialog tersebut dengan benar sampai 3 kali atau akhirnya menekan tombol Cancel 83

maka web browser akan menampilan pesan penolakan akses Internet. Gambar di bawah ini menunjukkan kondisi penolakan tersebut.

Gambar 3.15 User tidak terdaftar atau password salah

Pengaturan konfigurasi ini dapat dimodifikasi dan digabungkan dengan aturan yang Anda pelajari pada pembahasan di bab sebelumnya seperti pengaturan hari dan jam akses atau nomor IP komputer. Dengan adanya penggabungan tersebut, akan dihasilkan kontrol akses Internet yang optimal. Sebagai contoh, konfigurasi di bawah ini hanya akan memberikan akses Internet kepada pengguna yang terdaftar dan menggunakan komputer tertentu dengan nomor IP yang telah dibatasi (mulai 192.168.1.1 sampai dengan 192.168.1.25):

# TAG: authenticate_program84

authenticate_program /usr/lib/squid/mysql_auth # ACCESS CONTROLS acl pengguna proxy_auth REQUIRED # TAG: http_access http_access deny !pengguna http_access deny all

acl direktur src 192.168.1.1-192.168.1.25/255.255.255.255

http_access allow direktur

Selanjutnya, jalankan perintah service squid reload melalui terminal agar konfigurasi yang baru saja ditambahkan dapat digunakan.

3.3.5 Membuat Program untuk Mengubah PasswordJika Anda adalah pemegang hak akses ke server MySQL, tentunya perubahan password pada setiap user dapat dilakukan tanpa kesulitan. Namun demikian, bagi pengguna biasa akses ke server MySQL sangat tidak dimungkinkan. Untuk itu diperlukan program berbasis web yang akan memudahkan pengguna dalam mengubah password-nya. Buatlah 2 (dua) listing di bawah ini dan simpan di /var/www/html. Listing gantimysql.html Penggantian Password MySQL Penggantian Password MySQL
Oleh Ridwan Sanjaya, 2004

85

ID Login: Password sekarang: Password baru: Ketik ulang pasword baru: Listing gantimysql.php