Sebelum ke tahap installasi kita perlu tahu fungsi dari sebuah proxy, jadi proxy adalah sebuah server yang bisa digunakan untuk caching konten, sharing internet, dan filtering konten. Proxy ini sebagai pneghubung antara klien dan internet.

Proxy juga bisa di kombinasikan dengan perangkat jaringan lain, misal router, radius server dll.
Software proxy di linux yang sering digunakan yaitu Squid Proxy, kali ini kita akan membahas cara installasi dan konfigurasinya.
Install Squid Proxy
[root@proxysrv ~]# dnf install squid -y
Konfigurasi Squid sebagai caching server
Caching server ini biasanya digunakan untuk penghematan bandwith, konten internet yang pernah diakses oleh klien akan disimpan di lokal, jadi ketika klien lain ingin mengakses konten yang sama tidak perlu mengakses internet lagi.
Edit file /etc/squid/squid.conf
[root@proxysrv ~]# vi /etc/squid/squid.conf
.....
#Sesuaikan ACL localnet menjadi IP Lokal klien
acl localnet src 172.23.0.0/24
#Secara default di konfigurasi squid sudah mengizinkan protokol http & https untuk diakses, kita juga bisa menambahkan port lain misal ftp
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
#Tolak request selain dari definisi port Safe_port, jadi klien hanya bisa mengakses port yang kita definisikan tadi
http_access deny !Safe_ports
#Konfigurasi caching
cache_dir ufs /var/spool/squid 1000 16 256
.....
Keterangan konfigurasi caching
Squid menggunakan tipe caching ufs.
Squid dapat menyimpan caching sebesar 1000 MB.
Squid menyimpan caching di /var/spool/squid.
Squid membuat sub-direktori sebanyak 16 di /var/spool/squid.
Squid membuat 256 sub-direktori di dalam 16 direktori /var/spool/squid.
Jika ingin mengubah direktori penyimpanan caching pastikan mengubah owner dan group dari direktori tersebut, contoh:
mkdir /squidcaching
chown -R squid.squid /squidcaching
Definisikan ulang di /etc/squid/squid.conf
cache_dir ufs /squidcaching 1000 16 256
Jika SELinux dalam mode enforcing pastikan mengubah label dari direktori custom tadi
[root@proxysrv ~]# semanage fcontext -a -t squid_cache_t "/squidcaching(/.*)?"
[root@proxysrv ~]# restorecon -v /squidcaching
Tambahkan rule firewall, squid proxy secara default menggunakan port 3128
[root@proxysrv ~]# firewall-cmd --add-port=3128/tcp --permanent
success
[root@proxysrv ~]# firewall-cmd --reload
success
Terakhir lakukan restart pada layanan squid
[root@proxysrv ~]# systemctl restart squid
Konfigurasi Authentication di Squid Proxy
Fungsi mengkonfigurasi autentikasi pada squid proxy adalah untuk membatasi akses internet, jadi hanya user yang terdaftar yang bisa mengakses internet.
Untuk autentikasi kita perlu tools tambahan yaitu httpd-tools, untuk yang lebih advanced bisa menggunakan LDAP/Kerberos mungkin di artikel selanjutnya kita akan bahas, kali ini kita pakai httpd-tools
Install HTTPD-Tools
[root@proxysrv ~]# dnf install httpd-tools -y
Tambahkan konfigurasi berikut di /etc/squid/squid.conf
[root@proxysrv ~]# vi /etc/squid/squid.conf
.....
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/.htpasswd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 5 hours
acl password proxy_auth REQUIRED
http_access allow password
.....
Restart layanan squid
[root@proxysrv ~]# systemctl restart squid
Kemudian untuk menambahkan user kita gunakan perintah berikut, contoh disini saya membuat user rafi
[root@proxysrv ~]# htpasswd -c /etc/squid/.htpasswd rafi
New password: Masukkan Password
Re-type new password: Masukkan Password
Adding password for user rafi
Pengujian di klien windows

Konfigurasi Filter Konten di Squid Proxy
Blocking file
Untuk suatu alasan kita bisa memblokir sebuah file extension, jika user melakukan download maupun akses konten maka nanti akan muncul custom page warning yang kita buat.
Untuk konfigurasinya tambahkan ACL blockfiles seperti berikut di file /etc/squid/squid.conf
acl blockfiles urlpath_regex -i "/etc/squid/blocks.files.acl"
Kemudian jika ingin membuat sebuah custom page error kita tambahkan konfigurasi seperti ini
error_directory /usr/share/squid/errors/
deny_info ERR_BLOCKED_FILES blockfiles
http_access deny blockfiles
Kita buat custom html di direktori tadi
[root@proxysrv ~]# vi /usr/share/squid/errors/ERR_BLOCKED_FILES
.....
<html>
<title> FILE YANG ANDA AKSES DI BLOKIR </title>
<h1 style="color:red;">Mohon maaf file yang ingin anda akses di blokir</h1>
</html>
.....
Buat file baru yang bernama blocks.files.acl di direktori /etc/squid
[root@proxysrv ~]# vi /etc/squid/blocks.files.acl
.....
#Filenya berisi extension file yang ingin diblokir dengan format regex
\.exe(\?.*)?$
\.zip(\?.*)?$
\.mp3(\?.*)?$
\.mp4(\?.*)?$
\.doc(\?.*)?$
\.pdf(\?.*)?$
.....
Kemudian restart layanan squid
[root@proxysrv ~]# systemctl restart squid
Pengujian dengan mengakses file berformat pdf

Blocking Website
Tambahkan acl baru bernama blockweb di file /etc/squid/squid.conf
[root@proxysrv ~]# vi /etc/squid/squid.conf
.....
acl blockweb dstdomain "/etc/squid/blocked.domains.acl"
http_access deny blockweb
.....
Buat list website yang mau di blokir
[root@proxysrv ~]# vi /etc/squid/blocked.domains.acl
.....
.youtube.com
.google.com
.facebook.com
.twitter.com
.....
Kemudian restart layanan squid
[root@proxysrv ~]# systemctl restart squid
Pengujian mengakses web twitter.com di klien
