Cryptography

Security is not a Product, its a Process

Membuat Dial In Callback Server

Apa itu dialin and callback server? Bagi newbie seperti saya (pada saat mengenal computer) tentu saja merupakan kata yang langka. Sederhananya dialin server adalah sebuah server yang melayani client dialup melalui jalur/line telephone menggunakan protokol pptp.

In a PPP dialin server setup, users dial in through a telephone line and modem to establish a PPP connection with a remote server. It is possible to make a Linux box call back the user who dialed the server. This document describes the step-by-step procedure to set up a Linux-based callback server.

 

 

Kebutuhan Software (pre configuration)

Kebetulan OS yang saya pakai ada Fedora yang merupakan turunan langsung dari redhat :

redhat:~# uname -a
Linux redhat 2.6.14.3 #1 Tue Dec 13 19:28:51 SGT 2005 i686 i686 i386 GNU/Linux

PERHATIAN: Anda memerlukan hak root/superuser untuk melakukan ini!

Pertama-tama pastikan bahwa di system anda telah ada paket-paket berikut:

  • pppd

  • mgetty Untuk melihat apakah paket tersebut sudah ada di system kita, lakukan:

redhat:~# whereis pppd
pppd:

Jika hasilnya seperti di atas, berarti paket pppd belum terinstall di system anda, maka saya (memakai Redhat Family) melakukan instalasi memakai rpm saja:

redhat:~# rpm -ivh ppp-2.4.2-6.4.FC3.i386.rpm

Berikutnya, kita check apakah paket mgetty sudah ada. Sekali lagi lakukan :

redhat:~# whereis mgetty
mgetty:

Sama seperti sebelumnya, paket mgetty belum terinstall.

redhat:~# rpm -ivh mgetty-1.1.31-4_FC3.i386.rpm

Sekarang semua paket yang dibutuhkan sudah terinstall di system, mari kita lanjutkan ke tahap berikutnya.

Jika anda menggunakan distro lain, silahkan menggunakan paket sesuai dengan distro anda!

Kebutuhan Hardware (modem)

Dalam hal ini saya menggunakan External modem yang terhubung ke COM1 di computer, ini berarti /dev/ttyS0 di Linux. Jika anda menggunakan COM2 ini berarti /dev/ttyS1. Pastikan bahwa modem yang anda gunakan telah di support oleh Linux. Jika anda menggunakan softmodem (internal modem) yang menggunakan chipset conexant, silahkan meluncur ke http://www.linuxant.com. Saya tidak akan membahas bagaimana cara meng-install driver softmodem tersebut, karena saya tidak mempunyai banyak waktu untuk melakukan percobaan.
Setelah menghubungkan kabel data modem ke port COM1, saya jalankan perintah:

redhat:~# kudzu

Maka kudzu akan mendeteksi apakah ada hardware baru (dalam hal ini modem) yang terhubung ke system kita.

Configurasi (dialin)

Berikut adalah step-by-step yang saya lakukan

1. Buat group ppp dan user pppuser:

redhat:~# groupadd -g 96 ppp
redhat:~# useradd pppuser -u 96 -g 96 -s /usr/sbin/ppplogin

2. Buat file /usr/sbin/ppplogin yang isinya:

#!/bin/sh
#/etc/ppp/ppplogin
# PPP login script
mesg n
stty -echo
exec /usr/sbin/pppd -detach modem debug crtscts

3. Set access attributes file /usr/sbin/ppplogin yang barusan dibuat:

redhat:~# chmod 750 /usr/sbin/ppplogin
redhat:~# chown root:ppp /usr/sbin/ppplogin

4. Set access attributes directory /etc/ppp (optional):

redhat:~# chmod 775 /etc/ppp
redhat:~# chown root:root -R /etc/ppp

5. Set access attributes file /usr/sbin/pppd:

redhat:~# chmod 750 /usr/sbin/pppd
redhat:~# chmod u+s /usr/sbin/pppd

6. Tambahkan entry berikut di file /etc/inittab jika modem anda terkoneksi di COM1:

S0:2345:respawn:/sbin/mgetty ttyS0 -D /dev/ttyS0

Atau, jika modem terpasang juga di COM2:

S1:2345:respawn:/sbin/mgetty ttyS1 -D /dev/ttyS1

7. Restart init.

redhat:~# init q

8. Tambahkan entry berikut di file /etc/mgetty/login.config:

/AutoPPP/ – – /usr/sbin/pppd auth +pap -chap login -detach

Untuk baris lainnya silahkan dicomment.

9. Buat file /etc/ppp/options.ttyS0 jika modem anda di COM1 atau /etc/ppp.options.ttyS1 jika anda menggunakan COM2, yang isinya:

192.168.76.254:192.168.76.99
debug

Keterangan: baris pertama kolom pertama isi dengan IP server anda, kolom kedua diisi alokasi IP untuk client ppp anda Silahkan sesuaikan dengan IP di network anda.

10. Edit file /etc/ppp/options:

#lock (default)
-detach
asyncmap 0
modem
crtscts
proxyarp
lock
require-pap
refuse-chap
ms-dns 192.168.76.254 # Isi IP DNS 1
ms-dns 202.51.209.6 # Isi IP DNS 2
usepeerdns

11. Edit file /etc/ppp/pap-secrets:

# Secrets for authentication using PAP
# client server secret IP addresses
pppuser * password *

12. Sekarang silahkan dicoba dialup ke server kita dari client. Jika client menggunakan System Operasi Windows silahkan buat koneksi melalui dial up networking, login menggunakan username: pppuser dan password: password Pastikan sampai dilangkah ini koneksi dari client ke server sudah jalan, check apakah client sudah mendapatkan IP (contoh) 192.168.76.99
Jika sudah sukses pada tahap ini, mari kita lanjutin untuk setting callback nya, jika belum mungkin ada yang terlewati, silahkan check lognya.

Configurasi CallBack (Server)

Jika dial in sudah berjalan sempurna, sebenarnya setting callback sangat mudah, tidak seperti yang saya bayangkan sebelumya 🙂
Berikut adalah tahap yang dilakukan:

1. Buat user back.

redhat:~# useradd back

2. Buat file kosong /ete/mgetty/callback.conf.

redhat:~# touch /ete/mgetty/callback.conf

3. Edit file /etc/mgetty/login.config tambahkan entry berikut :

back – – /usr/sbin/callback -S 12011976

12011976 adalah tanggal lahir saya :)… hehehhe yang benar itu nomor tujuan yang akan dicallback oleh si server, jadi isi saja nomor telp rumah anda, bukankah tujuannya agar kita bisa main internet sambil memonitor jaringan/computer di kantor dari rumah, tapi pulsa kantor yang bayar 😀

4. Selesai
Configurasi untuk callback server sampai di sini. Dan ini dijamin berjalan. Sekarang yang perlu dilakukan adalah configurasi di sisi client.

Configurasi CallBack (client Windows)

Sebagai client saya menggunakan OS Windows XP professional, tapi configurasinya sama untuk versi Windows lainnya.

1. Jalankan control panel, kemudian buka Phone and modem options. Di tab modems pilih modem yang akan digunakan (jika terdapat lebih dari 1 modem) untuk melakukan koneksi ke callback server dan click Properties. Sekarang masuk ke tab advanced, masukan entry berikut dibagian extra initialization commands.

&c0s0=1

2. Masih dalam Control Panel click Network Connetions, click kanan di koneksi dialup yang sudah kita buat pilih Properties masuk ke tab Security dan check options Show Terminal Window di bagian Interactive logon and scripting

3. Sekarang coba jalankan koneksi dialup,
Setelah terkoneksi dengan server, maka akan muncul After Dial Terminal window, yang meminta kita untuk memasukan username, ketik back dan tekan enter:

Fedora Core release 3 (Heidelberg)
Kernel 2.6.14.3 on an i686

redhat login:back

Dialing continues in the background, all further messages will
be written to the logfile ‘/var/log/mgetty.log.callback’.
Please look there for errors / diagnostics.

NO CARRIER

Sampai di sini, server akan melakukan pemutusan koneksi dengan client secara otomatis, selang beberapa detik (sekitar 35 detik), server akan melakukan panggilan ke nomor yang telah kita set pada file /etc/mgetty/login.config. Berikut tampilan lengkap yang muncul di After Dail Terminal Window

Fedora Core release 3 (Heidelberg)
Kernel 2.6.14.3 on an i686

redhat login:back
Dialing continues in the background, all further messages will
be written to the logfile ‘/var/log/mgetty.log.callback’.
Please look there for errors / diagnostics.

NO CARRIER

RING
CARRIER 33600

PROTOCOL: LAP-M

COMPRESSION: V.42BIS

CONNECT 33600
Connection established, please wait…
…ok

Fedora Core release 3 (Heidelberg)
Kernel 2.6.14.3 on an i686

redhat login:

Perhatian: Jika terminal line in dari telkom terpasang juga (parallel) dengan pesawat telephone, maka pada saat muncul tulisan RING di atas, pesawat telephone anda akan berdering, jangan diangkat!!

Pada beberapa modem, RING akan terjadi selama 3 kali.

Click Done.
Sampai di sini setting callback di sisi client menggunakan OS Windows selesai.

Configurasi CallBack (client Linux)

Untuk client yang menggunakan linux, mungkin akan lebih sulit, dan kebetulan saya belum sempat mencoba, jadi silahkan anda coba sendiri 😀

1. Buat file /etc/ppp/options yang berisi:

lock
defaultroute
noipdefault
modem
115200
crtscts
debug
passive
asyncmap 0

2. Buat file /etc/ppp/peers/pppcallback yang berisi:

ttyS1 19200 crtscts
connect ‘/usr/sbin/chat -v -f /etc/ppp/chat-callback’
noauth

3. Buat file /etc/ppp/chat-callback yang berisi:

ABORT BUSY
ABORT VOICE
ABORT “NO DIALTONE”
ABORT “NO ANSWER”
“” ATZ
OK ATDT123456 # Telephone number of server
CONNECT \d\d
ogin: \q\dback
TIMEOUT 90
RING AT&C0S0=1
ogin: \q\dpppuser
assword: \q\dpassword

Sesuaikan isi file di atas sesuai dengan nomor telephone yang dipasang dimodem server (dial-in server). Juga username dan password disesuaikan dengan username dan password yang anda telah buat di server.
Pada beberapa modem mungkin anda perlu mengganti ATZ dengan AT&FX2

4. Buat file /usr/bin/pppcall yang berisi:

#!/bin/bash
/usr/sbin/pppd -detach call pppcall &

5. Set access attributes file tersebut agar executable

redhat:~# chmod 755 /usr/bin/pppcall

Sekarang anda bisa melakukan dialup ke server dengan menjalankan file /usr/bin/pppcall

February 1, 2007 Posted by | Linux | 1 Comment

Monitoring Network dg Iptables & MRTG

Dengan berbagai metode kita dapat mengukur besar keluar-masuknya data tiap komputer dalam jaringan kita. Salah satu cara yang sederhana dan mudah dikerjakan adalah dengan menggunakan iptables dan MRTG. Iptables hanya digunakan untuk menghitung besar data yang masuk untuk tiap-tiap komputer dalam jaringan, dan hasilnya ditampilkan dengan menggunakan MRTG. Dengan begitu kita tidak perlu menginstall server snmp di tiap komputer, namun masih bisa mendapatkan gambaran umum aktifitas koneksi tiap komputer dengan jaringan lain.Di sini diasumsikan bahwa jaringan kita beralamat 10.11.12.0/24, pengukuran dilakukan di gateway dengan alamat 10.11.12.1.

1. Instalasi

Program yang kita butuhkan di sini tidak begitu banyak, dan biasanya pada beberapa distro linux program-program ini sudah disertakan di CD. Bila tidak ada, beberapa program inilah yang harus anda download dan anda install.

  1. MRTG, dapat didownload dari http://www.ee.ethz.ch/~oetiker/webtools/mrtg/
  2. iptables(versi > 1.2.6), dapat didownload dari http://www.netfilter.org
  3. Apache web server, dapat didownload dari http://httpd.apache.org (web server lain juga bisa)

Ikuti petunjuk instalasi yang disertakan pada tiap-tiap program, biasanya ada pada file README dan INSTALL.

2. Iptables

Untuk bisa mengetahui jumlah keluar/masuknya paket data untuk suatu komputer kita harus menghitungnya secara terpisah yaitu untuk yang masuk dan untuk yang keluar. Bila kita akan mengamati sepuluh komputer, maka setidaknya harus ada 20 rule iptables. Chain yang digunakan untuk mengamati adalah chain FORWARD.

Untuk memudahkan pengamatan & parsing nilai hitungan iptables kita dapat menambahkan masing-masing 2 chain kosong yang menjadi target rule sehingga memudahkan kita dalam menjalankan grep, misal dengan menggunakan nama komputer yang kita beri tambahan -in dan -out.

root:~# iptables -N yudhistira-in
root:~# iptables -N yudhistira-out
root:~# iptables -A FORWARD -d 10.11.12.2 -j yudhistira-in
root:~# iptables -A FORWARD -s 10.11.12.2 -j yudhistira-out

root:~# iptables -N anoman-in
root:~# iptables -N anoman-out
root:~# iptables -A FORWARD -d 10.11.12.3 -j anoman-in
root:~# iptables -A FORWARD -s 10.11.12.3 -j anoman-out

root:~# iptables -N bagong-in
root:~# iptables -N bagong-out
root:~# iptables -A FORWARD -d 10.11.12.4 -j bagong-in
root:~# iptables -A FORWARD -s 10.11.12.4 -j bagong-out

root:~# iptables -nvxL FORWARD
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 yudhistira-in all — * * 0.0.0.0/0 10.11.12.2
0 0 yudhistira-out all — * * 10.11.12.2 0.0.0.0/0
0 0 anoman-in all — * * 0.0.0.0/0 10.11.12.3
0 0 anoman-out all — * * 10.11.12.3 0.0.0.0/0
0 0 bagong-in all — * * 0.0.0.0/0 10.11.12.3
0 0 bagong-out all — * * 10.11.12.3 0.0.0.0/0
Di atas dapat kita lihat bahwa kalau kita ingin mengambil besar data(dalam bytes) output iptables -nvxL FORWARD dapat kita pipe kan ke grep dan mengambil nilai kolom kedua dari output yang dihasilkan oleh grep.

root:~# iptables -nvxL FORWARD | grep bagong-in
0 0 bagong-in all -- * * 0.0.0.0/0 10.11.12.3
root:~# iptables -nvxL FORWARD | grep bagong-in | awk '{print $2}'
0

Untuk memudahkan kita dalam memasukkan nilainya ke MRTG kita bisa membuat script kecil seperti ini:

#!/bin/sh
paketIN=`/sbin/iptables -nvxL FORWARD | grep "$1-in" | awk '{print $2}'`
paketOUT=`/sbin/iptables -nvxL FORWARD | grep "$1-out" | awk '{print $2}'`
echo $paketIN
echo $paketOUT

Pemakaiannya hanyalah dengan cara menuliskan nama scriptnya dengan 1 parameter yaitu [nama komputer], misalnya scriptbacatrafik.sh bagong. Script ini akan mencetak nilai bytes yang keluar dari jaringan kita yang berasal dari komputer “bagong”. Angka ini diambil dari iptables, sehingga kata bagong atau apa pun itu harus anda sesuaikan dengan nama chain yang anda gunakan di iptables.

3. MRTG

Nilai yang dimasukkan ke mrtg haruslah berpasangan, pertama untuk in dan kedua untuk out. Nilai ini dapat diambil dari SNMP, dapat pula diambil dari nilai eksekusi program tertentu. Contoh mrtg.cfg yang mengambil nilai dari script yang tadi kita buat dapat dilihat di bawah ini.

WorkDir: /var/www/mrtg

Target[anoman]: `/usr/local/sbin/scriptbacatrafik.sh anoman`
Title[anoman]: Anoman
PageTop[anoman]: <h1>Anoman</h1>
MaxBytes[anoman]: 1250000
YLegend[anoman]: Bytes/s
ShortLegend[anoman]: B/s
LegendI[anoman]: Traffic in
LegendO[anoman]: Traffic out
Legend1[anoman]: Traffic in Bytes per Second

Target[bagong]: `/usr/local/sbin/scriptbacatrafik.sh bagong`
Title[bagong]: bagong
PageTop[bagong]: <h1>bagong</h1>
MaxBytes[bagong]: 1250000
YLegend[bagong]: Bytes/s
ShortLegend[bagong]: B/s
LegendI[bagong]: Traffic in
LegendO[bagong]: Traffic out
Legend1[bagong]: Traffic in Bytes per Second

Target[yudhistira]: `/usr/local/sbin/scriptbacatrafik.sh yudhistira`
Title[yudhistira]: yudhistira
PageTop[yudhistira]: <h1>yudhistira</h1>
MaxBytes[yudhistira]: 1250000
YLegend[yudhistira]: Bytes/s
ShortLegend[yudhistira]: B/s
LegendI[yudhistira]: Traffic in
LegendO[yudhistira]: Traffic out
Legend1[yudhistira]: Traffic in Bytes per Second

Setelah file konfigurasi selesai, jalankan indexmaker untuk membuat file index.html MRTG.

root:~# indexmaker /path/file/mrtg.cfg > /var/www/mrtg/index.html

Bila apache telah berjalan, cobalah untuk membuka http://10.11.12.1/mrtg/ untuk melihat hasilnya.

4. Pengembangan

Dengan cara pengukuran yang persis sama anda dapat pula mengukur besarnya keluar masuk paket per layanan misal web, ftp, smb, domain, dan sebagainya. Pengukuran dilakukan dengan menggunakan iptables, hanya saja kita tidak mendefinisikan alamat IP per komputer. Yang kita definisikan adalah protokol(TCP/UDP/ICMP) beserta nomor portnya, serta network address jaringan kita seperti contoh di bawah ini.

root:~# iptables -N www-in
root:~# iptables -N www-out
root:~# iptables -A FORWARD -d 10.11.12.0/24 -p tcp --dport 80 -j www-in
root:~# iptables -A FORWARD -s 10.11.12.0/24 -p tcp --sport 80 -j ww-out

root:~# iptables -N ftp-in
root:~# iptables -N ftp-out
root:~# iptables -A FORWARD -d 10.11.12.0/24 -p tcp –dport 20:21 -j ftp-in
root:~# iptables -A FORWARD -s 10.11.12.0/24 -p tcp –sport 20:21 -j ftp-out
Contoh rule iptables di atas berguna untuk menghitung:

  1. Besar paket data yang kita dapatkan dari webserver yang berasal dari luar jaringan kita.
  2. Besar paket data request ke webserver di luar jaringan kita.
  3. Besar paket data yang kita download melalui ftp yang berasal dari luar jaringan kita.
  4. Besar paket data upload melalui ftp ke luar jaringan kita.

Edit mrtg.cfg untuk memasukkan hasil perhitungan iptables untuk kedua port yang baru.

Target[www]: `/usr/local/sbin/scriptbacatrafik.sh www`
Title[www]: www
PageTop[www]: <h1>www</h1>
MaxBytes[www]: 1250000
YLegend[www]: Bytes/s
ShortLegend[www]: B/s
LegendI[www]: Traffic in
LegendO[www]: Traffic out
Legend1[www]: Traffic in Bytes per Second

Target[ftp]: `/usr/local/sbin/scriptbacatrafik.sh ftp`
Title[ftp]: ftp
PageTop[ftp]: <h1>ftp</h1>
MaxBytes[ftp]: 1250000
YLegend[ftp]: Bytes/s
ShortLegend[ftp]: B/s
LegendI[ftp]: Traffic in
LegendO[ftp]: Traffic out
Legend1[ftp]: Traffic in Bytes per Second
Selamat mencoba, semoga sukses. (Kamas Muhammad, http://www.sokam.or.id)

February 1, 2007 Posted by | Linux | 8 Comments

Transparent Firewall

Transparent Firewall adalah firewall yang “tidak tampak” baik oleh user di dalam zona yang kita amankan atau dari luar zona kita. Transparent Firewall pada dasarnya adalah firewall biasa hanya saja implementasinya dilakukan pada bridge, sehingga tidak ada konfigurasi yang harus dilakukan pada jaringan yang sudah ada.Tutorial ini akan (mencoba) untuk menjelaskan secara singkat bagaimana dan apa saja yang diperlukan dalam pembuatan bridge firewall pada Debian GNU/Linux, dan pengaturan umum kerja firewall yang kita buat.

Topologi yang dipakai diasumsikan seperti gambar di bawah ini.

+----------+ +--------+ +---------------+
| INTERNET |-----| BRIDGE |-----| JARINGAN KITA |
+----------+ +--------+ +---------------+

1. Kebutuhan Dasar

Implementasi ini membutuhkan beberapa hal yaitu:

  1. Komputer dengan 2 NIC
  2. iptables
  3. bridge-utils
  4. Kernel Linux 2.6 atau 2.4(dengan patch) dengan opsi bridge firewall diaktifkan

Bila anda ingin menggunakan kernel versi 2.4 silakan cari patchnya di http://ebtables.sourceforge.net/. Kernel 2.6 sudah menyertakan fasilitas ini, sehingga tidak perlu dipatch lagi.

Di sini diasumsikan bahwa kernel sudah beres, dan tinggal menginstall program lain yang dibutuhkan untuk menjalankan bridge. Komputer yang dipakai mempunyai 2 NIC yaitu eth0 dan eth1.

2. Instalasi & Konfigurasi

Seperti biasa, untuk menginstall paket pada debian kita menggunakan apt-get.

root:~# apt-get install bridge-utils iptables

Bila anda tidak menggunakan distro lain anda dapat mendownload source code untuk kedua program itu pada http://bridge.sourceforge.net/ dan http://www.iptables.org/files/ . Panduan proses instalasi dapat mengikuti file README/INSTALL yang disertakan pada tarball yang anda download.

Program yang kita dapatkan dari bridge-utils adalah brctl. Program inilah yang mengatur segala macam bagian bridge mulai pembuatan, penghapusan, penambahan anggota bridge, dan sebagainya. Buat interface bridge (br0), dan tambahkan kedua interface ke dalam interface bridge yang baru dibuat.

root:~# brctl addbr br0
root:~# brctl addif br0 eth0
root:~# brctl addif br0 eth1
root:~# ifconfig eth0 0
root:~# ifconfig eth1 0

Hapus alamat IP pada eth0 dan eth1, dan bila bridge ini akan diberi alamat IP maka yang perlu diberi alamat adalah br0. Interface lain harus tetap menyala tanpa mempunyai alamat IP sendiri. Nantinya, kedua ethernet yang ada akan merespon setiap request yang masuk ke alamat IP bridge.

Cobalah untuk memping jaringan di luar jaringan anda. Bila lancar, berarti bridge ini sudah berjalan dengan baik. Agar setiap booting kita tidak mengulangi langkah-langkah di atas maka edit file /etc/network/interfaces dan tambahkan konfigurasi seperlunya. Contoh file saya ada di bawah ini.

auto br0
iface br0 inet static
address 10.11.12.3
netmask 255.255.255.0
network 10.11.12.0
broadcast 10.11.12.255
gateway 10.11.12.1
bridge_ports eth0 eth1

Catatan: perhatikan item konfigurasi yang dicetak tebal.

Pastikan juga anda mengaktifkan IP Forwarding dengan mengeksekusi perintah di bawah ini tiap kali komputer booting.

root:~# echo 1 > /proc/sys/net/ipv4/ip_forward

Selain cara manual itu anda dapat pula mengedit file /etc/network/options.

ip_forward=yes
spoofprotect=yes
syncookies=no

Sekarang anda dapat mengkonfigurasi iptables untuk melakukan penyaringan terhadap paket-paket data yang melewati firewall ini. Iptables tidak akan dibahas mendalam di sini. Sekedar info, penyaringan ini dilakukan pada tabel Filter chain FORWARD. Contoh:

root:~# iptables -t Filter -A FORWARD -s 0.0.0.0 -d 10.11.12.0/24 -p tcp --dport 23 -j DROP
root:~# iptables -t Filter -A FORWARD -s 0.0.0.0 -d 10.11.12.0/24 -p tcp --dport 25 -j DROP
root:~# iptables -t Filter -A FORWARD -s 0.0.0.0 -d 10.11.12.0/24 -p udp --dport 161 -j DROP

Potongan instruksi iptables di atas memfilter paket-paket dari luar network kita yang akan mengakses port telnet, smtp, dan snmp. Tambahkan filter lain sesuai dengan yang anda butuhkan.

Simpanlah perintah-perintah yang anda jalankan pada sebuah script .sh dan ubahlah permission file tersebut agar bisa dieksekusi(executable). Aturlah agar file itu diekseuksi setiap kali boot. Ada beberapa cara melakukannya, yang termudah adalah menambahkan entri pada /etc/network/interfaces. Bila script iptables itu disimpan di /etc/init.d/aturanfirewall.sh anda dapat menambahkan baris berikut di bawah entri br0.

up command /etc/init.d/aturanfirewall.sh

Dengan demikian isi file /etc/network/interfaces menjadi seperti di bawah ini.

auto br0
iface br0 inet static
address 10.11.12.3
netmask 255.255.255.0
network 10.11.12.0
broadcast 10.11.12.255
gateway 10.11.12.1
bridge_ports eth0 eth1
up command /etc/init.d/aturanfirewall.sh

Dengan menggunakan bash script kecil untuk memparsing output command “iptables -nvL FORWARD” anda dapat memantau aktifitas filtering seperti ini 🙂

+---------------------------------------------------------+
| I/O Total | 95M Packets 62G Bytes |
+-------------+---------------------+---------------------+
| | Traffic In | Traffic Out |
| Filter +----------+----------+----------+----------+
| | Byte | Packet | Byte | Packet |
+-------------+----------+----------+----------+----------+
| Ping Blaster| 0 | 0 | 23184 | 252 |
| udp 69 | 0 | 0 | 0 | 0 |
| udp 135 | 0 | 0 | 0 | 0 |
| udp 137 | 38298 | 491 | 9828 | 126 |
| udp 138 | 534 | 2 | 1343 | 5 |
| udp 445 | 0 | 0 | 0 | 0 |
| udp 161 | 3672 | 54 | 0 | 0 |
| tcp 23 | 912 | 19 | 0 | 0 |
| tcp 135 | 47520 | 990 | 1584 | 33 |
| tcp 445 | 1027K | 21402 | 15180 | 316 |
| tcp 593 | 0 | 0 | 0 | 0 |
| tcp 4444 | 528 | 12 | 864 | 18 |
+-------------+----------+----------+----------+----------+

Contoh script bisa didownload di sini, selamat mencoba, semoga sukses 🙂
(Kamas Muhammad, http://www.sokam.or.id).

February 1, 2007 Posted by | Linux | 2 Comments

Install SQUID with Dellay Pool

 

Installing Squid with the delay pools feature

As I mentioned before, Squid has a feature called delay pools, which allows us to control download bandwidth. Unfortunately, in most distributions, Squid is shipped without that feature.

So if you have Squid already installed, I must disappoint you — you need to uninstall it and do it once again with delay pools enabled in the way I explain below.

  1. To get maximum performance from our Squid proxy, it’s best to create a separate partition for its cache, called /cache/. Its size should be about 300 megabytes, depending on our needs.If you don’t know how to make a separate partition, you can create the /cache/ directory on a main partition, but Squid performance can suffer a bit.
  2. We add a safe ‘squid’ user:# useradd -d /cache/ -r -s /dev/null squid >/dev/null 2>&1

    No one can log in as squid, including root.

  3. We download Squid sources from http://www.squid-cache.orgWhen I was writing this HOWTO, the latest version was Squid 2.4 stable 1:

    http://www.squid-cache.org/Versions/v2/2.4/squid-2.4.STABLE1-src.tar.gz

  4. We unpack everything to /var/tmp:
  5. # tar xzpf squid-2.4.STABLE1-src.tar.gz
  6. We compile and install Squid (everthing is in one line):# ./configure --prefix=/opt/squid --exec-prefix=/opt/squid --enable-delay-pools --enable-cache-digests --enable-poll --disable-ident-lookups --enable-truncate --enable-removal-policies

    # make all

    # make install

 

Configuring Squid to use the delay pools feature

  1. Configure our squid.conf file (located under /opt/squid/etc/squid.conf):
    #squid.conf
    #Every option in this file is very well documented in the original squid.conf file
    #and on http://www.visolve.com/squidman/Configuration%20Guide.html
    
    #
    #The ports our Squid will listen on
    http_port 8080
    icp_port 3130
    #cgi-bins will not be cached
    acl QUERY urlpath_regex cgi-bin ?
    no_cache deny QUERY
    #Memory the Squid will use. Well, Squid will use far more than that.
    cache_mem 16 MB
    #250 means that Squid will use 250 megabytes of disk space
    cache_dir ufs /proxy 250 16 256
    redirect_rewrites_host_header off
    cache_replacement_policy GDSF
    acl localnet src 192.168.1.0/255.255.255.0
    acl localhost src 127.0.0.1/255.255.255.255
    acl Safe_ports port 80 443 210 119 70 21 1025-65535
    acl CONNECT method CONNECT
    acl all src 0.0.0.0/0.0.0.0
    http_access allow localnet
    http_access allow localhost
    http_access deny !Safe_ports
    http_access deny CONNECT
    http_access deny all
    maximum_object_size 3000 KB
    store_avg_object_size 50 KB
    
    #all our LAN users will be seen by external servers
    #as if they all use Mozilla on Linux :)
    anonymize_headers deny User-Agent
    fake_user_agent Mozilla/5.0 (X11; U; Linux 2.4.4 i686)
    
    #To make our connection even faster, we put a line similar
    #to the one below. Don't forget to change the server to your closest!
    #Measure pings, traceroutes and so on.
    #Make sure that http and icp ports are correct
    #cache_peer w3cache.icm.edu.pl parent 8080 3130 no-digest default
    
    #This is useful when we want to use the Cache Manager
    #copy cachemgr.cgi to cgi-bin of your www server
    cache_mgr your@email
    cachemgr_passwd secret_password all
    
    #This is a name of a user our Squid will work as
    cache_effective_user squid
    cache_effective_group squid
    
    log_icp_queries off
    buffered_logs on
    
    #####DELAY POOLS
    #This is the most important part for shaping incoming traffic with Squid
    #For detailed description see squid.conf file or docs at 
    #http://www.squid-cache.org
    
    #We don't want to limit downloads on our local network
    acl magic_words1 url_regex -i 192.168
    
    #We want to limit downloads of these type of files
    #Put this all in one line
    acl magic_words2 url_regex -i ftp .exe .mp3 .vqf .tar.gz 
    .gz .rpm .zip .rar .avi .mpeg .mpe .mpg .qt .ram .rm .iso .raw .wav
    #We don't block .html, .gif, .jpg and similar files, because they
    #generally don't consume much bandwidth
    
    #We have two different delay_pools
    delay_pools 2
    
    #First delay pool
    #W don't want to delay our local traffic
    #There are three pool classes; here we will deal only with the second
    delay_class 1 2
    
    #-1/-1 mean that there are no limits
    delay_parameters 1 -1/-1 -1/-1
    
    #magic_words1: 192.168
    delay_access 1 allow magic_words1
    
    #Second delay pool
    #we want to delay downloading files mentioned in magic_words2
    delay_class 2 2
    
    #The numbers here are values in bytes;
    #we must remember that Squid doesn't consider start/stop bits
    #6000/150000 are values for the whole network
    #5000/150000 are values for the single IP
    #after downloaded files exceed about 150000 bytes,
    #they will continue to download at about 5000 bytes/s
    
    delay_parameters 2 6000/150000 5000/150000
    delay_access 2 allow magic_words2
    
    #EOF

    OK, when we have configured everything, we must make sure everything under /opt/squid and /cache directories belongs to user ‘squid’.

    # chown -R squid:squid /opt/squid/

    # chown -R squid:squid /cache/

    or

    # chown -R squid.squid /opt/squid/

    # chown -R squid.squid /cache/

    Now everything is ready to run Squid. When we do it for the first time, we have to create its cache directories:

    # /opt/squid/usr/bin/squid -z

    We run Squid and check if everything is working. A good tool to do that is IPTraf; you can find it on http://freshmeat.net. Make sure you have set the appropriate proxy in your web browsers (192.168.1.1, port 8080 in our example):

    # /opt/squid/usr/bin/squid

    If everything is working, we add /opt/squid/usr/bin/squid line to the end of our initializing scripts. Usually, it can be /etc/rc.d/rc.local.

    Other helpful options in Squid may be:

    # /opt/squid/usr/bin/squid -k reconfigure (it reconfigures Squid if we made any changes in its squid.conf file)

    # /opt/squid/usr/bin/squid -help 🙂 self-explanatory

    You can also copy cachemgr.cgi to the cgi-bin directory of your WWW server.

January 30, 2007 Posted by | Linux | 1 Comment