Blocking Situs Dengan SquidGuard pada Ubuntu


Pada kesempatan kali ini saya akan coba jelaskan cara bloking situs dengan menggunakan squidGuard. Terlebih dahulu siapkan server yang telah terinstall squid. Artikel terkait bisa dibaca di sini. Berikut adalah langkah2-nya:

Install squidGuard

apt-get install squidguard

download blacklist

wget http://squidguard.mesd.k12.or.us/blacklists.tgz

pindahkan file blacklist.tgz

mv blacklists.tgz /var/lib/squidguard/db/

pindah ke directory dimana file blacklists.tgz diletakkan

cd /var/lib/squidguard/db

extract file blacklists.tgz

tar -zxvf blacklists.tgz

akan meghasilkan folder ads, porn, violence, dsb. masing – masing folder terdapat file urls dan domains yang berisi daftar url atau domain sesuai dengan kategorinya.

ubah permission semua file blacklists

chomod 777 * -R

chown proxy:proxy * -R

Konfigurasi squidGuard.conf sebagai berikut (terdapat di directory /etc/squid/) :

#
# CONFIG FILE FOR SQUIDGUARD
#

dbhome /var/lib/squidguard/db/blacklists
logdir /var/log/squid

# DAFTAR SOURCE ADDRESS

src manager  {

# source address dengan berbagai format penulisan
ip 192.168.1.0-192.168.1.255
ip 192.168.2.0/24
ip 192.168.3.0/255.255.255.0
ip 192.168.4.1 192.168.4.2 192.168.4.3
iplist maganerlist
# buat file dengan nama managerlist di directory dbhome (/var/lib/squidguard/db/blacklists
# contoh isi file tersebut
#
# 192.168.1.0-192.168.1.255
# 192.168.2.0/24
# 192.168.3.0/255.255.255.0
# 192.168.4.1 192.168.4.2 192.168.4.3
}

src staff  {
ip 192.168.5.0/24
}
# TIME RULES

time habiskerja {
weekly * 17:00-24:00 # setiap hari dari jam 5 sore sampai ja 12 malem
date *.01.01 # tahun baru
}

# DAFTAR DESTINATION

dest porn {
domainlist porn/domains
urllist porn/urls } dest ads {
domainlist ads/domains
urllist ads/urls
}

dest aggressive {
domainlist aggressive/domains
urllist aggressive/urls
}

dest audio-video {
domainlist audio-video/domains
urllist audio-video/urls
}

dest drugs {
domainlist drugs/domains
urllist drugs/urls
}

dest gambling {
domainlist gambling/domains
urllist gambling/urls
}

dest hacking {
domainlist hacking/domains
urllist hacking/urls
}

dest proxy {
domainlist proxy/domains
urllist proxy/urls
}

dest redirector {
domainlist redirector/domains
urllist redirector/urls
}

dest spyware {
domainlist spyware/domains
urllist spyware/urls
}

dest suspect {
domainlist suspect/domains
urllist suspect/urls
}

dest violence {
domainlist violence/domains
urllist violence/urls
}

dest warez {
domainlist warez/domains
urllist warez/urls
}

# MASUKKAN ACCESS LIST / POLICY DI BAGIAN INI

acl {
manager {
pass all # manager di los aja
}
staff within habiskerja {
pass all # staff di los kalau jam pulang kantor
}
default {
pass !ads !audio-video !gambling !proxy !spyware !violence !aggressive !drugs !hacking !porn !redirector !suspect !warez all
redirect http://muslim.or.id
}
}

generate file db untuk semua destination yang sudah kita definisikan pada konfigurasi di atas

squidGuard -C all

Akan terbentuk file .db pada masing – masing folder di blacklists direcorty. Ubah permissionnya agar squid bisa membaca file tsb. chmod 777 /var/lib/squidguard/bl/* -R

chown proxy:proxy /var/lib/squidguard/bl/* -R

tambah baris berikut di file /etc/squid/squid.conf

url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf

restart squid

squid -k reconfigure

Silakan cek rules/policy yang telah dibuat dengan mengakses situs yang telah diblok.

Membuat Proxy Server Dengan Lusca Head


Sebelumnya silakan baca dulu artikel saya bagaimana cara instalasi squid pada debian di sini

Install paket2 yang diperlukan:

apt-get install squid squidclient squid-cgi gcc build-essential sharutils ccze libzip-dev automake1.9

download file lusca

wget https://sites.google.com/site/catatanfaish/lusca_he/LUSCA_FMI.tar.gz

extract file lusca-nya

tar xzvf LUSCA_FMI.tar.gz

masuk ke directory hasil extract

cd LUSCA_FMI

kemudian kita compiler lusca headnya

./configure --prefix=/usr --exec_prefix=/usr \
--bindir=/usr/sbin --sbindir=/usr/sbin \
--libexecdir=/usr/lib/squid --sysconfdir=/etc/squid \
--localstatedir=/var/spool/squid --datadir=/usr/share/squid \
--enable-http-gzip --enable-async-io=24 --with-aufs-threads=24 \
--with-pthreads --enable-storeio=aufs --with-maxfd=65536 \
--enable-linux-netfilter --enable-arp-acl --enable-epoll \
--enable-removal-policies=heap --with-aio --with-dl --enable-snmp \
--enable-delay-pools --enable-htcp --enable-cache-digests \
--disable-unlinkd --enable-large-cache-files --with-large-files \
--enable-err-languages=English --enable-default-err-language=English


Install lusca

make && make install

Stop squid

squid -k shutdown

kita ganti file squid.conf dengan file berikut

wget https://sites.google.com/site/catatanfaish/lusca_he/squid.conf

download storeurl

wget https://sites.google.com/site/catatanfaish/lusca_he/storeurl.pl

kita buat permision untuk squid.conf dan storeurl.pl

chown proxy:proxy /etc/squid/storeurl.pl
chmod 777 /etc/squid/storeurl.pl
chmod 600 /etc/squid/squid.conf

sekarang kita buat cache_dir nya:

saat installasi buat 2 partisi khusus untuk cache. tentang installasi linux server (debian) bisa dilihat di sini

/cache1—>>partisi untuk cache pertama

/cache2—>>partisi untuk cache kedua

cd /cache1

mkdir proxy1
chmod 777 /cache1/proxy1
chown proxy:proxy /cache1/proxy1

cd /cache2
mkdir proxy2
chmod 777 /cache2/proxy2
chown proxy:proxy /cache2/proxy2

sekarang kita buat swap untuk cache_dir nya

squid -f /etc/squid/squid.conf -z

sekarang jalankan squidnya

squid -N -d 1 -D

kemudian cek untuk squidnya

tail –f /var/log/squid/access.log

 

 

Selamat mencoba!!!

 

SELESAI

Memebuat SMS Gateway dengan Kannel


Tanpa BABIBU di sini ane mau share cara bikin SMS Gateway pake Kannel. Distro linux yg ane pake Ubuntu. Bisa pake versi mane aje. Langkah – langkahnya kek gini:

1. Install kannel

apt-get install kannel

2. Setting kannel

File yg kudu di setting /etc/kannel/kannel.conf

settingnya kek gini (sesuaiin sama keperluan agan):

# group core kudu harus wajib ada gan
group = core

# port buat HTTP administratin gan
admin-port = 13000
admin-port-ssl = false

#ni password buat HTTP administration gan
admin-password = passwordAgan
status-password = passwordAgan

# ni buat srikiti aja gan. cuma ngijinin ip localhost sama LAN aja (misal IP LAN kite 192.168.1.0/24) buat HTTP administration ntar (keterangan di bawah).
admin-deny-ip = “*.*.*.*”
admin-allow-ip = “127.0.0.1;192.168.1.*”
smsbox-port = 13001
smsbox-port-ssl = false
box-deny-ip = “*.*.*.*”
box-allow-ip = “127.0.0.1;192.168.1.*”

#semua log kita taro di file yang sama gan biar kaga ribet
log-file = “/var/log/kannel/kannel.log”

# log-level tu buat ngatur apa aja yng kudu di log gan. pilihanye 0 – 4, 0 = debug, 1= info, 2 = warning, 3 = error, 4 = panic
log-level = 1
access-log = “/var/log/kannel/kannel.log”
access-log-clean = true
access-log-format = %t %l [SMSC:%i] [from:%p] [to:%P] [msg:%b]
store-dump-freq = 10
dlr-storage = internal
sms-resend-freq = 60
sms-resend-retry = -1

# ni group buat devicenyanya gan
group = smsc
smsc = at
smsc-id = simpati
modemtype = auto

#sesuaiin sama device agan. dulu ane pake gsm modem nyang pcmcia ntu gan. agan bisa pake HP. colok lewat usb. trus buat tau devicenya di mount dimane begitu agan colok tu device agan ketik “dmesg” di terminal. ntar bakalan muncul tu gan dia di mount dimane.
device = /dev/ttyUSB2

#speed di comment aja gan biar otomatis sesuaiin sama speed-nya modem

#speed = 9600
keepalive = 60

#nomor agan
my-number = +6282110050459
log-file = “/var/log/kannel/kannel.log”
log-level = 1

# ni setingan smsbox-nya gan.
group = smsbox
bearerbox-host = localhost
sendsms-port = 13013
log-file = “/var/log/kannel/kannel.log”
log-level = 1
access-log = “/var/log/kannel/kannel.log”
access-log-clean = true

# nomor agan lagi

global-sender = +6282110050459

#ni group buat user sms gan
group = sendsms-user
username = smsuser
password = smspass

# ni maksudnye biar sms bisa nyambung gan. jadi misal lebih dari 1 sms (lebih dari 160 karakter) dianggep 1 sms utuh. ga dipecah -pecah.
concatenation = true

# max-messages maksudnye berapa banyak sms yang bisa dikirim sama user ini per sekali ngirim. kalo 10 itu berarti tiap ngirim sms bisa sampe 160 x 10 karakter gan. agan pasti tau kan kalo 1 sms tu 160 karakter. kenyataannya kalo kita set 10 ga nyampe 1600 karakter gan. ane pernah coba cuma bisa sampe 1520 karakter kalo ga salah.

max-messages = 10

#ni bagian yang penting gan buat handle incoming sms, agan tinggal masukin keyword yang mau diproses trus url buat handle tu sms. output dari url tadi yang bakal jadi reply sms. ada beberapa parameter yang agan bisa kirim ke url %a = isi semua sms, %k = keyword atawa kata pertama sms tsb, %q = nomor pengirim, %t = waktu ngirim sms dengan format yyyy-mm-dd, %s = kata kedua sms tsb, %r = kata ketiga sms dan seterusnya, %Q = nomor penerima sms. Jadi misal kek gini sms yang masuk kek gini gan “reg bagas semarang 10 april 1987”. kalo dijabarin bakalan %k = reg, %s = bagas, %r = semarang 10 april 1987, %a = reg bagas semarang 10 april 1987. buat lebih jelasnya agan bisa liat get url
group = sms-service
keyword = reg
get-url = “http://localhost/sms.php?pengirim=%q&keyword=%k&nama=%s&ttl=%r&isisms=%a&waktu=%t”
max-messages = 1

group = sms-service

# default maksudnya sms yang ga cocok sama keyword manapun
keyword = default

# ntar pengirim bakalan dapet balesan “keyword ga cocok”
text = “Keyword ga cocok”

#misal agan pengen sms yg ga cocok keywordnya ga dapet balesan tinggal set max-messages = 0
max-messages = 1

# kita includin setingan modem gan. ada beberapa setingan modem di file /etc/kannel/modems.conf. trus group smsc (lihat di atas) modemtype kita kasih auto aja gan. biar milih ndiri. atau kalau gagal kita tentuin type-nya berdasarkan yang ada di file modems.conf.
include = “/etc/kannel/modems.conf”

isi /etc/kannel/modems.conf kek gini gan:

# Modems configuration
#
# Example and default values
#
# group = modems
# id = “my-id”
# name = “my-name”
# detect-string = “MODEM”
# detect-string2 = “” [Default]
# init-string = “AT+CNMI=1,2,0,0,0” [Default]
# speed = 9600 [Default]
# enable-hwhs = “AT+IFC=2,2” [Default]
# need-sleep = false [Default]
# no-pin = false [Default]
# no-smsc = false [Default]
# sendline-sleep = 100 [Default, miliseconds]
# keepalive-cmd = “AT” [Default]
# broken = false [Default]
# message-storage = “SM”
# enable-mms = false [Default]

# If modemtype=auto, try everyone and defaults to this one
group = modems
id = generic
name = “Generic Modem”

group = modems
id = wavecom
name = Wavecom
detect-string = “WAVECOM”

group = modems
id = premicell
name = Premicell
detect-string = “PREMICEL”
no-pin = true
no-smsc = true

group = modems
id = siemens_tc35
name = “Siemens TC35”
detect-string = “SIEMENS”
detect-string2 = “TC35”
init-string = “AT+CNMI=1,2,0,1,1”
speed = 19200
enable-hwhs = “AT\\Q3”
need-sleep = true

group = modems
id = siemens_m20
name = “Siemens M20”
detect-string = “SIEMENS”
detect-string2 = “M20”
speed = 19200
enable-hwhs = “AT\\Q3”
keepalive-cmd = “AT+CBC;+CSQ”
need-sleep = true

group = modems
id = siemens_sl45
name = “Siemens SL45”
detect-string = “SIEMENS”
detect-string2 = “SL45”
init-string = “AT+CNMI=1,2,2,2,1”
keepalive-cmd = “AT+CBC;+CSQ”
speed = 19200
enable-hwhs = “AT\\Q3”
need-sleep = true
message-storage = “SM”

group = modems
id = nokiaphone
name = “Nokia Phone”
detect-string = “Nokia Mobile Phone”
need-sleep = true
keepalive-cmd = “AT+CBC;+CSQ”
enable-mms = true

group = modems
id = falcom
name = “Falcom”
detect-string = “Falcom”
#no-smsc = true

group = modems
id = ericsson_r520m
name = “Ericsson R520m”
detect-string = “R520m”
init-string = “AT+CNMI=3,2,0,0”

group = modems
id = ericsson_t68
name = “Ericsson T68”
detect-string = “T68”
init-string = “AT+CNMI=3,3”
keepalive-cmd = “AT+CBC;+CSQ”
broken = true

group = modems
id = sonyericsson_gr47
name = “Sony Ericsson GR47”
detect-string = “GR47”
message-storage = “ME”
# use this init-string for non sim-buffering
init-string = “AT+CNMI=3,2,0,0”
# use this init-string for sim-buffering
#init-string = “AT+CNMI=3,1,0,0”
reset-string = “ATZ”
broken = true

group = modems
id = alcatel
name = “Alcatel”
detect-string = “Alcatel”
init-string = “AT+CNMI=3,2,0,0”

group = modems
id = sonyericsson_T630-T628
name = “Sony Ericsson T630-T628?
init-string = “AT+CNMI=2,3,2,0,0;+CMGF=0?
keepalive-cmd = “AT+CBC;+CSQ;+CMGF=0?
broken = true

group = modems
id = sonyericsson_p1i
name = “Sony Ericsson P1i”
detect-string = “Sony Ericsson P1i”
init-string = “ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0”
message-storage = “SM”
reset-string = “ATZ”
broken = true

1 lagi gan yang kudu di setting. edit file /etc/default/kannel. trus agan komen yang WAPBOX, ilangin komen yang SMSBOX. biar SMSBOX bisa jalan pas booting gan. disini kita ga pake WAPBOX. Hampir lupa gan. biar kannel bisa akses tu device, perlu ngedit file /etc/group gan. cari kata dialout. trus tambahin kannel disitu penampakannya kek gini gan:

dialout:x:20:bagas,kannel

3. Testing

Kalo udah tinggal di test dah gan. start dulu kannel-nya pake “/etc/init.d/kannel start” lewat terminal. jangan lupa gan. harus sebagai root. tau kan gan caranye masuk root di ubuntu? pake sudo su. Perhatiin log-nya gan di /var/log/kannel/kannel.log. bisa pake “tailf /var/log/kannel/kannel.log” lewat terminal. pastiin ga ada error. trus cek sms gateway dah running pa blm. caranya ketik kek gini di terminal:

links -dump “http://localhost:13000/status.html?password=passwordAgan”

kalo di ubuntu agan belum ada links install dulu gan pake a”pt-get install links”. 13000 tu port admin yg udah kita setting di group core. trus status.html tu kita liat status-nya dalam format html. passwordAgan tu pasword-admin yg udah kita tentuin di group core. perhatiin outputnya gan. liat bagian status. harusnya “running”. kalo status running & ga ada error di log saatnya test kirim & terima sms gan. pertama kita coba kirim sms dulu. lewat terminal kita bisa coba pake command:

links -dump http://localhost:13013/cgi-bin/sendsms?username=smsuser&password=smspass&to=085641799816&text=Hello+world

sedikit penjelasan gan. 13013 tu sendsms-port yang kita setting di group smsbox, trus username ama password tu yang udah kita seting di group sendsms-user, to tu ya nomor tujaun. text tu isi smsnye gan. sambil perhatiin log-nye. ntar tiap sms yang keluar atau masuk (incoming & outgoing sms) bakal kecatet di log. kalau sms kekirim selamat gan. trus test selanjutnye test terima sms gan. kite coba setingan group sms-service jalan ape kaga. kita test kirim sms kayak yang di contoh gan. “reg budi semarang 13 januari 1983” misalnya. ntar pasti dpt balesan gan. eh, iya. sebelumnye kite buat script php buat handle sms-service. jadi kita kudu install web server (apache, php) di gateway tadi. contoh file-nya kek gini gan. sesuai sama setingan di atas kita kasih nama sms.php.

<?php

// kite ambil parameter nyang dikirim gan. selanjutnye bisa agan proses. bisa agan masukin database kalau agan mau. disini ane cuma kasih contoh simple aja gan.

$keyword = $_GET[‘keyword’];

$nama = $_GET[‘nama’];

$ttl = $_GET[‘ttl’];

$waktu = $_GET[‘waktu’];

$pengirim = $_GET[‘pengirim’];

$isisms = $_GET[‘isisms’];

// misal kita mau bales kek gini gan

$reply = “Makasih udah daftar. Berikut data agan:\n”;

$reply .= “Nama: $nama \n”;

$reply .= “TTL: $ttl \n”;

$reply .= “sms agan dikirim pada: $waktu\n”;

$reply .= “nomor hp agan: $pengirim”;

// output dari echo ini gan yang bakal jadi balesan

echo $reply;

// ntar outptnya kurang lebih bakal kek gini gan:

/**

* Makasih udah daftar. Berikut data agan:

*Nama: budi

*TTL: semarang 13 januari 1983

*sms agan dikirim pada: 2011-04-27 11:21:36

*nomor hp agan:+6285641799816

*/

?>

trus agan coba sms bebas. ga usah pake keyword reg. ntar pasti dpt balesan “Keyword ga cocok” kalo setingan agan udah bener. Sebenernya masih banyak fitur dan setingan yang bisa digali gan. disini ane cuma share dasarnya doank.

Kalo udah bisa, agan tinggal bikin user interfacenya dah. bisa pake PlaySMS. dulu ane pake itu. selalu perhatiin log gan!!! selamat mencoba!!! jangan lupa sharing gan kalo ada masalah.

Perintah Terjadwal Menggunakan Crontab


Cron adalah sebuah daemon untuk menjalankan perintah terjadwal. Utilitas ini sangat berguna jika kita ingin menjalankan suatu program atau perintah yang waktunya sudah kita jadwalkan seperti misalnya back up database yang artikelnya sudah saya terbitkan sebelumnya, atau untuk menghapus file temporary.

Perintah Crontab

Perintah crontab adalah sebagai berikut:

crontab -u [nama_user] { -e | -l -r }

Keterangan:

  • -u : user yang menjalankan cron (optional). Jika tidak di set maka di user saat ini yang digunakan
  • -e : edit crontab
  • -l : list atau daftar crontab
  • -r : remove atau menghapus crontab

Contoh penggunaan perintah tersebuta adalah sebagai berikut:

crontab -u bagas -l —> menampilkan list crontab user bagas

crontab -l —> menampilkan list crontab user saat ini

crontab -u bagas —> mengedit crontab user bagas

crontab -r bagas —> menghapus crontab user bagas

Saat kita menggunakan perintah “crontab -e” (tanpa tandapetik) maka akan muncul editor yang di dalamnya terdapat list perintah terjadwal untu user terkait. Jika Anda belum pernah menambahkan apapun pada crontab file ini biasanya kosong.

Penulisan Crontab

Ketentuan mengedit crontab urutannya adalah sebagai berikut:

m h dom mon dow command

Keterangan:

  • m : minute (menit), diisi 0 – 59 atau * untuk tidak memakai parameter ini
  • h : hour (jam), diisi 0-23 atau * untuk tidak memakai parameter ini
  • dom : day of month (tanggal), diisi 0-31 atau * untuk tidak memakai parameter ini
  • mon : month (bulan), diisi 1-12 atau * untuk tidak memakai parameter ini
  • dow : day of week (hari), diisi 0-6 dimana 0 = minggu, 1= senin, dst atau * untuk tidak memakai parameter ini
  • command (perintah), diisi perintah yang akan dieksekusi. Bisa perintah dasar linux atau bisa juga kumpulan perintah dalam suatu file yang bisa dieksekusi sebagaimana contoh pada artikel saya tentang back up database.
  • Parameter m,h,dom,mon,dow dapat juga digantikan dengan cukup menuliskan @hourly (menjalankan perintah tiap jam), @daily (menjalankan perintah setiap hari jam 00:00),  @weekly (menjalankan perintah tiap hari minggu jam 00:00), atau @monthly (menjalankan perintah tiap awal bulan jam 00:00).
  • Parameter m,h,dom,mon bisa juga dituliskan dengan format “*/n” (tanpa tanda petik) dimana n adalah numeric.
  • Parameter m,h,dom,mon,dow bisa juga ditulis lebih dari 1 dengan separator koma (“,”).

Parameter Waktu

Untuk lebih memperjelas tulisan ini saya akan coba jelaskan beberapa format parameter waktu yaitu parameter m (minute), h (hour), dom (day of month), mon (month), dan dow (day of week).

Format @waktu. Nilai yang sesuai adalah @hourly, @daily, @weekly, @monthly.

Contoh :

@monthly rm /home/someuser/tmp/*

Contoh Crontab

Dibawah ini adalah beberapa contoh penulisan crontab:

@hourly rm /home/someuser/tmp/*

@daily rm /home/someuser/tmp/*

@weekly rm /home/someuser/tmp/*

@monthly rm /home/someuser/tmp/*

30 0 1 1,6,12 * rm /home/someuser/tmp/*

Disable Email

Secara default crontab akan mengirimkan email kepada user account yang menjalankan cronjob. Jika Anda tidak menginginkannya tambahkan baris berikut pada akhir baris cronjob:

> /dev/null 2>&1

Contoh:

@monthly rm /home/someuser/tmp/* > /dev/null 2>&1

Membuat Log

Berikut adalah contoh jika Anda ingin membuat file log dari cronjob yang dijalankan:

@monthly rm /home/someuser/tmp/* > /home/someuser/cronlog/hapus_temporary_file.log

Demikian sedikit tentang crontab mudah – mudahan bisa berguna bagi pembaca.

Back Up Database MySql Harian Secara Otomatis


Berikut ini script sederhana dari saya untuk backup database Mysql secara otomatis. Untuk menjalankannya bisa menggunakan cron. Sebelum memulai langkah – langkah di bawah ada paket yang harus anda install terlebih dahulu (jika belum ada) yaitu bzip2 yang berfungsi mengkompress file hasil backup. Untuk distro Debian atau Ubuntu bisa menggunakan perintah berikut:

apt-get install bzip2

Sedangkan langkah installasi script back up-nya adalah sebagai berikut:

  • Login ke Database Serversebagai root
  • Buat file seperti di bawah dengan nama backupdb.sh
  • Simpan file ke suatu directory. Misal ke directory /sbin
  • Ubah permission file backupdb.sh agar bisa di execute dengan perintah berikut:

chmod + x /sbin/backupdb.sh

  • Edit crontab dengan perintah berikut:

crontab -e

  • Tambahkan baris berikut pada file cron:

* 00 * * * /sbin/backupdb.sh

  • Maksud dari baris di atas adalah menjalankan script /sbin/backupdb.sh pada jam 00 (tengah malam) setiap hari. Deatil mengenai crontab akan saya bahas pada artikel yang lain insya Allah.
  • Simpan file cron dan keluar dari editor

#!/bin/bash

######################################################
# Database Configuration, sesuaikan dengan konfigurasi database Anda
######################################################

db_host=”localhost”
db_user=”root”
db_pass=”password”

######################################################
# Masukkan nama database yang akan di backup berurutan
######################################################

db_name=”db1 db2 db3″

#####################################################
# Nama file backup dibedakan dengan variable waktu, sesuaikan dengan kebutuhan
#####################################################

now=`date +%d%m%Y`
backup_file=”/home/backup/backupdb-$now.sql”

#####################################################
# Simpan database dengan format bz2 ke directory yang sudah di tentukan
#####################################################

mysqldump -h $db_host -u$db_user -p$db_pass –databases $db_name > $backup_file
bzip2 $backup_file

exit 0

Script ini bisa dikembangkan dengan mengirimkan file backup ke ftp server seperti yang pernah saya implementasikan di tempat kerja saya (artikelnya segera akan saya tulis insya Allah). Demikian script sederhana dari saya mudah – mudahan bisa berguna. Mohon koreksi dan saran.

Membuat Proxy Server dengan Squid pada Debian


Untuk mengatur penggunaan internet di kantor atau sekolah Proxy Server merupakan suatu hal yang wajib agar user tidak menyalahgunakan fasilitas koneksi internet seperti membuka situs – situs yang tidak baik misalnya situs – situs yang mengandung pornografi, perjudian, kekerasan, dsb. Atau juga mengontrol penggunaan

Berikut ini akan coba saya tulis cara instalasi Proxy Server menggunakan Squid pada Debian dan konfigurasi minimum agar Squid bisa berjalan. Sedangkan untuk konfigurasi tingkat lanjut seperti penambahan rules, blocking situs, bandwidth management akan saya tulis pada artikel yang berbeda Insya Allah.

Persiapan

PC yang sudah terinstall Linux. Dalam kasus ini saya menggunakan Debian Lenny. Secara umum langkahnya sama. Perbedaannya hanya pada saat proses installasi paket Squid. Jika pada Debian dan turunannya (Ubuntu dll) menggunakan “apt-get”, pada RedHat dan turunannya (Centos dll) menggunakan “yum”. PC ini harus memiliki paling tidak 2 interface. 1 interface terhubung ke LAN dan 1 lagi ke WAN yang dalam contoh kali ini terhubng ke modem speedy.

Network Topology

Modem Speedy   —>  Proxy Server  —>  LAN

Modem Speedy

IP Address : 192.168.0.1

Netmask : 255.255.255.0

DNS : 202.134.0.155, 203.130.196.5, 222.124.204.34

Proxy Server

eth0 (connected to Modem Speedy)

IP Address : 192.168.0.2

Netmask : 255.255.255.0

Gateway : 192.168.0.1

eth1 (connected to LAN)

IP Address : 192.168.1.1

Netmask : 255.255.255.0

LAN

IP Address : 192.168.1.2 – 192.168.1.254

Netmask : 255.255.255.0

Default Gateway : 192.168.1.1

DNS Server : 192.168.1.1

Setting Network dan IPtables

Lakukan setting network di Proxy Server dengan mengedit file /etc/network/interfaces (untuk distro selain Debian dan Ubuntu silakan menyesuaikan) sebagai berikut:

auto lo eth0 eth1

iface lo inet loopback

# The primary network interface

iface eth0 inet static

address 192.168.0.2

netmask 255.255.255.0

broadcast 192.168.0.255

network 192.168.0.0

gateway 192.168.0.1

iface eth1 inet static

address 192.168.1.1

netmask 255.255.255.0

broadcast 192.168.1.255

network 192.168.1.0

Restart network untuk mendapatkan efek.

/etc/init.d/networking restart

atau

/etc/init.d/networking force-reload

Cek hasil konfigurasi network dengan perintah “ifconfig” (tanpa tanda petik). Pastikan hasil konfigurasi telah sesuai.

Edit file /etc/resolv.conf sebagai berikut untuk DNS Server:

nameserver 202.134.0.155
nameserver 203.130.196.5
nameserver 222.124.204.34

Edit file /etc/sysctl.conf dengan menghilangkan tanda # pada baris #net.ipv4.ip_forward=1.

sebelum

#net.ipv4.ip_forward=1

sesudah

net.ipv4.ip_forward=1

Simpan konfigurasi kemudian aktifkan dengan perintah berikut:

sysctl -p

Lakukan konfigurasi IPtables sebagai berikut:

iptables -t nat -A POSTROUTING -o eth0 -j SNAT –to-source 192.168.0.2

iptables -t nat -A PREROUTING -p tcp -i eth1 –dport 80 REDIRECT –to-ports 3128

Baris pertama melakukan source NAT semua paket yang keluar dari eth0 yang terhubung ke modem speedy sehingga semua client di LAN IP Addressnya akan terbaca 192.168.0.2 (IP Address Proxy Server yang terhubung ke modem speedy) oleh modem speedy. Hal ini dilakukan agar semua client di LAN bisa akses internet.

Sedangkan baris ke 2 berfungsi mengalihkan semua paket yang masuk ke eth1 dari LAN yang menuju port 80 (port web server) ke port Squid yaitu port 3128. Tanpa baris ini maka fungsi Squid sebagai proxy server tidak akan bekerja.

Konfigurasi IPtables di atas bersifat sementara. Jika komputer direstart maka konfigurasi IPtables akan hilang. Untuk mengatasi hal ini lakukan langkah – langkah berikut:

Simpan konfigurasi IPtables ke suatu file (dalm contoh ini ke file /etc/iptables.up.rules) dengan perintah berikut:

iptables-save > /etc/iptables.up.rules

Edit file /etc/network/interfaces. Tambahkan baris “post-up iptables-restore < /etc/iptables.up.rules” agar konfigurasi IPtables di load setelah interface up. Setelah diedit hasilnya adalah sebagai berikut:

auto lo eth0 eth1

iface lo inet loopback

# The primary network interface

iface eth0 inet static

address 192.168.0.2

netmask 255.255.255.0

broadcast 192.168.0.255

network 192.168.0.0

gateway 192.168.0.1

iface eth1 inet static

address 192.168.1.1

netmask 255.255.255.0

broadcast 192.168.1.255

network 192.168.1.0

post-up iptables-restore < /etc/iptables.up.rules

Installasi Squid

Setelah network dan Iptables selesai dikonfigure maka tahap selanjutnya adalah installasi Squid. Gunakan perintah berikut:

apt-get install squid

Setelah Squid terinstall lakukan konfigurasi minimum sebagai berikut:

http_port 3128 transparent

cache_dir ufs 20480 16 256

acl localnet 192.168.1.0/24

http_access allow localnet

http_access deny all

Kemudian restart squid dengan perintah berikut:

/etc/init.d/squid restart

Pastikan squid berjalan dengan menggunakan perintah berikut:

ps ax | grep squid

Jika squid telah berjalan maka seharusnya output dari perintah di atas tidak kosong. Atau bisa gunakan utility “nmap” yang terlebih dahulu harus diinstall dengan perintah “apt-get install nmap” (tanpa tanda petik). Ketikkan perintah berikut maka seharusnya ada baris “3128/tcp open squid-http” yang menandakan Squid telah berjalan:

nmap localhost

Install dnsmasq

Tahap selanjutnya adalah menginstall dnsmasq yang berfungsi sebagai caching DNS server (memetakan nama doamin ke IP Address) sehingga di client tidak perlu menggunakan DNS server public (DNS Server speedy.) Hal ini akan mengurangi traffic ke DNS server public sehingga sedikit banyak akan menekan penggunaan bandwidth. Install dnsmasq dengan perintah berikut:

apt-get install dnsmasq

Setalah terinstall cek apakah dnsmasq telah berjalan dengan perintah berikut:

ps ax | grep dnsmasq

Atau bisa juga dengan perintah “nmap localhost” (tanpa tanda petik). Jika dnsmasq telah berjalan maka output perintah tadi akan ada baris “53/tcp open domain”.

Semua konfigurasi telah selesai kita lakukan. Langkah selanjutnya adalah melakukan test dari PC client untuk akses ke internet. Jika halaman web terbuka maka Proxy Server telah berhasil kita buat. Konfigurasi IP Address client bisa dilihat di bagian Network Topology artikel ini.

Langkah selanjutnya adalah membuat rules tambahan untuk mengontrol penggunaan internet. Baik itu blocking situs, bandwidth management, maupun rules lain. Seperti janji saya, artikel tentang ini akan saya terbitkan segera.

Jika menggunakan lebih dari 1 koneksi internet saya sarankan untuk membaca artikel saya tentang loadbalancing.

Installasi Server Debian Lenny


Berikut ini adalah step by step instalasi Server Debian Lenny. Saya harap bisa menjadi acuan untuk instalasi distro Linux yang lain karena pada prinsipnya langkah – langkahnya adalah sama saja. Yang terpenting adalah kita selalu memahami tiap prosesnya dengan selalu membaca informasi tahap demi tahap.

Persiapan

Yang harus disiapkan adalah 1 buah PC dengan spec sesuai kebutuhan dengan mempertimbangkan service apa saja yang akan di install (sebagai proxy server, database server,web server, mail server, ftp server atau file server atau bahkan gabungan dari beberapa service tadi), seberapa sering diakses,  seberapa banyak yang mengakses. Untuk kebutuhan kantor dengan user sampai dengan 50 orang Pentium 4 dengan memory 1GB dan HDD 100GB saya rasa sudah cukup untuk melayani berbagai service.

Selain PC tentu saja CD instalasi distro Linux juga perlu kita siapkan. Kita bisa mendapatkan file instalasi (iso) semua distro Linux secara gratis di internet. Tinggal download saja, setelah itu burning ke CD. Dalam artikel ini penulis menggunakan CD Debian Lenny.

BIOS pada PC yang akan kita install perlu kita atur agar first boot-nya melalui CD ROM.

Installasi

Setelah semua siap masuk ke tahap instalasi. Di bawah ini adalah tampilan awal saat PC booting dari CD Instalasi Linux. Pilih “install” maka proses instalasi akan berjalan. Berikut adalah step – stepnya.

Tampilan Awal Instalasi Debian Lenny

Tampilan Awal Instalasi Debian Lenny. Pilih menu install.

Pilih bahasa - Installasi Debian Lenny

Pilih English

Pilih bahasa - Installasi Debian Lenny

Pilih United States

Pilih keyboard layout - Instalasi Debian Lenny

Pilih American English

Masukkan hostname - Installasi Debian Lenny

Masukkan hostname komputer. Misal : server

Masukkan nama domain - Installasi Debian Lenny

Masukkan nama domain. Misal : example.com

Pilih zona waktu - Installasi Debian Lenny

Pilih zona waktu yang sesuai. Misal Asia, Jakarta

Pilih metode partisi - Installasi Debian Lenny

Pilih metode partisi. Pilih opsi paling atas (Guided - Use entire disk).

Pilih disk - Instalasi Debian Lenny

Pilih disk yang akan di partisi.

Pilih skema partisi - Instalasi Debian Lenny

Pilih skema partisi. Pilih opsi paling atas (All files in one partition).

Konfirmasi skema partisi - Instalasi Debian Lenny

Konfirmasi skema partisi. Pilih Finish partitioning and write chages to disk.

Konfirmasi partisi disk - Installasi Debian Lenny

Konfirmasi partisi disk. Pilih Yes.

Proses installasi - Installasi Debian Lenny

Proses installasi. Tunggu beberapa saat.

Masukkan password root - Installasi Debian Lenny

Masukkan password root.

Ulangi masukkan password root - Installasi Debian Lenny

Ulangi masukkan password root.

Buat user baru - Installasi Debian Lenny

Buat user baru. Misalnya nama Anda.

Buat akun dari user baru yang baru saja dibuat - Installasi Debian Lenny

Buat akun dari user baru yang baru saja dibuat. Samakan saja dengan nama user untuk mempermudah.

Masukkan password user yang baru dibuat - Installasi Debian Lenny

Masukkan password user yang baru dibuat.

Ulangi masukkan password user yang baru dibuat - Installasi Debian Lenny

Ulangi masukkan password user yang baru dibuat.

Pilih mirror - Installasi Debian Lenny

Pilih mirror Indonesia. Proses ini biasa di-skip.

Pilih website mirror - Installasi Debian Lenny

Pilih website mirror. Proses ini biasa di-skip.

Masukkan proxy - Installasi Debian Lenny

Biarkan kosong lalu Continue.

Proses konfigurasi apt - Installasi Debian Lenny

Proses konfigurasi apt. Tunggu beberapa saat.

Proses installasi - Installasi Debian Lenny

Proses installasi. Tunggu beberapa saat.

Pupularity Contest - Installasi Debian Lenny

Pupularity Contest. Pilih No untuk opsi ini.

Pilih software - Installasi Debian Lenny

Pilih software yang akan diinstall. Sesuaikan dengan keperluan. Gunakan tombolpanah atas dan bawah sebagai navigasi dan tombol spasi untuk memilih.

Install GRUB - Installasi Debian Lenny

Pilih Yes untuk menginstall GRUB pada MBR (Master Boot Record).

Proses finishing installasi - Installasi Debian Lenny

Proses finishing installasi. Tunggu beberapa saat.

Installasi selesai - Installasi Debian Lenny

Installasi selesai. Keluarkan CD lalu Continue.

Installasi selesai - Installasi Debian Lenny

Setelah reboot server telah siap. Login dengan user root atau user yang telah dibuat saat proses intallasi.

Demikianlah step by step installasi Debian Lenny. Seperti saya katakan diatas, pada prinsipnya semua installasi Linux adalah sama. Kita hanya perlu memahami informasi di setiap langkah proses installasi.

Setting IP Address pada Linux melalui Terminal Console (Debian)


Berikut ini adalah beberapa cara setting IP Address pada Linux. Cara ini saya terapkan pada distro Debian dan Ubuntu. Distro lain silakan menyesuaikan letak file konfigurasinya.

1. Setting Melalui Terminal CLI (Command Line Interface)

Setting melalui terminal CLI hanya bersifat sementara. Artinya setting ini akan hilang jika komputer di reboot. Syntaxnya adalah sebagai berikut:

ifconfig [nama_device] [ip_address] netmask [netmask]

Contoh:

ifconfig eth0 192.168.1.1 netmask 255.255.255.0

Sedangkan untuk menambahkan gateway bisa menggunakan perintah berikut:

route add default gw [ip_gateway]

Contoh:

route add default gw 192.168.1.254

2. Mengubah Langsung File Konfigurasi

Letak file konfigurasi IP Address untuk Debian dan Ubuntu adalah di /etc/network/interfaces. Distro lain silakan menyesuaikan. Pada prinsipnya isi file-nya sama. Hanya letaknya saja yang berbeda (tergantung distro). Edit file tersebut dengan langkah sebagai berikut dengan menggunakan editor kesayangan Anda (Penulis lebih suka menggunakan editor vi atau vim. Artikel tentang bagaimana cara menggunakan editor vi atau vim Insya Allah akan segera saya terbitkan):

Pastikan Anda telah login sebagai root. Pada terminal console ketik perintah berikut:

vi /etc/network/interfaces

Pada layar akan muncul isi file tersebut. Tekan tombol insert atau i pada keyboard untuk mulai mengedit file. Edit sehingga sebagai berikut (sesuaikan dengan settingan yang diperlukan).

auto lo eth0

iface lo inet loopback

iface eth0 inet static

address 192.168.1.1

netmask 255.255.255.0

network 192.168.1.0

broadcast 192.168.1.255

gateway 192.168.1.254

Setelah itu tekan tombol Esc pada keyboard lalu ketik “:wq” (tanpa tanda petik) untuk menyimpan konfigurasi dan keluar dari editor vi. Restart network untuk mendapatkan efek dengan mengetikkan perintah berikut pada terminal console:

/etc/init.d/networking restart

atau

/etc/init.d/networking force-reload

Untuk melihat hasil konfigurasi baik dengan cara pertama maupun cara kedua bisa menggunakan perintah berikut:

ifconfig [nama_device]

Contoh:

ifconfig eth0

Perhatikan baris kedua output dari perintah tersebut yaitu di bagian “inet addr”. Hasil konfigurasi Anda akan muncul di situ. Sedangkan untuk melihat settingan gateway yang telah Anda buat bisamenggunakan perintah berikut:

route -n

Perhatikan kolom Gateway. Baris paling bawah menunjukkan gateway hasil settingan Anda. Atau bisa juga dengan menggunakan perintah berikut:

ip route show

Bagian “default via” pada baris paling bawah output perintah di atas adalah hasil konfigurasi gateway yang telah Anda buat.

Sebenarnya masih ada beberapa langkah lagi untuk konfigurasi IP Address di Linux. Baik itu melalui GUI atau terminal console. Nantikan saja artikel selanjutnya tentang ini.