Mengonfigurasi Squid Proxy Server dengan Akses Terbatas dan Menyiapkan Klien untuk Menggunakan Proxy - Bagian 5


Insinyur Bersertifikat Linux Foundation adalah profesional terampil yang memiliki keahlian untuk menginstal, mengelola, dan memecahkan masalah layanan jaringan di sistem Linux, dan bertanggung jawab atas desain, implementasi, dan pemeliharaan berkelanjutan dari sistem- arsitektur yang luas.

Memperkenalkan Program Sertifikasi Linux Foundation.

Di Bagian 1 dari seri ini, kami menunjukkan cara menginstal Squid, server cache proxy untuk klien web. Silakan merujuk ke posting itu (tautan diberikan di bawah) sebelum melanjutkan jika Anda belum menginstal Squid pada sistem Anda.

  1. Bagian 1 – Instal Layanan Jaringan dan Konfigurasi Startup Otomatis saat Boot

Pada artikel ini, kami akan menunjukkan cara mengkonfigurasi server proxy Squid untuk memberikan atau membatasi akses Internet, dan cara mengkonfigurasi klien http, atau browser web, untuk menggunakan server proxy tersebut.

Pengaturan Lingkungan Pengujian Saya

Server Cumi
Operating System :	Debian Wheezy 7.5
IP Address 	 :	192.168.0.15
Hostname	 :	dev2.gabrielcanepa.com.ar
Mesin Klien 1
Operating System :	Ubuntu 12.04
IP Address 	 :	192.168.0.104 
Hostname	 :	ubuntuOS.gabrielcanepa.com.ar
Mesin Klien 2
Operating System :	CentOS-7.0-1406
IP Address 	 :	192.168.0.17 
Hostname	 :	dev1.gabrielcanepa.com.ar

Mari kita ingat bahwa, secara sederhana, server proxy web adalah perantara antara satu (atau lebih) komputer klien dan sumber daya jaringan tertentu, yang paling umum adalah akses ke Internet. Dengan kata lain, server proxy terhubung di satu sisi langsung ke Internet (atau ke router yang terhubung ke Internet) dan di sisi lain ke jaringan komputer klien yang akan mengakses World Wide Web melaluinya.

Anda mungkin bertanya-tanya, mengapa saya ingin menambahkan perangkat lunak lain ke infrastruktur jaringan saya?

Berikut adalah 3 alasan utama:

1. Squid menyimpan file dari permintaan sebelumnya untuk mempercepat transfer di masa mendatang. Misalnya, client1 mengunduh CentOS-7.0-1406-x86_64-DVD.iso dari Internet. Ketika client2 meminta akses ke file yang sama, Squid dapat mentransfer file dari cache-nya alih-alih mendownloadnya lagi dari Internet. Seperti yang bisa Anda tebak, Anda dapat menggunakan fitur ini untuk mempercepat transfer data di jaringan komputer yang memerlukan pembaruan rutin.

2. ACL (Daftar Kontrol Akses) memungkinkan kami membatasi akses ke situs web, dan/atau memantau akses per pengguna. Anda dapat membatasi akses berdasarkan hari dalam seminggu, waktu, atau domain, misalnya.

3. Melewati filter web dimungkinkan melalui penggunaan proxy web tempat permintaan dibuat dan mengembalikan konten yang diminta ke klien, alih-alih meminta klien memintanya langsung ke Internet.

Misalnya, Anda masuk ke klien1 dan ingin mengakses www.facebook.com melalui router perusahaan Anda. Karena situs tersebut mungkin diblokir oleh kebijakan perusahaan Anda, Anda dapat menyambung ke server proxy web dan memintanya meminta akses ke www.facebook.com. Konten jarak jauh kemudian dikembalikan kepada Anda melalui server proxy web lagi, melewati kebijakan pemblokiran router perusahaan Anda.

Mengonfigurasi Squid – Dasar-dasarnya

Skema kontrol akses server proxy web Squid terdiri dari dua komponen berbeda:

  1. Elemen ACL adalah baris arahan yang dimulai dengan kata “acl” dan mewakili jenis pengujian yang dilakukan terhadap transaksi permintaan apa pun.
  2. aturan daftar akses terdiri dari tindakan izinkan atau tolak diikuti oleh sejumlah elemen ACL, dan digunakan untuk menunjukkan tindakan atau batasan apa yang telah untuk dilaksanakan atas permintaan tertentu. Mereka diperiksa secara berurutan, dan pencarian daftar dihentikan segera setelah salah satu aturan cocok. Jika suatu aturan memiliki beberapa elemen ACL, aturan tersebut diimplementasikan sebagai operasi boolean AND (semua elemen ACL dari aturan tersebut harus cocok agar aturan tersebut cocok).

File konfigurasi utama Squid adalah /etc/squid/squid.conf, yang panjangnya ~5000 baris karena berisi arahan konfigurasi dan dokumentasi. Oleh karena itu, kita akan membuat file squid.conf baru dengan hanya baris-baris yang menyertakan arahan konfigurasi untuk kenyamanan kita, tanpa meninggalkan baris-baris kosong atau yang diberi komentar. Untuk melakukannya, kita akan menggunakan perintah berikut.

mv /etc/squid/squid.conf /etc/squid/squid.conf.bkp

Kemudian,

grep -Eiv '(^#|^$)' /etc/squid/squid.conf.bkp

OR

grep -ve ^# -ve ^$ /etc/squid/squid.conf.bkp > /etc/squid/squid.conf

Sekarang, buka file squid.conf yang baru dibuat, dan cari (atau tambahkan) elemen ACL berikut dan daftar akses.

acl localhost src 127.0.0.1/32
acl localnet src 192.168.0.0/24

Dua baris di atas mewakili contoh dasar penggunaan elemen ACL.

  1. Kata pertama, acl, menunjukkan bahwa ini adalah baris arahan elemen ACL.
  2. Kata kedua, localhost atau localnet, menentukan nama direktif.
  3. Kata ketiga, src dalam hal ini, adalah tipe elemen ACL yang digunakan untuk masing-masing mewakili alamat IP klien atau rentang alamat. Anda dapat menentukan satu host berdasarkan IP (atau nama host, jika Anda menerapkan semacam resolusi DNS) atau berdasarkan alamat jaringan.
  4. Parameter keempat adalah argumen pemfilteran yang “diumpankan ” ke direktif.

Dua baris di bawah ini adalah aturan daftar akses dan mewakili implementasi eksplisit dari arahan ACL yang disebutkan sebelumnya. Singkatnya, hal ini menunjukkan bahwa akses http harus diberikan jika permintaan berasal dari jaringan lokal (localnet), atau dari localhost. Secara khusus, apa alamat jaringan lokal atau host lokal yang diizinkan? Jawabannya adalah: yang ditentukan dalam arahan localhost dan localnet.

http_access allow localnet
http_access allow localhost

Pada titik ini Anda dapat memulai ulang Squid untuk menerapkan perubahan apa pun yang tertunda.

service squid restart 		[Upstart / sysvinit-based distributions]
systemctl restart squid.service 	[systemd-based distributions]

lalu konfigurasikan browser klien di jaringan lokal (192.168.0.104 dalam kasus kami) untuk mengakses Internet melalui proxy Anda sebagai berikut.

Di Firefox

1. Buka menu Edit dan pilih opsi Preferensi.

2. Klik Lanjutan, lalu pada tab Jaringan, dan terakhir pada Setelan

3. Centang Konfigurasi proxy manual dan masukkan alamat IP server proxy dan port tempat server proxy mendengarkan untuk koneksi.

Catatan Secara default, Squid mendengarkan pada port 3128, namun Anda dapat mengesampingkan perilaku ini dengan mengedit daftar akses aturan yang dimulai dengan http_port (secara default terbaca http_port 3128).

4. Klik OK untuk menerapkan perubahan dan Anda siap melakukannya.

Memverifikasi bahwa Klien Mengakses Internet

Anda sekarang dapat memverifikasi bahwa klien jaringan lokal Anda mengakses Internet melalui proxy Anda sebagai berikut.

1. Di klien Anda, buka terminal dan ketik,

ip address show eth0 | grep -Ei '(inet.*eth0)'

Perintah tersebut akan menampilkan alamat IP klien Anda saat ini (192.168.0.104 pada gambar berikut).

2. Di klien Anda, gunakan browser web untuk membuka situs web tertentu (dalam hal ini linux-console.net).

3. Di server, jalankan.

tail -f /var/log/squid/access.log

dan Anda akan mendapatkan tampilan langsung dari permintaan yang dilayani melalui Squid.

Membatasi Akses Oleh Klien

Sekarang misalkan Anda ingin secara eksplisit menolak akses ke alamat IP klien tertentu, namun tetap mempertahankan akses untuk seluruh jaringan lokal.

1. Tetapkan direktif ACL baru sebagai berikut (Saya menamainya ubuntuOS namun Anda dapat menamainya sesuka Anda).

acl ubuntuOS src 192.168.0.104

2. Tambahkan direktif ACL ke daftar akses jaringan lokal yang sudah ada, namun diawali dengan tanda seru. Artinya, “Izinkan akses Internet ke klien yang cocok dengan arahan ACL localnet kecuali yang cocok dengan arahan ubuntuOS ”.

http_access allow localnet !ubuntuOS

3. Sekarang kita perlu me-restart Squid untuk menerapkan perubahan. Kemudian jika kita mencoba menelusuri situs mana pun, kita akan menemukan bahwa aksesnya ditolak sekarang.

Mengonfigurasi Squid – Penyempurnaan

Membatasi akses berdasarkan domain dan/atau waktu/hari dalam seminggu

Untuk membatasi akses ke Squid berdasarkan domain kita akan menggunakan kata kunci dstdomain dalam direktif ACL, sebagai berikut.

acl forbidden dstdomain "/etc/squid/forbidden_domains"

Dimana forbidden_domains adalah file teks biasa yang berisi domain yang ingin kita tolak aksesnya.

Terakhir, kita harus memberikan akses ke Squid untuk permintaan yang tidak sesuai dengan arahan di atas.

http_access allow localnet !forbidden

Atau mungkin kami hanya ingin mengizinkan akses ke situs tersebut pada waktu tertentu (10:00 hingga 11:00) hanya pada Senin (M), Rabu (W), dan Jumat (P).

acl someDays time MWF 10:00-11:00
http_access allow forbidden someDays
http_access deny forbidden

Jika tidak, akses ke domain tersebut akan diblokir.

Membatasi akses dengan otentikasi pengguna

Squid mendukung beberapa mekanisme otentikasi (Basic, NTLM, Digest, SPNEGO, dan Oauth) dan pembantu (database SQL, LDAP, NIS, NCSA, dan lain-lain). Dalam tutorial ini kita akan menggunakan otentikasi dasar dengan NCSA.

Tambahkan baris berikut ke file /etc/squid/squid.conf Anda.

auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
auth_param basic credentialsttl 30 minutes
auth_param basic casesensitive on
auth_param basic realm Squid proxy-caching web server for Tecmint's LFCE series
acl ncsa proxy_auth REQUIRED
http_access allow ncsa

Catatan: Di CentOS 7, plugin NCSA untuk Squid dapat ditemukan di /usr/lib64/squid/basic_nsca_auth, jadi ubahlah sesuai baris di atas.

Beberapa klarifikasi:

  1. Kita perlu memberitahu Squid program pembantu otentikasi mana yang akan digunakan dengan direktif auth_param dengan menentukan nama programnya (kemungkinan besar, /usr/lib/squid/ncsa_auth atau /usr/lib64/squid/basic_nsca_auth), ditambah opsi baris perintah apa pun (/etc/squid/passwd dalam hal ini) jika diperlukan.
  2. File /etc/squid/passwd dibuat melalui htpasswd, sebuah alat untuk mengelola otentikasi dasar melalui file. Ini akan memungkinkan kita untuk menambahkan daftar nama pengguna (dan kata sandi terkait) yang diizinkan untuk menggunakan Squid.
  3. kredensialsttl 30 menit akan mengharuskan Anda memasukkan nama pengguna dan kata sandi setiap 30 menit (Anda juga dapat menentukan interval waktu ini dengan jam).
  4. peka huruf besar-kecil aktif menunjukkan bahwa nama pengguna dan sandi peka huruf besar-kecil.
  5. realm mewakili teks dialog otentikasi yang akan digunakan untuk otentikasi ke Squid.
  6. Terakhir, akses hanya diberikan bila autentikasi proxy (proxy_auth DIPERLUKAN) berhasil.

Jalankan perintah berikut untuk membuat file dan menambahkan kredensial untuk pengguna gacanepa (hilangkan tanda -c jika file sudah ada).

htpasswd -c /etc/squid/passwd gacanepa

Buka browser web di mesin klien dan coba jelajahi situs mana pun.

Jika otentikasi berhasil, akses diberikan ke sumber daya yang diminta. Jika tidak, akses akan ditolak.

Menggunakan Cache untuk Mempercepat Transfer Data

Salah satu fitur yang membedakan Squid adalah kemungkinan menyimpan sumber daya yang diminta dari web ke disk untuk mempercepat permintaan objek tersebut di masa depan baik oleh klien yang sama atau yang lain.

Tambahkan arahan berikut di file squid.conf Anda.

cache_dir ufs /var/cache/squid 1000 16 256
maximum_object_size 100 MB
refresh_pattern .*\.(mp4|iso) 2880

Sedikit klarifikasi dari arahan di atas.

  1. ufs adalah format penyimpanan Squid.
  2. /var/cache/squid adalah direktori tingkat atas tempat file cache akan disimpan. Direktori ini harus ada dan dapat ditulisi oleh Squid (Squid TIDAK akan membuatkan direktori ini untuk Anda).
  3. 1000 adalah jumlah (dalam MB) yang akan digunakan dalam direktori ini.
  4. 16 adalah jumlah subdirektori tingkat 1, sedangkan 256 adalah jumlah subdirektori tingkat 2 dalam /var/spool/squid.
  5. Direktif maximum_object_size menentukan ukuran maksimum objek yang diperbolehkan dalam cache.
  6. refresh_pattern memberi tahu Squid cara menangani jenis file tertentu (dalam hal ini .mp4 dan .iso) dan berapa lama ia harus menyimpan file yang diminta objek dalam cache (2880 menit=2 hari).

2880 pertama dan kedua adalah batas bawah dan batas atas, masing-masing, mengenai berapa lama objek tanpa waktu kedaluwarsa yang jelas akan dianggap baru, dan dengan demikian akan dilayani oleh cache, sedangkan 0% adalah persentase usia objek (waktu sejak modifikasi terakhir) sehingga setiap objek tanpa waktu kedaluwarsa yang jelas akan dianggap baru.

Studi kasus: mengunduh file .mp4 dari 2 klien berbeda dan menguji cache

Klien pertama (IP 192.168.0.104) mengunduh file 71 MB .mp4 dalam 2 menit 52 detik.

Klien kedua (IP 192.168.0.17) mengunduh file yang sama dalam 1,4 detik!

Hal ini karena file disajikan dari Squid cache (ditunjukkan dengan TCP_HIT/200) pada kasus kedua, dibandingkan dengan contoh pertama, ketika file diunduh langsung dari Internet (diwakili oleh TCP_MISS/200).

Kata kunci HIT dan MISS, bersama dengan kode respons 200 http, menunjukkan bahwa file berhasil disajikan kedua kali, namun cache-nya HIT dan Terlewatkan masing-masing. Ketika permintaan tidak dapat dilayani oleh cache karena alasan tertentu, maka Squid mencoba melayaninya dari Internet.

Kesimpulan

Pada artikel ini kita telah membahas cara menyiapkan proxy cache web Squid. Anda dapat menggunakan server proxy untuk memfilter konten menggunakan kriteria yang dipilih, dan juga untuk mengurangi latensi (karena permintaan masuk yang identik dilayani dari cache, yang lebih dekat ke klien daripada server web yang sebenarnya menyajikan konten, sehingga menghasilkan waktu yang lebih cepat. transfer data) dan juga lalu lintas jaringan (mengurangi jumlah bandwidth yang digunakan, sehingga menghemat uang jika Anda membayar untuk lalu lintas).

Anda mungkin ingin merujuk ke situs web Squid untuk dokumentasi lebih lanjut (pastikan juga memeriksa wiki), namun jangan ragu untuk menghubungi kami jika Anda memiliki pertanyaan atau komentar. Kami akan sangat senang mendengar pendapat Anda!