Instal dan Setup Squid Proxy di Ubuntu 20.04

Dalam tutorial ini, kita akan belajar cara menginstal dan men-setup Squid Proxy di Ubuntu 20.04.

Squid  adalah aplikasi cache proxy web berfitur lengkap yang menyediakan service proxy dan cache untuk HTTP, FTP, permintaan SSL, dan pencarian DNS. Itu juga melakukan caching transparan yang mengurangi bandwidth dan meningkatkan waktu respons dengan caching dan menggunakan kembali halaman web yang sering diminta.

Instal dan Setup Squid Proxy di Ubuntu 20.04

Jalankan pembaruan sistem

Untuk memulainya, pastikan bahwa paket sistem Anda mutakhir.

apt update apt upgrade

Instal Squid Proxy di Ubuntu 20.04

Proksi squid tersedia di repositori default Ubuntu 20.04.

apt-cache policy squid
squid: Installed: (none) Candidate: 4.10-1ubuntu1.1 Version table: 4.10-1ubuntu1.1 500 500 http://ke.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages 500 http://ke.archive.ubuntu.com/ubuntu focal-security/main amd64 Packages 4.10-1ubuntu1 500 500 http://ke.archive.ubuntu.com/ubuntu focal/main amd64 Packages

Oleh karena itu, Anda dapat menginstalnya dengan menjalankan perintah dan dapat menginstalnya dengan menjalankan perintah;

apt install squid

Menjalankan Squid di Ubuntu 20.04

Saat diinstal, Squid dimulai dan diaktifkan untuk berjalan pada boot sistem;

systemctl status squid
● squid.service - Squid Web Proxy Server Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-05-29 14:00:41 UTC; 10min ago Docs: man:squid(8) Main PID: 2237 (squid) Tasks: 4 (limit: 2282) Memory: 16.3M CGroup: /system.slice/squid.service ├─2237 /usr/sbin/squid -sYC ├─2239 (squid-1) --kid squid-1 -sYC ├─2240 (logfile-daemon) /var/log/squid/access.log └─2241 (pinger) May 29 14:00:41 ubuntu20 squid[2239]: Using Least Load store dir selection May 29 14:00:41 ubuntu20 squid[2239]: Set Current Directory to /var/spool/squid May 29 14:00:41 ubuntu20 squid[2239]: Finished loading MIME types and icons. May 29 14:00:41 ubuntu20 squid[2239]: HTCP Disabled. May 29 14:00:41 ubuntu20 squid[2239]: Pinger socket opened on FD 14 May 29 14:00:41 ubuntu20 squid[2239]: Squid plugin modules loaded: 0 May 29 14:00:41 ubuntu20 squid[2239]: Adaptation support is off. May 29 14:00:41 ubuntu20 squid[2239]: Accepting HTTP Socket connections at local=[::]:3128 remote=[::] FD 12 flags=9 May 29 14:00:42 ubuntu20 squid[2239]: storeLateRelease: released 0 objects... 

Untuk memeriksa apakah diaktifkan untuk dijalankan pada boot sistem;

systemctl is-enabled squid.service
enabled

Mengkonfigurasi Server Proxy Squid di Ubuntu 20.04

/etc/squid/squid.conf adalah konfigurasi Proxy Squid default. Konfigurasi memiliki pengaturan minimum yang disarankan. Namun, kami akan memodifikasi konfigurasi ini untuk membuat beberapa perubahan. Anda juga dapat memiliki konfigurasi lain di bawah /etc/squid/conf.d/direktori.

Buat cadangan file konfigurasi default.

cp /etc/squid/squid.conf{,.old}

Secara default, file konfigurasi Squid terlihat seperti di bawah ini (dengan komentar dihapus);

acl localnet src 0.0.0.1-0.255.255.255	# RFC 1122 "this" network (LAN) acl localnet src 10.0.0.0/8		# RFC 1918 local private network (LAN) acl localnet src 100.64.0.0/10		# RFC 6598 shared address space (CGN) acl localnet src 169.254.0.0/16 	# RFC 3927 link-local (directly plugged) machines acl localnet src 172.16.0.0/12		# RFC 1918 local private network (LAN) acl localnet src 192.168.0.0/16		# RFC 1918 local private network (LAN) acl localnet src fc00::/7 	# RFC 4193 local private network range acl localnet src fe80::/10 	# RFC 4291 link-local (directly plugged) machines 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 http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost manager http_access deny manager include /etc/squid/conf.d/* http_access allow localhost http_access deny all http_port 3128 coredump_dir /var/spool/squid refresh_pattern ^ftp:		1440	20%	10080 refresh_pattern ^gopher:	1440	0%	1440 refresh_pattern -i (/cgi-bin/|?) 0	0%	0 refresh_pattern /(Packages|Sources)(|.bz2|.gz|.xz)$ 0 0% 0 refresh-ims refresh_pattern /Release(|.gpg)$ 0 0% 0 refresh-ims refresh_pattern /InRelease$ 0 0% 0 refresh-ims refresh_pattern /(Translation-.*)(|.bz2|.gz|.xz)$ 0 0% 0 refresh-ims refresh_pattern.		0	20%	4320 

Konfigurasi Kebijakan Kontrol Akses Squid

Jika Anda sudah memperhatikan, file konfigurasi di atas memiliki ACL untuk jaringan dan port aman tertentu. Anda dapat memodifikasinya untuk memasukkan port aman Anda serta jaringan lokal Anda yang harus diproksi oleh Squid.

Saat mendefinisikan ACL, masing-masing dan setiap dari mereka harus dimulai dengan acl namedan acl typediikuti oleh argumen jenis tertentu atau nama file yang dikutip dari mana mereka dibaca;

acl aclname acltype argument...
acl aclname acltype "file"...

Saat menggunakan ” file”, file harus berisi satu item per baris.

vim /etc/squid/squid.conf

Dalam tutorial ini, kita akan membuat ACL untuk jaringan LAN kita, 192.168.57.0/24. Kami menambahkan baris ini tepat di atas port SSL ACL.Replace the name of the ACL and the source network appropriately.

acl localnet src fc00::/7 	# RFC 4193 local private network range acl localnet src fe80::/10 	# RFC 4291 link-local (directly plugged) machines # My LAN network ACL acl kifarunix-demo-net src 192.168.57.0/24...

Baca lebih lanjut tentang arahan konfigurasi ACL di halaman Wiki Squid.

You can comment out (adding # at the beginning of the lines) the default ACLs.

# Example rule allowing access from your local networks. # Adapt to list your (internal) IP networks from where browsing # should be allowed #acl localnet src 0.0.0.1-0.255.255.255 # RFC 1122 "this" network (LAN) #acl localnet src 10.0.0.0/8 # RFC 1918 local private network (LAN) #acl localnet src 100.64.0.0/10 # RFC 6598 shared address space (CGN) #acl localnet src 169.254.0.0/16 # RFC 3927 link-local (directly plugged) machines #acl localnet src 172.16.0.0/12 # RFC 1918 local private network (LAN) #acl localnet src 192.168.0.0/16 # RFC 1918 local private network (LAN) #acl localnet src fc00::/7 # RFC 4193 local private network range #acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines # My LAN network ACL acl kifarunix-demo-net src 192.168.57.0/24... 

Izinkan atau Tolak Akses Berdasarkan ACL yang ditentukan

Setelah Anda memiliki ACL, Anda kemudian dapat menggunakan http_access arahan untuk menentukan ACL yang diizinkan atau ditolak untuk menggunakan proxy untuk mengakses jaringan eksternal. Oleh karena itu, untuk mengizinkan jaringan kami, yang ditentukan oleh ACL kami,kifarunix-demo-net, akses eksternal, tambahkan baris di bawah ini;

... #http_access allow localnet http_access allow localhost # Allow kifarunix-demo-net http_access allow kifarunix-demo-net # And finally deny all other access to this proxy http_access deny all

Entri terakhir harus selalu  http_access deny all.

Tolak Akses ke Situs Web Tertentu

Akses ke situs web tertentu dapat dibatasi menggunakan Squid Proxy. Misalnya untuk memblokir akses ke youtube, facebook, netflix;

  • Anda harus membuat file yang mendefinisikan do
    main situs web ini seperti yang ditunjukkan di bawah ini;
  • atau Anda akan mencantumkan nama domain, dipisahkan spasi pada pernyataan ACL.
vim /etc/squid/denied-sites.squid
.youtube.com.facebook.com.netflix.com

Selanjutnya, buat ACL untuk situs terbatas di atas dalam file konfigurasi squid dan atur: deny aturan untuk ACL yang ditentukan.

acl deniedsites dstdomain "/etc/squid/denied-sites.squid"

Atau Anda dapat membuat daftar domain situs;

acl deniedsites dstdomain youtube.com facebook.com netflix.com

Perbarui file konfigurasi squid.

... # # My LAN network ACL acl kifarunix-demo-net src 192.168.57.0/24 ## Sites to Block access to ### acl deniedsites dstdomain "/etc/squid/denied-sites.squid"...... # Deny access to facebook, youtube, netflix http_access deny deniedsites # Allow kifarunix-demo-net http_access allow kifarunix-demo-net # And finally deny all other access to this proxy http_access deny all 

Blokir Situs berdasarkan Kata Kunci Tertentu

Anda juga dapat membatasi akses ke situs web dengan menggunakan kata kunci. Buat file dengan kata kunci tertentu seperti yang ditunjukkan di bawah ini;

vim /etc/squid/banned-keywords.squid
porn ads movie gamble

Buat perubahan yang diperlukan pada file konfigurasi squid.

... # # My LAN network ACL acl kifarunix-demo-net src 192.168.57.0/24... acl CONNECT method CONNECT # ACL for Sites to Block Access to acl deniedsites dstdomain "/etc/squid/denied-sites.squid" acl keyword-ban url_regex -i "/etc/squid/keyword-ban.squid"... # http_access allow localnet http_access allow localhost # Deny access to facebook, youtube, netflix http_access deny deniedsites # Deny access based on keywords http_access deny keyword-ban # Allow kifarunix-demo-net http_access allow kifarunix-demo-net # And finally deny all other access to this proxy http_access deny all 

NOTE: http_access entri diproses dari atas ke bawah dan tergantung mana yang terjadi lebih dulu, akses diizinkan atau ditolak.

Menutupi Lalu Lintas Keluar

Sebanyak Anda menggunakan server proxy untuk menganonimkan alamat IP Anda dengan menyajikan alamat IP proxy ke server web lain, server proxy dapat mengekspos alamat IP Anda pada permintaan HTTP keluar. Namun Anda dapat menonaktifkan ini dengan memasukkan arahan berikut di akhir file konfigurasi squid Anda.

Nonaktifkan Via header dalam permintaan dan balasan dengan mencari baris, # via on, batalkan komentar dan setel nilainya keoff.

#Default: # via on via off

Konfigurasikan Squid untuk tidak menambahkan alamat IP client Anda dalam permintaan HTTP yang diteruskan dengan menghapus komentar pada baris, # forwarded_for on, dan menyetel nilainya ke off.

#Default: # forwarded_for on forwarded_for off

Hapus header proxy Squid untuk menghindari pengungkapan identitas server proxy Squid. Anda dapat menambahkan baris di bawah di bawah bagian, # TAG: request_header_access.

request_header_access From deny all request_header_access Server deny all request_header_access WWW-Authenticate deny all request_header_access Link deny all request_header_access Cache-Control deny all request_header_access Proxy-Connection deny all request_header_access X-Cache deny all request_header_access X-Cache-Lookup deny all request_header_access Via deny all request_header_access X-Forwarded-For deny all request_header_access Pragma deny all request_header_access Keep-Alive deny all 

Ubah Port Default Squid

Proxy squid mendengarkan  TCP port 3128 secara default. Untuk mengubah port ini, buka  /etc/squid/squid.conf file konfigurasi dan ganti nilainya  http_port dengan nomor port yang Anda inginkan.

Misalnya, untuk mengubah port default ke 8888, selama tidak ada aplikasi lain yang mendengarkan pada port yang sama;

... # Squid normally listens to port 3128 # http_port 3128 << Comment the line by adding # http_port 8888...

Anda juga dapat mengaturnya untuk mendengarkan pada IP tertentu (Replace the IP address accordingly)

http_port 192.168.57.8:3128

Simpan dan keluar dari file konfigurasi setelah Anda selesai dengan konfigurasi.

 Periksa File Konfigurasi Squid untuk Error

squid -k parse

Jika ada error sintaks, baris yang salah akan ditampilkan. Pastikan untuk menjalankan perintah ini setiap kali Anda mengubah konfigurasi Anda.

Mulai ulang Squid

Setelah Anda selesai dengan konfigurasi, simpan file dan restart squid.

systemctl restart squid

Periksa apakah Squid mendengarkan pada port yang ditentukan. Dalam hal ini, kami tidak mengubah default.

ss -altnp | grep 3128
LISTEN 0 256 192.168.57.8:3128 0.0.0.0:* users:(("squid",pid=3808,fd=12))

Izinkan Port Squid di Firewall

Jika UFW sedang berjalan, izinkan port proxy squid terbuka;

ufw allow 3128/tcp

Konfigurasikan Client untuk Terhubung Melalui server Proxy

Untuk mengkonfigurasi titik akhir untuk terhubung ke internet melalui server proxy Squid, Anda dapat mengatur konfigurasi proxy di seluruh sistem, mengkonfigurasi client untuk menggunakan proxy Squid sebagai gateway atau mengatur pengaturan proxy di browser.

Konfigurasi proxy Lebar Sistem di Ubuntu 20.04

Untuk mengatur konfigurasi proxy seluruh sistem, buat file konfigurasi di bawah  /etc/profile.d dengan variabel lingkungan yang mendefinisikan detail server proxy squid sebagai berikut;

vim /etc/profile.d/squid.sh

Ganti alamat IP server Squid yang sesuai.

PROXY_URL="192.168.57.8:3128" HTTP_PROXY=$PROXY_URL HTTPS_PROXY=$PROXY_URL FTP_PROXY=$PROXY_URL http_proxy=$PROXY_URL https_proxy=$PROXY_URL ftp_proxy=$PROXY_URL export HTTP_PROXY HTTPS_PROXY FTP_PROXY http_proxy https_proxy ftp_proxy

Setelah itu, sumber file konfigurasi baru.

source /etc/profile.d/squid.sh

Untuk menguji ini, coba download apa pun dari terminal client sambil mengekor log akses di server proxy squid.

Di terminal client, jalankan;

wget google.com
--2020-06-02 21:24:08-- http://google.com/ Connecting to 192.168.57.8:3128... connected. Proxy request sent, awaiting response... 301 Moved Permanently Location: http://www.google.com/ [following] --2020-06-02 21:24:08-- http://www.google.com/ Reusing existing connection to 192.168.57.8:3128. Proxy request sent, awaiting response... 200 OK Length: unspecified [text/html] Saving to: ‘index.html.4’ index.html.4 [ <=> ] 12.36K --.-KB/s in 0.01s 2020-06-02 21:24:08 (971 KB/s) - ‘index.html.4’ saved [12657]

Di server proxy Squid;

tail -f /var/log/squid/access.log
1591122302.356 0 192.168.57.10 TCP_MEM_HIT/301 629 GET http://google.com/ - HIER_NONE/- text/html 1591122302.642 282 192.168.57.10 TCP_MISS/200 13538 GET http://www.google.com/ - HIER_DIRECT/216.58.223.100 text/html

Konfigurasikan pengaturan Proxy pada browser Firefox.

Di Firefox Anda, konfigurasikan untuk menghubungkan jaringan eksternal melalui server Squid Anda. Preferences > Generaaku > Network Settings > Manual Proxy Configuration. Memeriksa Use this proxy server for all protocols.

Coba akses situs yang diblokir di browser Anda;

Periksa log.

tail -f /var/log/squid/access.log
1591126191.919 0 192.168.57.11 TCP_DENIED/403 3963 CONNECT www.youtube.com:443 - HIER_NONE/- text/html

Dan pada dasarnya bagaimana mengkonfigurasi squid proxy untuk memblokir atau menolak akses ke sumber daya eksternal. Itu menandai akhir dari tutorial kami tentang cara menginstal dan mengkonfigurasi Squid Proxy di Ubuntu 20.04.

Tutorial Terkait

Instal dan Konfigurasi Proxy Squid di CentOS 8

Pantau log Squid dengan Grafana dan Graylog

Buat Squid Logs Extractors di Graylog Server

Pantau Log Akses Squid dengan Server Graylog

Siapkan Otentikasi Proksi Squid di Ubuntu 18.04/Fedora 29/28/CentOS 7