Anda di halaman 1dari 6

Filtering Web Traffic dengan Squid

By Henry Saptono (boypyt@gmail.com)

Sept 2008

Mencegah terjadinya akses web ke situs­situs yang tidak diinginkan (seperti situs porno) bukan hal yang sulit jika Anda melengkapi jaringan komputer Anda dengan HTTP proxy server. Umumnya aplikasi HTTP proxy server digunakan untuk memfilter koneksi HTTP (web) dari LAN ke internet. Salah satu aplikasi HTTP proxy server yang cukup populer saat ini adalah squid, kepopuleran squid bisa dikatakan menyamai kepopuleran aplikasi web server Apache. Squid tidak hanya berfungsi sebagai firewall aplikasi HTTP, tetapi squid juga memiliki kemampuan menyediakan web caching. Web cahcing akan meningkatkan response time koneksi HTTP, dan meningkatkan efisiensi bandwidth atau traffic HTTP. Pada tulisan kali ini penulis akan menjelaskan bagaimana langkah­langkah penerapan squid sebagai firewall aplikasi HTTP atau sebagai filtering akses HTTP (web). Penulis akan membahas beberapa jenis filtering pada squid yang umumnya digunakan. Dalam tulisan ini penulis menggunakan Linux CentOS 5, squid yang digunakan adalah versi 2.6.STABLE6 yang sudah terinstall saat instalasi linux.

I. Skenario

Agar memudahkan penjelasan maka penulis membuat skenario jaringan LAN seperti tampak pada gambar­1. berikut ini:

jaringan LAN seperti tampak pada gambar­1. berikut ini: Gambar­1. Diagram Jaringan LAN Penjelasan sesuai dengan

Gambar­1. Diagram Jaringan LAN

Penjelasan sesuai dengan gambar­1, adalah sebagai berikut:

LAN Anda memiliki nomor jaringan 192.168.1.0/24

Komputer yang akan menghubungkan LAN dengan Internet adalah komputer PC­ Gateway yang berperan juga sebagai HTTP Proxy

PC­Gateway memiliki dua buah network interface yaitu eth0 dan eth1, eth0 adalah interface network yang terhubung dengan Modem/Router ADSL, sedangkan eth1 adalah interface network yang terhubung dengan LAN. eth0 memiliki nomor IP address 192.168.10.2/30 dan eth1 192.168.1.1/24

Penghubung PC­Gateway ke internet adalah Modem/Router ADSL.

Skenario Filtering adalah sebagai berikut:

Komputer PC­Gateway­HTTP­Proxy akan mengijinkan seluruh koneksi dari LAN ke Internet, dengan ketentuan hanya pada hari Senin s.d Sabtu pada jam 07.00 s.d 21.00

Akses ke situs dengan nama domain berikut ini tidak diijinkan : playboy.com, 17tahun2.com, dan sex.com

Akses ke situs dengan URL mengandung kata­kata berikut ini tidak diijinkan: cabul, bugil, sextoy, dan erotica

Download file­file dengan extensi berikut ini tidak diijinkan: .mpg, .mpeg, .wmv, .avi , dan .iso, Kecuali untuk akses dari komputer dengan range IP dari 192.168.1.10 s.d

192.168.1.20

Akses ke situs dengan nomor IP berikut ini tidak dijinkan: 216.163.137.3, 69.16.137.252, 82.98.86.176

Squid dikonfigurasi dalam mode Transparent proxy , agar memaksa setiap akses dari LAN ke Internet dengan port tujuan 80 (web) selalu menggunakan proxy.

II. Konfigurasi PC Gateway

Langkah konfigurasi pertama adalah mengkonfigurasi komputer bakal proxy server sebagai gateway yang dapat menguhubungkan LAN dengan Internet, yaitu sebagai berikut:

Enbale IP Forwarding

# echo 1 > /proc/sys/net/ipv4/ip_forward

atau edit file /etc/sysctl.conf, dan set parameter “net.ipv4.ip_forward=1”

Enable IP Masquerade

Diasumsikan default policy firewall pada komputer PC Gateway adalah ACCEPT, dan tidak ada rule spesifik apapun sebelumnya.

# service iptables stop

# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

Rule iptables untuk mendukung Transparent proxy

-j REDIRECT –to-ports 3128

Rule firewall tersebut akan menyebabkan setiap koneksi dari LAN dengan port tujuan 80 kemanapun akan diarahkan ke local process pada komputer gateway yaitu ke process pada port 3128 (squid).

Simpan rule firewall dan pastikan agar firewall diaktifkan saat boot dengan perintah berikut ini:

# service iptables save

# chkconfig iptables on

III. Konfigurasi squid HTTP Proxy

Langkah selanjutnya adalah konfigurasi squid, secara default konfigurasi squid akan memblok semua koneksi dari jaringan LAN ke internet. Untuk itu kita harus melakukan konfigurasi ulang dengan mengedit file /etc/squid/squid.conf. Beberapa parameter konfigurasi squid yang perlu Anda setup agar sesuai dengan skenario diantaranya adalah sebagai berikut:

visible_hostname : parameter ini mendefinisikan nama komputer proxy server Anda , nilai default parameter ini tidak diset. Terkadang pengguna awam sering menjumpai squid errror dikarenakan parameter ini tidak diset dan squid mencoba menggunkan nama hostname komputer Anda yang ternyata hostname nya tidak ditulis lengkap dengan nama domain. parameter ini dapat diisi dengan nama komputer yang dilengkapi dengan nama domain. Misalnya sebagai berikut:

visible_hostname proxy.mydomain.com

http_port: parameter ini menunjukkan nomor port service squid. Nilai defaultnya dalah 3128. Untuk menerapkan transparent proxy maka nilai parameter ini harus diset sebagai berikut:

http_port 3128 transparent

acl: parameter ini digunakan untuk mendefinisikan access control list atau untuk filtering format penulisannya sebagai berikut:

acl <nama-acl> <tipe-acl> <pattern> [<pattern >]

Agar sesuai dengan skenario maka, Anda harus mendefinisikan beberapa acl , sebaiknya pendefinisian acl ini Anda tulis pada file konfigurasi squid yaitu dibawah baris yang

bertuliskan “#INSERT YOUR OWN RULE HERE(S)

,

seperti berikut ini:

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS acl lan src 192.168.1.0/24 acl waktu_boleh time MTWHFA 07:00-21:00 acl domain_dilarang dstdomain “/etc/squid/daftar-domain_dilarang” acl url_dilarang url_regex -i “/etc/squid/daftar-url_dilarang” acl file_dilarang url_regex -i “/etc/squid/daftar-file_dilarang” acl ip_vip src 192.168.1.10-192.168.1.20/32 acl ip_dilarang dst “/etc/squid/daftar-ip_dilarang”

pada konfigurasi acl waktu_boleh time MTWHFA 07:00­21:00, pola MTWHFA merupakan

singkatan dari M=Monday(senin), T=Tuesday(selasa), W=Wednesday(rabu), H=Thursday(kamis), F=Friday(jumat), A=Saturday(sabtu). Sedangkan untuk hari minggu adalah S. Penggunaan opsi “­i” pada jenis acl “url_regex” menyatakan opsi “case insensitive” (mengabaikan case huruf). Dalam konfigurasi acl domain_dilarang, url_dilarang, file_dilarang dan ip_dilarang, pola dari masing­ masing acl terdaftar atau ditulis pada sebuah file ASCII teks, yang terletak dalam direktori /etc/squid, dengan nama file masing­masing adalah daftar­ domain_dilarang, daftar­ url_dilarang, daftar­ file_dilarang, dan daftar­ ip_dilarang. Isi file­file tersebut sebagai berikut:

File /etc/squid/daftar-domain_dilarang :

playboy.com

17tahun2.com

sex.com

File /etc/squid/daftar-url_dilarang :

cabul

bugil

sextoy

erotica

File /etc/squid/daftar-file_dilarang :

\.mpg$

\.mpeg$

\.wmv$

\.avi$

\.iso$

File /etc/squid/daftar-ip_dilarang :

216.163.137.3

69.16.137.252

82.98.86.176

http_access: parameter ini menunjukkan rule yang akan diterapkan pada suatu access control list. Agar sesuai dengan skenario kita maka Anda harus mendefinisikan rule, tulislah rule tersebut dibagian bawah atau setelah seluruh pendefinisian acl sehingga konfigurasi acl dan rule tampak sebagai berikut:

# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS acl lan src 192.168.1.0/24 acl waktu_boleh time MTWHFA 07:00-21:00 acl domain_dilarang dstdomain “/etc/squid/daftar-domain_dilarang” acl url_dilarang url_regex -i “/etc/squid/daftar-url_dilarang” acl file_dilarang url_regex -i “/etc/squid/daftar-file_dilarang” acl ip_vip src 192.168.1.10-192.168.1.20/32 acl ip_dilarang dst “/etc/squid/daftar-ip_dilarang”

# baris berikut ini adalah daftar rule akses http http_access deny !waktu_boleh http_access deny domain_dilarang

http_access deny url_dilarang http_access deny ip_dilarang http_access allow ip_vip http_access deny file_dilarang http_access allow lan

Pada konfigurasi rule tersebut tampak sebuah rule yang nama acl nya diikuti dengan tanda ! (http_access deny !waktu_boleh) , tanda “ ! “ Memiliki arti atau makna selain atau bukan, jadi maksud dari rule tersebut adalah jika traffic web ke proxy server terjadi pada waktu selain yang

ditentukan dalam ACL waktu_boleh (Senin s.d Sabtu pada jam 07:00 s.d 21:00) maka traffic web tersebut ditolak. Yang penting untuk diperhatikan adalah urutan pendefinisian rule http pada konfigurasi squid sangat menentukan, kesalahan meletakkan urutan pendefinisian rule tersebut berakibat tidak berjalannya skenario filtering yang diharapkan karena squid akan mengevaluasi rule dari baris atas kemudian ke bawah, jika suatu traffic sesuai atau matching dengan suatu acl dan acl tersebut diijinkan maka traffic tersebut diterima squid, dan squid tidak akan mengevaluasi lagi rule

dibawahnya

Untuk pendefinisian acl urutannya tidak berpengaruh.

Setelah konfigurasi squid Anda lakukan cobalah Anda aktifkan service squid dan pastikan service squid diaktifkan saat boot dengan cara berikut ini:

# service squid start

# chkconfig squid on

Kemudian cobalah Anda uji pengaksesan web untuk menguji filtering.

IV. Custom Error message

Sebaiknya untuk memudahkan dalam pengujian filtering Anda dapat memanfaatkan parameter konfigurasi squid yang dapat mengarahkan/mengubah pesan error squid dari default pesan error ke pesan errror yang kita inginkan, parameter tersebuat adalah “deny_info”, format penulisan parameter tersebut adalah sebagai berikut:

deny_info http://

acl_name

atau

deny_info ERR_CUSTOM_ACCESS_DENIED acl_name

contoh:

deny_info http://www.google.com domain_dilarang deny_info ERR_URL_DILARANG url_dilarang deny_info ERR_FILE_DILARANG file_dilarang deny_info http://192.168.1.100/bad-ip.html ip_dilarang

Pada konfigurasi deny_info tersebut , jika terjadi penolakan akses web untuk traffic yang matching dengan acl domain_dilarang maka traffic web tersebut akan diredirect ke situs www.google.com. Untuk traffic yang matching dengan acl url_dilarang maka traffic web tersebut jika ditolak akan

dimunculkan pesan error yang terdapat pada file ERR_URL_DILARANG, file tersebut terdapat pada komputer proxy yaitu pada lokasi direktori /usr/share/squid/errors/English/ dan isi dari file tersebut adalah teks dengan format HTML, file tersebut adalah file buatan kita sendiri (custom error message nama filenya harus diawali dengan kata ERR_). Untuk traffic yang matching dengan acl file_dilarang maka traffic web tersebut jika ditolak akan dimunculkan pesan error yang terdapat pada file ERR_FILE_DILARANG.Untuk traffic yang matching dengan acl ip_dilarang maka traffic web tersebut jika ditolak akan diredirect ke halaman web dengan url

Jika selesai melakukan perubahan konfigurasi squid jangan lupa untuk mereconfigure squid dengan perintah “squid -k reconfigure”.