SISTEM ADMINISTRASI OTENTIKASI HOTSPOT
BERBASIS WEB
SKRIPSI
Diajukan untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik Program Studi Teknik Informatika
Oleh :
Tjaja Budi Santoso
025314007
PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK INFORMATIKA
FAKULTAS TEKNIK UNIVERSITAS SANATA DHARMA
YOGYAKARTA 2007
WEB BASED AUTHENTICATION HOTSPOT
ADMINISTRATION SYSTEM
A THESIS
Presented as Partial Fulfillment of the Requirements
To Obtain the Sarjana Teknik Degree
In Informatics Engineering
By:
Tjaja Budi Santoso
025314007
INFORMATICS ENGINEERING STUDY PROGRAM
DEPARTMENT OF INFORMATICS ENGINEERING
FACULTY OF ENGINEERING
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2007
i
ii
iii
Kupersembahkan : Dengan segenap cinta kepada Papa dan Mama yang selalu berdoa dalam setiap sujudnya,
Semua saudara dekat ku yang selalu dekat di lubuk hatiku, Seluruh temen angkatan 2002 yang tetap kompak selalu,
serta Isrti tercintaku kelak…
iv
v
MOTTO
Janganlah engkau bertanya apa yang
bisa negara berikan padamu, tapi
seharusnya apa yang bisa kamu
berikan pada negara mu.
ABSTRAKSI
Masalah yang akan kita hadapi apabila menerapkan wireless LAN adalah
isu tentang keamanannya. Apabila kita mengimplementasikan wireless LAN,
maka kita juga harus mengimplementasikan sistem keamanan apa yang akan kita
terapkan. Server RADIUS dapat digunakan untuk meningkatkan level keamanan
WLAN karena server RADIUS menerapkan mekanisme otentikasi dan otorisasi
layanan jaringan yang tersedia. Server RADIUS juga mampu untuk melakukan
pencatatan, penghitungan, dan pelaporan aktifitas koneksi WLAN yang dilakukan
user. Penerapan RADIUS server memberikan solusi terpusat yang memudahkan
administrator dalam mengelola user. Oleh karena itu perlu dikembangkan sistem
administrasi RADIUS server berbasis web untuk lebih mempermudah
administrator dalam mengelola user.
Kata kunci: Radius, FreeRADIUS, 802.1x, Hotspot, Wi-Fi.
vi
ABSTRACT
Problem which we would face if applying wireless LAN is issue about its
the security and safety. If we are implementation wireless LAN, hence we also
system implementation of security and safety must will which we apply. Radius
Server applicable to increase level security and safety of WLAN because server
RADIUS applies mechanism of authentication and authorization of available
network service. Radius Server also able to do record-keeping, counting, and
reporting of WLAN activity done by user. Applying of server RADIUS gives
solution centrally facilitating administrator in managing user. Therefore need to
be developed administrate system RADIUS server to base on web to be more
waters down administrator in managing user.
Keyword: Radius, FreeRADIUS, 802.1x, Hotspot, Wi-Fi.
vii
viii
KATA PENGANTAR
Puji Syukur kehadirat Tuhan atas rakhmat dan berkah-Nya yang telah
diberikan pada penulis sehingga dapat menyelesaikan tugas akhir ini.
Skripsi ini disusun dalam rangka memenuhi syarat untuk memperoleh
gelar sarjana S1 pada program Sarjana Teknologi Informasi jurusan Teknik
Informatika, Fakultas Teknik, Universitas Sanata Dharma Yogyakarta.
Dalam penulisan skripsi ini, penulis banyak sekali menemui hal-hal baru
dan kesulitan sehingga diperlukan pemahaman dan pola pikir yang lebih
mendalam, namun berkat bantuan dan masukan dari berbagai pihak akhirnya
kesulitan tersebut dapat diatasi.
Dengan rasa syukur penulis mengucapkan terima kasih kepada :
1. Bapak dan Ibu Dosen Teknik Informatika yang telah membimbing dan
mengajar saya selama kuliah.
2. Bapak Benedictus Herry Suharto, S.T., M.T yang telah banyak
membimbing dalam skripsi ini. Terima kasih banyak sekali Pak Herry.
3. Temen-temen angkatan 2002 seperjuangan yang sudah berbagi dalam suka
dan duka.
4. Kedua orangtuaku Bapak dan Ibu Tjaja Mugianto.
5. Saudara Rinaldo yang telah baik hati meminjam Laptopnya untuk skripsi
ini.
6. And last but not least seluruh temen-temen yang telah banyak membantu
saya menyelesaikan kuliah maupun skripsi saya. Maaf saya tidak
ix
menyebutkan kalian satu persatu tapi akan saya balas terima kasih saya
dengan tindakan terima kasih kepada kalian satu persatu. Semoga Tuhan
membalas segala jerih payah hamba-Nya yang rela berkorban untuk
sesamanya, Amien...
Penulis menyadari bahwa Skripsi ini masih jauh dari kesempurnaan
sehingga penulis mengharapkan kritik dan saran dari pembaca demi
kesempurnaan laporan ini. Semoga laporan ini dapat bermanfaat bagi kita semua.
Yogyakarta, September 2007
Penulis,
Tjaja Budi Santoso
x
DAFTAR ISI
Halaman Judul.......................................................................................................... i
Halaman Persetujuan............................................................................................... ii
Halaman Pengesahan ............................................................................................. iii
Halaman Persembahan........................................................................................... iv
Halaman Motto ........................................................................................................v
Abstraksi ................................................................................................................ vi
Abstract ................................................................................................................. vii
Kata Pengantar ..................................................................................................... viii
Daftar Isi....................................... ...........................................................................x
Daftar Gambar...................................................................................................... xiv
Daftar Tabel ......................................................................................................... xvi
Pernyataan Keaslian Karya ................................................................................. xvii
Bab I PENDAHULUAN..........................................................................................1
1.1 Latar Belakang Masalah.............................................................................1
1.2 Rumusan Masalah ......................................................................................2
1.3 Batasan Masalah ........................................................................................3
1.4 Tujuan Penelitian .......................................................................................4
1.5 Metodologi Penelitian ...............................................................................4
1.6 Sistematika Penulisan ................................................................................5
BAB II LANDASAN TEORI.................. ................................................................7
2.1 Sekilas Teknologi Wireless LAN...............................................................7
xi
2.1.1 Teknologi Jaringan Wi-Fi......... ......................................................7
2.1.2 Komponen Utama Jaringan Wi-Fi ..................................................8
2.1.3 Tipe Jaringan Wi-Fi ........................................................................9
2.2 Apa itu Hotspot ? .....................................................................................10
2.2.1 Faktor Penentu Tipe Lingkungan Hotspot....................................10
2.3 Apa itu 802.1x ? .......................................................................................11
2.3.1 Kenapa 802.1x disebut “port based authentication” ?..................12
2.3.2 Komponen dalam 802.1x..............................................................13
2.3.3 Spesifikasi 802.1x.........................................................................15
2.4 RADIUS Server .......................................................................................15
2.4.1 Struktur Paket Data RADIUS........................................................16
2.4.2 FreeRADIUS Server .....................................................................18
2.5 Web Server...............................................................................................19
2.5.1 Apache Web Server......................................................................19
2.6 PHP ..........................................................................................................21
2.6.1 Hubungan PHP dengan HTML....................................................21
2.6.2 Kelebihan PHP.............................................................................23
2.7 MySQL Database Server .........................................................................24
2.7.1 Keunggulan MySQL ....................................................................25
2.7.2 Cara Bekerja MySQL...................................................................26
BAB III ANALISIS DAN PERANCANGAN SISTEM .......................................28
3.1 Analisa Kebutuhan Sistem .......................................................................28
3.1.1 Kebutuhan Admin .......................................................................28
xii
3.1.2 Rekayasa Sistem .........................................................................28
3.1.1 Gambaran Umum Sistem ............................................................29
3.2 Perancangan Sistem .................................................................................30
3.2.1 Komponen Sistem .......................................................................30
3.2.2 Tabel Pendukung Sistem.............................................................31
3.2.3 Perancangan Antarmuka .............................................................36
BAB IV IMPLEMENTASI ...................................................................................40
4.1 Lingkungan Implementasi........................................................................40
4.1.1 Lingkungan Perangkat Keras ......................................................40
4.1.1 Lingkungan Perangkat Lunak .....................................................40
4.2 Instalasi dan Konfigurasi Web Server......................................................41
4.2.1 Mengkonfigurasi PHP.................................................................44
4.3 Instalasi MySQL Database Server............................................................49
4.4 Instalasi dan Konfigurasi RADIUS server...............................................51
4.4.1 Instalasi Skema FreeRADIUS.......................................................52
4.4.2 Konfigurasi FreeRADIUS.............................................................54
4.5 Konfigurasi Access Point.........................................................................62
4.6 Pembuatan Aplikasi RADIUS Manajemen Server Berbasis Web...........64
4.6.1 Halaman Tampilan Pertama..........................................................64
4.6.2 Halaman Tampilan Menu Utama..................................................66
4.6.3 Halaman Tampilan Server Status..................................................68
4.6.4 Halaman Tampilan Radius Status .................................................69
4.6.5 Halaman Last 50 Connection Attempts........................................70
xiii
4.6.6 Halaman Management User..........................................................71
4.6.7 Halaman List Users.......................................................................72
4.6.8 Halaman New User.......................................................................74
4.6.6 Halaman Edit User.........................................................................78
4.6.10 Halaman Graphs...........................................................................81
4.6.11 Halaman Overall Login/Hits........................................................83
4.6.12 Halaman Overall Download........................................................85
4.6.13 Halaman Overall Upload.............................................................87
4.6.14 Halaman Alltime Login/Hits........................................................89
4.6.15 Halaman Alltime Traffic/Comparison.........................................91
BAB V ANALISIS HASIL....................................................................................93
5.1 Kelebihan Sistem .....................................................................................93
5.2 Kekurangan Sistem ..................................................................................93
BAB VI KESIMPULAN DAN SARAN ...............................................................94
6.1 Kesimpulan ..............................................................................................94
6.2 Saran.........................................................................................................94
Daftar Pustaka ........................................................................................................96
xiv
DAFTAR GAMBAR
Gambar 2.1 Peer to peer/ Ad Hoc Wireless LAN....................................................9
Gambar 2.2 Wireless Infrastructure .........................................................................9
Gambar 2.3 Skema 802.1x ....................................................................................11
Gambar 2.4 Skema “Port based authentication” ...................................................13
Gambar 2. 3 komponen dari 802.1x.......................................................................14
Gambar 2.6 Struktur paket data RADIUS..............................................................18
Gambar 3.1 Diagram Umum Sistem Administrasi ................................................29
Gambar 3.2 Rancangan alur sistem administrasi ...................................................30
Gambar 3.3 Halaman login ....................................................................................37
Gambar 3.4 Halaman Menu Utama .......................................................................37
Gambar 3.5 Halaman home....................................................................................38
Gambar 3.6 Halaman Management User ...............................................................38
Gambar 3.7 Halaman Graphs.................................................................................39
Gambar 4.1 Test apache dengan browser ..............................................................43
Gambar 4.2 Test php dengan browser....................................................................48
Gambar 4.3 halaman setup page ............................................................................63
Gambar 4.4 Basic wireless setting .........................................................................63
Gambar 4.5 wireless security .................................................................................64
Gambar 4.6 halaman login .....................................................................................64
Gambar 4.7 halaman Menu Utama ........................................................................66
Gambar 4.8 halaman server status .........................................................................68
xv
Gambar 4.9 halaman radius status .........................................................................69
Gambar 4.10 halaman last 50 connection attempts................................................70
Gambar 4.11 halaman management user ...............................................................71
Gambar 4.12 halaman list users .............................................................................72
Gambar 4.13 halaman new user .............................................................................74
Gambar 4.14 halaman edit user..............................................................................78
Gambar 4.15 halaman graphs.................................................................................81
Gambar 4.16 halaman overall login/hits ................................................................83
Gambar 4.17 halaman overall download stat.........................................................85
Gambar 4.18 halaman overall upload stat..............................................................87
Gambar 4.19 halaman alltime login/hits stat .........................................................89
Gambar 4.20 halaman alltime traffic comparison..................................................91
xvi
DAFTAR TABEL
Tabel 3.1 Tabel Radacct.........................................................................................32
Tabel 3.2 Tabel radcheck .......................................................................................33
Tabel 3.3 radgroupcheck........................................................................................33
Tabel 3.4 Tabel radgroupreply...............................................................................34
Tabel 3.5 Tabel radpostauth...................................................................................34
Tabel 3.6 radreply ..................................................................................................35
Tabel 3.7 usergroup................................................................................................35
Tabel 3.8 nas ..........................................................................................................35
Tabel 3.9 operators.................................................................................................36
xvii
1
BAB I
PENDAHULUAN
I.1. Latar Belakang Masalah
Salah satu perubahan utama di bidang telekomunikasi adalah penggunaan
teknologi wireless. Teknologi wireless juga diterapkan pada jaringan komputer,
yang lebih dikenal dengan wireless LAN (WLAN). Kemudahan-kemudahan yang
ditawarkan wireless LAN menjadi daya tarik tersendiri bagi para pengguna
komputer menggunakan teknologi ini untuk mengakses suatu jaringan komputer
atau internet. Beberapa tahun terakhir ini pengguna wireless LAN mengalami
peningkatan yang pesat. Peningkatan pengguna ini juga dibarengi dengan
peningkatan jumlah hotspot yang dipasang oleh ISP (Internet Service Provider) di
tempat-tempat umum, seperti kafe, mal, bandara. Banyak kantor maupun kampus
yang telah memiliki hotspot, pada umumnya hotspot ini berada di ruangan rapat.
Masalah yang akan kita hadapi apabila menerapkan wireless LAN adalah
isu tentang keamanannya. Banyak pihak yang masih mempertanyakan tentang
keamanan wireless LAN. Apabila kita mengimplementasikan wireless LAN,
maka kita juga harus mengimplementasikan sistem keamanan apa yang akan kita
terapkan. Banyak hotspot yang tidak menerapkan sistem keamanan yang memadai,
sehingga memungkinkan pengguna yang tidak berhak (ilegal) yang dapat masuk
ke jaringan komputer tersebut. Apabila hal ini sampai terjadi, maka pemilik
hotspot tersebut secara langsung maupun tidak langsung akan dirugikan,
penyusup itu dapat saja melakukan perbuatan yang tidak menyenangkan, seperti
2
mengambil data, menyerang komputer-komputer yang ada di jaringan tersebut,
kehilangan pendapatan (apabila pemilik hotspot adalah ISP).
Sistem keamanan yang paling umum diterapkan pada wireless LAN
adalah dengan metode enkripsi, yaitu WEP (Wired Equivalent Privacy). WEP ini
menggunakan satu kunci enkripsi yang digunakan bersama-sama oleh para
pengguna wireless LAN. Hal ini menyebabkan WEP tidak dapat diterapkan pada
hotspot yang dipasang di tempat-tempat umum.
Sistem keamanan lainnya adalah WPA (Wi-Fi Protected Access), yang
menggeser WEP dan menghasilkan keamanan yang lebih baik dari WEP.
Implementasi WPA menggunakan 802.1x dan EAP (Extensible Authentication
Protocol) menghasilkan proses autentikasi pengguna yang relatif aman. Pada
proses ini pengguna harus melakukan autentikasi ke sebuah server autentikasi,
misalnya RADIUS, sebelum terhubung ke wireless LAN atau internet. Pada
umumnya proses autentikasi ini menggunakan nama-pengguna dan password.
I.2. Rumusan Masalah
Berdasarkan latar belakang masalah yang telah diuraikan terlebih dahulu,
maka penulis mengidentifikasi beberapa masalah yang akan menjadi obyek
penelitian. Berikut beberapa permasalahan yang coba diteliti oleh penulis:
1. Bagaimana mengimplementasikan standar 802.1x pada jaringan wireless?
2. Bagaimana menginstall dan mengkonfigurasi FreeRADIUS sebagai
RADIUS server?
3
3. Bagaiman mengkonfigurasi Access Point menggunakan keamanan
RADIUS server?
4. Bagaimana menginstall, mengkonfigurasi Apache dengan modul PHP dan
MySQL yang digunakan sebagai aplikasi perangkat lunak pendukung
tugas akhir.
5. Membangun sebuah sistem manajemen user radius berbasis web.
I.3. Batasan Masalah
Mengingat adanya keterbatasan waktu dan tenaga penulis, maka dalam
penelitian ini dibatasi pada hal - hal sebagai berikut :
Membahas tentang prinsip kerja RADIUS server.
Slackware Linux 10.2 sebagai sistem operasi server autentikasi.
Windows XP SP 2 sebagai OS sisi klien (supplicant).
WLAN standar 802.11b disini dibangun dengan single AP (access point).
Prosedur instalasi dan konfigurasi komputer server menggunakan
FreeRADIUS.
Prosedur instalasi dan konfigurasi Webserver Apache, modul PHP dan
MySQL pada komputer server. Tidak membahas tentang pemrograman
PHP dan MySQL.
PC yang digunakan sebagai server adalah AMD Athlon 2,2 Mhz dengan
sistem operasi linux Slackware 10.2 dan penulis berasumsi bahwa linux
sudah terinstall dengan benar pada komputer.
4
I.4. Tujuan Penelitian
Tujuan yang ingin dicapai adalah:
Mengimplementasikan standar 802.1x pada jaringan Wireless LAN
(Hotspot). Dimana pengguna harus melakukan autentikasi ke sebuah server
autentikasi (RADIUS server), sebelum terhubung ke wireless LAN atau internet.
Dan dari sisi administrator mempunyai media dalam memantau dan mengontrol
user – user yang terhubung ke jaringan.
I.5. Metedologi Penelitian
Metodologi penelitian yang digunakan dalam pembuatan karya tulis
adalah sebagai berikut:
1. Studi pustaka tentang Wireless LAN, standar 802.1x dan RADIUS.
2. Mengumpulkan referensi yang berkaitan FreeRADIUS, baik mengenai
teknologi itu sendiri, perangkat keras dan lunak.
3. Peng-install-an Slackware Linux 10.2 sebagai sistem operasi otentifikasi
server, lalu disertai peng-install-an Apache, PHP, MySQL, dan
FreeRADIUS.
4. Merancang sistem tersebut dari hasil analisis masalah.
5. Implementasi sistem authentifikasi Wireless LAN.
6. Uji coba (simulasi) untuk mengetes apakah sistem yang dibuat telah benar-
benar diimplementasikan dengan benar.
7. Analisis dan membuat kesimpulan dari sistem yang telah dibuat.
5
I.6. Sistimatika Penulisan
BAB I. PENDAHULUAN
Memberikan gambaran tentang ide dasar, batasan masalah, tujuan
dan manfaat penulisan serta inti permasalahan. Metode yang
hendak digunakan untuk menyelesaikan masalah juga dibahas
secara umum pada bagian ini.
BAB II. LANDASAN TEORI
Menguraikan secara singkat tapi lengkap mengenai materi-materi
yang menjadi dasar acuan dalam penulisan, yang mana tidak akan
menyimpang dari maksud dan tujuan yang hendak dicapai. Bab ini
memberikan pemahaman teoritis untuk mencapai pemecahan
masalah secara jelas.
BAB III. ANALISIS DAN PERANCANGAN SISTEM
Membahas langkah-langkah dan piranti yang digunakan untuk
memecahkan permasalahan. Analisis mengemukakan pendapat
penulis dengan mempertimbangkan dasar teori atas permasalahan
yang dihadapi. Analisis yang menghasilkan model sistem
diwujudkan pada tahap Desain. Desain ini nantinya akan menjadi
dasar perwujudan utilitas yang dikehendaki.
BAB IV. IMPLEMENTASI
6
Memaparkan hasil perancangan ke dalam bentuk nyata yang dapat
digunakan. Utilitas telah diwujudkan sehingga dapat dilihat unjuk
kerjanya secara langsung (praktek).
BAB V. ANALISIS HASIL
Meninjau hasil yang dicapai secara optimal terhadap ide dasar
yang dikemukakan meliputi kelebihan dan kelemahan dari sistem
yang dihasilkan.
BAB VI. KESIMPULAN DAN SARAN
Memaparkan kesimpulan dan saran yang diperoleh terhadap sistem
yang dihasilkan. Kesimpulan akan merangkumkan intisari dari
hasil-hasil yang telah diperoleh selama melaksanakan proses tugas
akhir, sedangkan saran akan memuat usulan-usulan bermanfaat
yang dapat diterapkan untuk pengembangan sistem yang telah
dibuat.
7
BAB II
LANDASAN TEORI
II.1. SEKILAS TEKNOLOGI WIRELESS LAN
Wireless LAN yang biasa disingkat dengan WLAN atau juga lebih dikenal
dikenal dengan jaringan Wi-Fi merupakan sistem komunikasi data yang fleksibel
yang mampu menjangkau wilayah LAN yang sulit dicapai dengan kabel tembaga
biasa (Copper wire) dan untuk menjangkau pengguna bergerak (mobile-Users).
Teknologi WLAN merupakan perangkat yang bekerja di frekuensi 2.4GHz yang
disebut sebagai pita frekuensi ISM (Industrial, Scientific and Medical).
Instalasi perangkat jaringan Wi-Fi lebih fleksibel karena tidak
membutuhkan penghubung kabel antar komputer. Tidak seperti halnya Ethernet
LAN yang menggunakan jenis kabel koaksial dan kable UTP (Unshielded Twisted
Pair) sebagai media transfer. Komputer dengan Wi-Fi device dapat saling
terhubung yang hanya membutuhkan ruang atau space dengan syarat jarak
jangkauan dibatasi kekuatan pancaran sinyal radio dari masing-masing komputer.
II.1.1. Teknologi Jaringan Wi-Fi
Wi-Fi atau Wireless Fidelity adalah satu standar Wireless Networking
tanpa kabel, hanya dengan komponen yang sesuai dapat terkoneksi ke jaringan.
Teknologi Wi-Fi memiliki standar, yang ditetapkan oleh sebuah institusi
internasional yang bernama Institute of Electrical and Electronic Engineers
(IEEE), yang secara umum sebagai berikut:
8
Standar IEEE 802.11a yaitu Wi-Fi dengan frekuensi 5 Ghz yang memiliki
kecepatan 54 Mbps dan jangkauan jaringan 300 meter.
Standar IEEE 802.11b yaitu Wi-Fi dengan frekuensi 2,4 Ghz yang
memiliki kecepatan 11 Mbps dan jangkauan jaringan 100 meter.
Standar IEEE 802.11g yaitu Wi-Fi dengan frekuensi 2,4 Ghz yang
memiliki kecepatan 54 Mbps dan jangkauan jaringan 300 meter.
II.1.2. Komponen Utama Jaringan Wi-Fi
Ada empat komponen utama dalam membangun jaringan WLAN yaitu:
1. Access Point, komponen yang berfungsi menerima dan mengirimkan data
dari adapter wireless. Access Point mengonversi sinyal frekuensi radio
menjadi sinyal digital atau sebaliknya. Komponen tersebut bertindak
layaknya sebuah hub/switch pada jaringan ethernet. Satu Access Point
direkomendasikan dapat menampung maksimal 40-an klien.
2. Wireless LAN Device, komponen yang dipasangkan di Mobile/Desktop
PC.
3. Mobile/Desktop PC, komponen akses untuk klien, mobile PC pada
umumnya sudah terpasang port PCMCIA (Personal Computer Memory
Card International Association), sedangkan Desktop PC harus
ditambahkan PCI (Peripheral Componen Interconnect) Card, serta USB
(Universal Serial Bus) Adapter.
4. Ethernet LAN, jaringan kabel yang sudah ada (bila perlu).
9
II.1.3. Tipe Jaringan Wi-Fi
Seperti halnya Ethernet LAN, jaringan Wi-Fi juga dikonfigurasikan ke
dalam dua jenis jaringan:
• Jaringan peer-to-peer/Ad Hoc Wireless LAN, dimana komputer dapat
saling berhubungan berdasarkan nama SSID (Service Set Identifier). SSID
adalah nama identitas komputer yang memiliki komponen nirkabel.
Gambar 2.1 Peer to peer/ Ad Hoc Wireless LAN
• Jaringan Server Based / Wireless Infrastucture, Sistem Infrastruktur
membutuhkan sebuah komponen khusus yang berfungsi sebagai Access
Point.
Gambar 2.2. Wireless Infrastructure
10
II.2. APA ITU HOTSPOT ?
Tahun 1997 lahir standar pertama, masih prematur, yang dikenal dengan
IEEE 802.11b dan disebut wireless fidelity (Wi-Fi). Hotspot adalah sebuah
wilayah terbatas yang dilayani oleh satu atau sekumpulan Access Point Wireless
LAN standar 802.11a/b/g. Dimana pengguna dapat masuk ke dalam Access Point
secara bebas dan mobile menggunakan perangkat sejenis notebook, laptop, PDA,
dan sebangsanya.
Biasanya Hotspot dioperasikan di tempat umum, seperti Café, Mall, dan
Kampus. Access Point yang digunakan umumnya tidak dimodifikasi antenanya,
sehingga kemampuannya memang dibatasi hanya untuk ruangan terbatas saja.
Jadi jaringan Wireless di sebuah kota, RT/RW-net bukan kategori Hotspot.
II.2.1. Faktor Penentu Tipe Lingkungan Hotspot
Ada 3 faktor penting yang menentukan tipe lingkungan HotSpot yang akan
dibangun:
• Ukuran fisik lokasi, merupakan faktor penting yang harus
dipertimbangkan. Faktor tersebut menentukan berapa banyak wireless AP
yang harus ditempatkan.
• Jumlah pengguna, akan menentukan bandwidth yang diperlukan
disediakan untuk pengguna. Target minimum bandwidth adalah 100Kbps
per user aktif.
• Model pemakaian, faktor ini merupakan tipe aplikasi apa yang akan
pengguna gunakan bila berkoneksi dengan HotSpot. Misalnya: sebuah
café, kebanyakan penggunanya adalah pengusaha menengah ke bawah dan
11
pelajar yang mungkin lebih banyak menjalankan aplikasi seperti chatting,
internet games, dan streaming audio. Sedangkan hotel, kebanyakan
penggunanya adalah pengusaha menengah ke atas (enterprise) yang lebih
sering melakukan koneksi ke corporate intranets untuk membaca email
dan menjalankan aplikasi bisnis mereka.
II.3. APA ITU 802.1x ?
IEEE 802.1x atau sering disebut juga “port based authentication”
merupakan standar yang pada awal rancangannya digunakan pada koneksi dialup.
Tetapi pada akhirnya, standar 802.1x digunakan pula pada jaringan standar IEEE
802.
Pada laporan ini, dikhususkan penggunaan standar 802.1x pada jaringan
wireless ( 802.11a/b/g ). Berikut merupakan skema dasar dari standar 802.1x.
Gambar 2.3 Skema 802.1x
Penjelasan skema diatas, sebagai berikut :
1. Bila ada WN (Wireless Node) baru yang ingin mengakses suatu LAN,
maka access point (AP) akan meminta identitas WN. Tidak diperbolehkan
12
trafik apapun kecuali trafik EAP. WN yang ingin mengakses LAN disebut
dengan supplicant. AP pada skema 802.1x merupakan suatu authenticator.
Yang dimaksud dengan authenticator disini adalah device yang
mengeksekusi apakah suatu supplicant dapat mengakses jaringan atau
tidak. Istilah yang terakhir adalah authentication server, yaitu server yang
menentukan apakah suatu supplicant valid atau tidak. Authentication
server adalah berupa Radius server [RFC2865].
EAP, yang merupakan protokol yang digunakan untuk authentifikasi, pada
dasarnya dirancang untuk digunakan pada PPP dialup.
2. Setelah identitas dari WN dikirimkan, proses authentifikasi supplicant pun
dimulai. Protokol yang digunakan antara supplicant dan authenticator
adalah EAP, atau lebih tepatnya adalah EAP encapsulation over LAN
(EAPOL) dan EAP encapsulation over Wireless (EAPOW). Authenticator
me-rencapsulation paket dan dikirimkan ke authentication server.
Selama proses authentifikasi berlangsung, authenticator hanya merelaykan
paket dari supplicant ke authentica-tion server. Setelah semua proses
selesai dan authentication server menyatakan bahwa supplicant valid,
maka authenticator membuka firewall untuk supplicant tersebut.
3. Setelah proses authentifikasi selesai, supplicant dapat mengakses LAN
secara biasa.
II.3.1. Kenapa 802.1x disebut “port based authentication” ?
Lalu mengapa disebut sebagai “port based authentication” ? Penjelasan adalah
bahwa authenticator mengkontrol dua jenis port yaitu yang disebut dengan
13
controlled ports dan yang disebut dengan uncontrolled ports. Kedua jenis port
tersebut merupakan logikal port dan menggunakan koneksi fisikal yang sama.
Gambar 2.4 Skema “Port based authentication”
Sebelum authentifkasi berhasil, hanya port dengan jenis uncontrolled yang dibuka.
Trafik yang diperbolehkan hanyalah EAPOL atau EAPOW. Setelah supplicant
melakukan autentifikasi dan berhasil, port jenis controlled dibuka sehingga
supplicant dapat mengakses LAN secara biasa.
II.3.2. Komponen Dalam 802.1x
Ada 3 komponen pokok dalam 802.1x. tiap dari komponen mempunyai aturan
yang ditentukan dalam mekanisme kerja. Ketiga entitas pokok tersebut adalah:
1) Authenticatior (access point), bertanggung jawab untuk:
Menjalankan otentikasi
Mencontrol otorisasi
14
Mengarahkan traffic ke server otentikasi
2) Supplicant (klien), bertanggung jawab untuk menyampaikan mandat via
port lewat authenticator ke server otentikasi server.
3) Authentication server, melakukan fungsi otentikasi untuk memeriksa
mandat dari Supplicant.
Gambar 2.5 3 komponen dari 802.1x
Secara umum, tahapan-tahapan dalam protokol ini adalah:
1. Secara default akses ke jaringan tertutup.
2. Sebuah supplicant melakukan akses dan meminta izin akses ke
autentikator, yang kemudian meneruskannya ke server autentikasi.
3. Server autentikasi menjawab dengan memberikan ‘tantangan’ ke
supplicant melalui autentikator.
4. Melalui autentikator, supplicant menjawab ‘tantangan’ yang diberikan.
5. Apabila jawaban yang diberikan supplicant benar, server autentikasi akan
memberitahu ke autentikator yang kemudian akan memberikan akses ke
jaringan ke supplicant.
6. Akses jaringan yang sudah terbuka, akan tetap terbuka sampai ketika
terjadi perubahan status koneksi, misalnya koneksi diputus oleh pengguna
15
atau alat yang terhubung berubah. Ketika terjadi perubahan status, akses
akan kembali ditutup dan proses autentikasi akan berulang kembali.
II.3.3. SPESIFIKASI 802.1x
Untuk kepentingan pengesahan dan autorisasi, 802.1X menyediakan
spesifikasi yang berikut:
• Bagaimana mekanisme kendali akses beroperasi.
• Tingkat kendali akses mendukung seperti halnya perilaku port pada tiap
tingkat.
• Kebutuhan untuk protokol antar supplicant dan authenticator.
• Kebutuhan untuk protokol antar authenticator dan authentication server.
• Prosedur untuk bagaimana pengesahan dan otorisasi digunakan untuk
network access control.
• Mengenkripsi Protocol Data Units ( PDUS) otorisasi dan pengesahan yang
digunakan pertukaran protokol.
• Kebutuhan untuk port-based control mengendalikan manajemen
( mengidentifikasi object diatur dan operasi manajemen).
• Kebutuhan untuk manajemen remote yang menggunakan SMT.
• Kebutuhan untuk peralatan yang mengakui conformance kepada standar
802.1x.
II.4. SEKILAS RADIUS SERVER
RADIUS (Remote Authentication Dial In User Service) merupakan suatu
protokol yang dikembangkan untuk proses AAA (authentication, authorization,
16
and accounting). Pada awal pengembangannya, RADIUS menggunakan port 1645,
yang ternyata bentrok dengan layanan “datametrics”. Sekarang, port yang dipakai
RADIUS adalah port 1812.
RADIUS menjalankan sistem administrasi pengguna yang terpusat, sistem
ini akan mempermudah tugas administrator. Dapat kita bayangkan berapa banyak
jumlah pelanggan yang dimiliki oleh sebuah ISP, dan ditambah lagi dengan
penambahan pelanggan baru dan penghapusan pelanggan yang sudah tidak
berlangganan lagi. Apabila tidak ada suatu sistem administrasi yang terpusat,
maka akan merepotkan administrator dan tidak menutup kemungkinan ISP akan
merugi atau pendapatannya berkurang. Dengan sistem ini pengguna dapat
menggunakan HotSpot di tempat yang berbeda-beda dengan melakukan
autentikasi ke sebuah RADIUS server.
Server RADIUS menentukan apakah pengguna memiliki hak akses ke
jaringan atau tidak. Pada server RADIUS, tingkat akses ke jaringan dapat
ditentukan secara berbeda-beda. Komunikasi antara pengguna da server RADIUS
terenkripsi, tetapi protokol RADIUS tidak menyediakan enkripsi data. RADIUS
pada umumnya digunakan dengan VPN (Virtual Private Network). Salah contoh
RADIUS server adalah FreeRADIUS.
II.4.1. STRUKTUR PAKET DATA RADIUS
Struktur paket data RADIUS terdiri dari lima bagian, yaitu:
1. Code, memiliki panjang adalah satu oktet, digunakan untuk membedakan
tipe pesan RADIUS yang dikirimkan pada paket. Kode-kode tersebut
(dalam desimal) ialah:
17
1 Access-Request
2 Access-Accept
3 Access-Reject
4 Accounting-Request
5 Accounting-Response
11 Access-Challenge
12 Status-Server
13 Status-Client
255 Reserved
2. Identifier, memiliki panjang satu oktet, bertujuan untuk mencocokkan
permintaan.
3. Length, memiliki panjang dua oktet, memberikan informasi mengenai
panjang paket.
4. Authenticator, memiliki panjang 16 oktet, digunakan untuk membuktikan
balasan dari RADIUS server, selain itu digunakan juga untuk algoritma
password.
5. Attributes, berisikan informasi yang dibawa pesan RADIUS, setiap pesan
dapat membawa satu atau lebih atribut. Contoh atribut RADIUS: nama
pengguna, password, CHAP-password, alamat IP access point(AP), pesan
balasan.
18
Gambar 2.6 Struktur paket data RADIUS
II.4.2. FreeRADIUS Server
FreeRADIUS merupakan kompilasi yang ditulis lengkap secara ulang dan
dari awal server RADIUS. Berkas konfigurasi menunjukkan banyak persamaan
dengan Livingston RADIUS servern yang terdahulu. Produk ini mendukung:
• Membatasi jumlah maksimal logon secara bersama-sama, bahkan dapat
berbasis tiap-tiap pengguna.
• Lebih dari satu DEFAULT entry, dengan tiap-tiap entry memiliki
kemampuan melanjutkan ke entry lain.
• Mengijinkan dan menolak akses yang berdasarkan pengguna pada grup
pencarian dimana mereka akan terkoneksi.
• Menentukan parameter tertentu sebagai spesifikasi pencarian group.
• Berkas-berkas hint atau petunjuk inteligen yang menunjukkan protokol
otentikasi berdasarkan syntax username.
• Mengeksekusi program-program eksternal setelah login berhasil
• Menggunakan format nama berkas $INCLUDE dengan konfigurasi,
pengguna, dan kamus berkas.
• Atribut yang dispesifikasi vendor.
• Bertindak sebagai proxy server RADIUS
19
II.5. WEB SERVER
Di layer teratas protokol TCP/IP terdapat beberapa protokol untuk
berbagai jenis layanan yang sering digunakan. Salah satunya adalah protokol
HTTP (HyperText Transfer Protocol) untuk layanan World Wide Web.
WWW adalah layanan yang paling sering digunakan dan memiliki
perkembangan yang sangat cepat karena dengan layanan ini kita bisa menerima
informasi dalam berbagai format (multimedia). Untuk mengakses layanan WWW
dari sebuah komputer (yang disebut WWW server atau web server) digunakan
program web client yang disebut web browser atau browser saja. Jenis-jenis
browser yang sering digunakan adalah: Netscape Navigator/Comunicator, Internet
Explorer, NCSA Mosaic, Arena dan lain-lain.
II.5.1. Apache Web Server
Apache merupakan salah satu program web server diantara sekian banyak
program web server lainnya. Apache web server merupakan hasil dari Apache
Software Foundation dengan Apache Project-nya. Untuk saat ini apache
merupakan program web server paling populer, bahkan jauh lebih populer
dibandingkan dengan Microsoft Internet Information Server (IIS) dan Personal
Web Server (PWS).
Berikut ini beberapa faktor penyebab keunggulan Apache dibandingkan
program web server lainnya :
Apache merupakan web server yang tangguh
Apache telah diuji coba dengan oleh banyak pengguna dan terbukti
sebagai server HTTP ( HyperText Transfer Protocol ) yang tangguh.
20
Apache dapat digunakan pada berbagai sistem operasi
Apache kini telah didukung oleh berbagai sistem operasi, mulai dari
keluarga Linux, hingga Windows. Bahkan pada berbagai sistem operasi ini,
Apache berjalan konsisten dengan menggunakan konfigurasi dan
administrasi yang tidak jauh berbeda.
Apache mudah dikonfigurasi ulang
Apache sangat mudah dikonfigurasi ulang. File konfigurasinya berupa file
text sehingga mudah dibaca dan dipahami. Konfigurasi diatur dengan
menggunakan file tesk ini.
Apache mudah diektensifikasi
Kemampuan apache selain software utamanya, juga didukung
olehberbagai modul. Modul-modul ini bisa ditambahkan dan digunakan
oleh Apache. Bahkan bila ingin membuat modul sendiri, Apache bisa
menggunakannya ( tentunya sesuai dengan API-nya).
Apache dikembangkan oleh banyak programmer
Apache dikembangkan oleh banyak programmer yang bekerja sebagai
tenaga sukarela. Dengan demikian bila terdapat bug, akan segera diatasi.
Apache bersifat terbuka
Pengembangan Apache bersifat terbuka sehingga setiap programmer yang
mau ikut berkontribusi dapat bergabung dengan Apache Project.
Apache memiliki dokumentasi yang lengkap
Apache memiliki dokumentasi yang lengkap. Dengan demikian pengguna
tidak menghadapi kesulitan dalam menguasai Apache.
21
Apache memiliki kerjasama dengan berbagai vendor lainnya.
Apache menjalin kerjasama dengan berbagai vendor penting, sehingga
bisa dikolaborasikan dengan berbagai teknologi seperti SSL ( Secure
Socket Layer ), JSP ( Java Server Pages ), PHP ( Hypertext Pre
Processor ), Dan lain-lain.
II.6. PHP
PHP adalah singkatan dari "PHP: Hypertext Preprocessor", yang
merupakan sebuah bahasa scripting yang terpasang pada HTML. Sebagian besar
sintaks mirip dengan bahasa C, Java dan Perl, ditambah beberapa fungsi PHP
yang spesifik. Tujuan utama penggunaan bahasa ini adalah untuk memungkinkan
perancang web menulis halaman web dinamik dengan cepat.
II.6.1. Hubungan PHP dengan HTML
Halaman web biasanya disusun dari kode-kode html yang disimpan dalam
sebuah file berekstensi .html. File html ini dikirimkan oleh server (atau file) ke
browser, kemudian browser menerjemahkan kode-kode tersebut sehingga
menghasilkan suatu tampilan yang indah. Lain halnya dengan program php,
program ini harus diterjemahkan oleh web-server sehingga menghasilkan kode
html yang dikirim ke browser agar dapat ditampilkan. Program ini dapat berdiri
sendiri ataupun disisipkan di antara kode-kode html sehingga dapat langsung
ditampilkan bersama dengan kode-kode html tersebut. Program php dapat
ditambahkan dengan mengapit program tersebut di antara tanda <? dan ?>. Tanda-
tanda tersebut biasanya disebut tanda untuk escaping (kabur) dari kode html. File
22
html yang telah dibubuhi program php harus diganti ekstensi-nya menjadi .php3
atau .php.
PHP merupakan bahasa pemograman web yang bersifat server-side
HTML=embedded scripting, di mana script-nya menyatu dengan HTML dan
berada si server. Artinya adalah sintaks dan perintah-perintah yang kita berikan
akan sepenuhnya dijalankan di server tetapi disertakan HTML biasa. PHP dikenal
sebgai bahasa scripting yang menyatu dengan tag HTML, dieksekusi di server dan
digunakan untuk membuat halaman web yang dinamis seperti ASP (Active Server
Pages) dan JSP (Java Server Pages).
PHP pertama kali dibuat oleh Rasmus Lerdroft, seorang programmer C.
Semula PHP digunakannya untuk menghitung jumlah pengunjung di dalam
webnya. Kemudian ia mengeluarkan Personal Home Page Tools versi 1.0 secara
gratis. Versi ini pertama kali keluar pada tahun 1995. Isinya adalah sekumpulan
script PERL yang dibuatnya untuk membuat halaman webnya menjadi dinamis.
Kemudian pada tahun 1996 ia mengeluarkan PHP versi 2.0 yang kemampuannya
telah dapat mengakses database dan dapat terintegrasi dengan HTML. Pada tahun
1998 tepatnya pada tanggal 6 Juni 1998 keluarlah PHP versi 3.0 yang dikeluarkan
oleh Rasmus sendiri bersama kelompok pengembang softwarenya. Versi terbaru,
yaitu PHP 4.0 keluar pada tanggal 22 Mei 2000 merupakan versi yang lebih
lengkap lagi dibandingkan dengan versi sebelumnya.
Perubahan yang paling mendasar pada PHP 4.0 adalah terintegrasinya
Zend Engine yang dibuat oleh Zend Suraski dan Andi Gutmans yang merupakan
penyempurnaan dari PHP scripting engine. Yang lainnya adalah build in HTTP
23
session, tidak lagi menggunakan library tambahan seperti pada PHP. Tujuan dari
bahasa scripting ini adalah untuk membuat aplikasi-aplikasi yang dijalankan di
atas teknologi web. Dalam hal ini, aplikasi pada umumnya akan memberikan hasil
pada web browser, tetapi prosesnya secara keseluruhan dijalankan web server.
II.6.2. Kelebihan PHP
Ketika e-commerce semakin berkembang, situs-situs yang statispun
semakin ditinggalkan, karena dianggap sudah tidak memenuhi keinginan pasar,
padahal situs tersebut harus tetap dinamis. Pada saat ini bahasa PERL dan CGI
sudah jauh ketinggalan jaman sehingga sebagian besar designer web banyak
beralih ke bahasa server-side scripting yang lebih dinamis seperti PHP. Seluruh
aplikasi berbasis web dapat dibuat dengan PHP. Namun kekuatan yang paling
utama PHP adalah pada konektivitasnya dengan system database di dalam web.
Sistem database yang dapat didukung oleh PHP adalah :
1. Oracle
2. MySQL
3. Sybase
4. PostgreSQL
5. dan lainnya
PHP dapat berjalan di berbagai system operasi seperti windows 98/NT,
UNIX/LINUX, solaris maupun macintosh.
PHP merupakan software yang open source yang dapat anda download
secara gratis dari situs resminya yaitu http://www.php.net, ataupun dari situs-situs
24
yang menyediakan software tersebut seperti di ftp://gerbang.che.itb.ac.id Web
portal dengan phpnuke
Software ini juga dapat berjalan pada web server seperti PWS (Personal
Web Server), Apache, IIS, AOLServer, fhttpd, phttpd dan sebagainya. PHP juga
merupakan bahasa pemograman yang dapat kita kembangkan sendiri seperti untuk
menambah fungsi-fungsi baru.
Keunggulan lainnya dari PHP adalah bahwa PHP juga mendukung
komunikasi dengan layanan seperti protocol IMAP, SNMP, NNTP, POP3 dan
bahkan HTTP.
PHP dapat diinstal sebagai bagian atau modul dari apache web server atau
sebagai CGI script yang mandiri. Banyak keuntungan yang dapat diperoleh jika
menggunakan PHP sebagai modul dari apache, di antaranya adalah :
1. Tingkat keamanan yang cukup tinggi
2. Waktu eksekusi yang lebih cepat dibandingkan dengan bahasa
pemograman web lainnya yang berorientasi pada server-side scripting.
3. Akses ke system database yang lebih fleksibel. seperti MySQL.
II.7. My SQL DATABASE SERVER
MySQL adalah Sistem Manajemen Database (DBM) SQL yang multiuser
dan multithreaded. Ia sangat cepat, dan kecepatan adalah fokus utama developer
sejak awal. Dalam kaitannya dengan kecepatan, mereka membuat keputusan
untuk memberikan fitur yang lebih sedikit dibandingkan para pesaingnya seperti
Oracle dan Sybase. Bagaimanapun, MySQL yang memiliki fitur sedikit itu telah
25
cukup memberikan fitur yang diperlukan bagi sebagian besar developer database.
Kemudahaan instalasi dan penggunaan dibandingkan yang lain ini menyebabkan
perbedaan harga yang menarik pula.
II.7.1. Keunggulan MySQL
MySQL adalah database populer. Kecepatannya dan ukurannya yang kecil
memberikan keuntungan tersendiri bagi penggunanya. Berikut adalah beberapa
keuntungan dari penggunaan MySQL :
• Cepat. Tujuan utama dari kebanyakan orang yang mengembangkan MySQL
adalah kecepatannya.
• Tidak Mahal. MySQL adalah gratis dibawah naungan lisensi GPL open source,
dan berbayar untuk lisensi komersial dengan alasan yang cukup.
• Mudah Digunakan. Kita dapat membangun dan berinteraksi dengan database
MySQL melalui penggunaan statement sederhana dalam bahasa SQL yang
merupakan bahasa standar bagai komunikasi dengan RDBMS (Relational
Database Management System).
• Berjalan pada Beragam OS (Operating System). MySQL dapat digunakan
pada beragam sistem operasi – Windows, Linux, Mac OS, beberapa Unix
(seperti Solaris, AIX, dan DEC Unix), FreeBSD, OS/2, Irix, dan lainnya.
• Tersedia Dukungan Teknis yang Luas. Besarnya pengguna menyebabkan
dukungan gratis via milis. Pengembang MySQL juga berpartisipasi dalam
milis. Kita dapat pula membeli dukungan teknis dari MySQL dengan biaya
yang rendah.
26
• Aman. Sistem MySQL yang fleksibel terhadap autorisasi memungkinkan
beberapa atau seluruh database diperuntukkan untuk user yang spesifik atau
grup tertentu. Password dienkripsi.
• Mendukung Database Berukuran Besar. MySQL mampu menangani database
hingga 50 juta baris, bahkan lebih. Ukuran batas dari file untuk tabel adalah 4
GB, tetapi kita dapat meningkatkannya – secara teori – hingga 8 TB.
• Dapat Dimodifikasi. Lisensi GPL open source memungkinkan programmer
untuk memodifikasi software MySQL sesuai kebutuhan.
II.7.2. Cara MySQL Bekerja
Software MySQL terdiri dari server MySQL, beberapa program utilitas
yang membantu administrasi dari database MySQL, dan beberapa software
pendukung yang dibutuhkan oleh server MySQL. Jantung dari sistem adalah
server MySQL.
Server MySQL adalah manajer bagi sistem database. Ia menangani seluruh
instruksi database. Sederhananya, jika kita ingin membuat database baru, kita
mengirimkan pesan pada server MySQL bahwa “Buat database baru dan beri
nama DataBaru”. Server MySQL kemudian membuat sub-direktori dalam
direktori datanya, memberi nama sub-direktori itu DataBaru, dan menaruh
beberapa file yang dibutuhkan dengan format yang diperlukan ke dalam sub-
direktori DataBaru. Dengan perlakuan yang sama, untuk menambahkan data ke
dalam database, kita mengirimkan pesan kepada server MySQL, memberikan
datanya, dan memberitahukan lokasi yang diinginkan.
27
Seluruh interaksi dengan database dilakukan dengan mengirimkan pesan
kepada server MySQL. Kita dapat mengirimkan pesan kepada server MySQL
dengan beberapa cara.
28
BAB III
ANALISA DAN PERANCANGAN SISTEM
III.1. Analisa Kebutuhan Sistem
Tujuan dalam analisa kebutuhan sistem ini adalah untuk mendapatkan
informasi tentang apa yang dibutuhkan oleh sistem berdasarkan aspek kebutuhan
admin dan rekayasa sistem.
III.1.1. Kebutuhan Admin (Administrator)
Beberapa analisa tentang kebutuhan yang diperlukan oleh admin pada
sistem yang akan dikembangkan :
Memberikan media untuk membuat, mengubah dan menghapus data – data
dari seorang user.
III.1.2. Rekayasa Sistem
Berdasarkan analisis terhadap kebutuhan user dan Admin, dapat
dipaparkan spesifikasi kebutuhan sistem, sebagai berikut :
Layanan – layanan yang dibutuhkan
Mengacu pada analisa kebutuhan, layanan yang harus disediakan:
autentifikasi dan mengelola user.
Kriteria – kriteria yang harus dipenuhi
a. Otentifikasi login berupa username dan password untuk kemudahan
akses.
b. Media untuk manajemen user berbasis web.
Rekayasa
29
a. Merancang (install dan konfigurasi) autentifikasi server.
b. Mengkonfigurasi sebuah interface login di sisi pengguna (supplicant).
c. Merancang dan membuat aplikasi user management berbasis web.
III.1.3. Gambaran Umum Sistem
FreeRADIUS sebagai RADIUS server, memverifikasi data (username dan
password) yang diinput oleh user untuk selanjutnya memeriksa apakah data yang
di-input user valid atau tidak di dalam database FreeRADIUS melalui pesan
access-accept maupun access-reject. Apabila data user tersebut valid,
FreeRADIUS mengirim pesan access-accept kepada access point.
Gambar 3.1 Diagram Umum Sistem Administrasi
30
Login
User
Pesan
Administrator
Input User
Edit UserEdit
Delete
Laporan
Server Administrasi
Pesan
Pesan
Pesan
Gambar 3.2 Rancangan alur sistem administrasi
III.2. Perancangan Sistem
Berisi perancangan (desain) dari perangkat keras maupun lunak yang akan
digunakan dalam melakukan simulasi Sistem Administrasi Otentikasi User
Hotspot berbasis Web, meliputi penentuan perangkat keras, pengembangan tabel
pendukung sistem, sekaligus pengaturan perangkat keras tersebut agar sesuai
dengan yang diinginkan.
III.2.1. Komponen Sistem
Atas dasar studi pustaka dan rekayasa sistem yang telah diuraikan
sebelumnya, penulis menetapkan komponen – komponen yang akan digunakan
pada penelitian tugas akhir, meliputi :
a. PC (Personal Computer) Server
31
Fungsi :
• FreeRADIUS server, penggunaan FreeRADIUS sebagai RADIUS
server dikarenakan fitur – fiturnya yang beragam di bandingkan
aplikasi RADIUS server yang lain dan pendistribusiannya yang gratis.
• Database server, penggunaan MySQL sebagai database server karena
MySQL merupakan salah satu perangkat lunak basis data yang sangat
cepat, multi-thread, multi-user, dan server basis data SQL (Structured
Query Language) yang kuat dan didistribusikan secara gratis.
• Web server, penggunaan Apache sebagai web server dikarenakan
Apache salah satu web server yang tangguh dan dapat digunakan
diberbagai macam sistem operasi.
b. Wireless Station
• Wireless Client (end user)
c. Access Point
Fungsi :
• DHCP server (WLAN).
d. Aplikasi Pendukung Sistem
• Radius Admin (sistem yang akan dikembangkan), digunakan sebagai
tool administrasi user management dan monitoring.
III.2.2. Tabel Pendukung Sistem
FreeRADIUS server telah menyediakan paket berupa tabel tabel database
didalam distribusinya, dimana tabel – tabel tersebut dalam /freeradius-
32
1.1.0/src/modules/rlm_sql/drivers/rlm_sql_mysql/db_mysql.sql. Tabel – tabel
tersebut antara lain :
Tabel 3.1 radacct
Field Type Null Default
RadAcctId bigint(21) No
AcctSessionId varchar(32) No
AcctUniqueId varchar(32) No
UserName varchar(64) No
Realm varchar(64) Yes
NASIPAddress varchar(15) No
NASPortId Int(12) Yes NULL
NASPortType varchar(32) Yes NULL
AcctStartTime datetime No 0000-00-00 00:00:00
AcctStopTime datetime No 0000-00-00 00:00:00
AcctSessionTime Int(12) Yes NULL
AcctAuthentic varchar(32) Yes NULL
ConnectInfo_start varchar(50) Yes NULL
ConnectInfo_stop varchar(50) Yes NULL
AcctInputOctets bigint(12) Yes NULL
AcctOutputOctets bigint(12) Yes NULL
CalledStationId varchar(50) No
CallingStationId varchar(50) No
AcctTerminateCause varchar(32) No
ServiceType varchar(32) Yes NULL
FramedProtocol varchar(32) Yes NULL
33
FramedIPAddress varchar(15) No
AcctStartDelay Int(12) Yes NULL
AcctStopDelay Int(12) Yes NULL
Tabel radacct merupakan bagian terpenting dalam accounting
FreeRADIUS, dimana tabel ini berfungsi menyimpan semua data user wireless
client yang terkoneksi terhadap FreeRADIUS server tersebut, mulai dari data
username, radius client IP address, client IP address, waktu terhubung, waktu
terputus, dan lainnya.
Tabel 3.2 radcheck
Field Type Null Default
Id Int(11) No
UserName varchar(64) No
Attribute varchar(32) No
Op Char(2) No ==
Value varchar(253) No
Tabel radcheck berfungsi menyimpan data informasi dari seorang user
wireless client yang berupa username, attribute, op (operator) dan value.
FreeRADIUS server melakukan pengecekan ke tabel database ini terhadap setiap
access-request yang didapat oleh RADIUS server.
Tabel 3.3 radgroupcheck
Field Type Null Default
Id Int(11) No
34
GroupName varchar(64) No
Attribute varchar(32) No
Op Char(2) No ==
Value varchar(253) No
Tabel radgroupcheck berfungsi untuk membatasi akses dari sebuah
groupname user wireless client.
Tabel 3.4 radgroupreply
Field Type Null Default
Id Int(11) No
GroupName varchar(64) No
Attribute varchar(32) No
Op Char(2) No =
Value varchar(253) No
Tabel radgroupreply berfungsi untuk me-reply message terhadap suatu
groupname.
Tabel 3.5 radpostauth
Field Type Null Default
Id Int(11) No
User varchar(64) No
Pass varchar(64) No
Reply varchar(32) No
Date timestamp Yes CURRENT_TIMESTAMP
35
Tabel radpostauth berfungsi untuk menyimpan informasi reply message
dari seorang user wireless client pada saat proses authentikasi.
Tabel 3.6 radreply
Field Type Null Default
Id Int(11) No
UserName varchar(64) No
Attribute varchar(32) No
Op Char(2) No =
Value varchar(253) No
Tabel radreply berfungsi untuk me-reply message terhadap seorang user
wireless client.
Tabel 3.7 usergroup
Field Type Null Default
UserName varchar(64) No
GroupName varchar(64) No
Priority Int(11) No 1
Tabel usergroup berfungsi untuk menyimpan data – data user yang
tergabung ke dalam suatu groupname.
Tabel 3.8 nas
Field Type Null Default
id Int(10) No
nasname varchar(128) No
36
shortname varchar(32) Yes Null
type varchar(30) Yes Other
ports Int(5) Yes Null
secret varchar(60) No secret
community varchar(50) Yes Null
description varchar(200) Yes RADIUS Client
Tabel nas digunakan untuk menyimpan data – data RADIUS client
(wireless router) yang terhubung ke RADIUS server.
Tabel 3.9 operators
Field Type Null Default
id Int(11) No
username Varchar(32) Yes Null
password Varchar(32) Yes Null
Tabel operators merupakan tabel tambahan untuk mendukung dalam
pembuatan sistemnya yang berbasis web.
III.2.3. Perancangan Antarmuka
Perancangan antarmuka untuk Administrator bertujuan untuk pemasukkan
data user dan meng-update data yang khusus digunakan oleh administrator.
Halaman-halaman yang digunakan sebagai berikut:
• Halaman Login
37
Halaman yang pertama kali ditampilkan pada saat sistem dijalankan oleh
administrator. Pada halaman ini, Administrator harus memasukkan user name dan
password terlebih dahulu.
RADIUS WEB MANAGEMENT SERVER
User name :
Password :
Login Administrator
Login Reset
Gambar 3.3 Halaman login
• Halaman Menu Utama
Halaman awal dari menu Administrator yang berisi sub-sub menu antara lain:
Home, Management User dan Graphs (laporan berbentuk grafik).
RADIUS WEB MANAGEMENT SERVER
Menu Utama
Logout
WELCOME
Home
Graph
Management User
Gambar 3.4 Halaman Menu Utama
• Halaman Home
Halaman Home yang berisi sub-sub menu antara lain: server status, radius status,
last connection attempts.
38
RADIUS WEB MANAGEMENT SERVER
Home
Logout
WELCOME
Server status
Last connection
attempts
Radius status
Gambar 3.5 Halaman home
• Halaman Management User
Halaman Management User yang berisi sub-sub menu antara lain: list users, new
user, edit user.
RADIUS WEB MANAGEMENT SERVER
Management User
Logout
List Users
Edit User
New User
Gambar 3.6 Halaman Management User
• Halaman Graphs
Halaman Graphs ini untuk menampilkan laporan dalam bentuk grafik yang berisi
sub-sub menu antara lain: overall login/hits, overall download, overall upload.
39
RADIUS WEB MANAGEMENT SERVER
Graphs
Logout
Overall login
Overall upload
Overall download
Gambar 3.7 Halaman Graphs
40
BAB IV
IMPLEMENTASI
Pada bab ini berisi implementasi sistem berdasarkan analisa dan rancangan
sistem yang telah dibuat pada bab – bab sebelumnya. Berikut tahap-tahap
implementasi.
IV.1. Lingkungan Implementasi
Lingkungan implementasi pada Sistem Administrasi User Hotspot
Berbasis Web ini meliputi lingkungan perangkat keras dan lingkungan perangkat
lunak.
IV.1.1. Lingkungan Perangkat Keras
Lingkungan perangkat keras yang digunakan dalam penelitian ini meliputi :
a. Sebuah PC yang telah terpasang minimal sebuah NIC.
b. Access Point yang digunakan disini adalah Linksys WRT 4GS
c. Sebuah Laptop dengan teknologi wireless 802.11b.
IV.1.1. Lingkungan Perangkat Lunak
Lingkungan perangkat lunak yang digunakan dalam penelitian ini
meliputi :
a. Sistem Operasi : Slackware Linux 10.2
b. Pengelolaan Basis Data : MySQL versi 4.1.14
c. Piranti Pemrograman : PHP 4.4.7
d. Authentication Server : FreeRADIUS 1.1.0
41
IV.2. Instalasi dan Konfigurasi Web Server
Melakukan instalasi Web Server tergolong mudah karena hanya
menggunakan beberapa langkah saja. Sebagai berikut ini :
• Sebelum melakukan instalasi tentunya kita sudah harus memiliki source
code atau kode sumbernya terlebih dahulu. Apabila belum memilikinya,
kita bisa men-download Web Server Apache pada alamat
http://httpd.apache.org/download.cgi
/usr/local/src
# gzip –d httpd-2.x.xx.tar.gz
# tar xvf httpd-2.x.xx.tar
• Source code yang telah didapatkan diletakkan pada direktori berikut
• Lakukan dekompresi atau mengekstrasi file sumbernya. Kita dapat
melakukannya dengan menjalankan perintah berikut :
• Ganti xx dengan angka minor sesuai versi kode sumber yang kita
download, misalnya httpd-2.0.53. Dengan melakukan ekstrasi file kode
sumber, maka kemudian akan terbentuk sebuah direktori httpd-2.0.53
dengan banyak file di dalamnya berpindah ke dalam direktori tersebut.
# ./configure –prefix=PREFIX
• Lakukan konfigurasi sumber tree-nya sesuai dengan kondisi default yakni
cukup dengan menjalankan skrip configure yang terdapat pada direktori
yang telah terbentuk sebelumnya dengan menggunakan perintah sebagai
berikut :
• Hal yang terpenting adalah pada bagian PREFIX, kita harus menggantinya
dengan nama direktori tempat Apache ingin diletakkan. Secara default
42
# ./configure –prefix=/usr/local/apache
# ./configure –prefix=/usr/local/apache –-enable-
module=so
# make
# make install
biasanya Apache diletakkan pada direktori /usr/local/apache kemudian kita
bisa mengetikkan perintah berikut :
• Tentukan fitur apa saja yang ingin dimasukkan dalam Apache dengan
membuat enable atau disable suatu modul. Kita dapat memilih untuk
mengompilasi modul sebagai shared object (DSOs) yang akan dipanggil
untuk dieksekusi ketika dibutuhkan. Secara lengkapnya kita dapat
melakukannya dengan menggunakan perintah berikut :
• Kita juga dapat membangun berbagai macam bagian yang dibutuhkan
Apache. Kita dapat melakukannya dengan mudah, yakni cukup
mengetikkan perintah berikut :
Proses ini akan memakan waktu yang cukup lama sesuai dengan kecepatan
dan kemampuan komputer yang kita miliki, jadi kita harus sedikit bersabar
untuk menunggu sampai semua proses selesai dilaksanakan.
• Langkah terakhir, instalasi paket Apache dan diletakkan pada direktori
seperti yang tertulis pada bagian PREFIX di atas. Anda dapat
melakukannya dengan menggunakan perintah berikut :
• Sekarang kita sudah memiliki sebuah Web Server Apache dalam komputer
kita. Untuk melakukan pengecekan apakah Apache sudah dapat berjalan # /usr/local/apache/bin/apachectl start
43
• sesuai keinginan, maka jalankan terlebih dahulu Apache dengan
mengetikkan perintah berikut :
# lynx http://localhost
• Setelah kita memastikan bahwa Web Server Apache telah berjalan,
sekarang buka browser yang dimiliki, baik grafis maupun teks (lynx)
kemudian ketikkan alamat berikut :
• Setelah muncul tampilan test page, maka Anda berhasil menginstalasi,
karena satu tahap telah terselesaikan
Gambar 4.1 Test apache dengan browser
• Perintah yang dapat digunakan untuk menghentikan Web Server Apache
adalah sebagai berikut:
# /usr/local/apache/bin/apachectl stop
44
• Kita juga bisa menggunakan perintah restart untuk menghentikan dan
menjalankannya kembali.
# /usr/local/apache/bin/apachectl restart
IV.2.1. Mengonfigurasi PHP
Dalam melakukan konfigurasi PHP, ikuti petunjuk berikut ini :
• Sebelum melakukan konfigurasi tentunya kita juga harus memiliki kode
sumbernya terlebih dahulu dengan men-download-nya di
http://www.php.net/downloads.php
• Pindahkan file sumbernya ke dalam direktori /usr/local/src dengan
menggunakan perintah berikut : # cp php-4.4.7.tar.gz /usr/local/src
• Lakukan dekompresi atau mengekstrasi file sumbernya, dengan
menjalankan perintah sebagai berikut ini : # tar xzvf php-4.4.7.tar.gz
• Pindahlah pada direktori PHP yang muncul setelah proses ekstraksi
terselesaikan dengan menggunakan perintah seperti berikut :
# cd php-4.4.7
• Lakukan konfigurasi dengan mengaktifkan beberapa parameter yang
dibutuhkan. Kita bisa melakukannya dengan mengetikkan perintah sebagai
berikut :
45
# ./configure --prefix=/usr/local --enable-discard-
path --disable-force-cgi-redirect --enable-shared --
disable-static --disable-debug --disable-rpath --
enable-pic --enable-inline-optimization --enable-
memory-limit --with-config-file-path=/etc --with-
config-file-scan-dir=/etc/php --with-
pear=/usr/share/pear --enable-magic-quotes --enable-
debugger --enable-track-vars --with-exec-
dir=/usr/bin --with-versioning --with-mod_charset --
with-regex=php --enable-track-vars --enable-trans-
sid --enable-safe-mode --enable-ctype --enable-ftp -
-with-gettext=/usr --enable-posix --enable-session -
-enable-sysvsem --enable-sysvshm --with-openssl=/usr
--without-kerberos --with-ttf --with-freetype-
dir=/usr --with-zlib=/usr --with-zlib=/usr --with-
zlib-dir=/usr --with-apxs=/usr/sbin/apxs --with-gd -
-with-png-dir --with-jpeg-dir --with-zlib-dir --
with-tiff-dir --with-mysql-
sock=/var/run/mysql/mysql.sock --with-mysql=/usr --
enable-mbstring=all
Penjelasan keterangan script yang diatas :
1. PHP akan diinstall di /usr/local (--prefix=/usr/local).
2. Mengaktifkan shared library dan disabled static library (--
enable-shared --disable-static).
3. Menonaktifkan debugging (--disable-debug).
4. Menggunakan inline optimization dan limit memory yang
digunakann untuk kompilasi (--enable-inline-optimization
--enable-memory-limit).
46
5. File yang terkonfigurasi akan diletakan di /etc (--with-config-
file-path=/etc).
6. Menggunkan PEAR yang akan diletakan di /usr/share/pear (--
with-pear=/usr/share/pear).
7. Mengaktifkan Magic Quotes (--enable-magic-quotes).
8. Menggunakan PHP's Regex engine (--with-regex=php).
9. Mengaktikan Safe Mode, FTP, Session, dan OpenSSL support (-
-enable-safe-mode --enable-ftp --enable-session --
with-openssl=/usr).
10. Mengaktifkan GD dan dikonfigurasi untuk mendukung JPEG,
TIFF, Freetype fonts and PNG (--with-gd --with-png-dir -
-with-freetype-dir=/usr --with-jpeg-dir --with-tiff-
dir).
11. Mengaktifkan Zlib support utnuk kompresi (--with-zlib-dir).
12. Mengaktifkan MBString support. Dengan tujuan
untukmendukung multi charachter set dalam MySQL and
PHPMyAdmin (--enable-mbstring=all).
13. Perintah ini sangat berguna bila kita menggunakan MySQL 4.1
dan versi diatasnya karena PHP's default MySQL client library
tidak bisa digunakan untuk menghubungkan MySQL 4.1 dan
versi diatasnya lagi. (--with-mysql-
sock=/var/run/mysql/mysql.sock --with-mysql=/usr)
• Jika tidak ada pesan error yang muncul, lalu kita memulai kompilasi
dengan mengeksekusi perintah berikut ini :
47
# make
• Setelah proses kompilasi selesai tanpa ada pesan error yang muncul, kita
bisa memulai install dengan mengeksekusi perintah berikut ini : # make install
• Setelah prose instalasi selesai, kita lanjutkan dengan mengkonfigurasi file
Apache (httpd.conf) yang terdapat pada direktori
/usr/local/apache/httpd.conf, hilangkan tanda # di depan baris berikut ini : LoadModule php4 module libexec/php4.so
AddModule mod_php4.c
DirectoryIndex index.html index.php index.phtml
• Jika tanda # ternyata sudah tidak ada, berarti kita tidak perlu lagi untuk
mengubahnya, sementara kalau kita tidak menemukan baris tersebut, maka
kita perlu untuk mengetikkan seperti pada contoh diatas. Selain itu, Anda
akan perlu mengetikkan baris berikut :
AddType application/x-httpd-php .php .phtml
AddType application/x-httpd-php-source .phps
• Langkah terakhir, salin file inisialisasi untuk PHP dengan menggunakan
perintah seperti berikut :
cp /usr/local/src/php-4.4.7/php.ini-dist
/usr/local/apache/conf/php.ini
Atau
# cp /usr/local/src/php-4.4.7/php.ini-recommended
/usr/local/apache/conf/php.ini
• PHP telah terinstalasi ke dalam komputer. Sekarang kita melakukan
pengecekan terlebih dahulu dengan menggunakan perintah berikut :
# vi /usr/local/apache/htdocs/tes.php
48
Kemudian ketikkan beberapa baris skrip seperti berikut :
<?
phpinfo();
?>
• Jalankan pada browser pada alamat http://localhost/tes.php
Gambar 4. 2 Test php dengan browser
IV.3. Instalasi MySQL Database Server
49
Setelah kita meng-instal Slackware Linux 10.2 termasuk paket instalasi
MySQL, MySQL biasanya belum siap untuk dijalankan. Jadi kita perlu
melakukan beberapa langkah berikut ini :
• Pertama kita perlu meng-copy-kan file konfigurasi MySQL ke direktori
/etc. seperti perintah dibawah ini :
# cp /etc/my-medium.cnf /etc/my.cnf
• Sebelum kita bisa menjalan MySQL, tabel privilage MySQL yang baru
harus dibuat terdahulu. MySQL biasanya dijalankan oleh user MySQL,
jadi ganti usernya dulu ke mysql dan jalankan skrip mysql_install_db.
Seperti berikut :
root@drakstar:~# su mysql
mysql@drakstar:~# mysql_install_db
Installing all prepared tables
Fill help tables
....
• Jika mysql_install_db masih belum bisa dijalankan sebagai user mysql,
maka perlu men-verifikasi ijin dan pemilik direktori dengan menjalankan
perintah sebagai berikut ini :
mysql@drakstar:~$ ls -ld /var/lib/mysql
drwxr-x--- 4 mysql mysql 4096 2007-06-21 11:23
/var/lib/mysql/
• Setelah instalasi MySQL selesai, kita bisa menjalankan database server
MySQL dengan perintah sebagai berikut ini :
# /etc/rc.d/rc.mysqld start
50
• Untuk mengecek apakah MySQL yang sudah terinstal dapat dijalankan
dengan baik, gunakan perintah sebagai berikut ini :
# mysqladmin -u root status
Tampilan yang muncul :
Uptime: 39 Threads: 1 Questions: 1 Slow queries: 0
Opens: 12 Flush tables: 1 Open tables: 6 Queries per
second avg: 0.026
Atau juga bisa dengan perintah :
# mysqladmin version
Tampilan yang muncul :
# mysqladmin version
mysqladmin Ver 8.41 Distrib 4.1.14, for slackware-linux-gnu on i486
Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB
This software comes with ABSOLUTELY NO WARRANTY. This is free
software,
and you are welcome to modify and redistribute it under the GPL
license
Server version: 4.1.14-log
Protocol version: 10
Connection: Localhost via UNIX socket
UNIX socket: /var/run/mysql/mysql.sock
Uptime: 1 min 48 sec
IV.4. Instalasi dan Konfigurasi RADIUS Server
51
RADIUS yang dapat dipakai ada banyak, diantaranya Freeradius, GNU
Radius, JRadius, Open Radius, IAS, RadiusNT dan RadiusX, dan banyak lagi.
Pada implementasi ini dipakai freeradius untuk back-end authentication server-
nya. Tahap-tahap menginstalasi freeradius, sebagai berikut ini:
• Untuk source code freeradius dapat didownload di
http://www.freeradius.org.
• Untuk mengkompile freeradius seperti biasa dengan perintah :
# ./ configure
# make
# make install
root@darkstar:~# radiusd –X
• Setelah selesai dan tidak ada error, maka akan dihasilkan distribusi yang
akan diinstall ke direktori /usr/local/ yakni di direktori /usr/local/bin dan
/usr/local/sbin.Dan file konfigurasinya terdapat direktori
/usr/local/etc/raddb. Sebelum mengkonfigurasi, coba jalankan perintah
berikut :
Maka akan muncul tampilan sebagai berikut ini:
Starting -reading configuration files ...
reread_config: reading radiusd.conf
Config: including file:
/usr/local/etc/raddb/proxy.conf
Config: including file:
/usr/local/etc/raddb/clients.conf
Config: including file:
/usr/local/etc/raddb/snmp.conf
52
Config: including file: /usr/local/etc/raddb/eap.conf
Config: including file: /usr/local/etc/raddb/sql.conf
.
.
.
Module: Loaded radutmp
radutmp: filename =
"/usr/local/var/log/radius/radutmp"
radutmp: username = "%{User-Name}"
radutmp: case_sensitive = yes
radutmp: check_with_nas = yes
radutmp: perm = 384
radutmp: callerid = yes
Module: Instantiated radutmp (radutmp)
Listening on authentication *:1812
Listening on accounting *:1813
Ready to process requests.
IV.4.1. Instalasi Skema FreeRADIUS
Setelah kita telah selesai meng-instalasi MySQL database server, kita
menjalankannya dengan perintah, sebagai berikut ini:
root@darkstar:~# /etc/rc.d/rc.mysqld start
Dan tahap selanjutnya, seperti dibawah ini:
• Buat password MySQL untuk super user :
root@drakstar:~# /usr/bin/mysqladmin –u root password
rahasia
• Menjalankan MySQL dan buat database baru yang bernama radius
53
root@darkstar:~# mysql –u root –p rahasia
mysql> create database radius
mysql> exit
• Meng-install skema FreeRadius MySQL ke database radius didalam
MySQL
root@darkstar:~# mysql –u root –p rahasia radius <
/usr/local/src/freeradius-
1.1.6/modules/rlm_sql/drivers/rlm_sql_mysql/db_mysql.sql
• Sekarang sudah ada beberapa tabel didalam MySQL database radius
root@megaphone:~# mysql -u root -p mysql> use radius; Database changed mysql> show tables; +----------------------+ | Tables_in_radius | +----------------------+ | radacct | | radcheck | | radgroupcheck | | radgroupreply | | radpostauth | | radreply | | usergroup | +----------------------+ 7 rows in set (0.00 sec)
IV.4.2. Konfigurasi FreeRADIUS
54
Untuk konfigurasi freeradius server, maka ada tiga file yang perlu diedit
yaitu sql.conf, client.conf, dan radiusd.conf.Berikut merupakan isi dari masing-
masing file konfigurasi.
File sql.conf
sql { driver = "rlm_sql_mysql" # Connect info server = "localhost" login = "root" password = "" # Database table configuration radius_db = "radius" acct_table1 = "radacct" acct_table2 = "radacct" # Allow for storing data after authentication postauth_table = "radpostauth" authcheck_table = "radcheck" authreply_table = "radreply" groupcheck_table = "radgroupcheck" groupreply_table = "radgroupreply" usergroup_table = "usergroup" # Table to keep radius client info nas_table = "nas" # Remove stale session if checkrad does not see a double login deletestalesessions = yes # Print all SQL statements when in debug mode (-x) sqltrace = no sqltracefile = ${logdir}/sqltrace.sql # number of sql connections to make to server num_sql_socks = 5 # number of seconds to dely retrying on a failed database # connection (per_socket) connect_failure_retry_delay = 60 sql_user_name = "%{User-Name}" authorize_check_query = "SELECT id, UserName, Attribute, Value, op \ FROM ${authcheck_table} \ WHERE Username = '%{SQL-User-Name}' \ ORDER BY id" authorize_reply_query = "SELECT id, UserName, Attribute, Value, op \ FROM ${authreply_table} \ WHERE Username = '%{SQL-User-Name}' \ ORDER BY id" authorize_group_check_query = "SELECT ${groupcheck_table}.id,${groupcheck_table}.GroupName,${groupcheck_table}.Attribute,${groupcheck_table}.Value,${groupcheck_table}.op FROM ${groupcheck_table},${usergroup_table} WHERE ${usergroup_table}.Username = '%{SQL-
55
User-Name}' AND ${usergroup_table}.GroupName = ${groupcheck_table}.GroupName ORDER BY ${groupcheck_table}.id" authorize_group_reply_query = "SELECT ${groupreply_table}.id,${groupreply_table}.GroupName,${groupreply_table}.Attribute,${groupreply_table}.Value,${groupreply_table}.op FROM ${groupreply_table},${usergroup_table} WHERE ${usergroup_table}.Username = '%{SQL-User-Name}' AND ${usergroup_table}.GroupName = ${groupreply_table}.GroupName ORDER BY ${groupreply_table}.id" accounting_onoff_query = "UPDATE ${acct_table1} SET AcctStopTime='%S', AcctSessionTime=unix_timestamp('%S') - unix_timestamp(AcctStartTime), AcctTerminateCause='%{Acct-Terminate-Cause}', AcctStopDelay = '%{Acct-Delay-Time}' WHERE AcctSessionTime=0 AND AcctStopTime=0 AND NASIPAddress= '%{NAS-IP-Address}' AND AcctStartTime <= '%S'" accounting_update_query = "UPDATE ${acct_table1} \ SET FramedIPAddress = '%{Framed-IP-Address}', \ AcctSessionTime = '%{Acct-Session-Time}', \ AcctInputOctets = '%{Acct-Input-Octets}', \ AcctOutputOctets = '%{Acct-Output-Octets}' \ WHERE AcctSessionId = '%{Acct-Session-Id}' \ AND UserName = '%{SQL-User-Name}' \ AND NASIPAddress= '%{NAS-IP-Address}'" accounting_update_query_alt = "INSERT into ${acct_table1} (AcctSessionId, AcctUniqueId, UserName, Realm, NASIPAddress, NASPortId, NASPortType, AcctStartTime, AcctSessionTime, AcctAuthentic, ConnectInfo_start, AcctInputOctets, AcctOutputOctets, CalledStationId, CallingStationId, ServiceType, FramedProtocol, FramedIPAddress, AcctStartDelay) values('%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}', '%{SQL-User-Name}', '%{Realm}', '%{NAS-IP-Address}', '%{NAS-Port}', '%{NAS-Port-Type}', DATE_SUB('%S',INTERVAL (%{Acct-Session-Time:-0} + %{Acct-Delay-Time:-0}) SECOND), '%{Acct-Session-Time}', '%{Acct-Authentic}', '', '%{Acct-Input-Octets}', '%{Acct-Output-Octets}', '%{Called-Station-Id}', '%{Calling-Station-Id}', '%{Service-Type}', '%{Framed-Protocol}', '%{Framed-IP-Address}', '0')" accounting_start_query = "INSERT into ${acct_table1} (AcctSessionId, AcctUniqueId, UserName, Realm, NASIPAddress, NASPortId, NASPortType, AcctStartTime, AcctStopTime, AcctSessionTime, AcctAuthentic, ConnectInfo_start, ConnectInfo_stop, AcctInputOctets, AcctOutputOctets, CalledStationId, CallingStationId, AcctTerminateCause, ServiceType, FramedProtocol, FramedIPAddress, AcctStartDelay, AcctStopDelay) values('%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}', '%{SQL-User-Name}', '%{Realm}', '%{NAS-IP-Address}', '%{NAS-Port}', '%{NAS-Port-Type}', '%S', '0', '0', '%{Acct-Authentic}', '%{Connect-Info}', '', '0', '0', '%{Called-Station-Id}', '%{Calling-Station-Id}', '', '%{Service-Type}', '%{Framed-Protocol}', '%{Framed-IP-Address}', '%{Acct-Delay-Time}', '0')" accounting_start_query_alt = "UPDATE ${acct_table1} SET AcctStartTime = '%S', AcctStartDelay = '%{Acct-Delay-Time}', ConnectInfo_start = '%{Connect-Info}' WHERE AcctSessionId = '%{Acct-Session-Id}' AND UserName = '%{SQL-User-Name}' AND NASIPAddress = '%{NAS-IP-Address}'" accounting_stop_query = "UPDATE ${acct_table2} SET AcctStopTime = '%S', AcctSessionTime = '%{Acct-Session-Time}', AcctInputOctets = '%{Acct-Input-Octets}', AcctOutputOctets = '%{Acct-Output-Octets}', AcctTerminateCause = '%{Acct-Terminate-Cause}', AcctStopDelay = '%{Acct-Delay-Time}', ConnectInfo_stop = '%{Connect-Info}' WHERE AcctSessionId = '%{Acct-Session-Id}' AND UserName = '%{SQL-User-Name}' AND NASIPAddress = '%{NAS-IP-Address}'" accounting_stop_query_alt = "INSERT into ${acct_table2} (AcctSessionId, AcctUniqueId, UserName, Realm, NASIPAddress, NASPortId, NASPortType, AcctStartTime, AcctStopTime, AcctSessionTime, AcctAuthentic, ConnectInfo_start, ConnectInfo_stop, AcctInputOctets, AcctOutputOctets, CalledStationId, CallingStationId, AcctTerminateCause, ServiceType, FramedProtocol, FramedIPAddress, AcctStartDelay, AcctStopDelay) values('%{Acct-Session-Id}', '%{Acct-Unique-Session-Id}', '%{SQL-User-Name}', '%{Realm}', '%{NAS-IP-Address}', '%{NAS-Port}', '%{NAS-Port-Type}', DATE_SUB('%S', INTERVAL (%{Acct-Session-Time:-0} + %{Acct-Delay-Time:-0}) SECOND), '%S', '%{Acct-Session-Time}', '%{Acct-Authentic}', '', '%{Connect-Info}', '%{Acct-Input-Octets}', '%{Acct-Output-
56
Octets}', '%{Called-Station-Id}', '%{Calling-Station-Id}', '%{Acct-Terminate-Cause}', '%{Service-Type}', '%{Framed-Protocol}', '%{Framed-IP-Address}', '0', '%{Acct-Delay-Time}')" # Uncomment simul_count_query to enable simultaneous use checking # simul_count_query = "SELECT COUNT(*) FROM ${acct_table1} WHERE UserName='%{SQL-User-Name}' AND AcctStopTime = 0" simul_verify_query = "SELECT RadAcctId, AcctSessionId, UserName, NASIPAddress, NASPortId, FramedIPAddress, CallingStationId, FramedProtocol FROM ${acct_table1} WHERE UserName='%{SQL-User-Name}' AND AcctStopTime = 0" group_membership_query = "SELECT GroupName FROM ${usergroup_table} WHERE UserName='%{SQL-User-Name}'" postauth_query = "INSERT into ${postauth_table} (id, user, pass, reply, date) values ('', '%{User-Name}', '%{User-Password:-Chap-Password}', '%{reply:Packet-Type}', NOW())" # # Set to 'yes' to read radius clients from the database ('nas' table) # readclients = yes }
File clients.conf
client 127.0.0.1 { secret = testing123 shortname = localhost nastype = other # localhost isn't usually a NAS... } # Test of radius server with the access point Linksys WRT54GS client 192.168.1.0/24 { secret = 123456 shortname = linksys nastype = other }
File radiusd.conf
# radiusd.conf # configuration of this RADIUS server prefix = /usr/local exec_prefix = ${prefix} sysconfdir = /etc localstatedir = /var sbindir = ${exec_prefix}/sbin logdir = ${localstatedir}/log/radius raddbdir = ${sysconfdir}/raddb radacctdir = ${logdir}/radacct # Location of config and logfiles. confdir = ${raddbdir} run_dir = ${localstatedir}/run/radiusd log_file = ${logdir}/radius.log #Libraries, modules, etc libdir = ${exec_prefix}/lib #The pid file pidfile = ${run_dir}/radiusd.pid
57
# User/group config of the RADIUS server user = radiusd group = radiusd # Request handling max_request_time = 60 delete_blocked_requests = no cleanup_delay = 6 max_requests = 1024 # bind_address: we need only listen on the wireless subnet bind_address = * port = 0 hostname_lookups = no # How the server conduct itself allow_core_dumps = no regular_expressions = yes extended_expressions = yes # Logging behavior log_stripped_names = no log_auth = no log_auth_badpass = no log_auth_goodpass = no # User handling usercollide = no lower_user = after lower_pass = no nospace_user = after nospace_pass = before # RADIUS Checker. checkrad = ${sbindir}/checkrad # SECURITY CONFIGURATION security { max_attributes = 200 reject_delay = 1 status_server = no } # Don't proxy requests proxy_requests = no #$INCLUDE ${confdir}/proxy.conf # Include the client here. $INCLUDE ${confdir}/clients.conf # Don't use SNMP snmp = no #$INCLUDE ${confdir}/snmp.conf # Thread-pooling thread pool { start_servers = 2 max_servers = 10 min_spare_servers = 3 max_spare_servers = 10 max_requests_per_server = 0 }
58
# MODULE CONFIGURATION modules { pap { encryption_scheme = crypt } unix { cache = no cache_reload = 600 passwd = /etc/passwd shadow = /etc/shadow group = /etc/group radwtmp = ${logdir}/radwtmp } mschap { authtype = MS-CHAP } ldap { server = "ldap.your.domain" basedn = "o=My Org,c=UA" filter = "(uid=%{Stripped-User-Name:-%{User-Name}})" access_attr = "dialupAccess" } realm IPASS { format = prefix delimiter = "/" ignore_default = no ignore_null = no } realm suffix { format = suffix delimiter = "@" ignore_default = no ignore_null = no } realm realmpercent { format = suffix delimiter = "%" ignore_default = no ignore_null = no } realm ntdomain { format = prefix delimiter = "\\" ignore_default = no ignore_null = no } checkval { # The attribute to look for in the request item-name = Calling-Station-Id # The attribute to look for in check items. Can be multi valued check-name = Calling-Station-Id # The data type. Can be # string,integer,ipaddr,date,abinary,octets data-type = string
59
# If set to yes and we dont find the item-name attribute in the # request then we send back a reject # DEFAULT is no #notfound-reject = no } preprocess { huntgroups = ${confdir}/huntgroups hints = ${confdir}/hints with_ascend_hack = no ascend_channels_per_line = 23 with_ntdomain_hack = no with_specialix_jetstream_hack = no with_cisco_vsa_hack = no } files { usersfile = ${confdir}/users acctusersfile = ${confdir}/acct_users preproxy_usersfile = ${confdir}/preproxy_users compat = no } detail { detailfile = ${radacctdir}/%{Client-IP-Address}/detail-%Y%m%d detailperm = 0600 } acct_unique { key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port" } $INCLUDE ${confdir}/sql.conf radutmp { filename = ${logdir}/radutmp username = %{User-Name} case_sensitive = yes check_with_nas = yes perm = 0600 callerid = "yes" } radutmp sradutmp { filename = ${logdir}/sradutmp perm = 0644 callerid = "no" } attr_filter { attrsfile = ${confdir}/attrs
60
} counter daily { filename = ${raddbdir}/db.daily key = User-Name count-attribute = Acct-Session-Time reset = daily counter-name = Daily-Session-Time check-name = Max-Daily-Session allowed-servicetype = Framed-User cache-size = 5000 } sqlcounter dailycounter { counter-name = Daily-Session-Time check-name = Max-Daily-Session sqlmod-inst = sql key = User-Name reset = daily query = "SELECT SUM(AcctSessionTime - \ GREATEST((%b - UNIX_TIMESTAMP(AcctStartTime)), 0)) \ FROM radacct WHERE UserName='%{%k}' AND \ UNIX_TIMESTAMP(AcctStartTime) + AcctSessionTime > '%b'" } sqlcounter monthlycounter { counter-name = Monthly-Session-Time check-name = Max-Monthly-Session sqlmod-inst = sql key = User-Name reset = monthly query = "SELECT SUM(AcctSessionTime - \ GREATEST((%b - UNIX_TIMESTAMP(AcctStartTime)), 0)) \ FROM radacct WHERE UserName='%{%k}' AND \ UNIX_TIMESTAMP(AcctStartTime) + AcctSessionTime > '%b'" } always fail { rcode = fail } always reject { rcode = reject } always ok { rcode = ok simulcount = 0 mpp = no } expr { } digest { } exec { wait = yes input_pairs = request } exec echo { wait = yes program = "/bin/echo %{User-Name}" input_pairs = request
61
output_pairs = reply } ippool main_pool { # range-start,range-stop: The start and end ip # addresses for the ip pool range-start = 192.168.1.1 range-stop = 192.168.3.254 # netmask: The network mask used for the ip's netmask = 255.255.255.0 # cache-size: The gdbm cache size for the db # files. Should be equal to the number of ip's # available in the ip pool cache-size = 800 # session-db: The main db file used to allocate ip's to clients session-db = ${raddbdir}/db.ippool # ip-index: Helper db index file used in multilink ip-index = ${raddbdir}/db.ipindex # override: Will this ippool override a Framed-IP-Address already set override = no # maximum-timeout: If not zero specifies the maximum time in seconds an # entry may be active. Default: 0 maximum-timeout = 0 } # OTP token support. Not included by default. # $INCLUDE ${confdir}/otp.conf } instantiate { exec expr } authorize { preprocess suffix sql } authenticate { Auth-Type PAP { pap } } preacct { preprocess suffix } accounting {
62
detail unix sql radutmp } session { radutmp sql } post-auth { } pre-proxy { } post-proxy { }
IV.5. Konfigurasi Access Point
Pada tugas akhir ini menggunakan Linksys WRT54GS Wireless-G
Broadband Router. Perlu dicatat bahwa AP Linksys ini adalah router.
Sebagai sebuah router mempunyai banyak fasilitas, seperti kemampuan
routing, firewall, DCHP. Pada dasarnya kita dapat mengganti sebagian besar
fungsi gateway linux dengan sebuah Linksys ini.
Linksys WRT54GS dapat dikonfigurasi melalui interface web dengan
alamat default 192.168.1.1 (jika tidak diubah).
Gambar 4.3 halaman setup page
63
Halaman ini adalah setup page. Melalui setup page ini kita dapat
mengkonfigurasi time zone, konfigurasi internet connection, konfigurasi LAN,
dan konfigurasi wireless.
Untuk konfigurasi wireless, masuk ke menu basic wireless setting. Karena
pada tugas akhir ini menggunakan WLAN 802.11b, maka setting-an minimalnya:
• Wireless Network Node : B-Only
• Wireless Network Name (SSID) : usd
• Wireless channel : 1-2.412 Ghz
Gambar 4.4 Basic wireless setting
Selanjutnya pindah ke menu wireless security, untuk mengubah metode
autentikasi access point menggunakan radius. Dalam tugas akhir ini, IP radius
server adalah 192.168.1.2, radius port 1812, dan shared key 123456.
64
Gambar 4.5 wireless security
IV.6. Pembuatan Aplikasi RADIUS Manajemen Server Berbasis Web
Dalam Tahap ini akan diuraikan pembuatan aplikasi RADIUS Manajemen
Server Berbasis Web, yaitu sebuah interface administrasi user berbasis web
dengan menggunkan bahasa pemrograman PHP.
IV.6.1. Halaman Tampilan Pertama / Login
Gambar 4.6 halaman login
Halaman pertama yang muncul jika ingin mengakses aplikasi ini adalah halaman
login. Sintak PHP sebagai berikut:
65
<?php $error = $_REQUEST['error']; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title>Radius Admin</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <link rel="stylesheet" href="css/1.css" type="text/css" media="screen,projection" /> </head> <body> <?php include_once ("lang/main.php"); ?> <div id="wrapper"> <div id="innerwrapper"> <div id="header"> <h1><a href="index.php"><? echo $l[all][daloRADIUS]; ?></a></h1> <h2> <?echo $l[all][copyright1]; ?> </h2> <br/> <ul id="subnav"> <li><? echo $l[all][daloRADIUS]." ".$l[captions][loginpage]?></li> </ul> </div> <div id="sidebar"> <h2><? echo $l[captions][loginrequired]; ?></h2> <h3><? echo $l[captions][loginplease]; ?></h3> <form action="dologin.php" class="sidebar" method="post" > <label><font color="White">Username</font></label> <input name="operator_user" value="" type="text" /> <label><font color="White">Password</font></label> <input name="operator_pass" value="" type="password"/> <br/><br/> <input type="submit" value="Login"/> </form> </div> <div id="contentnorightbar"> <h2 id="Intro"><a href="#"></a></h2>
66
<p> <?php if ($error) { echo $error; echo $l[messages][loginerror]; } ?> </p> </div> <div id="footer"> <?php include 'page-footer.php'; ?> </div> </div> </div> </body> </html>
IV.6.2. Halaman Tampilan Menu Utama
Gambar 4.7 halaman Menu Utama
Halaman Menu Utama ini menampilkan 3 menu yaitu Home, Management, dan
Graphs. Serta juga menampilkan 3 buah submenu yaitu Server status, Radius
status dan Last Connection Attempts. Sintak PHP sebagai berikut:
67
<?php include ("library/checklogin.php"); $operator = $_SESSION['operator_user']; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title>Radius Admin</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <link rel="stylesheet" href="css/1.css" type="text/css" media="screen,projection" /> </head> <body> <?php include_once ("lang/main.php"); ?> <div id="wrapper"> <div id="innerwrapper"> <?php $m_active = "Home"; include_once ("include/menu/menu-items.php"); include_once ("include/menu/home-subnav.php"); ?> <div id="sidebar"> <h2>Home</h2> <h3>Status</h3> <ul class="subnav"> <li><a href="index-server-stat.php"><b>»</b>Server Status</a></li> <li><a href="index-radius-stat.php"><b>»</b>RADIUS Status </a></li> <li><a href="index-last-connect.php"><b>»</b>Last Connection Attempts</a></li> <h2>Search</h2> <input name="" type="text" value="Search" /> </div>
68
IV.6.3. Halaman Tampilan Server Status
Gambar 4.8 halaman server status
Halaman ini menampilkan informasi PC yang dijadikan server autentikasi. Sintak
PHP dilampirkan. Sintak PHP sebagai berikut:
<?php echo "<b> System Name: </b>"; echo "<br/>"; system("uname -a"); echo "<br/>"; echo "<br/>"; echo "<b> System Uptime: </b>"; echo "<br/>"; $ret = shell_exec("uptime"); echo $ret; echo "<br/>"; echo "<br/>"; echo "<b> CPU: </b>"; echo "<br/>"; $ret = shell_exec("cat /proc/cpuinfo | egrep \"vendor|model name|cpu MHz\""); $ret = eregi_replace("\n", "<br>", $ret); echo $ret; echo "<br/>"; echo "<br/>"; echo "<b> Memory:</b>"; echo "<br/>"; $ret = shell_exec("free -m"); $ret = eregi_replace("\n", "<br>", $ret); echo $ret; echo "<br/>"; echo "<br/>"; echo "<b> Disk Usage: </b>"; echo "<br/>"; $ret = shell_exec("df -h"); $ret = eregi_replace("\n", "<br>", $ret); echo $ret;
69
echo "<br/>"; echo "<br/>"; ?>
IV.6.4. Halaman Tampilan RADIUS Status
Gambar 4.9 halaman radius status
Halaman ini menampilkan informasi RADIUS server dan MySQL server
autentikasi. Sintak PHP sebagai berikut :
<?php system("netstat -tanlpu | grep -i mysql", $ret_mysql); system("netstat -tanlpu | grep -i radius", $ret_rad); if ($ret_rad) { echo "RADIUS is up <br/>"; } else { echo "RADIUS is down <br/>"; } if ($ret_mysql) { echo "MySQL is up <br/>"; } else { echo "MySQL is down <br/>"; } ?>
70
IV.6.5. Halaman Last 50 Connection Attempts
Gambar 4.10 halaman last 50 connection attempts
Halaman ini menampilkan informasi user dalam melakukan koneksi ke radius
server. Sintak PHP sebagai berikut :
<?php include 'opendb.php'; $sql = "SELECT user, pass, reply, date from radpostauth order by id desc limit 50;"; $res = mysql_query($sql) or die('Query failed: ' . mysql_error()); $array_users = array(); $array_pass = array(); $array_starttime = array(); $array_reply = array(); $count = 0; while($ent = mysql_fetch_array($res)) { $user = $ent[0]; $pass = $ent[1]; $starttime = $ent[3]; $reply = $ent[2]; array_push($array_users, "$user"); array_push($array_pass, "$pass"); array_push($array_starttime, "$starttime"); array_push($array_reply, "$reply"); $count++; } echo "<br/>"; echo "<table border='2' class='table1'>\n"; echo " <thead> <tr>
71
<th colspan='10'>Last 50 connection attempts</th> </tr> </thead> "; echo "<thread> <tr> <th scope='col'> Username</th> <th scope='col'> Password </th> <th scope='col'> Logged-In Time </th> <th scope='col'> RADIUS Reply Packet </th> </tr> </thread>"; $i = 0; while ($i != $count) { echo "<tr> <td> $array_users[$i] </td> <td> $array_pass[$i] </td> <td> $array_starttime[$i] </td> <td> $array_reply[$i] </td> </tr>"; $i++; } echo "</table>"; mysql_free_result($res); include 'closedb.php';
IV.6.6. Halaman Management User
Gambar 4.11 halaman management user
Halaman ini menampilkan informasi dan mengelola user. Sintak PHP sebagai
berikut :
<body> <?php include_once ("lang/main.php"); ?> <div id="wrapper"> <div id="innerwrapper">
72
<?php $m_active = "Management"; include_once ("include/menu/menu-items.php"); include_once ("include/menu/management-subnav.php"); ?> <div id="sidebar"> <h2>Management</h2> <h3>Users Management</h3> <ul class="subnav"> <li><a href="mng-list-all.php"><b>»</b>List Users</a></li> <li><a href="mng-new.php"><b>»</b>New User</a></li> <li><a href="javascript:document.mngedit.submit();""><b>»</b>Edit User<a> <form name="mngedit" action="mng-edit.php" method="get" class="sidebar"> <input name="username" type="text"> </form></li> <li><a href="mng-del.php"><b>»</b>Remove User</a></li> </ul> <h2>Search</h2> <input name="" type="text" value="Search" /> </div>
IV.6.7. Halaman List Users
Gambar 4.12 halaman list users
73
Halaman ini menampilkan informasi user yang telah terdaftar. Sintak PHP sebagai
berikut :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title>Radius Admin</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <link rel="stylesheet" href="css/1.css" type="text/css" media="screen,projection" /> <link rel="stylesheet" type="text/css" href="library/js_date/datechooser.css"> <!--[if lte IE 6.5]> <link rel="stylesheet" type="text/css" href="library/js_date/select-free.css"/> <![endif]--> </head> <?php include ("menu-mng-main.php"); ?> <div id="contentnorightbar"> <h2 id="Intro"><a href="#">Users Listing</a></h2> <p> Listings user in database<br/> </p> <?php include 'library/opendb.php'; $sql = "SELECT * FROM radcheck WHERE (Attribute='User-Password' or Attribute='Password')"; $res = mysql_query($sql) or die('Query failed: ' . mysql_error()); echo "<table border='2' class='table1'>\n"; echo " <thead> <tr> <th colspan='10'>Records</th> </tr> </thead> "; echo "<thread> <tr> <th scope='col'> Account ID </th> <th scope='col'> Username </th> <th scope='col'> Password </th> <th scope='col'> Action </th> </tr> </thread>"; while($nt = mysql_fetch_array($res)) { echo "<tr> <td> $nt[id] </td> <td> $nt[UserName] </td> <td> $nt[Value] </td> <td> <a href='mng-edit.php?username=$nt[UserName]'> edit </a> <a href='mng-del.php?username=$nt[UserName]'> del </a> </td> </tr>";
74
} echo "</table>"; mysql_free_result($res); include 'library/closedb.php'; ?> </div> <div id="footer"> <?php include 'page-footer.php'; ?> </div> </div> </div> </body> </html>
IV.6.8. Halaman New User
Gambar 4.13 halaman new user
Halaman ini untuk menambahkan user. Sintak PHP sebagai berikut ini :
<?php include ("library/checklogin.php"); $operator = $_SESSION['operator_user']; // declaring variables $username = ""; $password = ""; if (isset($_POST['submit'])) { $username = $_POST['username']; $password = $_POST['password'];
75
include 'library/opendb.php'; $sql = "SELECT * FROM radcheck WHERE UserName='$username'"; $res = mysql_query($sql) or die('Query failed: ' . mysql_error()); if (mysql_num_rows($res) == 0) { if (trim($username) != "" and trim($password) != "") { // insert username/password $sql = "insert into radcheck values (0, '$username', 'User-Password', '==', '$password')"; $res = mysql_query($sql) or die('Query failed: ' . mysql_error()); //echo "<font color='#0000FF'>success<br/></font>"; $msg = "Added new user <b> $username </b> to database"; header("location: mng-success.php?task=$msg"); } } else { echo "<font color='#FF0000'>error: user [$username] already exist <br/></font>"; echo " <script language='JavaScript'> <!-- alert('You have tried to add a user that already exist in the database.\\nThe user $username already exist'); --> </script> "; } include 'library/closedb.php'; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title>Radius Admin</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <link rel="stylesheet" href="css/1.css" type="text/css" media="screen,projection" /> <link rel="stylesheet" type="text/css" href="library/js_date/datechooser.css"> <!--[if lte IE 6.5]> <link rel="stylesheet" type="text/css" href="library/js_date/select-free.css"/> <![endif]--> </head> <script src="library/js_date/date-functions.js" type="text/javascript"></script> <script src="library/js_date/datechooser.js" type="text/javascript"></script> <SCRIPT TYPE="text/javascript"> <!-- function randomPassword() { length = 8; chars = "abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ23456789"; pass = ""; for(x=0;x<length;x++) {
76
i = Math.floor(Math.random() * 62); pass += chars.charAt(i); } document.newuser.password.value = pass; } function randomUsername() { length = 8; chars = "abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ23456789"; user = ""; for(x=0;x<length;x++) { i = Math.floor(Math.random() * 62); user += chars.charAt(i); } document.newuser.username.value = user; } function sessiontimeout(time) { document.newuser.sessiontimeout.value = time; } function idletimeout(time) { document.newuser.idletimeout.value = time; } function maxallsession(time) { document.newuser.maxallsession.value = time; } function wisprbandwidthmaxup(speed) { document.newuser.wisprbandwidthmaxup.value = speed; } function wisprbandwidthmaxdown(speed) { document.newuser.wisprbandwidthmaxdown.value = speed; } function toggleShowDiv(pass) { var divs = document.getElementsByTagName('div'); for(i=0;i<divs.length;i++) { if (divs[i].id.match(pass)) { if (document.getElementById) { // compatible with IE5 and NS6 // if (divs[i].style.visibility=="visible") if (divs[i].style.display=="inline") // divs[i].style.visibility="hidden"; divs[i].style.display="none"; else // divs[i].style.visibility="visible"; divs[i].style.display="inline"; } else if (document.layers) { // compatible with Netscape 4 if (document.layers[divs[i]].display=='visible') document.layers[divs[i]].display = 'hidden'; else
77
document.layers[divs[i]].display = 'visible'; } else { if (document.all.hideShow.divs[i].visibility=='visible') // compatible with IE4 document.all.hideShow.divs[i].visibility = 'hidden'; else document.all.hideShow.divs[i].visibility = 'visible'; } } } } // --> </script> <?php include ("menu-mng-main.php"); ?> <div id="contentnorightbar"> <h2 id="Intro">New User</h2> <p> You may fill below details for new user addition to database. <br/><br/> </p> <form name="newuser" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <table border='2' class='table1'> <tr><td> <?php if (trim($username) == "") { echo "<font color='#FF0000'>"; }?> <b>Username</b> </td><td> <input value="<?php echo $username ?>" name="username"/> <a href="javascript:randomUsername()"> genuser</a><br/> </font> </td></tr> <tr><td> <?php if (trim($password) == "") { echo "<font color='#FF0000'>"; }?> <b>Password</b> </td><td> <input value="<?php echo $password ?>" name="password" /> <a href="javascript:randomPassword()"> genpass</a><br/> </font> </td></tr> </table> <br/><br/> <input type="submit" name="submit" value="Apply"/> </form> </div>
78
<div id="footer"> <?php include 'page-footer.php'; ?> </div> </div> </div> </body> </html>
IV.6.9. Halaman Edit User
Gambar 4.14 halaman edit user
Halaman ini untuk meng-edit user. Sintak PHP sebagai berikut :
<?php include ("library/checklogin.php"); $operator = $_SESSION['operator_user']; include 'library/opendb.php'; include 'include/management/attributes.php'; if (isset($_REQUEST['submit'])) { $username = $_REQUEST['username']; if (trim($username) != "") { foreach( $_POST as $attribute=>$value ) { if ( ($attribute == "username") || ($attribute == "submit") ) continue; $useTable = checkTables($attribute);
79
$counter = 0; $sql = "UPDATE $useTable SET Value='$value' WHERE UserName='$username' AND Attribute='$attribute'"; $res = mysql_query($sql) or die('Query failed: ' . mysql_error()); $counter++; } } } $username = ""; $username = $_REQUEST['username']; $sql = "SELECT * FROM radcheck WHERE UserName='$username'"; $res = mysql_query($sql) or die('Query failed: ' . mysql_error()); $arrAttr = array(); $arrOp = array(); $arrValue = array(); while($nt = mysql_fetch_array($res)) { array_push($arrAttr, $nt['Attribute']); array_push($arrOp, $nt['op']); array_push($arrValue, $nt['Value']); } include 'library/closedb.php'; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title>Radius Admin</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <link rel="stylesheet" href="css/1.css" type="text/css" media="screen,projection" /> </head> <?php include ("menu-mng-main.php"); ?> <div id="contentnorightbar"> <h2 id="Intro">Edit User Detail</h2> <p> You may fill below details for new user addition to database </p> <form action="<?php echo $_SERVER['PHP_SELF']; ?>"
80
method="post"> <input type="hidden" value="<?php echo $username ?>" name="username" /> <?php echo "<table border='2' class='table1'>"; echo " <thead> <tr> <th colspan='10'>radcheck</th> </tr> </thead> "; $counter = 0; foreach ($arrAttr as $attribute) { echo "<tr><td>"; echo "<b>$arrAttr[$counter]</b"; echo "</td><td>"; echo "<input value='$arrValue[$counter]' name='$arrAttr[$counter]' /><br/>"; echo "</td></tr>"; $counter++; } echo "</table>"; ?> <br/><br/> <center> <input type="submit" name="submit" value="Save Settings"/> </center> </form> </div> <div id="footer"> <?php include 'page-footer.php'; ?> </div> </div> </div> </body> </html>
81
IV.6.10. Halaman Graphs
Gambar 4.15 halaman graphs
Halaman ini menampilkan laporan dalam bentuk grafik. Sintaks sebagai berikut:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <title>Radius Admin</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <link rel="stylesheet" href="css/1.css" type="text/css" media="screen,projection" /> </head> <body> <?php include_once ("lang/main.php"); ?> <div id="wrapper"> <div id="innerwrapper"> <?php $m_active = "Graphs"; include_once ("include/menu/menu-items.php"); include_once ("include/menu/graphs-subnav.php"); ?> <div id="sidebar"> <h2>Graphs</h2> <h3>Users plotting</h3> <ul class="subnav"> <li><a
82
href="javascript:document.overall_logins.submit();"><b>»</b>Overall Logins/Hits</a> <form name="overall_logins" action="graphs-overall_logins.php" method="post" class="sidebar"> <input name="username" type="text" value="username"> <select name="type" type="text"> <option value="daily"> Daily <option value="monthly"> Monthly <option value="yearly"> Yearly </select> </form></li> <li><a href="javascript:document.overall_download.submit();"><b>»</b>Overall Download Stat</a> <form name="overall_download" action="graphs-overall_download.php" method="post" class="sidebar"> <input name="username" type="text" value="username"> <select name="type" type="text"> <option value="daily"> Daily <option value="monthly"> Monthly <option value="yearly"> Yearly </select> </form></li> <li><a href="javascript:document.overall_upload.submit();"><b>»</b>Overall Upload Stat</a> <form name="overall_upload" action="graphs-overall_upload.php" method="post" class="sidebar"> <input name="username" type="text" value="username"> <select name="type" type="text"> <option value="daily"> Daily <option value="monthly"> Monthly <option value="yearly"> Yearly </select> </form></li> <h3>All-time Statistics</h3> <ul class="subnav"> <li><a href="javascript:document.alltime_logins.submit();"><b>»</b>Alltime Logins/Hits Stat</a> <form
83
name="alltime_logins" action="graphs-alltime_logins.php" method="post" class="sidebar"> <select name="type" type="text"> <option value="daily"> Daily <option value="monthly"> Monthly <option value="yearly"> Yearly </select> </form></li> <li><a href="javascript:document.alltime_traffic_compare.submit();"><b>»</b>Alltime Traffic comparison</a> <form name="alltime_traffic_compare" action="graphs-alltime_traffic_compare.php" method="post" class="sidebar"> <select name="type" type="text"> <option value="daily"> Daily <option value="monthly"> Monthly <option value="yearly"> Yearly </select> </form></li> </ul> <br/><br/> <h2>Search</h2> <input name="" type="text" value="Search" /> </div>
IV.6.11. Halaman Overall Login/Hits
Gambar 4.16 halaman overall login/hits
84
Halaman ini untuk menampilkan informasi laporan jumlah login user bisa dalam
sehari, sebulan atau setahun. Sintak sebagai berikut :
<?php $type = $_REQUEST['type']; $username = $_REQUEST['user']; if ($type == "daily") { daily($username); } elseif ($type == "monthly") { monthly($username); } elseif ($type == "yearly") { yearly($username); } function daily($username) { include 'opendb.php'; include 'libchart/libchart.php'; header("Content-type: image/png"); $chart = new VerticalChart(920,500); $sql = "SELECT UserName, count(AcctStartTime), DAY(AcctStartTime) AS Day from radacct where username='$username' group by Day;"; $res = mysql_query($sql) or die('Query failed: ' . mysql_error()); while($ent = mysql_fetch_array($res)) { $chart->addPoint(new Point("$ent[2]", "$ent[1]")); } mysql_free_result($res); $chart->setTitle("Total Users"); $chart->render(); include 'closedb.php'; } function monthly($username) { include 'opendb.php'; include 'libchart/libchart.php'; header("Content-type: image/png"); $chart = new VerticalChart(920,500); $sql = "SELECT UserName, count(AcctStartTime), MONTHNAME(AcctStartTime) AS Month from radacct where username='$username' group by Month;"; $res = mysql_query($sql) or die('Query failed: ' . mysql_error()); while($ent = mysql_fetch_array($res)) { $chart->addPoint(new Point("$ent[2]", "$ent[1]")); } mysql_free_result($res); $chart->setTitle("Total Users"); $chart->render(); include 'closedb.php'; }
85
function yearly($username) { include 'opendb.php'; include 'libchart/libchart.php'; header("Content-type: image/png"); $chart = new VerticalChart(920,500); $sql = "SELECT UserName, count(AcctStartTime), YEAR(AcctStartTime) AS Year from radacct where username='$username' group by Year;"; $res = mysql_query($sql) or die('Query failed: ' . mysql_error()); while($ent = mysql_fetch_array($res)) { $chart->addPoint(new Point("$ent[2]", "$ent[1]")); } mysql_free_result($res); $chart->setTitle("Total Users"); $chart->render(); include 'closedb.php'; } ?>
IV.6.12. Halaman Overall Download
Gambar 4.17 halaman overall download stat
Halaman ini untuk menampilkan informasi laporan jumlah download user bisa
dalam sehari, sebulan atau setahun. Sintak sebagai berikut :
<?php $type = $_REQUEST['type']; $username = $_REQUEST['user']; if ($type == "daily") { daily($username); } elseif ($type == "monthly") {
86
monthly($username); } elseif ($type == "yearly") { yearly($username); } function daily($username) { include 'opendb.php'; include 'libchart/libchart.php'; header("Content-type: image/png"); $chart = new VerticalChart(920,500); $sql = "SELECT UserName, sum(AcctOutputOctets) as Downloads, day(AcctStartTime) AS day from radacct where username='$username' group by day;"; $res = mysql_query($sql) or die('Query failed: ' . mysql_error()); while($ent = mysql_fetch_array($res)) { $downloads = floor($ent[1]/1024/1024); $chart->addPoint(new Point("$ent[2]", "$downloads")); } mysql_free_result($res); $chart->setTitle("Total Downloads based on Daily distribution"); $chart->render(); include 'closedb.php'; } function monthly($username) { include 'opendb.php'; include 'libchart/libchart.php'; header("Content-type: image/png"); $chart = new VerticalChart(920,500); $sql = "SELECT UserName, sum(AcctOutputOctets) as Downloads, MONTHNAME(AcctStartTime) AS month from radacct where username='$username' group by month;"; $res = mysql_query($sql) or die('Query failed: ' . mysql_error()); while($ent = mysql_fetch_array($res)) { $downloads = floor($ent[1]/1024/1024); $chart->addPoint(new Point("$ent[2]", "$downloads")); } mysql_free_result($res); $chart->setTitle("Total Downloads based on Monthly distribution"); $chart->render(); include 'closedb.php'; } function yearly($username) { include 'opendb.php'; include 'libchart/libchart.php'; header("Content-type: image/png");
87
$chart = new VerticalChart(920,500); $sql = "SELECT UserName, sum(AcctOutputOctets) as Downloads, year(AcctStartTime) AS year from radacct where username='$username' group by year;"; $res = mysql_query($sql) or die('Query failed: ' . mysql_error()); while($ent = mysql_fetch_array($res)) { $downloads = floor($ent[1]/1024/1024); $chart->addPoint(new Point("$ent[2]", "$downloads")); } mysql_free_result($res); $chart->setTitle("Total Downloads based on Yearly distribution"); $chart->render(); include 'closedb.php'; } ?>
IV.6.13. Halaman Overall Upload
Gambar 4.18 halaman overall upload stat
Halaman ini untuk menampilkan informasi laporan jumlah upload user bisa dalam
sehari, sebulan atau setahun. Sintak sebagai berikut :
<?php $type = $_REQUEST['type']; $username = $_REQUEST['user']; if ($type == "daily") { daily($username); } elseif ($type == "monthly") { monthly($username); } elseif ($type == "yearly") { yearly($username); }
88
function daily($username) { include 'opendb.php'; include 'libchart/libchart.php'; header("Content-type: image/png"); $chart = new VerticalChart(920,500); $sql = "SELECT UserName, sum(AcctInputOctets) as Uploads, day(AcctStartTime) AS day from radacct where username='$username' group by day;"; $res = mysql_query($sql) or die('Query failed: ' . mysql_error()); while($ent = mysql_fetch_array($res)) { $uploads = floor($ent[1]/1024/1024); $chart->addPoint(new Point("$ent[2]", "$uploads")); } mysql_free_result($res); $chart->setTitle("Total Uploads based on Daily distribution"); $chart->render(); include 'closedb.php'; } function monthly($username) { include 'opendb.php'; include 'libchart/libchart.php'; header("Content-type: image/png"); $chart = new VerticalChart(920,500); $sql = "SELECT UserName, sum(AcctInputOctets) as Uploads, MONTHNAME(AcctStartTime) AS month from radacct where username='$username' group by month;"; $res = mysql_query($sql) or die('Query failed: ' . mysql_error()); while($ent = mysql_fetch_array($res)) { $uploads = floor($ent[1]/1024/1024); $chart->addPoint(new Point("$ent[2]", "$uploads")); } mysql_free_result($res); $chart->setTitle("Total Uploads based on Monthly distribution"); $chart->render(); include 'closedb.php'; } function yearly($username) { include 'opendb.php'; include 'libchart/libchart.php'; header("Content-type: image/png"); $chart = new VerticalChart(920,500); $sql = "SELECT UserName, sum(AcctInputOctets) as Uploads, year(AcctStartTime) AS year from radacct where username='$username' group by
89
year;"; $res = mysql_query($sql) or die('Query failed: ' . mysql_error()); while($ent = mysql_fetch_array($res)) { $uploads = floor($ent[1]/1024/1024); $chart->addPoint(new Point("$ent[2]", "$uploads")); } mysql_free_result($res); $chart->setTitle("Total Uploads based on Yearly distribution"); $chart->render(); include 'closedb.php'; } ?>
IV.6.14. Halaman Alltime Login/Hits
Gambar 4.19 halaman alltime login/hits stat
Halaman ini untuk menampilkan informasi laporan jumlah login seluruh user bisa
dalam sehari, sebulan atau setahun. Sintak sebagai berikut :
<?php $type = $_REQUEST['type']; if ($type == "daily") { daily(); } elseif ($type == "monthly") { monthly(); } elseif ($type == "yearly") { yearly(); } function daily() { include 'opendb.php'; include 'libchart/libchart.php'; header("Content-type: image/png"); $chart = new VerticalChart(920,500);
90
$sql = "SELECT count(AcctStartTime), DAY(AcctStartTime) AS Day from radacct group by Day;"; $res = mysql_query($sql) or die('Query failed: ' . mysql_error()); while($ent = mysql_fetch_array($res)) { $chart->addPoint(new Point("$ent[1]", "$ent[0]")); } mysql_free_result($res); $chart->setTitle("Alltime Login records based on Daily distribution"); $chart->render(); include 'closedb.php'; } function monthly() { include 'opendb.php'; include 'libchart/libchart.php'; header("Content-type: image/png"); $chart = new VerticalChart(920,500); $sql = "SELECT count(AcctStartTime), MONTHNAME(AcctStartTime) AS Month from radacct group by Month;"; $res = mysql_query($sql) or die('Query failed: ' . mysql_error()); while($ent = mysql_fetch_array($res)) { $chart->addPoint(new Point("$ent[1]", "$ent[0]")); } mysql_free_result($res); $chart->setTitle("Alltime Login records based on Monthly distribution"); $chart->render(); include 'closedb.php'; } function yearly() { include 'opendb.php'; include 'libchart/libchart.php'; header("Content-type: image/png"); $chart = new VerticalChart(920,500); $sql = "SELECT count(AcctStartTime), YEAR(AcctStartTime) AS Year from radacct group by Year;"; $res = mysql_query($sql) or die('Query failed: ' . mysql_error()); while($ent = mysql_fetch_array($res)) { $chart->addPoint(new Point("$ent[1]", "$ent[0]")); } mysql_free_result($res); $chart->setTitle("Alltime Login records based on Yearily distribution"); $chart->render(); include 'closedb.php'; } ?>
91
IV.6.15. Halaman Alltime Traffic Comparison
Gambar 4.20 halaman alltime traffic comparison
Halaman ini untuk menampilkan informasi laporan perbandingan antara upload
dan download bisa dalam sehari, sebulan atau setahun. Sintak sebagai berikut :
<?php $type = $_REQUEST['type']; if ($type == "daily") { daily(); } elseif ($type == "monthly") { monthly(); } elseif ($type == "yearly") { yearly(); } function daily() { include 'opendb.php'; include 'libchart/libchart.php'; header("Content-type: image/png"); $chart = new VerticalChart(920,500); $sql = "SELECT sum(AcctOutputOctets) as Downloads, day(AcctStartTime) AS day from radacct group by day;"; $res = mysql_query($sql) or die('Query failed: ' . mysql_error()); while($ent = mysql_fetch_array($res)) { $downloads = floor($ent[0]/1024/1024); $chart->addPoint(new Point("$ent[1]", "$downloads")); } mysql_free_result($res); $chart->setTitle("Alltime Login records based on Daily distribution"); $chart->render(); include 'closedb.php'; } function monthly() {
92
include 'opendb.php'; include 'libchart/libchart.php'; header("Content-type: image/png"); $chart = new VerticalChart(920,500); $sql = "SELECT count(AcctStartTime), MONTHNAME(AcctStartTime) AS Month from radacct group by Month;"; $res = mysql_query($sql) or die('Query failed: ' . mysql_error()); while($ent = mysql_fetch_array($res)) { $chart->addPoint(new Point("$ent[1]", "$ent[0]")); } mysql_free_result($res); $chart->setTitle("Alltime Login records based on Monthly distribution"); $chart->render(); include 'closedb.php'; } function yearly() { include 'opendb.php'; include 'libchart/libchart.php'; header("Content-type: image/png"); $chart = new VerticalChart(920,500); $sql = "SELECT count(AcctStartTime), YEAR(AcctStartTime) AS Year from radacct group by Year;"; $res = mysql_query($sql) or die('Query failed: ' . mysql_error()); while($ent = mysql_fetch_array($res)) { $chart->addPoint(new Point("$ent[1]", "$ent[0]")); } mysql_free_result($res); $chart->setTitle("Alltime Login records based on Yearily distribution"); $chart->render(); include 'closedb.php'; } ?>
93
BAB V
ANALISA HASIL
Dari penguraian analisis data dan perancangan yang diberikan pada
bagian-bagian sebelumnya, pada bagian ini akan diberikan analisis akhir, yang
merupakan perangkuman kelebihan dan kelemahan sistem tersebut.
V.1. Kelebihan Sistem
Sistem yang berbasis web ini sangat mempermudah user dalam mengelola
user.
Sistem dapat memberikan laporan catatan login, download, dan upload
dalam bentuk grafik.
V.2. Kelemahan Sistem
Sistem menampilkan data password dari user berbentuk clear text yang
artinya tampilan data password belum terenkripsi.
Client terpaksa harus men-setting koneksi WLAN di laptopnya untuk
dapat berkoneksi.
94
BAB VI
KESIMPULAN DAN SARAN
VI.1. Kesimpulan
Berdasarkan rangkaian penelitian dan pengujian yang dilakukan dalam
Tugas Akhir ini dapat ditarik kesimpulan sebagai berikut:
1. Untuk Administrator, sistem tersebut dapat mengelola informasi user
dalam jaringan Wireless LAN-nya.
2. Dengan penerapan RADIUS server ini hanya pengguna yang berhak saja
yang diperbolehkan mengakses wireless LAN tersebut.
3. Sistem tersebut bersifat dinamis karena fungsi dan mekanisme
otentikasinya dapat dirubah ataupun ditambahkan sesuai kebutuhan
jaringan.
4. RADIUS server mempermudah tugas administrator untuk mengelola
wireless LAN, karena sistem ini merupakan sistem administrasi yang
terpusat.
VI.2. Saran
Seiring dengan sistem tersebut yang telah dibuat, dan juga dari hambatan-
hambatan yang dihadapi, maka sarannya adalah :
1. Perlu dikembangkan sistem informasi user management agar dapat
memutuskan hubungan user yang sedang online secara realtime.
2. Untuk pengembangan berikutnya, RADIUS server selain sebagai sistem
autentikasi juga bisa dikembangkan lagi sebagai sistem billing server.
95
3. Fitur RADIUS server yang dapat digunakan untuk memfilter alamat MAC
dari wireless card yang dimiliki oleh pengguna, alamat MAC beserta
identitas pengguna dimasukkan ke dalam database yang terdapat di
RADIUS server untuk ke depannya dikembangkan lagi.
96
DAFTAR PUSTAKA
Hammond, John, etc., Wireless Hotspot Deployment Guide, Intel Corporation, 2003
Anonim, Wireless LAN (WLAN) End-to-End Guidelines for Enterprises and
Public Hotspot Service Providers, Intel Corporation, Juni 2004 Anonim, Introduction to 802.1X for Wireless Local Area Networks, Interlink
Networks, www.interlinknetworks.com, 2002 Anonim, RADIUS for UNIX Administrator’s Guide, Lucent Technologies,
Februari 1999 Getraide, Michel, SECURITY AND AUTHENTICATION FOR 802.11 WIRELESS
NETWORKS, Mei 2004 Triyoga, Adi, Analisis dan Perancangan Keamanan Jaringan Nirkabel, 2004 Purbo, Onno w., Buku Pegangan INTERNET WIRELESS DAN HOTSPOT, PT.
Elex Media Komputindo, July 2006 http://www.freeradius.org/ http://wiki.freeradius.org/
Top Related