Jumat, 29 Agustus 2008

Otomatisasi firewalling IP dan MAC Address dengan bash script

Bagaimana jika client kita berjumlah banyak, puluhan atau ratusan. Yang terpenting adalah, kita mempunyai daftar IP Address dan MAC Address client yang terhubung. Dengan menggunakan sedikit baris bash script sederhana, kita dapat membuat otomatisasinya.
Berikut langkah-langkahnya :

1. Buat file bernama rc.iplock didalam directory /etc/rc.d/ dengan isi sebagai berikut :

#!/bin/bash
# Bash script Lock IP Address dan MAC Address
iptables="/sbin/iptables" #path ke iptables
files="/etc/rc.d/list.txt" #path ke list IP Address dan MAC Address
device="eth1" #ethernet devices ke client
lockall="yes" #yes|no ,yes jika mendaftarkan semua IP & MAC Address
#jika tidak, tulis no.
#yes untuk metode pertama, no untuk metode kedua


if [ $lockall = "yes" ]; then
$iptables -I PREROUTING -t nat -i $device -j DROP
cat $files | while read ip_address mac_address; do
$iptables -I PREROUTING -t nat -i $devices -s $ip_address
-m mac --mac-source $mac_address -j ACCEPT
$iptables -I FORWARD -i $device -s ! $ip_address
-m mac --mac-source $mac_address -j DROP
$iptables -I PREROUTING -t nat -s ! $ip_address
-m mac --mac-source $mac_address -j DROP
done
elif [ $lockall = "no" ]; then
$iptables -I PREROUTING -t nat -i $device -j ACCEPT
cat $files | while read ip_address mac_address; do
$iptables -I FORWARD -i $device -s ! $ip_address
-m mac --mac-source $mac_address -j DROP
$iptables -I PREROUTING -t nat -s ! $ip_address
-m mac --mac-source $mac_address -j DROP
done
fi

echo "Locking IP Address and Mac Address..."
#end script


2. Buat file bernama list.txt didalam directory /etc/rc.d/ dengan format penulisan sebagai berikut :



Peringatan!! Jangan tambahkan baris apapun atau kalimat apapun selain format diatas!

Contoh isi file /etc/rc.d/list.txt untuk 3 client:

192.168.1.5 00:89:CD:64:01:EF
192.168.1.20 00:90:DD:14:11:CF
192.168.1.14 00:40:EE:21:26:GE


3. Set file rc.iplock agar dapat di eksekusi :

chmod +x /etc/rc.d/rc.iplock


4. Tambahkan didalam file /etc/rc.d/rc.local agar dapat di eksekusi pada saat start up :

/etc/rc.d/rc.iplock


5. Jalankan :

/etc/rc.d/rc.iplock

6. Selesai! Selamat Anda dapat bintang =P

Firewalling IP Address dan MAC Address dengan iptables

Kadang kita sebagai administrator suatu jaringan sangat dipusingkan dengan beberapa client "nakal" yang suka berganti-ganti IP Address. Padahal sebelumnya suatu IP Address tertentu dari client sudah kita blok aksesnya untuk jam-jam tertentu, atau kita blok untuk mengakses suatu situs tertentu.
Mungkin sedikit yang bisa saya berikan disini adalah, bagaimana kita dapat mengatasi "kenakalan" client-client tersebut agar tidak bisa mengganti IP Address mereka secara "enaknya saja". Saya harapkan Anda paling tidak sudah tahu apa itu IP Address dan apa itu MAC Address.

Keuntungan dan kerugian :

  • Keuntungan yang didapatkan adalah, kita dapat dengan mudah memonitor "pergerakan" client dan melakukan logging untuk administrasi jaringan atau analisa-analisa lain yang diperlukan, karena client tidak dapat melakukan perubahan IP Address.
  • Kerugian, seandainya saja interface hardware milik client mengalami kerusakan dan melakukan pergantian, kita harus melakukan konfigurasi ulang rules firewall kita berdasarkan MAC Address yang baru. Tapi kerusakan ini sangat jarang terjadi.


Ada 2 metode yang saya gunakan disini dan dapat rekan-rekan sekalian pilih salah satunya, yaitu :

  • Pertama, apakah kita akan melakukan pendaftaran semua IP Address dan MAC Address client-client kita dan tidak memperkenankan semua client yang terhubung dengan kita tidak dapat berganti-ganti IP Address. Jika IP dan MAC Address tidak terdaftar didalam rules firewall, maka client tidak dapat melakukan koneksi.
  • Kedua, apakah kita hanya menginginkan IP Address dan MAC Address tertentu saja yang tidak kita inginkan untuk berganti-ganti IP Address. Disini, jika ada IP baru dan dengan MAC Address baru, client tetap dapat melakukan koneksi.

Kasus, disini kita mempunya 3 client, yaitu :
IP Client 1 = 192.168.1.5
MAC Address 1 = 00:89:CD:64:01:EF

IP Client 2 = 192.168.1.20
MAC Address 1 = 00:90:DD:14:11:CF

IP Client 3 = 192.168.1.14
MAC Address 3 = 00:40:EE:21:26:GE

Semua client terkoneksi melalui ethernet (LAN Card/NIC) 1 yang diberi nama eth1.

Firewalling dengan metode pertama :

#drop semua prerouting di eth1
iptables -I PREROUTING -t nat -i eth1 -j DROP

#------------------- client pertama------------------------
#accept IP 192.168.1.5 dengan mac address 00:89:CD:64:01:EF
iptables -I PREROUTING -t nat -i eth1 -s 192.168.1.5
-m mac --mac-source 00:89:CD:64:01:EF -j ACCEPT

#drop IP 192.168.1.5 dengan mac address 00:89:CD:64:01:EF
#jika menggantinya dengan IP lain selain dari 192.168.1.5
iptables -I FORWARD -i eth1 -s ! 192.168.1.5
-m mac --mac-source 00:89:CD:64:01:EF -j DROP

#drop prerouting IP 192.168.1.5 dengan mac address 00:89:CD:64:01:EF
#jika menggantinya dengan IP lain selain dari 192.168.1.5
iptables -I PREROUTING -t nat -s ! 192.168.1.5
-m mac --mac-source 00:89:CD:64:01:EF -j DROP

#------------------- client kedua------------------------
#accept IP 192.168.1.20 dengan mac address 00:90:DD:14:11:CF
iptables -I PREROUTING -t nat -i eth1 -s 192.168.1.20
-m mac --mac-source 00:90:DD:14:11:CF -j ACCEPT

#drop IP 192.168.1.20 dengan mac address 00:90:DD:14:11:CF
#jika menggantinya dengan IP lain selain dari 192.168.1.20
iptables -I FORWARD -i eth1 -s ! 192.168.1.20
-m mac --mac-source 00:90:DD:14:11:CF -j DROP

#drop prerouting IP 192.168.1.20 dengan mac address 00:90:DD:14:11:CF
#jika menggantinya dengan IP lain selain dari 192.168.1.20
iptables -I PREROUTING -t nat -s ! 192.168.1.20
-m mac --mac-source 00:90:DD:14:11:CF -j DROP

Catatan :
Disini karena client 3 tidak masuk kedalam rules, maka tidak dapat melakukan koneksi, walaupun berganti IP Address yang sama dengan client 1 dan 2. Sedangkan client 1 dan 2 tetap dapat melakukan koneksi, selama tidak melakukan perubahan IP Address.


Firewalling dengan metode kedua :

#------------------- client pertama------------------------
#drop IP 192.168.1.5 dengan mac address 00:89:CD:64:01:EF
#jika menggantinya dengan IP lain selain dari 192.168.1.5
iptables -I FORWARD -i eth1 -s ! 192.168.1.5
-m mac --mac-source 00:89:CD:64:01:EF -j DROP

#drop prerouting IP 192.168.1.5 dengan mac address 00:89:CD:64:01:EF
#jika menggantinya dengan IP lain selain dari 192.168.1.5
iptables -I PREROUTING -t nat -s ! 192.168.1.5
-m mac --mac-source 00:89:CD:64:01:EF -j DROP

#------------------- client kedua------------------------
#drop IP 192.168.1.20 dengan mac address 00:90:DD:14:11:CF
#jika menggantinya dengan IP lain selain dari 192.168.1.20
iptables -I FORWARD -i eth1 -s ! 192.168.1.20
-m mac --mac-source 00:90:DD:14:11:CF -j DROP

#drop prerouting IP 192.168.1.20 dengan mac address 00:90:DD:14:11:CF
#jika menggantinya dengan IP lain selain dari 192.168.1.20
iptables -I PREROUTING -t nat -s ! 192.168.1.20
-m mac --mac-source 00:90:DD:14:11:CF -j DROP

Catatan :
Disini walaupun client 3 tidak masuk kedalam rules, tetap dapat melakukan koneksi, walaupun berganti IP Address asal tidak sama IP Addressnya dengan client 1 dan 2. Client 1 dan 2 tetap dapat melakukan koneksi, selama tidak melakukan perubahan IP Address.

Senin, 11 Agustus 2008

Web Interface User Manager Mikrotik

Pada tulisan terdahulu udah saya dokumentasikan mengenai setup User manager di Mikrotik untuk user Hotspot. Web Interface User Manager adalah menu-menu berbasis web yang dipergunakan untuk memanage user hotspot. Feature yang dimiliki antara lain menambah, mengubah, menghapus User, membuat kredit, melihat report masing-masing user dan sebagainya. Untuk mengakses web interface user manager bisa dibuka via web http:///userman. Contoh http://192.168.100.40/userman. Dari situ akan muncul login, dengan mengisikan login yang telah dibuat sebelumnya akan muncul menu-menu.
1. Menu Credit
  • Credit merupakan istilah yang digunakan untuk menyatakan berapa lama seorang user diperkenankan untuk mengakses hotspot (Analogi denga masa aktif voucher pulsa Hanphone).
  • Credit memiliki suatu nama yang Unik dan memiliki harga tertentu
  • Lama waktu credit bisa di ekstend
  • Credit akan mulai berlaku/dihitung mundur oleh sistem saat pertama kali user login.
  • Lama credit bisa dinyatakan dalam satu satuan waktu detik(s), menit (m),jam (h), hari (d), minggy (w) dan seterusnya.
2. Menu User
  • Digunakan untuk memanage User Hotspot, meliputi menambah user baru, menghapus menentukan kredit user, menentukan uptime user, melihat aktifitas dan lain-lain.
  • user name ; isikan nama user password;isikan password user yang bersangkutan
  • Uptime limit; isikan waktu yang diijinkan user tersebut bisa menggunakan akses
  • Add Time; isikan kredit yang berlaku untuk user tersebut.
  • Jika uptime limit telah terlampaui maka user tersebut tidak bisa lagi menggunakan akses walaupun kredit masih tersisa. Jika kredit telah terlampaui maka user juga tidak bisa mengakses meskipun uptime limit masih tersisa.
3 Menu Report
  • Melihat rekapitulasi akses dari setiap user.

Minggu, 10 Agustus 2008

User Manager Untuk Hotspot Mikrotik

User Manager Mikrotik merupakan management system yang apat dipergunakan untuk memanage user sbb:
  1. HotSpot users
  2. PPP (PPtP/PPPoE) users
  3. DHCP users
  4. Wireless users
  5. RouterOS users.
  • Pada tulisan ini akan sedikit diulas mengenai User Manager untuk hotspot user. Sebelumnya paket hotspot dan dhcp server harus sudah terintall/enable dan dikonfigurasi terlebih dahulu pada Mikrotik RouterOS. Asumsi pada tulisan ini RouterOS terdiri atas 1 Wlan dan 1 ether. Ether sebagai interface yang terhubung ke internet sedangkan wlan sebagai interface yang terhubung ke hotspot client.
    • Ip ether 1 = 192.168.100.40
    • Wlan 1 = 172.100.200.1/24
Langkah-langkahnya sebagai berikut:
  • 1. Set DHCP Server pada interface wlan1.
  • 2. Set Hostpot
  • / ip hotspot profile set hsprof1 use-radius=yes
  • 3. Set Radius Client untuk User Manager menangani hotspot
  • / radius add service=hotspot address=172.100.200.1 secret=123456
  • Sebagai catatan pertama kali hotspot user autentifikasi akan membaca pada database /ip hotspot user print. Remove data pada direktori ini agar autentifikasi pada radius.

4. Install User Manager

  • Buka system packages dari winbox atau terminal

/system/packages/print

  • Jika belum ada paket user manager install dulu. Karena User-manager merupakan paket terpisah dari router os MT. Pastikan versi outer OS sama dengan versi paket user manager. Misalnya jika router os kita 2.9.50 maka paket user-manager juga harus 2.9.50.Download dari http://www.mikrotik.com/download.html, pilih salah paket user-manager-2.9.x.npk dari paket zip
  • Upload via Program FTP Ke Mikrotik Server
  • Reboot Mikrotik Server
  • Cek system packages spt no 1, jika user manager belum aktif diaktifkan terlebih dahulu kemudian reboot. Jika sudah aktif
  • Buka http://192.168.100.40/userman
  • Jika sudah bisa terbuka halaman login user manager, berarti user manager sudah aktif.
5. Buat Pada User Manager nama subcriber
 / tool user-manager customer add login="admin" password=123 permissions=owner
6. Buat Hotspot Router
 / tool user-manager router add subscriber=admin ip-address=172.100.200.1 shared-secret=123456
7. Buat User untuk Hotspot
 / tool user-manager user add username=ovick password=123 subscriber=admin
Silahkan dicoba untuk konek hotspot dengan laptop dan User manager dapat diakses melalui http://192.168.100.40/userman. Menu-menu yang terdapat di dalamnya antara lain status login, add user, delete user, log dan lain-lain.

Lengkapnya seperti ini http://wiki.mikrotik.com/wiki/User_Manager/Customer_page

Referensi:
http://wiki.mikrotik.com/wiki/MikroTik_User_Manager
http://wiki.mikrotik.com/wiki/User_Manager/Hotspot_Example

Sabtu, 09 Agustus 2008

Installing and Configuring Cacti on Ubuntu Server

1. Install Apache Web Server with PHP support in Ubuntu Server

root@ovick:/# apt-get install apache2 apache2-mpm-prefork apache2-utils
root@ovick:/#
apt-get install libapache2-mod-php5 php5-cli php5-common php5-cgi php5-gd

2. Install Mysql Server with php Support

root@ovick:/# apt-get install mysql-server mysql-client libmysqlclient-dev
root@ovick:/#
apt-get install php5-mysql phpmyadmin

Other Dependencies Installation
root@ovick:/#
apt-get install make gcc g++ build-essential
root@ovick:/#
apt-get install cgilib libttf-dev libttf2 libpngwriter0-dev libpng12-dev libfreetype6-dev libart-2.0-dev snmp snmpd

edit the snmp community name and rights

ex: snmpd.conf
#####################################################
# sec.name source community
com2sec local localhost public
com2sec mynetwork 192.168.4.0/29 public
####
# Second, map the security names into group names:
# sec.model sec.name
group MyRWGroup v1 local
group MyRWGroup v2c local
group MyRWGroup usm local
group MyROGroup v1 mynetwork
group MyROGroup v2c mynetwork
group MyROGroup usm mynetwork

# Third, create a view for us to let the groups have rights to:
# incl/excl subtree mask
view all included .1 80

####
# Finally, grant the 2 groups access to the 1 view with different
# write permissions:
# context sec.model sec.level match read write notif
access MyROGroup "" any noauth exact all none none
access MyRWGroup "" any noauth exact all all none
access MyGroup "" any noauth exact all all none

# System contact information
syslocation Ubuntu-ku
syscontact System Ovick
################################################

setelah edit snmpd.conf renstart service nya
root@ovick:/#
/etc/init.d/snmpd restart
Untuk mengetes snmp nya :
root@ovick:/# snmpwalk -v1 -c public localhost

3. Install RRD Tool From Source

Download rddtool yang terbaru

root@ovick:/# cd /usr/local/bin
root@ovick:/#
wget http://oss.oetiker.ch/rrdtool/pub/rrdtool.tar.gz
root@ovick:/#
tar xfvz rrdtool.tar.gz
root@ovick:/#
rm rrdtool.tar.gz
root@ovick:/#
cd rrdtool-1.2.23
root@ovick:/#
./configure
root@ovick:/#
make
root@ovick:/#
make install

3. Installing Cacti From Source

root@ovick:/# cd /var/www/
root@ovick:/#
wget http://www.cacti.net/downloads/cacti-0.8.6j.tar.gz
root@ovick:/#
tar xzvf cacti-0.8.6j.tar.gz
Buat direktori cacti and pindahkan isi smua isi derektori
cacti-0.8.6j ke direktori cacti
root@ovick:/#
mv cacti-0.8.6j cacti


4.Created the user and group

root@ovick:/# groupadd cacti
root@ovick:/# useradd -g cacti cacti
Now you need to make sure that you have the correct permissions for inside cacti folders and files
root@ovick:/#
cd /var/www/cacti
root@ovick:/# chown -R cacti:cacti rra/ log/

5. Create the cacti db in phpmyadmin

http://YOURIP/phpmyadmin
login using root account
set root password on phpmyadmin if you have already

Privileges>Root>edit privileges>change password
Do this for all 3 root accts listed (I do middle last because that’s the one that will lock you out after setting it)

Create cacti user
Privileges>add new user
user name: cacti
host: localhost
password: cacti

database for user: create database with same name and grant all privileges > Go
then I give the user grant access to it too
privileges>cacti>edit privileges>database specific privileges>Add privileges on the following database: cacti>Go

check the “grant box” (make sure all others are still checked)

root@ovick:/# mysql –p –u root cacti < cacti.sql

root@ovick:/# mysql –p –u root

root@ovick:/# mysql> flush privileges;

root@ovick:/# mysql> exit

Now you need to Edit /var/www/cacti/include/config.php and specify the MySQL user, password and database for your Cacti configuration.

root@ovick:/# vi /var/www/cacti/include/config.php

$database_default = “cacti”;
$database_hostname = “localhost”;
$database_username = “cacti”;
$database_password = “cacti”;

Enter a valid username for cacti, this user will also be used in the next step for data gathering.

Now we need to add the crontab for poller
crontab -e

Add the following line ans save you can chnage the time whenever you want.
*/5 * * * * php /var/www/cacti/poller.php > /dev/null 2>&1

Point your web browser to http://your-server-ip/cacti/ this will start with the following screen here click next
Enter admin admin for login

Change admin password
System settings
Change snmp community to your company’s community name save

Paths:
RRDTool Default Font Path
/usr/local/bin/rrdtool/src/DejaVuSansMono-Roman.ttf


I always force one entry for the graphing by using the cron command, use this:
php /var/www/cacti/poller.php > /dev/null 2>&1

(if not you will have red X on boxes where graphs should be (in IE7, blank in Firefox)
If they are red X’s wait for a bit until the first line gets mapped (every 5 min)
If you still have red X's check your RRDTool path, it must point to the bin, not the path.
then go to graphs.

Update your cacti:

root@ubuntu-ku:/# cd /vaw/www/cacti

root@ovick:/var/www/cacti-0# wget http://www.cacti.net/downloads/patches/0.8.6j/ping_php_version4_snmpgetnext.patch
root@ubuntu-ku:/var/www/cacti-0#
wget http://www.cacti.net/downloads/patches/0.8.6j/tree_console_missing_hosts.patch
root@ubuntu-ku:/var/www/cacti-0# wget http://www.cacti.net/downloads/patches/0.8.6j/thumbnail_graphs_not_working.patch
root@ubuntu-ku:/var/www/cacti-0# wget http://www.cacti.net/downloads/patches/0.8.6j/graph_debug_lockup_fix.patch
root@ubuntu-ku:/var/www/cacti-0# wget http://www.cacti.net/downloads/patches/0.8.6j/snmpwalk_fix.patch
root@ubuntu-ku:/var/www/cacti-0# patch -p1 -N < ping_php_version4_snmpgetnext.patch
root@ubuntu-ku:/var/www/cacti-0# patch -p1 -N < tree_console_missing_hosts.patch
root@ubuntu-ku:/var/www/cacti-0# patch -p1 -N < thumbnail_graphs_not_working.patch
root@ubuntu-ku:/var/www/cacti-0# patch -p1 -N <>

6. Try to open full path url http://cactiserver/cacti/

All done with following those step carefully.
Singkat cerita, cacti saya sudah dapat berjalan dengan mengikuti langkah-langkah tersebut di atas.
Selamat mencoba, Good Luck

Reference :
1. http://www.cacti.net/downloads/docs/html/unix_configure_cacti.html