Proxy Server Linux dengan Squid
by FX. Eko Budi Kristanto
Bagi sebagian rekan-rekan yang mau membuat proxy server dengan Linux, atau bagi adik-adik Ilmu Komputer USD yang mau coba-coba belajar bikin proxy, saya ingin membagikan pengalaman kecil saya dalam membuat proxy menggunakan Linux. Meski banyak software untuk membuat proxy server, saya memilih squid karena paketnya sudah ter-include dalam distro yang saya gunakan (Fedora Core) dan hampir sebagian proxy server Linux menggunakan squid. Untuk spesifikasi hardware yang saya gunakan, dapat dilihat di artikel Proxy Server di tempat kerja saya. Proxy server tersebut menggunakan squid versi 2.6-12 pada distro Fedora Core 6 yang saya fungsikan sebagai:
-
Menyimpan halaman web di proxy untuk mempercepat akses Internet.
-
Akses kontrol Internet berdasarkan IP Address. Menggunakan 2 network yang berbeda (saya fungsikan juga sebagai router – dengan IP Forwarding), untuk ini, saya menggunakan 3 NIC pada 1 server.
-
Blacklist daftar situs terlarang secara manual.
-
Membatasi ukuran download File dengan ekstension tertentu dan hanya berlaku pada jam tertentu.
-
Pesan Error dalam format Bahasa Indonesia.
-
Rule untuk memperbolehkan akses Internet hanya protokol tertentu saja.
Langkah-langkah yang saya lakukan:
- Instal aplikasi squid
- Edit file konfigurasi squid
- Buat direktori dan file blacklist untuk blacklist secara manual
- Buat direktori dan file untuk pesan error dalam bahasa indonesia
- Check konfigurasi firewall yang diterapkan di proxy
- Jalankan servicenya
- Test konfigurasi di proxy dan client
File konfigurasi squid: /etc/squid/squid.conf (versi saya)
#SQUID 2.6.STABLE12
#Author by: http://fxekobudi.net
# OPTION JARINGAN
# —————————————————————————–
http_port 3128
icp_port 0
# OPTION UKURAN CACHE
# —————————————————————————–
cache_mem 256 MB
cache_swap_low 94
cache_swap_high 96
maximum_object_size 16384 KB
minimum_object_size 4 KB
maximum_object_size_in_memory 2048 KB
fqdncache_size 1024
cache_replacement_policy heap GDSF
memory_replacement_policy heap GDSF
# DIREKTORI LOG DAN CACHE
# —————————————————————————–
cache_dir aufs /var/spool/squid 9000 16 256
access_log /var/log/squid/access.log squid
cache_log /var/log/squid/cache.log
cache_store_log none
# TUNING CACHE PROXY
# —————————————————————————–
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
negative_ttl 1 minutes
# TIMEOUT
# —————————————————————————–
half_closed_clients off
# ————————————-
# Memblok situs terlarang (blacklist)secara manual
# ————————————-
acl noblacklist dstdomain “/etc/squid/blacklist/no-blacklist.txt”
acl katablacklist url_regex -i “/etc/squid/blacklist/kata-blacklist.txt”
acl domainblacklist dstdomain “/etc/squid/blacklist/domain-blacklist.txt”
acl ipblacklist dst “/etc/squid/blacklist/ip-blacklist.txt”
acl tdkbebasdownload time 08:00-13:00
# AKSES KONTROL
# —————————————————————————–
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
# ————————————-
# Daftar IP address
# ————————————-
acl lab1 src 192.168.254.1-192.168.254.40/255.255.255.255
acl staf-it src 192.168.254.41-192.168.254.42/255.255.255.255
acl lab2 src 192.168.254.43-192.168.254.44/255.255.255.255
acl ruang1 src 192.168.1.1-192.168.1.8/255.255.255.255
acl ruang2 src 192.168.1.11-192.168.1.17/255.255.255.255
# ————————————-
# Memblok situs terlarang secara manual
# ————————————-
http_access allow noblacklist
http_access deny katablacklist
http_access deny domainblacklist
http_access deny ipblacklist
http_access allow manager localhost
http_access deny manager
# ————————————-
# Rule yang saya terapkan
# ————————————-
http_access allow lab1
http_access allow staf-it
http_access allow lab2
http_access allow ruang1
http_access allow ruang2
acl magic_words2 url_regex -i ftp .exe .mp3 .vqf .tar.gz .gz .tar.bz2 .bz2 .rpm .zip .rar .avi .mpeg .mpe .mpg .qt .ram .rm .raw .wav .iso
# Cancel download if file is bigger than 2 MB = 2000×1024 byte = 2048000 byte
reply_body_max_size 2048000 allow magic_words2 tdkbebasdownload
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access deny all
http_reply_access allow all
icp_access allow all
# PARAMETER ADMINISTRATOR
# —————————————————————————–
cache_mgr fxekobudi@gmail.com
cache_effective_user squid
cache_effective_group squid
visible_hostname proxy.fxekobudi.local
# PESAN ERROR DALAM BAHASA INDONESIA
# —————————————————————————–
error_directory /usr/share/squid/errors/Indonesian
Agar fungsi blacklist manual itu dapat digunakan, buat direktori berisi file-file disebutkan dalam blacklist manual:
# mkdir /etc/squid/blacklist
# cd /etc/squid/blacklist/
# vim no-blacklist.txt
# vim kata-blacklist.txt
# vim domain-blacklist.txt
# vim ip-blacklist.txt
Minimal dimasukkan satu item untuk masing-masing file tersebut, karena jika tidak, maka saat kita melihat error log squid sesaat setelah service dijalankan, akan ada pesan error tidak menemukan item pada file tersebut…
Selain itu, saya juga menyertakan konfigurasi untuk pesan Error dari Proxy squid dalam bentuk bahasa indonesia, agar user di tempat kerja saya lebih mudah memahami maksudnya… Ide pesan error ini kemudian menjadi inspirasi saya saat mengkonfigurasi redirect SquidGuard untuk mengarah kepada file yang sengaja saya buat di root direktori web server proxy.
Untuk melakukannya, tinggal copykan saja pesan Error dalam bahasa Inggris ke direktori lokasi pesan error berbahasa Indonesia.
# cp /usr/share/squid/errors/English /usr/share/squid/errors/Indonesian
trus terjemahkan file-filenya…
Untuk menjalankan servicenya, gunakan saja perintah:
# /sbin/service squid start
Oh ya, Anda juga perlu menambahkan di konfigurasi Firewall menggunakan Iptable agar client diperbolehkan mengakses Internet ini melalui proxy, request client ke proxy dengan IP address yang terdaftar diperbolehkan melalui port 3128 (atau 8080) tergantung konfigurasi yang Anda gunakan… Saya jadi ingat waktu pertama kali mencoba, koneksi internet di server pake proxy udah jalan, tapi kok clientnya ngga bisa akses, eh ternyata emang client belum diperbolehkan akses ke IP address dan portnya proxy… Hehe. Agar bisa akses ke proxy, rule iptable-nya untuk file /etc/sysconfig/iptables harus memuat rule ini: (saya pakai konfigurasi firewall bawaan Fedora Core)
-A RH-Firewall-1-INPUT -m state –state NEW -m tcp -p tcp –dport 3128 -j ACCEPT
Untuk menerapkan IP forwarding, saya edit file /etc/sysctl.conf dan memberi nilai 1 (enable) untuk direktive:
net.ipv4.ip_forward = 0 menjadi net.ipv4.ip_forward = 1
Konfigurasi proxy ini saya gunakan sebagian ditempat kerja saya (YBHK dan persekolahan Tarsisius 1, Damai, Tarsisius 2, Vianney, dan Tarsisius Vireta) dengan beberapa tambahan fitur yang tidak dapat saya sebutkan disini… Dengan alasan keamanan. Hehe…
Sedangkan konfigurasi squid untuk menggunakan blacklist dari redirect SquidGuard dan firewall-nya akan saya tulis beberapa minggu ke depan… Setelah saya pulang berlibur ke rumah orang tua saya sekaligus tanah kelahiran saya di Sarolangun, Jambi.
Popularity: 93%
Related Posts
Tags: Linux, Networking, Open Source, Server








July 20th, 2007 at 11:00 am
pak terimakasih atas sharingnya tentang proxy.
pak kalau boleh saya di sharing ke e-mail saya lebih jauh lagi tenteng proxy..saya pengin membuatnya.terimaksih……
July 24th, 2007 at 10:05 am
kalo mau download daftar blacklist website-website porn yang dari indonesia di mana sih mas? aku dah dapat list website porn luar. skr aku butuh yang versi indo. thanx ya
August 9th, 2007 at 9:00 am
Mas, itu yang no-blacklist.txt isinya apa aja mas?
daftar situs yang boleh di akses?
August 9th, 2007 at 10:33 am
oya mas, saya koq waktu mau terapin rule di iptables nya itu malah ga bisa ya?
sebelumnya di iptables saya ada rule nat dan snat. kenapa ya?
August 13th, 2007 at 4:27 pm
mas,
saya “contek” configurasi squid anda.
proxynya udah jalan, komputer klien udah lewat proxy. Klien tertentu (IP tertentu) yang tidak boleh akses internet sudah berhasil diblok. Tetapi domainterlarang, ipterlarang dan kataterlarang masih bisa lewat dikomputer klien. Sebagai contoh aku coba isi domain-terlarang.txt dengan http://www.detik.com , tapi komputer klien masih juga bisa mengakses http://www.detik.com. Apa yang kurang? mohon pencerahan….thank’s
August 13th, 2007 at 6:12 pm
kalo selain dari GUI nya mas bisa pandu saya gak?
file2 apa aja yang mesti di edit.
soalnya di tempat saya ngoprek, gak dipasangin desktop envi nya.
maksudnya sih biar gape ngetik2 command ama edit file gituh
August 22nd, 2007 at 2:27 pm
mas mau tanya
gimana kalo buat proxi di fedora core5 ????
September 17th, 2007 at 4:25 pm
Sore Mas,,..
Makasih artikelnya …
Skrg pertanyaannya,.. klo sy mo spya user saya bisa ngirim email or nge pop e mail (berarti hrs buka port 110 and 25 kan) gmn caranya mas ?
Soalnya byk user saya yg ngepop ang send email .. sementara saya blom ada MTA sendiri ..
Makasih byk sebelumnya
Rgds
Daniel
September 19th, 2007 at 10:57 am
Tks Mas. udah dicoba … tambahan baris uadh dimasukkan, tetapi masih belum bisa tembus squid port 25 dan atau 110 nya.
Kalau saya telnet MTA servernya dengan command promt, maka saya tidak mendapatkan keterangan apa-apa. Dalam artian tidak ada
Kalau saya jalankan Outlook ataupun outlook expressnya saya akan mendapatkan error message spt
“”Task ‘MGM - Sending’ reported error (0×800CCC0F) : ‘The connection to the server was interrupted. If this problem continues, contact your server administrator or Internet service provider (ISP).”"
Apa yg harus ditambahkan kembali di settingan squidnya mas.
Makasih byk loh Mas….
Daniel
September 19th, 2007 at 2:27 pm
Mas Eko….
Udah bisa .. tararengkyu ya .. ternyata setelah saya tembahkan, saya coba telnet ke MTA server saya, dan saya coba lihat status (pake netstat) di MTA saya, ternyata IP Private saya terdaftar (buka IP PRIVATE squid.. tp ip private client),.. jadi bertanya2x ..nich ada apa gerangan ??? koq yg kecatet IP Private bknnya IP Public squid saya ….
Ternyata …………. pada server squidnya.. seting iptables nya hilang .. blom sempert ke save .. jadi ya di set dulu..trs di save dah.. and … VOILA… bisa telnet ke MTA server sy ….
Tks ya
September 25th, 2007 at 4:58 pm
Mas Eko,
Terima kasih atas sharingnya, saya sudah coba dan jalan.
Bagaimana cara setting firewall agar client hanya bisa browsing dan email aja?
Saya pakai 2 lan card.
Salam,
Tristan
September 26th, 2007 at 9:09 am
Mas Eko,
Untuk access.log apakah bisa penuh, bagaimana menghapusnya ? apakah otomatis kalau sudah mencapai mb tertentu akan kosong ?
Apakah ada artikel atau settingan firewall yang bisa di-sharing mas ?
Salam,
Tristan
October 17th, 2007 at 2:08 pm
mantaf mas panduannya, tapi gimana kalau kita membatasi akses internet untuk 1 atau beberapa user?
October 21st, 2007 at 3:34 pm
Mas Eko kalo boleh minta “pesan error” squid yg udah diterjemahken ke indo dunk
klo nerjemahin sendiri bhs inggris ku kaco, klo boleh kirim ke email ya
and thank you, atas artikelnya, aq lagi belajar squid dah tak terapkan dan berhasil
November 21st, 2007 at 7:49 pm
makasih mas ilmunya aku coba dulu nih…
maklumlah newbie 3bulan nih..
1xlagi makasih..
November 24th, 2007 at 10:35 am
makasih pak sebelumnya atas ilmunya,,
kebetulan saya lagi ngerjain kerja praktek dan di suruh buat proxy seperti yg bapak tulis ini,tapi setelah saya ikutin semua artikel ini dan saya coba
# /sbin/service squid start
dan hasilnya
init_cache_dir /var/spool/squid … failed
trus saya nconectkan dengan internet juga gak isa..
kira2 ada masalah apa dan cara menanganinya y pak?
mohon bantuanya pak,
November 25th, 2007 at 3:41 pm
mas,maw tanya…
kalo setingan dah saya edit seperti tulisan mas dan error pada
acl SSL_ports port 443
reply_body_max_size 2048000 allow magic_words2 (tdkbebasdownload)
http_access deny !Safe_ports
kira2 da masalah apaan y mas,trus solusinya gimana…
makasih mas ilmunya…
November 30th, 2007 at 3:34 pm
Untuk melakukannya, tinggal copykan saja pesan Error dalam bahasa Inggris ke direktori lokasi pesan error berbahasa Indonesia.
# cp /usr/share/squid/errors/English /usr/share/squid/errors/Indonesian
trus terjemahkan file-filenya…
gimana caranya mas tolong dijelasin lebih detail lagi.
December 2nd, 2007 at 11:50 am
udah bisa mas, sudah bisa dirubah ke bahasa Indonesia.
makasih tutorialnya.
sekalian mau tanya .
1. saya mau agar squid bisa transparent proxy. agar saya tidak
perlu seting dibrowser client satu per satu.
saya memakai squid 2.5 stable dan linux ubuntu.
2. saya sudah coba ketikkan perintah seperti ini :
iptables -t nat -A PREROUTING -i eth1 -p tcp -s
192.168.1.0/255.255.255.0 –dport 80 -j DNAT –to
192.168.1.254:3128
terus saya simpan iptables-save > /etc/sysconfig/iptables
tapi malahan client tidak bisa connect ke internet.
Kira-kira salahnya dimana ya mas? mohon bantuannya.
December 6th, 2007 at 1:33 pm
mas, aku dah coba squidnya, berhasil n jalan .. senengnya… tetep semangat mas.. buat yg masih mentok.. itulah serunya linux … nantikan nikmatnyakan terasa saat berhasil…
mas, aku coba juga pk transparent proxy n jalan tuh mas, diclient gak pake seting2 lg.
#iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 80 -j REDIRECT –to-port 3128
#service iptables save
#service squid restart
makasih 1x lagi mas,… ditunggu ilmu2 barunya..
salam n tetap semangat slalu ingat kalau dah berhasil nikmat…
December 12th, 2007 at 12:04 pm
Mas Eko, makasih infonya bagus banget oh ya kalau tujuannya
proxy tersebut hanya bisa utk mengakses alamat tertentu saja dan lainnya di blok, caranya bagaimana ya
yg jelas khan ngisi di acl dan http_access, tapi masih belum dong..
sangat berterima-kasih atas bantuan dan solusinya
regard’s
srilinux
December 13th, 2007 at 7:40 am
Hello Mas Eko ….
Mas, aku sudah coba setting proxy squid punya mas Eko, tapi masih ga bisa jalan, dan di client ada pesan :
ERROR
The requested URL could not be retrieved.
………..
Kenapa ya…., Mas tolong solusinya ? Kalo bisa yang transparent juga. he..he..
Thnx
January 4th, 2008 at 8:55 am
# Daftar IP address
# ————————————-
acl lab1 src 192.168.254.1-192.168.254.40/255.255.255.255
acl staf-it src 192.168.254.41-192.168.254.42/255.255.255.255
acl lab2 src 192.168.254.43-192.168.254.44/255.255.255.255
acl ruang1 src 192.168.1.1-192.168.1.8/255.255.255.255
acl ruang2 src 192.168.1.11-192.168.1.17/255.255.255.255
mas salam kenal saya masih awam sekali di dunia linux ini, saya ingin membangun proxy cuma di atas mas menulis ip2 itu
nah saya kan di warnet ip-nya 192.168.0.1 - 192.168.0.255 / 255.255.255.255 nah memasukan ip nya gimana mas?…kebetulan saya sudah menggunakan mikrotik sehingga rencana saya mau direct ke mikrotik tsb
Thx
January 19th, 2008 at 9:25 am
salam kenal pak…. sy new be dengan linux. mohon penjelasan mengenai squid+squidguard trus cara installnya.. karena yang bpk jelasin diatas masih bikin bingung sy. karena sy masih baru
makasih..
January 30th, 2008 at 8:12 am
lam kenal bos Eko. Saya saya sudah coba konfigurasi anda dan bisa jalan dengan baik.
tapi ini hanya experimen utk satu pc yg terinstall squid nya
pada konfigurasi squid saya masih belum mengerti ip incomingnya dan outgoingnya
February 1st, 2008 at 11:10 am
Pak eko mau nanya tutorial di atas memblok situs menggunakan squidguard berdasarkan content atau berdasarkan IP, atau nama situs?makasih
March 24th, 2008 at 11:51 am
[...] by admin on March 24, 2008 Saya baru teringat tulisan pertama saya tentang proxy server Linux menggunakan Squid. Kali ini saya ingin melanjutkannya dengan menuliskan pengalaman saya membuat proxy server yang [...]
March 27th, 2008 at 8:03 am
mas, salam kenal ya. mas saya begitu bingung banget dengan linux, apalagi tugas baru saya diwajibkan menggunakan linux, mas bisa bantu saya mulai dari mana saya harus belajar, dan langkah2 pa yang harus saya lakukan. saya sudah cari beberapa sumber tapi malah bikin saya bingung, terima kasih sebelumnya mas, dan permintaan maaf sebesar2nya
March 28th, 2008 at 4:54 pm
mas, bisa nggak memberlakukan blacklist hanya utk ip tertentu saja.
misalkan black list hanya berlaku untuk ruang1
March 31st, 2008 at 1:56 pm
mas salam kenal, mas saya belom paham dan kurang mengerti untuk membatasi client untuk browsing dikarena kan server ditempat saya linux, apa yang saya harus lakukan untuk mem block internasionalnya saja,terima kasih sebelumnya dan minta maaf ..
April 20th, 2008 at 1:11 pm
Salam kenal mas..
saya ada permasalahan nh mas bagaimana caranya user tidak bisa download dan langsung di redirect ke alamat tertentu, jadi ini berlaku jika user membuka URL dengan akhiran zip/rar/mov/flv/exe/..dll Trims mas eko atas informasinya ya..
April 22nd, 2008 at 3:25 am
kok ada persan error ke ginian bro,…
2008/04/22 10:23:04| ACL name ‘noblacklist’ not defined!
FATAL: Bungled squid.conf line 600: http_access allow noblacklist
Squid Cache (Version 2.6.STABLE16): Terminated abnormally.
April 22nd, 2008 at 3:03 pm
beberapa hari q nyobak kok klo di forward kan hilang sendiri yah
kenapa
/usr/local/squid/sbin/squid -sYD
habis di pasang hilang lagi
sementara lom nyoba aplikasinya krn gak lama di ps ax hilang
April 22nd, 2008 at 9:45 pm
sudah saya isi mas..
yang saya isi
http://www.detik.com
http://www.kompas.com
May 7th, 2008 at 5:32 pm
Mas kalo fedora core 7 konfigurasinya apa sama ?
masalahnya saya punya yang core 7
May 13th, 2008 at 7:47 am
Salam kenal mas…
Aku mau tanya mas, di squid ku udah dibatasin kl download dari rapid, 4share dll, tapi download melalui http://www.ziddu.com tidak bisa di batasi aka jebol. Bagaimana cara supaya kl ada user download melalui http://www.ziddu.com itu bisa dibatasi mas?
thx
May 13th, 2008 at 9:03 am
Saya masih mencari-cari cara agar download dr web tsb di batasi sesuai batasan download di squid saya mas.
Kalo tetap ga ada…
Rencana nya mau saya blok aja situs/ip nya mas. Cuma masalah nya saya udah coba blok beberapa situs pake regex di squid saya tapi tetap ga berfungsi.
Bisa bantu saya untuk penempatan acl blok itu di squid.conf saya mas?
June 1st, 2008 at 6:18 pm
salam open sources ..mas eko
saya ada problem dikit neh…
diwarnet saya pake server ubuntu 8.04, squid udah berjalan dengan baik, untuk membatasi download udah pake delay pool n berhasil..
ada masalah pada saat client melalukan upload, di ping langsung mencapai 6000-8000ms padahal cuma upload sebesar 1MB, saya uda pake manajemen banwith dengan HTB juga masih tembus pada saat upload,,mohon saran….tanks
June 3rd, 2008 at 2:49 pm
mas,
saya mau tau tentang pesan error dalam bahasa indonesia lebih detail lagi donk,,karena sampai saat ini saya masih gagal dalam penulisan error dalam bahsa indonesisnya,,tolong dibantu ya mas,,atau bisa via email ke kebonsereh3@yahoo.co.id
July 15th, 2008 at 3:04 pm
pak,
mau tanya…aq kan buat proxy server pake squid-2.6.STABLE14 di ubuntu7.10
squid udah berhasil jala dan memberikan pesan2 yang menunjukkan klo squid tersebut sudah bisa digunakan.
tetapi pas test browsing di client malah belum bisa akses internet
kira2 itu kenapa yah?thx b4…
July 16th, 2008 at 8:15 am
mas seeeeeeeeeeeeeep bener artikelnya.
mas eko bisa bikin artikel webmail versi mas ga.
pengen belajar,,,,,,,, tentang server linux
aq masih newbie…
mohon bantuannya ya….
makasih bgt bwat artikelnya mas
July 28th, 2008 at 2:31 pm
Salam kenal mas. Bagus bgt tuch config proxy server panjenengan. Blh dong belajar dr panjenengan.
August 15th, 2008 at 10:05 am
mas gimana caranya membuat router di linux RHEL 4???