Home > World Of ICT > How to configure Squid With Radius Authentication

How to configure Squid With Radius Authentication

December 23rd, 2011 Leave a comment Go to comments

Squid adalah sebuah daemon yang digunakan sebagai proxy server dan web cache. Squid memiliki banyak jenis penggunaan, mulai dari mempercepat server web dengan melakukan caching permintaan yang berulang-ulang, caching DNS, caching situs web, dan caching pencarian komputer di dalam jaringan untuk sekelompok komputer yang menggunakan sumber daya jaringan yang sama, hingga pada membantu keamanan dengan cara melakukan penyaringan (filter) lalu lintas. Meskipun seringnya digunakan untuk protokol HTTP dan FTP, Squid juga menawarkan dukungan terbatas untuk beberapa protokol lainnya termasuk Transport Layer Security (TLS), Secure Socket Layer (SSL), Internet Gopher, dan HTTPS. Versi Squid 3.1 mencakup dukungan protokol IPv6 dan Internet Content Adaptation Protocol (ICAP).

Squid pada awalnya dikembangkan oleh Duane Wessels sebagai “Harvest object cache”, yang merupakan bagian dari proyek Harvest yang dikembangkan di University of Colorado at Boulder. Pekerjaan selanjutnya dilakukan hingga selesai di University of California, San Diego dan didanai melalui National Science Foundation. Squid kini hampir secara eksklusif dikembangkan dengan cara usaha sukarela. Squid umumnya didesain untuk berjalan di atas sistem operasi mirip UNIX, meski Squid juga bisa berjalan di atas sistem operasi Windows. Karena dirilis di bawah lisensi GNU General Public License, maka Squid merupakan perangkat lunak bebas. (http://id.wikipedia.org/wiki/Squid)

Sistem Autentikasi di Squid
Squid mendukung 4 skema autentikasi, yaitu:

  •     Basic
  •     Digest
  •     NTLM
  •     Negotiate (mulai dari versi 2.6)

Basic Authentication
Adalah skema autentikasi yang didukung dan berfungsi dengan baik pada semua browser, skema autentikasi basic ini memiliki satu kelemahan utama, yaitu proses pengiriman data user dan password dikirim dalam format plain text. Sehingga  sangat rentan terhadap proses Sniffing/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.

  •     LDAP: Autentikasi ke LDAP.
  •     NCSA: Menggunakan format penulisan username dan password format NCSA.
  •     MSNT: Autentikasi ke domain Windows NT.
  •     PAM: Menggunakan skema autentikasi PAM yang umum digunakan di sistem operasi Unix/Linux.
  •     SMB: Menggunakan server SMB seperti Windows NT atau Samba.
  •     getpwam: Menggunakan cara kuno, berkas password di Unix/Linux.
  •     SASL: Mengggunakan pustaka SASL.
  •     mswin_sspi: Windows native authenticator.
  •     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.

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.

Berlanjut ke pembahasan bagaimana agar software Proxy Squid dapat menggunakan backend authentikasi Radius.

Asumsi bahwa server radius sudah terinstall dan berjalan baik, dengan permision read database dari server squid (OS saya gunakan FreeBSD)

1. Install Squid31

unila-inherent-gtw# cd /usr/ports/www/squid31/
unila-inherent-gtw# make
 │                     Options for squid 3.1.18                       │
 │ ┌────────────────────────────────────────────────────────────────┐ │
 │ │[X] SQUID_KERB_AUTH      Install Kerberos authentication helpers│ │
 │ │[X] SQUID_LDAP_AUTH      Install LDAP authentication helpers    │ │
 │ │[X] SQUID_NIS_AUTH       Install NIS/YP authentication helpers  │ │
 │ │[ ] SQUID_SASL_AUTH      Install SASL authentication helpers    │ │
 │ │[X] SQUID_IPV6           Enable IPv6 support                    │ │
 │ │[X] SQUID_DELAY_POOLS    Enable delay pools                     │ │
 │ │[X] SQUID_SNMP           Enable SNMP support                    │ │
 │ │[ ] SQUID_SSL            Enable SSL support for reverse proxies │ │
 │ │[ ] SQUID_SSL_CRTD       Enable SSL certificate daemon          │ │
 │ │[ ] SQUID_PINGER         Install the icmp helper                │ │
 │ │[ ] SQUID_DNS_HELPER     Use the old 'dnsserver' helper         │ │
 │ │[X] SQUID_HTCP           Enable HTCP support                    │ │
 │ │[ ] SQUID_VIA_DB         Enable forward/via database            │ │
 │ │[ ] SQUID_CACHE_DIGESTS  Enable cache digests                   │ │
 │ │[X] SQUID_WCCP           Enable Web Cache Coordination Prot. v1 │ │
 ├─└────v(+)────────────────────────────────────────────────────────┘─┤
 │                       [  OK  ]       Cancel                        │
 unila-inherent-gtw# make install

2. Install squid_radius_auth.

unila-inherent-gtw# cd /usr/ports/www/squid_radius_auth/
unila-inherent-gtw# make
===>  Vulnerability check disabled, database not found
===>  License check disabled, port has not defined LICENSE
===>  Extracting for squid_radius_auth-1.10
=> SHA256 Checksum OK for squid_radius_auth-1.10.tar.gz.
===>  Patching for squid_radius_auth-1.10
===>  Applying FreeBSD patches for squid_radius_auth-1.10
===>  Configuring for squid_radius_auth-1.10
===>  Building for squid_radius_auth-1.10
gcc -O2 -Wall -g -c squid_rad_auth.c
gcc -O2 -Wall -g -c md5.c
gcc -O2 -Wall -g -c util.c
gcc -g -o squid_radius_auth squid_rad_auth.o md5.o util.o
unila-inherent-gtw# make install
===>  Installing for squid_radius_auth-1.10
===>   Generating temporary packing list
===>  Checking if www/squid_radius_auth already installed
===>   squid_radius_auth-1.10 is already installed
      You may wish to ``make deinstall'' and install this port again
      by ``make reinstall'' to upgrade it properly.
      If you really wish to overwrite the old port of www/squid_radius_auth
      without deleting it first, set the variable "FORCE_PKG_REGISTER"
      in your environment or the "make install" command line.
*** Error code 1

Stop in /usr/ports/www/squid_radius_auth.
unila-inherent-gtw#

3. Set squid_radius_auth.conf sesuaikan dengan server radius anda.

unila-inherent-gtw# cat /usr/local/etc/squid/squid_r
squid_radius_auth.conf           squid_radius_auth.conf.default
unila-inherent-gtw# cat /usr/local/etc/squid/squid_radius_auth.conf
# squid_rad_auth configuration file # MvS: 28-10-1998 server 192.168.1.212 secret xxxrahasia
unila-inherent-gtw#

4. Set squid.conf

### AUTH UNTUK RADIUS ####
auth_param basic program /usr/local/libexec/squid/squid_radius_auth -f /usr/local/etc/squid/squid_radius_auth.conf
auth_param basic children 5
auth_param basic realm Welcome to aeoreang dot com,  enter your username email and password...!!
auth_param basic credentialsttl 5 minute
auth_param basic casesensitive off
 ### ACL untuk Radius ###
acl authdenganradius proxy_auth REQUIRED
 ### ALLOW for RADIUS AUTH
http_access allow authdenganradius

5. Beres, Check di log squid apakah squid sudah menerima request dengan autentikasi radius.

unila-inherent-gtw# tail -f /var/log/squid/access.log
1324628880.391    114 192.168.1.204 TCP_MISS/204 322 GET http://www.google.co.id/csi? 132283178 DIRECT/74.125.235.48 image/gif
1324628880.559    304 192.168.1.204 TCP_MISS/304 253 GET http://www.google.co.id/ig/cp/get? 132283178 DIRECT/74.125.235.48 -
1324628884.399    238 192.168.1.204 TCP_MISS/200 818 GET http://www.google.co.id/s? 132283178 DIRECT/74.125.235.48 application/json
1324628884.527    224 192.168.1.204 TCP_MISS/200 801 GET http://www.google.co.id/s? 132283178 DIRECT/74.125.235.48 application/json
1324628884.663    203 192.168.1.204 TCP_MISS/200 799 GET http://www.google.co.id/s? 132283178 DIRECT/74.125.235.48 application/json
1324628884.663     47 192.168.1.204 TCP_MISS/000 0 GET http://www.google.co.id/s? 132283178 DIRECT/74.125.235.48 -
1324628885.135    425 192.168.1.204 TCP_MISS/200 13453 GET http://www.google.co.id/search? 132283178 DIRECT/74.125.235.48 application/json
1324628885.776     83 192.168.1.204 TCP_MISS/204 322 GET http://www.google.co.id/csi? 132283178 DIRECT/74.125.235.48 image/gif
1324628898.182  12492 192.168.1.204 TCP_MISS/200 12037 CONNECT plus.google.com:443 132283178 DIRECT/74.125.235.47 -
1324629961.898      0 192.168.10.213 TCP_DENIED/407 4094 GET http://hb.lifecycle.norton.com/lifecycle/heartbeat? - NONE/- text/html
^C
unila-inherent-gtw#

Well Done,

  1. No comments yet.
  1. No trackbacks yet.
You must be logged in to post a comment.