Mari kita mulai saja, kita akan menginstal squid proxy server di Ubuntu 8.04.
Instalasi
Menginstal squid sangatlah mudah, semudah menginstal aplikasi lain dari repositori Ubuntu.sudo apt-get install squidUntuk menjalankan squid, bisa menggunakan perintah,
sudo /etc/init.d/squid startUntuk mematikan squid, bisa menggunakan perintah,
sudo /etc/init.d/squid stop
Mengkonfigurasi
Setelah squid terinstal, lokasi konfigurasi ada di/etc/squid/squid.conf
. Mari kita backup terlebih dahulu, karena kita akan melakukan beberapa perubahan di berkas konfigurasi tersebut.sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.asliSebelum kita lanjutkan, saya ingin menunjukkan sesuatu. Coba jalankan perintah di bawah ini,
sudo cat /etc/squid/squid.conf |wc -l 4529Hasilnya kira-kira seperti tertulis di atas, yaitu 4529. Artinya berkas squid.conf yang akan kita sunting memiliki 4529 baris. Wow! Pantas kalau banyak admin pemula yang bingung ketika akan mengkonfigurasi squid.
Berbeda dengan apache atau postfix, pemaket sudah menyiapkan konfigurasi yang siap pakai, yang artinya begitu postfix atau apache diinstal sudah ada contoh yang bisa dilihat dan bisa dijalankan langsung. Tapi untuk paket squid di Ubuntu ini, squid.conf yang disertakan bukanlah contoh siap pakai. Berkas ini lebih mirip berkas dokumentasi hehe.
Oke, cukup ceritanya sampai disitu, mari kita mulai mengkonfigurasi. Dari sekian ribu baris, sebetulnya untuk menjalankan squid sebagai web proxy, kita hanya perlu mengkonfigurasi beberapa baris saja. Mari kita lihat apa saja yang harus dikonfigurasi.
acl
dan http_access
Sebetulnya ini adalah topik yang besar, dan sudah saya rencanakan
untuk membahasnya secara terpisah. Tapi karena untuk tahap awal, kita
harus mengijinkan akses dari LAN agar bisa menggunakan proxy, kita bahas
sekilas saja.Yang perlu Anda ketahui, konfigurasi squid dibaca dari atas ke bawah. Artinya, yang pertama kali cocok, itulah yang menang. Selalu ingat konsep dasar ini, karena akan sangat penting untuk memahami mengapa konfigurasi squid Anda tidak bekerja dengan seharusnya.
Ok, sekarang kita harus membuat acl baru untuk mengijinkan semua IP di LAN Anda bisa menggunakan squid proxy yang baru diinstal.
Misal, Anda memiliki dua LAN, 192.168.1.0/24 dan 192.168.2.0/24. Maka konfigurasinya,
acl jaringan_saya src 192.168.1.0/24 192.168.2.0/24 http_access allow jaringan_saya |
acl jaringan_saya src 192.168.1.0/24 192.168.2.0/24 http_access allow jaringan_saya acl kantor_cabang src 192.168.5.5 http_access allow kantor_cabang |
cache_dir
Yang lain yang bisa dikonfigurasi saat ini adalah cache_dir
. Defaultnya,cache_dir ufs /var/spool/squid 100 16 256 |
/var/spool/squid
dan dialokasikan sebesar 100 mega bytes. Angka 16 dan 256 adalah jumlah
direktori cache yang dibuat. 16 artinya akan ada 16 direktori di
/vaar/spool/squid, dan didalamnya masing-masing ada 256 direktori lagi.Jadi kalau Anda ingin mengubah besar alokasi untuk cache, ganti angka 100 itu dengan angka baru. Misal untuk mengalokasikan sebesar 2 GB, ganti dengan 2000.
Menerapkan Konfigurasi
Untuk saat ini cukup dua konfigurasi itu saja (biar Anda tidak pusing). Setelah selesai menyunting berkas konfigurasi untuk menerapkan perubahan yang baru dibuat, Anda bisa merestart squid.sudo /etc/init.d/squid restartTapi proses restart biasanya akan agak lama. Untuk mempermudah, tanpa perlu melakukan restart squid, jalankan saja perintah berikut.
sudo squid -k reconfigure
Berkas squid.conf sederhana
Dari 4529 baris, saya hapus baris yang tidak (atau belum) kita perlukan. Hasilnya kurang lebih ada seratusan baris, jadi Anda lebih mudah membacanya.Silakan unduh berkas squid.conf untuk disimpan di
/etc/squid/squid.conf
.Terjemahan TAG: acl di squid.conf
Mari kita mulai dengan membaca tipe-tipe acl yang didefinisikan di squid.conf. Jika Anda kesulitan memahami karena kendala bahasa, saya coba terjemahkan blok acl tadi di bawah ini.# TAG: acl # Mendefinisikan Access List # # acl namaacl tipeacl string1 ... # acl namaacl tipeacl "berkas" ... # # ketika menggunakan "berkas", di dalam berkas tersebut harus berisikan satu item # per baris # # tipeacl adalah salah satu dari tipe-tipe yang dijelaskan di bawah # # Secara default, regular expression diset CASE-SENSITIVE # untuk membuatnya case-insensitive, gunakan opsi -i # # acl namaacl src alamat-ip/netmask ... (alamat IP klien) # acl namaacl src alamat1-alamat2/netmask ... (rentang dari alamat-alamat) # acl namaacl dst alamat-ip/netmask ... (alamat IP dari targer URL) # acl namaacl myip alamat-ip/netmask ... (alamat IP untuk local socket) # # acl namaacl arp alamat-mac ... (format penulisannya xx:xx:xx:xx:xx:xx ) # # ACL arp memerlukan opsi khusus saat mengkonfigurasi --enable-arp-acl. # # Lebih jauh lagi, ACL arp tidak berlaku untuk semua sistem operasi. # # Berfungsi di Linux, Solaris, FreeBSD dan beberapa varian *BSD. # # # # CATATAN: Squid hanya bisa mendeteksi alamat MAC dari klien yang ada di # # subnet yang sama. Jika klien berada di subnet yang berbeda, maka Squid tidak # # bisa mengetahui alamat MAC nya. # # acl namaacl srcdomain .fulan.com ... # reverse lookup, IP klien # acl namaacl dstdomain .fulan.com ... # server tujuan dari URL # acl namaacl srcdom_regex [-i] xxx ... # regex yang cocok dengan nama klien # acl namaacl dstdom_regex [-i] xxx ... # regex yang cocok dengan server # # Untuk dstdomain dan dstdom_regex reverse lookup dicoba jika URL berbasiskan # # IP yang digunakan tidak ada yang cocok. Nama "none" digunakan jika reverse # # lookup gagal. # # acl namaacl time [day-abbrevs] [h1:m1-h2:m2] # day-abbrevs: # S - Sunday (Minggu) # M - Monday (Senin) # T - Tuesday (Selasa) # W - Wednesday (Rabu) # H - Thursday (Kamis) # F - Friday (Jumat) # A - Saturday (Sabtu) # h1:m1 harus kurang dari h2:m2 # acl namaacl url_regex [-i] ^http:// ... # regex yang cocok di URL secara # keseluruhan # acl namaacl urlpath_regex [-i] \.gif$ ... # regex yang cocok pada bagian # path URL # acl namaacl urllogin [-i] [^a-zA-Z0-9] ... # regex yang cocok pada bagian # login URL # acl namaacl port 80 70 21 ... # acl namaacl port 0-1024 ... # rentang diperbolehkan # acl namaacl myport 3128 ... # (local socket TCP port) # acl namaacl proto HTTP FTP ... # acl namaacl method GET POST ... # acl namaacl browser [-i] regexp ... # # pola yang cocok pada header User-Agent (lihat juga req_header di bawah) # acl namaacl referer_regex [-i] regexp ... # # pola yang cocok pada header Referer # # Referer sangatlah tidak reliable, jadi gunakan dengan hati-hati # acl namaacl ident namauser ... # acl namaacl ident_regex [-i] pattern ... # # string yang cocok pada keluaran ident. # # gunakan REQUIRED untuk menerima semua ident yang tidak kosong. # acl namaacl src_as angka ... # acl namaacl dst_as angka ... # # Kecuali untuk access control, AS number bisa digunakan untuk # # mengarahkan request ke cache tertentu. Sebagai contoh untuk mengarahkan # # semua request untuk AS#1241 dan hanya itu saja ke cachesaya.domainsaya.net: # # acl ascontoh dst_as 1241 # # cache_peer_access cachesaya.domainsaya.net allow ascontoh # # cache_peer_access cachesaya.domainsaya.net deny all # # acl namaacl proxy_auth [-i] namauser ... # acl namaacl proxy_auth_regex [-i] pattern ... # # daftar dari namauser yang valid # # gunakan REQUIRED untuk menerima semua username yang valid. # # # # CATATAN: ketika header Proxy-Authentication dikirim tetapi dia tidak # # diperlukan pada saat pengecekan ACL, maka username TIDAK akan dicatat # # di access.log. # # # # CATATAN: proxy_auth memerlukan program autentikasi EXTERNAL # # untuk memeriksa kombinasi username/password (lihat direktif auth_param). # # # # CATATAN: proxy_auth tidak bisa digunakan di transparent proxy karena # # peramban perlu dikonfigurasi menggunakan proxy agar bisa merespon pada # # proses autentikasi proxy. # # acl namaacl snmp_community string ... # # String community untuk membatasai akses ke agen SNMP Anda. # # Contoh: # # # # acl snmppublic snmp_community public # # acl namaacl maxconn angka # # Ini akan cocok ketika alamat IP dari klien memiliki # # jumlah koneksi HTTP yang tersambung melebihi dari <angka> # # acl namaacl max_user_ip [-s] angka # # Ini akan cocok ketika user mencoba login melebihi dari <angka> # # alamat ip yang berbeda. Parameter authenticate_ip_ttl mengontrol # # nilai timeout pada entri-entri ip. # # Jika dituliskan -s maka pembatasannya ketat, browsing akan ditolak # # dari alamat IP lainnya sampai nilai ttl expire. Tanpa -s Squid hanya # # akan membuat user kesel dengan "secara acak" menolak akses. # # (pencatatan akan di reset setiap kali batasan tercapai dan request # # akan ditolak) # # CATATAN: pada mode akselerasi atau ketika disana ada banyak anak proxy, # # klien mungkin akan terlihat datang dari beberapa alamat saat mereka memasuki # # peternakan proxy, jadi pembatasan hanya 1 akan menyebabkan problem ke user. # # acl namaacl req_mime_type mime-type1 ... # # regex yang cocok dengan mime type dari request yang digenerate oleh klien # # Dapat digunakan untuk mendeteksi berkas upload atau beberapa tipe request # # HTTP tunneling. # # CATATAN: Ini TIDAK akan cocok dengan reply. Anda tidak bisa menggunakan # # ini untuk mencocokkan dengan tipe berkas yang dikembalikan. # # acl namaacl req_header header-name [-i] any\.regex\.here # # regex yang cocok dengan request header apa saja yang sudah dikenali. # # Mungkin bisa dianggap sebagai superset dari ACL-ACL "browser", "referer" dan # # "mime-type". # # acl namaacl rep_mime_type mime-type1 ... # # regex yang cocok dengan mime type dari reply yang diterima oleh squid. Dapat # # digunakan untuk mendeteksi berkas yang didownload atau beberapa tipe dari # # request HTTP tunneling. # # CATATAN: Ini tidak akan berpengaruh pada aturan http_access. Ini hanya akan # # berpengaruh pada aturan yang mempengaruhi reply data stream seperti misalnya # # http_reply_access. # # acl namaacl rep_header nama-header [-i] regex\.apa\.saja\.disini # # regex yang cocok dengan reply header apa saja yang sudah dikenali. # # Mungkin bisa dianggap sebagai superset dari ACL-ACL "browser", "referer" dan # # "mime-type". # # # # Contoh: # # # # acl banyak_spasi rep_header Content-Disposition -i [[:space:]]{3,} # # acl nama_acl external nama_class [arguments...] # # ACL external yang melakukan pencarian melalui class bantu yang didefinisikan # # oleh direktif external_acl_type. # # acl urlgroup group1 ... # # cocok dengan urlgroup seperti yang diindikasikan oleh redirector. # # acl namaacl user_cert atribut nilai... # # cocok dengan atribut-atribut dari user sertifikat SSL # # atributnya adalah salah satu dari DN/C/O/CN/L/ST # # acl namaacl ca_cert attribut nilai... # # cocok dengan atribut-atribut dari user-user yang menerbitkan sertifikat # # CA SSL # # atributnya adalah salah satu dari DN/C/O/CN/L/ST # # acl namaacl ext_user namauser ... # acl namaacl ext_user_regex [-i] pola ... # # string yang cocok dengan namauser yang diberikan oleh pembantu acl external # # gunakan REQUIRED untuk menerima namauser apa saja yang tidak-kosong. |
ACL yang paling umum digunakan
Dari sekian banyak tipe acl yang bisa digunakan, menurut pengalaman saya hanya beberapa saja yang umum digunakan. Tentunya memang semua itu tergantung kebutuhannya. Walau tidak umum digunakan, tapi kalau memerlkukannya, mungkin saja digunakan dan sebaliknya.Biasanya yang paling umum diguanakan adalah,
src
, dst
, dstdomain
, port
. ACL lainnya yang mungkin sering ditemui adalah url_regex
, proxy_auth
, maxconn
, max_user_ip
, time
.Untuk lebih memahami cara penggunaan acl ini, saya akan coba berikan beberapa contoh penggunaan acl.
Contoh 1: Membatasi akses internet dari IP tertentu
Misal, dalam satu jaringan kantor, semua diperbolehkan mengakses internet via proxy. Kecuali beberapa komputer di meja penerima tamu atau front office.acl jaringan_kantor src 192.168.1.0/24 acl front_office src 192.168.1.21 # komputer1 di front office acl front_office src 192.168.1.22 # komputer2 di front office acl front_office src 192.168.1.23 # komputer3 di front office http_access deny front_office http_access allow jaringan_kantor |
Format inline, jadi IP dituliskan ke samping, tanpa menekan enter atau penanda baris baru.
acl jaringan_kantor src 192.168.1.0/24 acl front_office src 192.168.1.21 192.168.1.22 192.168.1.23 http_access deny front_office http_access allow jaringan_kantor |
acl jaringan_kantor src 192.168.1.0/24 acl front_office src 192.168.1.21-192.168.1.23/32 http_access deny front_office http_access allow jaringan_kantor |
Contoh 2: Membatasi akses ke situs tertentu
Anda ingin memblock beberapa situs porno yang paling sering dikunjungi oleh user Anda. Tentu saja ini cara paling sederhana, dan mungkin tidak cocok untuk memblock situs porno secara keseluruhan. Tapi ini hanya sekedar contoh saja.Pertama, pastikan rules untuk membatasi akses ke situs porno itu muncul lebih dahulu, dibandingkan rules lain yang membolehkan akses internet. Lihat contoh dibawah ini. Kita akan menggunakan tipeacl dstdomain, yang bisa digunakan untuk menandai domain tujuan yang akan diakses.
acl situs_porno dstdomain .playboy.com acl situs_porno dstdomain .porno.com http_access deny situs_porno acl jaringan_kantor 192.168.1.0/24 http_access allow jaringan_kantor |
# Contoh penempatan yang salah acl jaringan_kantor 192.168.1.0/24 http_access allow jaringan_kantor # rules di bawah ini tidak akan pernah dijalankan, karena akses sudah diperbolehkan # di baris sebelumnya acl situs_porno dstdomain .playboy.com acl situs_porno dstdomain .porno.com http_access deny situs_porno |
Contoh 3: Membatasi akses internet di jam kerja
Kali ini kita akan menggunakan tipe acltime
. Langsung saja ke contoh.acl jam_kerja time MTWH 08:00-12:00 # Senin s.d Kamis jam 08:00 s.d Jam 12:00 acl jam_kerja time F 08:00-11:30 # Jumat 08:00-11:30 WIB acl jam_kerja time MTWHF 13:00-16:00 # Senin s.d Jumat jam 13:00 s.d 16:00 acl jaringan_kantor src 192.168.1.0/24 # Buka akses internet, diluar jam kerja http_access allow jaringan_kantor !jam_kerja |
Contoh 4: Membatasi akses internet di jam kerja, kecuali manager dan bos
Contoh lain, kantor hanya ingin membuka akses internet untuk komputer-komputer manajer dan si Boss besar. Karyawan lainnya, bisa mengakses internet tapi hanya di luar waktu kerja.acl jam_kerja time MTWH 08:00-12:00 # Senin s.d Kamis jam 08:00 s.d Jam 12:00 acl jam_kerja time F 08:00-11:30 # Jumat 08:00-11:30 WIB acl jam_kerja time MTWHF 13:00-16:00 # Senin s.d Jumat jam 13:00 s.d 16:00 # jaringan kantor acl jaringan_kantor src 192.168.1.0/24 # manager dan boss acl manager src 192.168.1.51 # manager keuangan acl manager src 192.168.1.52 # manager marketing acl manager src 192.168.1.53 # general manager acl boss src 192.168.1.68 # si boss besar # Buka akses internet untuk manager dan boss, tanpa batasan waktu http_access allow manager http_access allow boss # Untuk karyawan lainnya, buka akses internet diluar jam kerja http_access allow jaringan_kantor !jam_kerja |
Rangkuman
Di tulisan hari kedua ini, Anda sudah berkenalan dengan beberapa tipe acl.src
untuk menandai alamat ip dari klien, dstdomain
untuk menandai domain yang akan diakses, time
untuk menandai hari dan jam. Selain itu Anda juga sudah belajar bagaimana menggunakan acl tersebut untuk keperluan tertentu. Contoh yang dituliskan disini misalnya, untuk membatasi akses ke proxy (menggunakan direktif http_access).
Satu lagi yang perlu diingat dari pelajar hari ini adalah, posisi menentukan prestasi (ini biar Anda ingat saja ya hehe). Artinya posisi rules yang Anda buat, menentukan apakah rules tersebut akan berfungsi sesuai apa yang Anda inginkan atau tidak.
Untuk Lusca saya bahas selanutnya
0 Response to "catatan Buat Proxy (lawas)"
Post a Comment
Ilmu ibarat sempax, kita harus menggunakannya, tapi tak perlu memamerkannya..".Tolong klik iklan dong..biar blog nya tetep eksis..Thxs "