RSS

catatan proxy di ubuntu

23 Mar

Install Squid from source

Selasa 9 Desember 2008, (detik-detik akhir tahun 2008) … hmmm kali ini aku pingin membahas tentang squid ….

FAQ:

Q: Apa sih squid itu …?

A: Squid adalah sebuah aplikasi server yang berfungsi sebagai Proxy Server

Q: Proxy Server itu apa?

A: Proxy Server adalah sebuah PC yang menyediakan layanan Proxy

Q: Layanan Proxy itu apa aja…?

A: Layanan Proxy itu bisa sebagai Aplication Level Firewall, atau sebagai Cache Content dan dapat disesuaikan dengan kebutuhan

Mungkin untuk lebih jelasnya anda dapat berkunjung disini, sebelum dimulai .. anda harus mengunduh (Download) file installer squid secara gratis disini, kemudian:Sistem yang saya pakai adalah Ubuntu Hardy Heron LTS Server Edition (8.04) kernel  2.6.24-21-server, sebenarnya anda bisa saja menginstallnya lewat perintah apt-get install , tapi fiturnya tidak selengkap jika kita install dari source.

Langkah di bawah ini kita gunakan apabila kita ingin menginstall squid melalui source (compile sendiri):

  1. Setelah di donlot filenya (.tar.gz), kita extract di folder /usr/local/squid-src dengan perintah: tar -xzvf Squid.2.6.STABLE16.tar.gz /usr/local/squid-src
  2. Kemudian masuk ke folder /usr/local/squid-src lalu jalankan perintah ini, keterangan opsi-opsi pada contoh konfigurasi di bawah dapat anda butuhkan dengan melihat isi dari file HOWTO-INSTALL di dalam folder hasil ekstrak tadi:

    ./configure –enable-linux-netfilter –enable-delay-pools –enable-snmp –enable-cache-digests –enable-useragent-log –enable-arp-acl –with-large-files –enable-large-cache-files –enable-err-languages=English –enable-default-err-language=English –prefix=/usr/local/squid –enable-removal-policies=heap,lru –enable-auth=basic,ntlm –enable-basic-auth-helpers=LDAP –enable-external-acl-helpers=ldap_group,ip_user –enable-stacktraces –enable-x-accelerator-vary –enable-follow-x-forwarded-for

  3. Karena contoh konfigurasi source diatas menggunakan opsi otentikasi LDAP maka jangan lupa, agar anda menginstall library otentikasi dengan LDAP pada mesin anda agar si squid dapat berkomunikasi dengan LDAP server, melalui perintah: apt-get install libldap2-dev
  4. Kemudian jalankan perintah make agar hasil konfigurasi source squid diatas siap diinstall, setelah berhasil … tinggal jalankan perintah make install sehingga squid akan diinstall pada folder /usr/local squid/ sesuai contoh prefix konfigurasi source di atas ” –prefix=/usr/local/squid ” ,
  5. File konfigurasi squid ada di folder /usr/local/squid/etc/ , file eksekusi squid ada di folder /usr/local/squid/sbin/ , log squid secara default akan terinstall di /usr/local/squid/var/logs/, dan pesan error squid berada pada folder /usr/local/squid/share/errors/English , Tetapi lokasi-lokasi file-file log dan error bahkan swap dapat dialokasikan dengan mengkonfigurasi squid.conf,
  6. Untuk menjalankan squid tersebut lakukan dengan perintah /usr/local/squid/sbin/squid -k start, untuk merestart squid setelah file squid di konfigurasi ulang, jalankan perintah /usr/local/squid/sbin/squid -k reconfigure, untuk mematikan service squid jalankan perintah/usr/local/squid/sbin/squid -k shutdown, squid dapat dijalankan setelah squid dikonfigurasi minimal yang akan dibahas pada posting selanjutnya.

Selamat mencoba menginstall squid ….

Install LDAP di Ubuntu Server 8.04 LTS

Apa itu LDAP, LDAP adalah aplikasi protokol yang menyediakan layanan berupa directory service yang berjalan diatas TCP/IP, mungkin mirip dengan aplikasi Active Directory milik Microsoft Windows, cuman yang ini versi Open Sourcenya, LDAP sendiri bisa di integrasikan dengan beberapa aplikasi OpenSource (seperti Squid, Samba, FreeRadius dan lain-lain) untuk membuat sebuah sistem yang sesuai dengan kebutuhan. Untuk keterangan yang lebih jelasnya anda bisa melihat disini atau disini. Ldap server yang akan kita install adalah OpenLDAP.

Mari kita mulai menginstallnya:

Pertama jalankan perintah:

user@ubuntu:~$ sudo apt-get install slapd ldap-utils phpldapadmin

slapd: merupakan aplikasi stand alone ldap yang bersifat daemon yang berjalan di ubuntu.

ldap-utils: merupakan aplikasi tambahan yang digunakan kita untuk mengakses ldap server via console atau terminal

phpldapadmin: merupakan aplikasi berbasis web mirip seperti phpmyadmin, yang fungsinya sama seperti ldap-utils

setelah install selesai kita akan disuruh membuat password admin untuk dapat masuk dan memanajemen ke ldap server. Sebagai tambahan pada ldap server yang kita install ini otomatis akan membuat pohon directory sesuai dengan di /etc/hosts. dengan user admin dan password yang barusan kita masukkan.

Untuk menjalan service daemonnya menggunakan perintah:

user@ubuntu:~$ sudo /etc/init.d/slapd {start|stop|restart|force-reload}

Setelah ldap daemon berjalan maka port 389 pada server akan terbuka yang menandakan bahwa service ldap telah berjalan pada server

Untuk mengaksesnya bisa digunakan web browser pada alamat http://X.X.X.X/phpldapadmin/ kalo berhasil akan tertampil seperti gambar dibawah:

Selamat mencoba dan semoga membantu…

Squid dengan LDAP otentikasi

Merujuk pada tulisan sebelumnya(bagaimana menginstall squid), kali ini kita akan mengkonfigurasi squid sebagai proxy server yang dipadukan dengan LDAP sebagai otentikasinya.
Disini kita menggunakan example.com sebagai domain LDAPnya, dengan security object sebagai usernya. posisi security object yang digunakan dalam tree domain LDAP adalah subdomain user pada example.com (user.example.com).
Lalu bagaimana kita menginstall server LDAP kalo belum ada? Mungkin pembaca bisa merujuk ke tulisan yang ini terlebih dahulu :P
Posisi server LDAP berada pada alamat 192.168.0.254, maka kita hanya perlu menambahkan script dibawah pada squid.conf yang terletak pada /usr/local/squid/etc/ atau di folder anda menginstall squid:

###Autentikasi via LDAP#####
auth_param basic program /usr/local/squid/libexec/squid_ldap_auth -h 192.168.0.254 -b “ou=user,dc=example,dc=com” -f “(&(objectClass=simpleSecurityObject)(uid=%s))”
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive on
###########################

script diatas digunakan untuk mengarahkan squid agar setiap user yang menggunakan squid harus diotentikasi terlebih dahulu di server LDAP.
Kemudian saat user tidak menggunakan squid dalam jangka waktu tertentu, sehingga mengharuskan user harus kembali di otentikasi untuk menggunakan squid.
Untuk memberikan fasilitas itu, tambahkan script konfigurasi dibawah:

authenticate_ip_ttl 20 minutes
#20 menit adalah waktu idle user, apabila user tidak melakukan
#komunikasi dengan squid selama 20 menit,
#maka user harus harus melakukan otentikasi kembali agar bisa
#kembali menggunakan squid sebagai proxy server untuk
#surfing di internet

Kemudian kita harus menentukan kembali user-user yang termasuk dalam golongan harus diotentikasi sebelum menggunakan squid pada akses list di squid.conf, tambahkan script di bawah (dapat dikonfigurasi ulang sesuai kondisi):

acl pengguna src 192.168.0.0-192.168.0.40/255.255.255.255
Kita mendefinisikan alamat IP 192.168.0.1-192.168.0.40 ke dalam
#daftar dengan nama “pengguna”
acl ldap-auth proxy_auth REQUIRED
#pendefinisian ACL autentikasi dengan nama “ldap-auth”
acl max max_user_ip -s 1
#pendefinisian ACL dengan nama “max” yang digunakan untuk
#membatasi berapa banyak user yang bisa menggunakan nama user
#yang sama dalam sekali otentikasi, pada kasus ini saya hanya
#membatasi hanya 1 user 1 login.

Setelah mendefinisikan akses listnya kita mengkonfigurasi akses yang diperbolehkan dan tidak di bagian http_access, seperti yang ditunjukkan di konfigurasi di bawah:

#membatasi 1 user 1 login
http_access deny max
#Memaksa alamat IP yang terdaftar di akses list “pengguna” untuk
#diotentikasi
http_access allow pengguna ldap-auth
http_access deny all

Setelah selesai simpan konfigurasi tersebut dan restart ulang service si squid. Sebagai catatan, saat fitur otentikasi squid atau proxy diaktifkan, maka squid tidak bisa dikonfigurasi menjadi transparent, sehingga sang klien harus dikonfigurasi manual atau diarahkan manual agar menggunakan proxy otentikasi tersebut. Tetapi bagaimana jika si klien tidak mau menggunakan proxy otentikasi yang telah kita sediakan? Mungkin pembaca bisa merujuk ke tulisan saya sebelumnya untuk memaksa si klien menggunakan proxy otentikasi dan bukan proxy yang lain, :P
Semoga membantu dan terima kasih sudah berkunjung.

 

 

 

 

Post Pic
Pada 24 Oct 2009, di Seri Tutorial, oleh Cecep Mahbub

Tulisan ini akan menjelaskan bagaimana menginstal squid proxy server di Ubuntu. Setelah instalasi tentu saja Anda harus mengkonfigurasi squid, tapi dalam tulisan ini proses konfigurasi akan diminimalkan sekali. Yang penting squidnya jalan, dan Anda bisa mengakses internet menggunakan proxy squid yang baru di instal.

 

Melalui tulisan ini saya mencoba membuat tutorial tentang squid proxy server. Karena topik bahasan yang sangat luas, saya akan membaginya dalam beberapa tulisan. Dalam coret-coretan ide sih, sudah ada kurang lebih sembilan draft untuk seri tulisan ini, mudah-mudahan semuanya bisa diselesaikan.

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 squid

Untuk menjalankan squid, bisa menggunakan perintah,

sudo /etc/init.d/squid start

Untuk 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.asli

Sebelum kita lanjutkan, saya ingin menunjukkan sesuatu. Coba jalankan perintah di bawah ini,

sudo cat /etc/squid/squid.conf |wc -l

4529

Hasilnya 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

Jika Anda menginginkan hanya IP tertentu saja, bukan satu network, Anda bisa juga menuliskannya seperti di bawah ini.

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

Sekarang IP 192.168.5.5 yang ada di kantor cabang, bisa juga menggunakan proxy yang baru Anda buat.

cache_dir

Yang lain yang bisa dikonfigurasi saat ini adalah cache_dir. Defaultnya,

cache_dir ufs /var/spool/squid 100 16 256

Saya jelaskan singkatnya, artinya lokasi direktori cache (tempat menyimpan objek yang dicache) ada di direktori /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 restart

Tapi 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.

Untuk hari pertama, cukup sampai di sini, sampai jumpa di seri tulisan squid selanjutnya.

 

Post Pic
Pada 31 Oct 2009, di Seri Tutorial, oleh Cecep Mahbub

Ini adalah lanjutan dari seri belajar membuat web proxy server menggunakan Squid. Kali ini kita akan berkenalan dengan tipe-tipe acl yang bisa digunakan saat mengkonfigurasi squid.

Anda juga bisa langsung berkenalan dengan cara penulisan dan penggunaan acl di squid. Disini akan dituliskan beberapa contoh, bagaimana menggunakan acl untuk keperluan membatasi akses internet.

 

Sebelum melanjutkan membaca tulisan ini, bagi Anda yang belum sempat membaca tulisan sebelumnya, silakan baca terlebih dahulu tulisan pertama dari seri tutorial ini. Disana Anda akan belajar cara menginstal dan membuat konfigurasi sederhana 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.

Bagaimana? cukup banyak kan aclnya. Pusing? ya wajar lah hehe

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

Sekalian untuk format penulisan acl di atas, Anda bisa juga menuliskannya seperti di bawah ini.

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

Format rentang, karena kebetulan IP si komputer front office berurutan.

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

Silakan dilihat lagi di blok ACL yang sudah saya terjemahkan di atas.

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 ada di bawah ini

# 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

Jadi perlu Anda ingat, posisi menentukan prestasi. Atau posisi rules yang Anda buat di squid.conf sangat menentukan apakah rules tersebut akan digunakan atau tidak.

Contoh 3: Membatasi akses internet di jam kerja

Kali ini kita akan menggunakan tipe acl time. 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

Lihat tanda seru (!) di depan acl. Yang berarti tanda negasi, atau NOT (bukan). Jadi artinya kita hanya membuka akses internet untuk jaringan_kantor dan waktunya bukan di 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.

 

 

Post Pic
Pada 20 Dec 2009, di Seri Tutorial, oleh Cecep Mahbub

Sebelum mengkonfigurasi sistem autentikasi di Squid, kita akan berkenalan dengan skema-skema autentikasi yang didukung oleh Squid. Setiap skema autentikasi ada kelebihan dan kekurangan. Dan untuk mengkonfigurasinya biasanya diperlukan helper, atau program untuk membantu proses autentikasi ke backend. Lebih jelasnya saya coba bahas ditulisan ini.

 

Sistem Autentikasi di Squid

Squid mendukung 4 skema autentikasi, yaitu:

  1. Basic
  2. Digest
  3. NTLM
  4. Negotiate (mulai dari versi 2.6)

Masing-masing skema autentikasi punya kelebihan dan kekurangan masing-masing. Mari kita bahas satu per satu.

Basic Authentication

Ini adalah skema autentikasi yang didukung oleh semua peramban (browser) utama. Dan lebih dari itu, bisa berfungsi dengan baik di semua platform OS. Jadi kalau ingin menggunakan skema autentikasi yang yakin berfungsi dengan baik di semua browser, pakailah skema autentikasi basic.

Sayangnya skema autentikasi basic ini memiliki satu kelemahan utama, yaitu proses pengiriman data user dan password dikirim dalam format plain text. Jadi sangat rentan terhadap proses snip atau penyadapan saat proses autentikasi berlangsung.

Skema ini tidak disarankan ketika layanan yang diberikan akan diakses melalui jaringan internet. Tapi masih bisa ditolerir jika layanan itu dibuat untuk kalangan terbatas, misalnya LAN kantor. Dan karena squid pada umumnya digunakan di jaringan terbatas, skema autentikasi ini masih bisa digunakan.

Helper atau program bantu untuk autentikasi ke backend

Squid menyediakan beberapa program bantu untuk skema autentikasi basic. Anda bisa memilih mana yang cocok dengan keperluan Anda.

  1. LDAP: Autentikasi ke LDAP.
  2. NCSA: Menggunakan format penulisan username dan password format NCSA.
  3. MSNT: Autentikasi ke domain Windows NT.
  4. PAM: Menggunakan skema autentikasi PAM yang umum digunakan di sistem operasi Unix/Linux.
  5. SMB: Menggunakan server SMB seperti Windows NT atau Samba.
  6. getpwam: Menggunakan cara kuno, berkas password di Unix/Linux.
  7. SASL: Mengggunakan pustaka SASL.
  8. mswin_sspi: Windows native authenticator.
  9. YP: Menggunakan database NIS.

Digest Authentication

Skema autentikasi digest diperkenalkan untuk mengatasi kelemahan yang ada di skema autentikasi basic. Skema ini lebih aman, karena pada saat autentikasi, data username dan password tidak dikirim dalam format plain text.

Secara umum, kelebihan skema autentikasi digest dibandingkan skema autentikasi basic, yaitu lebih aman. Tapi sayangnya tidak didukung oleh semua browser. Internet Explorer 5 & 6 adalah salah satu browser yang tidak mendukung skema autentikasi digest.

NTLM Authentication

Ini adalah skema autentikasi yang diperkenalkan oleh Microsoft. Dengan menggunakan skema autentikasi NTLM, semua user yang sudah login ke domain, ketika mengakses squid tidak akan diminta lagi username dan password. Ini yang kita kenal sebagai proses Single Sign On. Jika sudah sukses autentikasi di satu layanan, ketika ingin menggunakan layanan lain tidak perlu memasukkan login dan password lagi, proses autentikasi berlangsung secara transparan.

Sayangnya, seperti yang mungkin Anda sudah bisa tebak, ini hanya berfungsi dengan baik di sistem operasi Windows. Dan tidak semua browser mendukung skema autentikasi NTLM. Internet Explorer dan Firefox adalah salah satu browser yang mendukung skema autentikasi NTLM. Chrome, Safari dan Opera adalah contoh browser yang belum mendukung skema autentikasi NTLM.

Biasanya, untuk browser atau OS yang tidak mendukung skema autentikasi NTLM, ada pilihan fallback ke skema autentikasi basic.

Helper atau program bantu untuk autentikasi ke backend

Paket samba menyertakan winbind ntlm helper untuk membantu squid bisa memberikan layanan skema autentikasi NTLM.

Sedikit catatan di Debian atau Ubuntu, yang Anda gunakan adalah /usr/bin/ntlm_auth, dan BUKAN ke /usr/lib/squid/ntlm_auth.

Negotiate Authentication

Protokol negotiate diperkenalkan lagi-lagi oleh Microsoft, sering dikenal juga sebagai SPNEGO. Skema autentikasi ini memperbarui skema Single Sign On yang sebelumnya menggunakan autentikasi NTLM.

Jadi apakah Negotiate itu? Skema ini bisa dianggap sebagai wrapper (atau alat bantu) untuk menggunakan salah satu dari autentikasi ke Kerberos atau NTLM. Kelebihan skema ini, jauh lebih aman bila dibandingkan dengan skema autentikasi NTLM.

Kelemahannya, lagi-lagi hanya berfungsi dengan baik di lingkungan OS Windows. Selain itu untuk saat ini mengkonfigurasi skema autentikasi negotiate agak ribet, karena helper baru tersedia untuk sistem operasi windows.

Rangkuman

Di tulisan ini memang tidak memberikan contoh siap pakai, tapi diharapkan Anda memahami beberapa aspek dasar tentang skema autentikasi di Squid. Dan untuk memahami lebih lanjut, saya berika beberapa tautan yang mungkin bisa memberikan penjelasan yang lebih detail.

 
Leave a comment

Posted by on March 23, 2011 in Ubuntu

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
%d bloggers like this: