Ubuntu 14.04 + Squid 3.5.5 Untuk Proxy HTTP Dan HTTPS

Ada banyak sekali tutorial dengan berbagai pendekatan berbeda sesuai selera pribadi masing-masing "tukang masak" server proxy squid. Tutorial yang beragam tentu bisa anda dapat cari di google. Sama seperti yang saya racik dengan resep yang saya comot sana-sini. Karena tutorial berikut ini merupakan catatan saya agar tidak lupa, saya tidak berharap anda yang membaca bisa mengerti dengan cepat.

Belajar sendiri, trial dan error alias otodidak tentu lebih memperoleh kepuasan jika berhasil.
Saya juga demikian.

Banyak kombinasi sebetulnya antara OS Server dengan Squid sebagai proxy cache, namun saya lebih suka dengan Ubuntu.

Anda bisa mengunakan tutorial menginstall Ubuntu Server yang menurut anda lebih anda fahami. Videonya juga banyak di Youtube. Kalau saya belajarnya dari : Install Ubuntu Untuk Server Squid.

Sebenarnya pentingkah mencache HTTPS?
Bagi saya : Ya!, sangat penting.
Alasannya : Koneksi ADSL yang masih di bawah 10 Mb dan banyak web saat ini menggunakan port 443 alias SSL untuk transaksi data, termasuk media sosial seperti Facebook dan Twitter. Pada jam-jam sibuk Warnet yang saya kelola akan sangat lemot. Facebook loadingnya lama karena tiap PC mengaksesnya. Padahal jika dipikir-pikir orang yang sama akan mengakses halaman yang sama berulang kali tiap hari dan komputer client meminta data yang sama ke internet tiap hari. Menyia-nyakan bandwidth saja.

Lalu bukankah HTTPS itu diciptakan untuk keamanan?
Pada dasarnya Squid melakukan SSL bump sebagai tindakan pembajakan. Sertifikat asli milik (misalnya) facebook ditimpa dengan milik Squid agar Squid bisa mencache file-file grafis yang menguras bandwith itu ke dalam hardisk server. Terpaksa. Kalau mode HTTP biasa sih normal saja.

Spesifikasi Komputer yang saya gunakan:
Core2Duo 2,0 GHz, RAM 2 GB DDR2, HDD SATA 500 GB
Pembagian Hardisk yang saya gunakan sbb :

Harddisk 500GB (saya pakai kapasitas segini)

 Primary Root (/) 100 GB EXT4  
 Logical Swap 4 GB (2X Jumlah RAM)  
 Logical mount point : /Cache1 50 GB btrfs journaling, mount option noatime+nodiratime  
 Logical mount point : /Cache2 50 GB  btrfs journaling, mount option noatime+nodiratime
 Logical mount point : /Cache3 50 GB  btrfs journaling, mount option noatime+nodiratime
 Logical mount point : /Cache4 50 GB  btrfs journaling, mount option noatime+nodiratime
 Logical mount point : /Cache5 50 GB  btrfs journaling, mount option noatime+nodiratime
Untuk masalah pemasangan Ubuntu di PC Server, diluar pembahasan atau sudah dianggap selesai.

Setelah kita menyelesaikan instalasi Ubuntu, ada beberapa hal yang perlu di seting. Pertama adalah mengeset SSH di Ubuntu agar Putty (Remote Command) bisa login sebagai root (Karena saya capek sudo su mulu).

Kita bekerja selalu di modus Terminal, karena ini server bung! Bukan Desktop dengan GUI.
Langkahnya :

 #nano /etc/ssh/sshd_config [enter]
Carilah baris :

 # Authentication:  
 LoginGraceTime 120  
 PermitRootLogin without-password  
 StrictModes yes  
Ubahlah menjadi :

 # Authentication:  
 LoginGraceTime 120  
 #PermitRootLogin without-password  
 PermitRootLogin yes  
 StrictModes yes  
Simpan dengan tombol ctrl+x lalu y [enter]

 #service ssh restart  [enter]
 #ssh stop/waiting
 #ssh start/running, process 1588
Lalu buat password root yang baru

 #passwd [enter]  
 #masukkanpassword [enter]
 #masukkansekalilagi [enter]  
Selesai.

Kita akan pindah ke PC Windows (Kita tidak lagi main langsung di PC Server)
Download aplikasi Putty dari : Putty download untuk akses remote terminal dan WinSCP di WinSCP download untuk Remote File Managernya. Silahkan rujuk masing-masing program bagaimana cara pakainya.

Saya anggap anda sudah faham menggunakan kedua program tersebut dan sudah berada di terminal Putty dan login sebagai root.
Update dulu Ubuntunya

 #apt-get update [enter]  
Lalu Install Aplikasi pendukung Squidnya

 # apt-get install devscripts build-essential openssl libssl-dev fakeroot libcppunit-dev libsasl2-dev cdbs ccze libfile-readbackwards-perl libcap2 libcap-dev libcap2-dev -y [enter]  

  # apt-get install sysv-rc-conf -y [enter]  
Setelah selesai, kita masuk ke proses download master source Squidnya.

# cd [enter]  
# wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.5.tar.gz [enter]  

 # tar xzvf squid-3.5.5.tar.gz  [enter]

 # cd squid-3.5.5  [enter]
Copas kode di bawah ke terminal tanpa kurang atau lebih

./configure \
--prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--libexecdir=/usr/lib/squid \
--sysconfdir=/etc/squid \
--localstatedir=/var \
--libdir=/usr/lib \
--includedir=/usr/include \
--datadir=/usr/share/squid \
--infodir=/usr/share/info \
--mandir=/usr/share/man \
--disable-dependency-tracking \
--disable-strict-error-checking \
--enable-async-io=32 \
--with-aufs-threads=32 \
--with-pthreads \
--enable-storeio=ufs,aufs,diskd \
--enable-removal-policies=lru,heap \
--with-aio \
--with-dl \
--enable-icmp \
--enable-esi \
--enable-icap-client \
--disable-wccp \
--disable-wccpv2 \
--enable-kill-parent-hack \
--enable-cache-digests \
--disable-select \
--enable-http-violations \
--enable-linux-netfilter \
--enable-follow-x-forwarded-for \
--disable-ident-lookups \
--enable-x-accelerator-vary \
--enable-zph-qos \
--with-default-user=proxy \
--with-logdir=/var/log/squid \
--with-pidfile=/var/run/squid.pid \
--with-swapdir=/var/spool/squid \
--with-large-files \
--with-openssl \
--enable-ltdl-convenience \
--with-filedescriptors=65536 \
--enable-ssl \
--enable-ssl-crtd \
--disable-auth

Lalu tekan Enter.

Kemudian kita mulai compile...

 #make && make install && make install-pinger [enter]  
Proses ini mungkin akan memakan waktu 10 sampai 30 menit, santai saja.
Setelah proses ini selesai, silahkan download file squid.zip lalu ekstrak ke folder komputer anda.
Akan ada 3 file yang diperlukan : squid, squid.conf dan store-id.pl
Jalankan WinSCP dan login sebagai root

Copy file squid ke direktori /etc/init.d/
Copy file squid.conf dan store-id.pl ke /etc/squid/

Kembali ke Terminal Putty dan ketikkan perintah berikut

 #chmod 755 /etc/init.d/squid [enter]  
 #update-rc.d squid defaults [enter]  
 #/etc/init.d/squid stop [enter]  
Pastikan direktori-direktori yang diperlukan sudah ada
Misalnya direktori /var/log/squid.
Jika belum ada, buat dengan perintah : md nama_direktori

Ubah owner direktori /var/log/squid

 # chown -R proxy:proxy /var/log/squid [enter]  
Masuk ke direktori /var/log/squid

 # cd /var/log/squid [enter]  
Ciptakan dua buah file baru untuk log

 # touch access.log [enter]  
 # touch cache.log [enter]  
Kembali ke direktori root

 # cd [enter]  
Ubah owner dua file yang diciptakan tadi

 Ketik # chown -R proxy:proxy /var/log/squid/access.log [enter]  
 Ketik # chown -R proxy:proxy /var/log/squid/cache.log [enter]  
Ubah owner partisi mount point cache yang kita buat saat install server Ubuntu

 # chown -R proxy:proxy /cache1 [enter]
 # chown -R proxy:proxy /cache2 [enter]
 # chown -R proxy:proxy /cache3 [enter]
 # chown -R proxy:proxy /cache4 [enter]
 # chown -R proxy:proxy /cache5 [enter]
Ubah owner file store-id.pl

 # chown -R proxy:proxy /etc/squid/store-id.pl [enter]  
Ubah mode direktori cache

 # chmod 777 /cache1 [enter]
 # chmod 777 /cache2 [enter]
 # chmod 777 /cache3 [enter]
 # chmod 777 /cache4 [enter]
 # chmod 777 /cache5 [enter]
Ubah mode file store-id.pl

 # chmod 777 /etc/squid/store-id.pl [enter]  
Masuk direktori squid

 # cd /etc/squid [enter]  
Buat direktori sertificate

 # mkdir ssl_cert [enter]  

 # cd ssl_cert [enter]  
Di sinilah rahasia mengapa Squid 3.5 bisa mencache file terenkripsi alias mode port https.

 # openssl req -new -newkey rsa:1024 -days 365 -nodes -x509 -keyout myCA.pem -out myCA.pem [enter]  
File hasil generate ini nantinya akan kita import ke dalam browser misalnya Mozilla Firefox atau Chrome. Squid https tidak akan bisa berkomunikasi dengan browser menggunakan port https jika sertifikat keamanan milik squid tidak dikenali.
Cara import sertifikat ke dalam browser boleh ikuti langkah di Youtube ini

 # openssl x509 -in myCA.pem -outform DER -out myCA.der [enter]  

  # cd / [enter]  

  # mkdir /var/squid [enter]  

 # cd /var/squid [enter]  

 # mkdir ssl_db [enter]  

 # cd ssl_db [enter]  

 # chown -R nobody /var/squid/ssl_db/ [enter]  
Mengaitkan library ke sertifikat database

 # /usr/lib/squid/ssl_crtd -c -s /var/squid/ssl_db/certs [enter]  

 # chown -R proxy:proxy /var/squid/ssl_db/ [enter]  
Selanjutnya kita periksa apakah semua proses di atas sudah benar, lalu kita parsing konfigurasi squid

 # squid -k parse [enter]  
Jika semua aman maka kita lanjut membuat direktori squid dalam partisi cache (yang lima buah tadi),
mengikuti pengaturan konfigurasi squid.conf

 # squid -z [enter]  
Kemudian restart service squidnya

 # /etc/init.d/squid restart [enter]  
Terakhir adalah mengatur mangle di IP Table milik Ubuntu, untuk mengarahkan permintaan client ke port yang benar.

Buka WinSCP lalu buka file /etc/rc.local
Copy lalu paste semua script di bawah ini di atas baris "exit.0" dalam file rc.local

 modprobe xt_TPROXY  
 modprobe xt_socket  
 modprobe nf_tproxy_core  
 modprobe xt_mark  
 modprobe nf_nat  
 modprobe nf_conntrack_ipv4  
 modprobe nf_conntrack  
 modprobe nf_defrag_ipv4  
 modprobe ipt_REDIRECT  
 modprobe iptable_nat  
 iptables -t mangle -F  
 iptables -t mangle -X  
 iptables -t mangle -N DIVERT  
 iptables -t mangle -A DIVERT -j MARK --set-mark 1  
 iptables -t mangle -A DIVERT -j ACCEPT  
 iptables -t mangle -A INPUT -j ACCEPT  
 iptables -t mangle -A PREROUTING -p tcp -m socket -j DIVERT  
 iptables -t mangle -A PREROUTING ! -d 192.168.0.50/24 -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 3129  
 iptables -t mangle -A PREROUTING ! -d 192.168.0.50/24 -p tcp --dport 443 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 3127  
 /sbin/ip rule add fwmark 1 lookup 100  
 /sbin/ip route add local 0.0.0.0/0 dev lo table 100  
 echo 0 > /proc/sys/net/ipv4/conf/lo/rp_filter  
 echo 1 > /proc/sys/net/ipv4/ip_forward  

Informasi : alamat IP yang berwarna merah, sesuaikan dengan IP PC Server Ubuntu+Squid anda.

Restart PC Server

 # reboot [enter]  
Lalu coba uji apakah ada muncul kesalahan

 # squid –k reconfigure [enter]  
Error yang mungkin muncul terkait dengan store-id.pl
Coba atasi dengan menghapus atau menimpa store-id.pl yang ada di /etc/squid/ dengan yang baru (hasil download). Lakukan lagi chown seperti proses di atas khusus untuk file store-id.pl saja.
Dan lakukan perintah di bawah kembali

 # squid –k reconfigure [enter]  

Sumber utama tutorial : Cara-instalasi-squid-3x

66 comments:

  1. kalau proxy nya ingin terhubung ke mikrotik untuk di rc.local gimana gan?

    ReplyDelete
    Replies
    1. saya menyeting manual. Karena hanya digunakan 10 PC warnet. Untuk pertanyaan anda, boleh cek di blog lain. Maaf.

      Delete
  2. untuk ubutu 32 bit apa 64 bit

    ReplyDelete
  3. arti dari angka "777" itu apa ya ?

    ReplyDelete
  4. nice share bro...ijin praktekin yaa

    ReplyDelete
  5. apa bisa saya praktikkan di ubuntu server 12 32 bit

    ReplyDelete
    Replies
    1. Bisa saja. Caranya sama. 32 dan 64bit adalah arsitektur sistem operasi. Perbedaannya mungkin bisa ditanya mbak google

      Delete
  6. ini menggunakan 2 nic ato 1 nic mas bro ?

    ReplyDelete
  7. Jangan ikutin Langkah diatas... Kalo ikut ini semua tanpa modifikasi, pasti akan error saat di test... Access Denied saat dicoba. Hanya untuk memunculkan nama dan email arihtakid@gmail.com.

    ReplyDelete
    Replies
    1. acl localnet src 192.168.0.0/24
      cek gan,, rubah itu sesuaikan dengan jaringan,, saya juga awalnya Access Denied,,

      Delete
  8. keluar error kayak gini bro waktu perintah squid –k reconfigure

    FATAL: No valid signing SSL certificate configured for HTTP_port [::]:3127
    Squid Cache (Version 3.5.5): Terminated abnormally.
    CPU Usage: 0.008 seconds = 0.008 user + 0.000 sys
    Maximum Resident Size: 43776 KB
    Page faults with physical i/o: 0

    ReplyDelete
    Replies
    1. sama ki punya q ya gitu mas piye ya ini?? bagi solusi bos.. tinggalin no telp barang kali

      Delete
    2. periksa lagi gan sertifikat sslnya udah bener blom ?

      Delete
  9. saya tidak bisa upload file squidnya ke etc/init.d.. ada solusi

    ReplyDelete
    Replies
    1. masuk root dulu biar bisa upload /etc/squid

      Delete
    2. #penk walker ini cocok gak unutk orang pemula banget bang.?

      Delete
  10. berhasil tidaknya konfigurasi dapat dilihat di mana mas? maklum nwbie msih perlu banyk bimbingan..terimakasih

    ReplyDelete
    Replies
    1. bisa dilihat di lognya gan
      tail -f /var/log/squid/access.log | ccze
      kalau hit berarti udah tercache kalau belum berarti konfigurasi perlu di atur lagi :D

      Delete
  11. masih bingung perkara NAT nya di mikrotik dan manglenya ini hemmm ada yang bisa bantu... tolong please

    ReplyDelete
  12. seting NAT / Mangle nya di mikrotik bagaimana ya, udah semua saya coba tapi masih gagal.
    mohon bantuan rekan2 sekalian, sebelum nya terimakasih..

    ReplyDelete
  13. Set buat transparent di Mikrotik kok gak jalan yah, ada yang bisa kasih pencerahan...

    ReplyDelete
  14. cache youtube nya gagal om, ada artikel yg membahas regex kah om?

    ReplyDelete
  15. ysh admin, saya coba2 perintahnya, tapi yg terakhir keluar spt ini ya? mohon pencerahannya.
    siadmin@Proxy-Baru:~$ squid .k reconfigure
    2016/04/11 16:50:53| ALERT: setgid: (1) Operation not permitted
    siadmin@Proxy-Baru:~$

    ReplyDelete
    Replies
    1. sudo -i

      baru perintah squi -k reconfigure

      Delete
  16. Om kalau ky gini gmna ya,?

    root@srv:~# squid -z
    FATAL: No valid signing SSL certificate configured for HTTP_port [::]:3127
    Squid Cache (Version 3.5.5): Terminated abnormally.
    CPU Usage: 0.004 seconds = 0.004 user + 0.000 sys
    Maximum Resident Size: 44624 KB
    Page faults with physical i/o: 0

    ReplyDelete
    Replies
    1. yg ssl ada yg keliru itu gan
      coba teliti lagi mungkin ada yg ketinggalan

      Delete
  17. bisa tidak konfigurasi diatas dilakukan di ubuntu 14.04 desktop ???

    admin, mohon tinggalin kontak yang bisa saya hubungi. Saya butuh banget buat tugas akhirnya ane bang. Kalo perlu saya bayar deh

    ReplyDelete
  18. gimana bang kalo mau memblokir keyword di google ??
    dimohon sekali bang

    ReplyDelete
    Replies
    1. http://broexperts.com/block-specific-keyword-in-squid-proxy/

      Delete
  19. boleh tunjuk topology sambungan network?

    ReplyDelete
  20. cek log ya kok gak muncul ya mas ? tail -f /var/log/squid/cache.log

    ReplyDelete
  21. bang,,,klw httpnya udh berhasil keblok,cman klw httpsnya belum bisa,solusi dlw para master network....mksh

    ReplyDelete
  22. Bang mau tanya? saya sudah coba langkah2 di atas. Tapi pas menjalankan perintah squid -k reconfigure, hasilnya:

    root@ubuntu-server:~# squid -k reconfigure
    squid: ERROR: Could not send signal 1 to process 9951: (3) No such process

    Mohon pencerahannya.

    ReplyDelete
  23. kayaknya klo di coba di 32bit akan bnyk penyesuaian dan error

    Konsultan ISO dan Sertifikasi
    http:/www.isokonsultindo.com

    ReplyDelete
  24. mas ada nmr hp yang bisa di hubungi jika ada masalah kan bisa call

    ReplyDelete
  25. bisa tidak sertifikat nya di install automatis ke browser pengguna?

    Konsultan ISO dan Sertifikasi
    http://www.isokonsultindo.com

    ReplyDelete
  26. Wow... sangat Super.
    Ijin Chmod ya.. hehehehe..
    Terimakasih sebelumnya.

    ReplyDelete
  27. Bisa buat artikel yang menggabungkan cache youtube + mikrotik di transparent proxy ??

    soalnya butuh nih di warnet, secara bandwidth cuman 2 MB (jaringan masih jelek) tapi user pengen youtube an.

    ReplyDelete
    Replies
    1. sama nih pelanggan warnet gw maunya nonton youtube tapi bandwith cuma 2 mb

      Delete
  28. cek access log na gmn ? ko ga muncul

    ReplyDelete
  29. semua config sukses smua gan..
    tpi waktu proxy di jlankan kok gk bisa akses ke http yya??

    ReplyDelete
  30. gan mw nanya isi dari store-id.pl itu fungsinya buat apa ya?

    ReplyDelete
  31. Mas mau tanya,saya sudah konfigurasi squid,tapi kok point blank malah terputus ya.
    Apa yg seharusnya di konfigurasi lg di squid.conf nya?

    ReplyDelete
  32. I would like to use basic_ldap_auth, So compiled withh --enable-auth option but i could not find anything in /usr/lib/squid . How to do it

    ReplyDelete
  33. Gan,, untuk server dhcp dengan pelanggan yg rata2 menggunakan hp, gimana agar cert mozila dan chrome diambil otomatis?

    ReplyDelete
  34. This comment has been removed by the author.

    ReplyDelete
  35. gan saya sudah hampir 2 minggu utak atik squid dari tutorial agan. namun tdk berhasil.

    saya mau tnya ini tutorial proxy untuk topologi yg gimn gan?
    thx

    ReplyDelete
  36. gan, semua sudah saya ikutin dari awal sampai akhir dan hasilnya tidak ada pesan error tetapi kok access.log nya ndak ada isinya ya!! yang salah dmn ya ???

    ReplyDelete
  37. dari pada bingung buat para pemula mending install webmin aja biar lebih gampang buat ngatur nya gak pakek terminal command gitu sudah tampilan GUI yang brsahabat tinggal klak klik aja :) , saran buat yang baru nyoba sih

    ReplyDelete
  38. kok buat cek access log nya gak bisa ya mas?
    biasanya kan "tail -f /var/log/squid/access.log"
    terimaksih

    ReplyDelete
  39. Pada saat jalankan proses squid -z muncul banyak
    kid1|Making directories in .cache5/3A sudah itu stak disitu ga jalan-jalan lagi,, kenapa ya? tidak ada proses selanjutnya, apa seperti itu? harus ctr+c untuk kembali ke terminal?

    ReplyDelete
  40. Sepertinya proxy sudah jln klo setting manual pake port 3128
    Tp access.log dn cache.log masih 0kb kenapa ya?
    Di squid.conf port 3129 tproxy masih ada tnda #
    Nah klo mau transparent dgn ssl-bump kan musti diaktifkan, kurang lebih jadi
    http_port 3127 tproxy ssl-bump bla bla
    http_port 3128
    http_port 3129 tproxy

    Mohon pencerahannya ada yg perlu diconfig lgi

    ReplyDelete
  41. inikan bukan proxy transparent/intercept jd di beri tanda #,dan kalau memang hanya manual set di browsher gk perlu pakai iptable,nat nya main dirouter.. dan kalau mau transparent di mikrotik hilang semua nat kecuali nat yg mengarah ke internet,,jd versi squid 3.2xxx keatas nat nya itu harus di squid nya bukan di router,selengkap nya baca di squidcache.org,pokoknya puyeng dah,,haha,,,,untuk direktori cache log nya di set lagi secara manual misalnya cache_access_log /var/log/squid/access.log .. yang cache_access_log /dev/null itu di hapus.. selamat puyeng,,wkwkwk

    ReplyDelete
  42. log access nya ko nggak jalan ni gan mohon pencerahannya trims

    ReplyDelete
    Replies
    1. https nya nga muncul ni gan mohon pencerahannya!!!

      Delete
  43. min log access nya gak muncul "tail -f /var/log/squid/access.log |ccze

    ReplyDelete