Anda di halaman 1dari 8

Captive Portal (Coova chilli + Yfi Manager Hotspot)

Instalasi berpedoman pada YFI Wiki


note :
Untuk mengaplikasikan Captive portal ini minimal menggunakan 2 ethernet card :
internet ---- modem --------ubuntu server ------- switch ------- AP dan/atau LAN
Tetapi pada tutorial ini saya menerapkan pada server dgn 3 ethernet card :
internet ---- ADSL --------(eth0)UBUNTU SERVER(eth2) ------- switch ------- Wired LAN
.....................................................(eth1)
.........................................................|
.........................................................|
..................................................Access Point
Persiapan system :
1. Ubuntu 8.04 Hardy Heron dengan paket LAMP (saya terapkan tutorialnya bang Opik)
thanks bang Opik
2. Putty untuk remote server dari client.
3. Webmin untuk mempermudah edit file.

Buat eth0 terkoneksi dengan modem.


Konfigurasi untuk eth1 tidak usah diisi karena nanti eth1 diberi setingan DHCP dari Coova
chilli.
Berikut adalah isi dari /etc/network/interfaces saya
auto lo
iface lo inet loopback
iface eth0 inet static
address 192.168.0.2
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
gateway 192.168.0.1 ----- ip modem
iface eth2 inet static
address 192.168.10.1
netmask 255.255.255.0
network 192.168.10.0
broadcast 192.168.10.255

Pastikan juga ]/etc/resolv.conf setting DNS dari Server nya benar, saya anjurkan install DNS
local
Edit file /etc/sysctl.conf, Uncomment bagian ini agar Kernel Ubuntu dapat forwarding packet

# Uncomment the next line to enable packet forwarding for IPv4


net.ipv4.ip_forward=1

Pastikan paket LAMP telah ter-install


sudo tasksel

dengan mencentang LAMP, maka semua package yang diperlukan otomatis terinstall.
Step Instalasi :
1. CakePHP
2. YFi CakePHP Application
3. YFi View Component
4. FreeRADIUS
5. Coova Chilli
1. Install CakePHP
Install juga PHP command line:
sudo apt-get install php5-cli

untuk mengubah skala file gambar, Install imagemagick.


sudo apt-get install imagemagick

Mulai versi Beta-3, Yfi Manager Hotspot sudah support multi bahasa
sudo
sudo
sudo
sudo
sudo
sudo

apt-get
apt-get
apt-get
apt-get
apt-get
apt-get

install
install
install
install
install
install

language-pack-id
language-pack-af
language-pack-fr
language-pack-ms
language-pack-nl
language-pack-es

--- bahasa Indonesia

Download versi terbaru CakePHP di http://cakephp.org.


versi terbaru (April 2010)= cake_1.2.6
Copy, extract di direktori apache. Default ubuntu di /var/www
sudo cp cakephp-cakephp1x-1.2.6-0-gbe7ddfb.tar.gz /var/www
cd /var/www
sudo tar -xzvf cakephp-cakephp1x-1.2.6-0-gbe7ddfb.tar.gz

Rename direktori hasil ekstrak, agar lebih simpel (misal:cake_1.2.6)


Buat symbolic link
cd /var/www
sudo ln -s ./cake_1.2.6 ./c2

Enable beberapa modul apache: rewrite, deflate untuk kompresi, dan headers untuk
memodifikasi http header. Modul tersebut diperlukan untuk meningkatkan performance dan
kecepatan web aplikasi..
sudo a2enmod rewrite

sudo a2enmod deflate


sudo a2enmod headers
sudo /etc/init.d/apache2 reload

Edit file "/etc/php5/apache2/php.ini"


Pada baris :
output_buffering = Off

ubah dengan
output_buffering = 4096

Edit file /etc/apache2/apache2.conf


Masukkan script dibawah ini:
<Directory /var/www/c2>
AllowOverride All
</Directory>
#-------COMPRESS CONTENT----------# place filter 'DEFLATE' on all outgoing content
SetOutputFilter DEFLATE
# exclude uncompressible content via file type
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|jpg|png|pdf|zip|bz2|sit|rar)$ nogzip
#dont-vary
# Keep a log of compression ratio on each request
DeflateFilterNote Input instream
DeflateFilterNote Output outstream
DeflateFilterNote Ratio ratio
LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
CustomLog /var/log/apache2/deflate.log deflate
# Properly handle old browsers that do not support compression
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
#---------------------------------#------ADD EXPIRY DATE------------<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
Header set Expires "Thu, 15 Apr 2012 20:00:00 GMT"
</FilesMatch>
#---------------------------------#--------Remove ETags -------------------FileETag none
#-----------------------------------------

Reload Apache
sudo /etc/init.d/apache2 reload

2. Install YFi CakePHP Application


Donwload versi terbaru YFi Cake, saya memakai versi yfi_cake-Beta-4.tar.gz
extract di direktori "/var/www/c2".
sudo cp yfi_cake-Beta-4.tar.gz /var/www/c2

cd /var/www/c2
sudo tar -xzvf yfi_cake-Beta-4.tar.gz
sudo chown -R www-data. /var/www/c2/yfi_cake/tmp
sudo chown -R www-data. /var/www/c2/yfi_cake/webroot/img/graphics

Setting Database
Buat database 'yfi' dengan username dan password default 'yfi' (default).
Untuk settingan default gunakan perintah ini :
mysql -u root -p
create database yfi;
GRANT ALL PRIVILEGES ON yfi.* to 'yfi'@'127.0.0.1' IDENTIFIED BY 'yfi';
GRANT ALL PRIVILEGES ON yfi.* to 'yfi'@'localhost' IDENTIFIED BY 'yfi';
exit;

Catatan: Untuk keamanan anda bisa ubah username dan password, misal: hotspot"
Jangan lupa untuk ubah File '/var/www/c2/yfi_cake/config/database.php', Dibagian
username dan password.
Masukkan database sample:
mysql -u root -p yfi < /var/www/c2/yfi_cake/setup/db/yfi.sql

Tes YFi CakePHP Ketik alamat server di browser:


http://127.0.0.1/c2/yfi_cake/users/
Karena saya gunakan Komputer client untuk remote server, saya ketik :
http://192.168.10.2/c2/yfi_cake/users/
Kalau yang ditampilkan adalah halaman login, berarti setting sudah benar;)
3. Install YFi Viewer Component
Download viewer component disini saya gunakan versi yfi-Beta-4.tar.gz
extract di directory default apache2 /var/www "
sudo cp yfi-Beta-4.tar.gz /var/www
cd /var/www
sudo tar -xzvf yfi-Beta-4.tar.gz

Tes Viewer Component


Masukkan alamat berikut di browser : http://127.0.0.1/yfi
Atau http://192.168.10.2/yfi jika dari Komputer client.
Jika instalasi berhasil, akan keluar splash page dan kemudian halaman login.
Coba log in dengan salah satu user default berikut:
Role
Administrator
Access Provider
Permanent User

Username
root
ap
dvdwalt@ri

nice work..

Password
admin
ap
dvdwalt@ri

4. Install FreeRADIUS Server


YFi Hotspot Manager merupakan front-end dari mysql database yang digunakan oleh
FreeRADIUS. Yang dipakai adalah versi radius terbaru yaitu 2.1.8 (sip.. )
sebelum compile FreeRadius, pastikan package berikut sudah terinstall:

sudo apt-get install build-essential libmysqlclient15-dev libperl-dev


libxml-simple-perl libmail-sendmail-perl

Download FreeRADIUS source code Download FreeRADIUS


tar -xzvf freeradius-server-2.1.8.tar.gz
cd freeradius-server-2.1.8
./configure | tee config_out.txt
make
sudo make install
sudo ldconfig

Lakukan tes dengan perintah berikut untuk menjalankan freeRadius dengan debug mode:
sudo /usr/local/sbin/radiusd X

Ctrl+c untuk keluar.


Buat FreeRADIUS otomatis berjalan saat boot
sudo cp /usr/local/sbin/rc.radiusd /etc/init.d/radiusd
sudo update-rc.d radiusd start 80 2 3 4 5 . stop 20 0 1 6 .

Setup FreeRADIUS agar bisa diakses oleh YFi, ganti raddb freeradius dgn raddb YFI
sudo mv /usr/local/etc/raddb /usr/local/etc/raddb.asli
sudo cp /var/www/c2/yfi_cake/setup/radius/raddb.tar.gz /usr/local/etc/
cd /usr/local/etc/
sudo tar -xzvf raddb.tar.gz
sudo chown root.www-data /usr/local/etc/raddb/proxy.conf
sudo chmod 664 /usr/local/etc/raddb/proxy.conf
sudo chmod 644 /usr/local/etc/raddb/dictionary
sudo ldconfig

Aktifkan dan ubah dictionary chillispot


Freeradius versi terbaru, dictionary chillispot sudah ada, jadi kita tinggal tambahkan baris
berikut di file /usr/local/share/freeradius/dictionary.chillispot .Untuk memasukkan attribute
YFi khusus untuk voucher.
Cari baris berikut:
ATTRIBUTE
ATTRIBUTE

ChilliSpot-Version
ChilliSpot-OriginalURL

8
9

Masukkan data berikut dibawahnya

string
string

##YFi Specific Attributes


ATTRIBUTE
Yfi-Voucher
ATTRIBUTE
Yfi-MAC-Reset
ATTRIBUTE
Yfi-Data
ATTRIBUTE
Yfi-Time
#YFi Various Counters
ATTRIBUTE
Max-Daily-Session
ATTRIBUTE
Max-Monthly-Session
ATTRIBUTE
Max-Weekly-Session
ATTRIBUTE
Max-All-Session

43

40
string
41
string
42
string
string
50
51
52
53

integer
integer
integer
integer

ATTRIBUTE
ATTRIBUTE
ATTRIBUTE
ATTRIBUTE

ChilliSpot-Max-Daily-Octets
ChilliSpot-Max-Monthly-Octets
ChilliSpot-Max-Weekly-Octets
ChilliSpot-Max-All-Octets

60
61
62
63

integer
integer
integer
integer

Cek file /usr/local/etc/raddb/sql.conf dan


/usr/local/etc/raddb/rlm_perl_modules/conf/setting.conf username dan password database
harus sama dengan waktu kita buat database diatas.
Jalankan freeRadius dengan debug mode untuk memastikan tidak ada error.
sudo /usr/local/sbin/radiusd -X

Kalau tidak ada error, jalankan FreeRADIUS melalui startup script


sudo /etc/init.d/radiusd start

YFi menggunakan beberapa script yang harus dijalankan secara periodik. Copy Cron Script
berikut ke cron sistem.
sudo cp /var/www/c2/yfi_cake/setup/cron/yfi /etc/cron.d/

5. Install CoovaChilli
Download CoovaChilli di http://www.coova.org/Download
Versi pada saat ini CoovaChilli-1.0.14. Untuk Ubuntu bisa lewat:
sudo wget http://ap.coova.org/chilli/coova-chilli_1.0.14-1_i386.deb

install : (CoovaChilli akan diinstall di folder "/etc/chilli")


sudo dpkg -i coova-chilli_1.0.14-1_i386.deb

Konfigurasi CoovaChilli
copy file " /etc/chilli/defaults " ke "/etc/chilli/config "
sudo cp /etc/chilli/defaults /etc/chilli/config

Ubah option di file " /etc/chilli/config "


#HS_WANIF=eth0 # Subscriber Interface for internet devices
HS_LANIF=eth1 # Subscriber Interface for client devices
HS_NETWORK=10.1.0.0 # HotSpot Network (must include HS_UAMLISTEN)
HS_NETMASK=255.255.255.0 # HotSpot Network Netmask
HS_UAMLISTEN=10.1.0.1 # HotSpot IP Address (on subscriber network)
HS_UAMPORT=3990 # HotSpot Port (on subscriber network)
#HS_DNS1= ##tidak saya aktifkan, agar menggunakan settingan resolv.conf
(harus install DNS)
#HS_DNS2= ## kalau tidak menggunakan DNS, isikan dengan ip ADSL
HS_NASID=nas01
HS_UAMSECRET=greatsecret # default
HS_RADIUS=127.0.0.1
HS_RADIUS2=127.0.0.1
HS_RADSECRET=testing123 # default
HS_NASIP=127.0.0.1 # NB!!! To explicitly set NAS-IP-Address
HS_UAMFORMAT=http://10.1.0.1/coova_json/hs_land.php

HS_UAMHOMEPAGE=http://10.1.0.1/coova_json/splash.php
HS_MODE=hotspot
HS_TYPE=chillispot
HS_WWWDIR=/etc/chilli/www
HS_WWWBIN=/etc/chilli/wwwsh
HS_PROVIDER=contoh
HS_PROVIDER_LINK=http://www.contoh.org/
HS_LOC_NAME="My HotSpot" # WISPr Location Name and used in portal

Edit file " /etc/default/chilli " ubah nilai ke 1


START_CHILLI=1

Start-up coova chilli


sudo /etc/init.d/chilli start

Firewall Setting
Tambahkan baris berikut di bagian akhir file "/etc/chilli/up.sh ",
# may not have been populated the first time; run again
[ -e "/var/run/chilli.iptables" ] && sh /var/run/chilli.iptables
2>/dev/null
# force-add the final rule necessary to fix routing tables
iptables -I POSTROUTING -t nat -o $HS_WANIF -j MASQUERADE

Tambahkan coa port pada file /etc/init.d/chilli, cari pada bagian ini :
OPTS="--pidfile /usr/local/var/run/$NAME.pid"

Tambahkan --coaport 3799 untuk keperluan "Kick User off"


OPTS="--pidfile /usr/local/var/run/$NAME.pid --coaport 3799" ## Tambahkan
coa port

Halaman Login
Disini saya menggunakan login page coova_json
Copy folder coova_json ke direktori apache " /var/www "
sudo cp -R /var/www/c2/yfi_cake/setup/coova_json /var/www

Cek di file "/var/www/coova_json/login.php :


1. $uamsecret harus sama dengan di file " /etc/chilli/config ", begitu juga di file "
/var/www/coova_json/uam.php ". Defaultnya adalah 'greatsecret'.
2. $port di "/var/www/coova_json/login.php ", jika 3660 harus diganti dengan 3990.
Silahkan restart ubuntu anda.. jangan lupa berdoa semoga lancar..
Saatnya kita test captive portal kita...
1. Tes dengan menggunakan komputer client. Setting network interface client ke dhcp, jika
client mendapat ip 10.1.0.2 - dst. Berarti coova chilli berjalan normal bisa bernafas lega..
2. Coba browsing ke, misal www.google.com. Akan keluar halaman splash ( keren ga??)
3. Kemudian diarahkan ke halaman login: hs_land.php (siipp... )

4. Login dengan user dvdwalt@ri dan password dvdwalt@ri.


5. Jika akses diterima, akan nongol www.google.com
Yup, tahap instalasi Finish
Rekan2 yg sudah coba silahkan explore fitur2 dari YFI Hotspot Manager. Jangan lupa dishare
yah...:) thanks
" Padukan dengan squid Transparent Proxy"
Berikut iptables yg saya gunakan untuk meredirec client HotSpot ke squid (squid satu server
dengan captive portal)
iptables -A PREROUTING -t nat -i tun0 -p tcp -s 10.1.0.0/24 -d ! 10.1.0.1
--dport 80 -j REDIRECT --to 3128

Anda mungkin juga menyukai