Rabu, 12 Januari 2011

Squid Proxy Linux

Squid adalah suatu aplikasi open source yang digunakan Pembatasan hak akses (Access Control List a.k ACL) terhadap pengguna Internet di jaringan internal dapat dilakukan melalui beberapa kebijakan sebagai berikut:

1. Alamat IP komputer,
2. Waktu pemakaian internet
3. Alamat-alamat internet yang dilarang,
4. Bandwidth untuk masing-masing pengguna,
5. Hak akses dengan user ID dan password,
6. Quota

Beberapa contoh ACL yang berada pada squid adalah :

1. Pembatasan Hak Akses berdasarkan Jam Tertentu
2. Pembatasan Hak Akses berdasarkan Hari Tertentu
3. Pembatasan Hak Akses berdasarkan Hari dan Jam Tertentu
4. Tuning Web-cache Server pada Squid
5. request_header_max_size
6. request_body_max_size
7. reply_body_max_size


Pada bagian ini penulis masih menggunakan OS Linux versi lama seperti Redhat 4 (RHEL 4).

Untuk mengecek apakah aplikasi squid sudah terinstall atau belum bisa dengan menggunakan perintah sebagai berikut :

[root@networklinux ~]# rpm -q squid
squid-2.5.STABLE6-3
[root@networklinux ~]#

Pada perintah di atas terlihat bahwa squid sudah terinstall pada sistem, versi squid yang digunakan adalah squid-2.5.STABLE6-3. Konfigurasi file berada pada direktori /etc/squid/squid.conf

Jika belum terinstall rpm bisa ditemukan pada CD RHEL, masuk kedalam CD direktori RHEL lalu ketikan perintah sebagai berikut :

[root@networklinux ~]# rpm -ivh squid-2.5.???.rpm (lihat versi squidnya !)

Jika sudah terinstal mari kita gunakan contoh dari studi kasus di bawah ini :

-----------------
Studi Kasus Ke-1
------------------------------------------------------------------------------------
Sesi ini akan melakukan pembatasan akses Internet untuk setiap user berdasarkan jam-jam yang telah ditetapkan oleh sebuah kebijakan. Kebijakan ini akan diterapkan pada sebuah laboratorium keilmuan jaringan komputer, telekomunikasi dan sistem sekuriti (jarkomtelekasur), lab keilmuan selainnya (lablain), dan Departemen Ilmu Komputer. Kebijakan tersebut berupa jam akses Internet untuk para user lab keilmuan jaringan komputer, telekomunikasi dan sistem sekuriti adalah mulai jam 14.00 sampai dengan 24.00, lab keilmuan selainnya hanya diberikan akses Internet mulai jam 16.00 sampai dengan 21.00, dan semua user yang mengakses dari kantor Departemen Ilmu Komputer mulai jam 08.00 sampai dengan jam 16.00.
------------------------------------------------------------------------------------
Solusi :
-----------------
Untuk melakukan hal tersebut (seperti kasus di atas), maka seorang administrator harus membuat daftar akses (Access Control List) terlebih dahulu. Misalkan, nama ACL untuk lab keilmuan jarkomtelekasur adalah lab_jarkom, nama ACL untuk lab selain jarkomtelekasur adalah lab_other, dan Departemen Ilmu Komputer adalah kantor_ilkom, maka konfigurasi Squid yang harus dilakukan adalah sebagai berikut:
(hint: buka file pada /etc/squid/squid.conf, cari pada bagian ACCESS_CONTROLS )
------------------------------------------------------------------------------------
# ACCESS CONTROLS
acl lab_jarkom src 172.18.75.112-172.18.75.212/255.255.255.0
acl lab_other src 172.18.75.213-172.18.75.232/255.255.255.0
acl kantor_ilkom src 172.18.75.233-172.18.75.254/255.255.255.0

acl jam_lab_jarkom time 14:00-24.00
acl jam_lab_other time 16:00-21.00
acl jam_kantor_ilkom time 08:00-16.00


# TAG: http_access

http_access allow jam_lab_jarkom lab_jarkom
http_access allow jam_lab_other lab_other
http_access allow jam_kantor_ilkom kantor_ilkom

------------------------------------------------------------------------------------
Jika sudah edit pada bagian Access Controls diatas, maka yang perlu di perhatikan adalah :
Restart Squid dengan perintah :
[root@networklinux ~]# /etc/init.d/squid restart
Stopping squid: ................ [ OK ]
Starting squid: . [ OK ]

http_access hanya mengizinkan (allow) lab_jarkom, lab_other, dan kantor_ilkom pada jam yang telah diatur pada jam_lab_jarkom, jam_lab_other, dan jam_kantor_ilkom
Di luar waktu tersebut, akses Internet pada setiap lab/ruang akan ditolak (deny)
------------------------------------------------------------------------------------

-----------------
Studi Kasus Ke-2
------------------------------------------------------------------------------------
Sesi ini akan melakukan pembatasan akses Internet untuk setiap user berdasarkan hari-hari yang telah ditetapkan oleh sebuah kebijakan. Kebijakan ini akan diterapkan pada sebuah laboratorium keilmuan jaringan komputer, telekomunikasi dan sistem sekuriti (jarkomtelekasur), lab keilmuan selainnya (lablain), dan Departemen Ilmu Komputer. Kebijakan tersebut berupa jam akses Internet untuk para user lab keilmuan jaringan komputer, telekomunikasi dan sistem sekuriti adalah hari Senin sampai dengan Sabtu, lab keilmuan selainnya hanya diberikan akses Internet mulai hari Senin sampai dengan Rabu, dan semua user yang mengakses dari kantor Departemen Ilmu Komputer mulai hari Senin sampai dengan Jum’at.
------------------------------------------------------------------------------------
Solusi :
-----------------
Untuk melakukan hal tersebut (seperti kasus di atas), maka seorang administrator harus membuat daftar akses (Access Control List) terlebih dahulu. Misalkan, nama ACL untuk lab keilmuan jarkomtelekasur adalah lab_jarkom, nama ACL untuk lab selain jarkomtelekasur adalah lab_other, dan Departemen Ilmu Komputer adalah kantor_ilkom, maka konfigurasi Squid yang harus dilakukan adalahs sebagai berikut:
(hint: keterangan waktu bisa dilihat pada gambar berikut :)



------------------------------------------------------------------------------------
# ACCESS CONTROLS
acl lab_jarkom src 172.18.75.112-172.18.75.212/255.255.255.0
acl lab_other src 172.18.75.213-172.18.75.232/255.255.255.0
acl kantor_ilkom src 172.18.75.233-172.18.75.254/255.255.255.0

acl jam_lab_jarkom time MTWHFA # senin s.d sabtu
acl jam_lab_other time MTW
acl jam_kantor_ilkom time MTWHF


# TAG: http_access

http_access allow jam_lab_jarkom lab_jarkom
http_access allow jam_lab_other lab_other
http_access allow jam_kantor_ilkom kantor_ilkom

------------------------------------------------------------------------------------
Jika sudah edit pada bagian Access Controls diatas, maka yang perlu di perhatikan adalah :
Restart Squid dengan perintah :
[root@networklinux ~]# /etc/init.d/squid restart
Stopping squid: ................ [ OK ]
Starting squid: . [ OK ]

http_access hanya mengizinkan (allow) lab_jarkom, lab_other, dan kantor_ilkom pada jam yang telah diatur pada jam_lab_jarkom, jam_lab_other, dan jam_kantor_ilkom
Di luar waktu tersebut, akses Internet pada setiap lab/ruang akan ditolak (deny)
------------------------------------------------------------------------------------

-----------------
Studi Kasus Ke-3
------------------------------------------------------------------------------------
Sesi ini akan melakukan pembatasan akses Internet untuk setiap user berdasarkan jam-jam yang telah ditetapkan oleh sebuah kebijakan. Kebijakan ini akan diterapkan pada sebuah laboratorium keilmuan jaringan komputer, telekomunikasi dan sistem sekuriti (jarkomtelekasur) dan lab keilmuan selainnya (lablain). Kebijakan tersebut berupa jam akses Internet untuk para user lab keilmuan jaringan komputer, telekomunikasi dan sistem sekuriti adalah mulai hari Senin jam 14.00 sampai dengan Sabtu jam 24.00, lab keilmuan selainnya hanya diberikan akses Internet mulai hari Senin jam 16.00 sampai dengan Rabu jam 21.00, dan semua user yang mengakses dari kantor Departemen Ilmu Komputer mulai hari Senin jam 08.00 sampai dengan hari Jum’at jam 16.00.
------------------------------------------------------------------------------------
Solusi :
-----------------
# ACCESS CONTROLS
acl lab_jarkom src 172.18.75.112-172.18.75.212/255.255.255.0
acl lab_other src 172.18.75.213-172.18.75.232/255.255.255.0
acl kantor_ilkom src 172.18.75.233-172.18.75.254/255.255.255.0

acl jam_lab_jarkom time MTWHFA 14:00-24.00
acl jam_lab_other time MTW 16:00-21.00
acl jam_kantor_ilkom time MTWHF 08:00-16.00


# TAG: http_access

http_access allow jam_lab_jarkom lab_jarkom
http_access allow jam_lab_other lab_other
http_access allow jam_kantor_ilkom kantor_ilkom

------------------------------------------------------------------------------------

-----------------
Studi Kasus Ke-3
------------------------------------------------------------------------------------
Terdapat kebijakan bahwa ada host dengan ip 172.18.75.112 tidak di ijinkan untuk membuka internet pada jam 00:00 s.d 06:00, host tersebut hanya diijinkan berinternet pada jam 06:01 s.d 07:00, host tersebut juga dilarang membuka halaman web dengan url xxx.com, ketika berusaha membuka halaman web xxx.com maka terdapat pesan error, bagaimanakan seorang administrator menanganinya ?
------------------------------------------------------------------------------------
Solusi :
-----------------
acl terlarang dstdomain "/etc/squid/terlarang.txt"
deny_info ERROR_TERLARANG terlarang
http_access deny terlarang

acl networklinux src 172.18.75.112/255.255.0.0
acl jamnetwork time MTWHFA 00:00-06:00
acl jamnet time MTWHFA 06:01-07:00
http_access deny jamnetwork networklinux
http_access allow jamnet networklinux

visible_hostname networklinux.com

-------------------------------------------------------------------------------------
Pada solusi di atas buatlah suatu file yang dinamakan dengan terlarang.txt, isi dari file terlarang.txt adalah alamat website yang tidak diinginkan contohnya adalah xxx.com, ERROR_TERLARANG adalah file html yang dibuat pada direktori /etc/squid/errors
------------------------------------------------------------------------------------


Tuning Web-cache Server pada Squid

Parameter-parameter penting untuk menentukan kinerja web-cache Squid, di antaranya adalah: Algoritma Object refresh, ukuran header dan body baik untuk proses reply maupun request, kebijakan untuk membatalkan koneksi server pada saat klien menutup koneksi. Beberapa parameter tersebut adalah sebagai berikut:

1. wais_relay_host
2. wais_relay_port
3. request_header_max_size (KB)
4. request_body_max_size (KB)
5. reply_body_max_size (KB)
6. refresh_pattern
7. reference_age
8. quick_abort_min (KB)
9. quick_abort_max (KB)
10. quick_abort_pct (percent)
11. negative_ttl time−units
12. positive_dns_ttl time−units
13. negative_dns_ttl time−units
14. range_offset_limit (bytes) policy for aborting

Contoh :

TAG request_header_max_size
Bentuk Umum request_header_max_size (KB)
Deskripsi TAG ini menetapkan ukuran maksimum untuk header HTTP pada saat melakukan proses REQUEST. Header REQUEST biasanya selalu berukuran relatif kecil (sekitar 512 bytes). Dengan menempatkan batasan pada ukuran header REQUEST tersebut akan menangkap/mengetahui bugs tertentu (sebagai contoh: saat terjadi koneksi persisten) dan mencegah terjadinya buffer-overflow serta serangan DoS (Denial of Service).
Option -
Contoh
request_header_max_size 10 KB

TAG request_body_max_size
Bentuk Umum request_body_max_size (KB)
Deskripsi TAG ini menetapkan ukuran maksimum untuk body REQUEST HTTP, yaitu pada saat user melakukan proses REQUEST PUT/POST. Seorang user yang akan mengirimkan sebuah REQUEST dengan ukuran BODY lebih besar daripada batasan tersebut (yang telah didefinisikan dengan TAG ini) akan menerima sebuah pesan kesalahan „INVALID REQUEST“. Jika Anda mendefinisikan parameter pada TAG ini dengan nilai NOL berarti tidak Anda mengizinkan setiap user dengan besaran BODY tak terbatas.
Option -

Jika Anda ingin membatasi setiap user hanya boleh meng-upload data sebesar 1 MB, maka set parameter tersebut sebagai berikut:
request_body_max_size 1 MB

Jika Anda tidak ingin membatasi setiap user atau dengan kata lain bahwa setiap user diizinkan meng-upload data dengan ukuran tak-terbatas, maka set parameter tersebut sebagai berikut:
request_body_max_size 0 KB
Konfigurasi parameter ini merupakan nilai standar yang digunakan oleh Squid.

TAG reply_body_max_size
Bentuk Umum reply_body_max_size (KB)
Deskripsi TAG ini menetapkan ukuran maksimum untuk body REPLY. Parameter ini dapat digunakan untuk mencegah user dari proses download file berukuran besar, seperti MP3, AVI, Movie, dan Trail-trail film porno. Ukuran REPLY diperiksa 2-kali, yaitu ketika user mendapatkan header REPLY, maka squid akan memeriksa isi dari header CONTENT-VALUE.

1. Jika nilai CONTENT-VALUE ada dan memiliki ukuran lebih besar daripada nilai parameter TAG reply_body_max_size maka permintaan (request) akan DITOLAK dan user akan menerima sebuah pesan kesalahan „THE REQUEST OR REPLY IS TOO LARGE“
2. Jika nilai CONTENT-VALUE tida ada dan ukuran REPLY melebihi batas nilai parameter TAG reply_body_max_size maka koneksi klien hanya akan ditutup saja dan user akan menerima sebuah REPLY parsial.
Option reply_body_max_size bytes allow|deny acl acl...

Jika Anda ingin membatasi setiap user hanya boleh meng-download data sebesar 5 MB, maka set parameter tersebut sebagai berikut:
reply_body_max_size 5120000 allow all

Jika Anda tidak ingin membatasi setiap user atau dengan kata lain bahwa setiap user diizinkan meng-download data dengan ukuran tak-terbatas, maka set parameter tersebut sebagai berikut:
reply_body_max_size 0 allow all

Konfigurasi parameter ini merupakan nilai standar yang digunakan oleh Squid.

Yang perlu diperhatikan ketika selesai melakukan konfigurasi pada file squid.conf adalah restart kembali service squid dengan cara

[root@networklinux ~]# /etc/init.d/squid restart

Ref: Sukoco, Heru. Kuliah Komunikasi Data dan Jaringan Komputer.IPB.
Have a nice Try...

Musawarman

1 komentar:

  1. reply_body_max size tidak berjalan itu kenapa? masih bisa download file dluar batas

    BalasHapus