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.
PERINGATAN: 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
Posting Komentar