Squid Proxy ssl bump untuk transparent HTTPS

Melengkapi artikel lama ada sini untuk belajar, trial di lingkungan development, langsung saja kali ini menggunakan Squid 5.7 di opensuse Leap 15.4 dengan topolagi sbb


Ip client 10.10.1.0/24

ip proxy 10.10.0.15

Router menggunkan mikrotik


Persiapan

A. Opensuse leap 15.4
     zypper install squid

B. Debian 10 dan 11
     apt install -y squid-openssl squidclient sudo

C. Centos 7
     yum install squid

user squid di opensuse dan centos = squid
user squid di debian = proxy
harap check dan di sesuaikan

1. Pastikan layanan Squid yang digunakan mendukung opsi yang diperlukan.
Untuk mengechecknya, jalankan perintah: squid -v
Parameter opsi konfigurasi harus berisi  --enable-ssl-crtd dan --with-openssl
dan pastinya squid proxy sudah berjalan normal 

2. Generate CA Certificate untuk di gunkan di Squid dan client

#openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -extensions v3_ca -keyout squid-ca-key.pem -out squid-ca-cert.pem

gabungkan kedua file

#cat squid-ca-cert.pem squid-ca-key.pem >> squid-ca-cert-key.pem

pindahkan ke squid directory dan sesuaikan permisi nya

#mkdir /etc/squid/certs
#mv squid-ca-cert-key.pem /etc/squid/certs/.
#chown squid:squid -R /etc/squid/certs

3. Buat database SSL dan pastikan pengguna squid dapat mengaksesnya:

Untuk opensuse leap 15.4 sbb
#/usr/lib/squid/security_file_certgen -c -s /var/lib/squid/ssl_db -M 16MB

Untuk Debian 10 dan 11 sbb
#/usr/lib/squid/security_file_certgen -c -s /var/lib/squid/ssl_db -M 16MB


Untuk Centos 7 sbb
#/usr/lib64/squid/ssl_crtd -c -s /var/lib/ssl_db -M 16MB

Pastikan permisi nya sesuai
#chown squid:squid -R /var/lib/squid/ssl_db

4. Tambahkan di squid.conf

https_port 3127 intercept

http_port 3128 ssl-bump \
  cert=/etc/squid/certs/squid-ca-cert-key.pem \
  generate-host-certificates=on dynamic_cert_mem_cache_size=16MB

https_port 3129 intercept ssl-bump \
  cert=/etc/squid/certs/squid-ca-cert-key.pem \
  generate-host-certificates=on dynamic_cert_mem_cache_size=16MB

#Untuk opensuse leap 15.4
  sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/squid/ssl_db -M 16MB

#Untuk Debian 10 dan 11
  sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/squid/ssl_db -M 16MB

#Untuk Centos 7
  sslcrtd_program /usr/lib64/squid/ssl_crtd -s /var/lib/ssl_db -M 16MB


acl step1 at_step SslBump1
ssl_bump peek step1
ssl_bump bump all
ssl_bump splice all

Jalanakan "squid -k parse" untuk check config

systemctl enable squid
systemctl start squid
systemctl status squid.service

5. Tambahkan redirect iptable di mesin proxy

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3127
iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-ports 3129

6. Buat mangle di mikrotik untuk routing port 80 dan 443 client

/ip firewall mangle

chain=prerouting action=mark-routing new-routing-mark=route_proxy passthrough=yes protocol=tcp src-address=10.10.1.0/24 dst-port=80,443

7. Tambahkan routing di mikrotik dengan magle yang telah di buat untuk client

/ip route

add distance=1 gateway=10.10.0.15 routing-mark=route_proxy

8. Sekarang sebagai tes cepat kita bisa menggunakan curl untuk memastikannya berfungsi. Tanpa CA, Anda akan melihat peringatan berikut:

curl --proxy http://10.10.0.15:3128 https://google.com
curl: (60) SSL certificate problem: self signed certificate in certificate chain
More details here: https://curl.se/docs/sslcerts.html

curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.

Download CA ke mesin klien, lalu mencoba lagi

curl --proxy http://10.10.0.15:3128 --cacert squid-ca-cert.pem https://google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="https://www.google.com/">here</A>.
</BODY></HTML>

 
9. Buat sertifikat tepercaya untuk diimpor ke browser :

#openssl x509 -in squid-ca-cert.pem -outform DER -out squid-ca-cert.der

10. Download dan Import file CA squid-ca-cert.der di browser di client untuk lebih detil sbb

Tambahan sebagai catatan

Dekripsi squid-in-the-middle dan enkripsi CONNECT langsung dan mengarahkan lalu lintas SSL secara transparan, menggunakan sertifikat CA yang dapat dikonfigurasi. Saat didekripsi, lalu lintas dapat dianalisis, diblokir, atau diadaptasi menggunakan fitur Squid biasa seperti ICAP dan eCAP.

     /!\ Secara default, sebagian besar agen pengguna akan memperingatkan pengguna akhir tentang kemungkinan serangan man-in-the-middle.

{X} PERINGATAN: {X} HTTPS dirancang untuk memberi harapan privasi dan keamanan kepada pengguna. Mendekripsi terowongan HTTPS tanpa persetujuan atau pengetahuan pengguna dapat melanggar norma etika dan mungkin ilegal di yurisdiksi Anda. Fitur dekripsi squid yang dijelaskan di sini dan di tempat lain dirancang untuk penerapan dengan persetujuan pengguna atau, paling tidak, di lingkungan di mana dekripsi tanpa persetujuan adalah legal. Fitur-fitur ini juga menggambarkan mengapa pengguna harus berhati-hati dalam mempercayai koneksi HTTPS dan mengapa tautan terlemah dalam rantai perlindungan HTTPS agak rapuh. Mendekripsi terowongan HTTPS merupakan serangan man-in-the-middle dari sudut pandang keamanan jaringan secara keseluruhan. Alat penyerang setara dengan bom atom di dunia nyata: Pastikan Anda memahami apa yang Anda lakukan dan pembuat keputusan Anda memiliki informasi yang cukup untuk membuat pilihan yang bijak. 

Untuk lebih jelas nya bisa buka disini

 

Salam
semoga bermanfaat

Komentar

Postingan populer dari blog ini

Cloudflared argo tunnel zero trust service on Mikrotik

Migrasi zimbra ke zimbra dengan rsync

Squid Proxy ssl bump untuk transparent HTTPS #2