Langsung ke konten utama

Limitasi YouTube dan HTTPS Lainnya - Hardway but it effective


Halo, yang mau blok YouTube dan kawan-kawan HTTPS lainnya sini ngumpul dulu :D

1. HTTPS

HTTPS merupakan sebuah protokol dari web service yang telah dienkapsulasi oleh layer TLS. Seluruh data di dalam HTTPS telah terenkripsi. Sehingga data dapat terjamin keamanan dan integritasnya selama dalam transmisi.

Hampir seluruh web saat ini diharuskan menggunakan HTTPS bahkan termasuk kebanyakan konten CDN. Selain requirement dari web browser juga untuk menghindarkan pengguna dari kejahatan virtual seperti social engineering, man-in-the-middle dan lain-lain.

Dilihat dari berbagai sudut pandang, HTTPS memang sangat bermanfaat. Namun ada juga sisi yang mungkin sedikit menggangu dengan hadirnya HTTPS. Sebagian administrator ingin bahwa konten yang dikirimkan oleh web browser masih dapat dikontrol. Setidaknya router masih dapat mengenali web macam apa yang dikunjungi. Selanjutnya administrator dapat menerapkan blocking, routing ataupun bandwidth limiting.

Katakan saja, YouTube. Administrator ingin memblok akses YouTube pada jam kerja. Cara yang digunakan bisa dengan membuat domain YouTube unresolved melalui DNS static MikroTik. Bagaimana jika administrator tersebut ingin membatasi akses YouTube atau ingin menerapkan routing policy saat pengguna memutar video YouTube?


2. Inspeksi

Mari kita lihat sebenarnya apa yang dilakukan oleh browser ketika sedang membuka atau memutar video YouTube. Kita dapat menggunakan web browser Google Chrome dan memanfaatkan utility devtools (menggunakan klik kanan - inspect element atau ctrl + c atau F12).

Buka dahulu devtools dan arahkan ke tab  network. Apabila ingin lebih detil lagi, YouTube mengggunakan semacam ajax request jadi anda bisa menampilkan ajax request saja (pilih XHR). Kemudian kunjungi web https://youtube.com dan klik salah satu video. Apabila perekaman dirasa cukup, hentikan video dan sorting request paling banyak.


Yang muncul paling banyak adalah segmen videoplayback. Karena ini masih di lapisan aplikasi, setiap request masih terlihat. Kata kunci yang bisa digunakan adalah videoplayback, selain itu kita juga bisa menggunakan domain dari request video playback. Subdomain yang digunakan sangat acak, namun domainnya sendiri tetap yaitu googlevideo.com. Protokol yang digunakan adalah HTTPS.

Sebelumnya saya sudah melakukan packet capture menggunakan Wireshark. Yang berhasil saya temukan diantaranya:

1. Saya tidak berhasil menemukan kata kunci videoplayback pada seluruh paket. Menandakan pada level ini, URI request sudah tidak dapat diinspeksi.

2. Pada proses find selanjutnya saya menggunakan kata kunci googlevideo dan untuk mempermudah, saya menggunakan filter ssl && ip.src==(ip computer)&&tcp.dstport==443. Terdapat proses TLS-handshake berupa "hello packet" yang didalamnya ada parameter server name. Mungkin ini bisa kita gunakan untuk menandai koneksi atau sebagai matcher yang selanjutnya dapat kita tambahkan ke address list. Namun sayang sekali ketika saya melakukan capture untuk kedua kalinya, saya tidak berhasil menemukan "hello packet" dengan parameter server name bernilai googlevide.com. Gejala ini dapat menimbulkan "kebocoran" saat firewall matching.


3. YouTube telah mengadopsi protokol QUIC melalui UDP, namun basisnya tetap HTTP yang dapat dibungkus TLS menjadi HTTPS. Setelah saya cek melalui filter ip.src==(ip computer)&&tcp.dstport==443 saya tidak berhasil menemukan apapun. Packet sudah dalam kondisi encrypted dan connection stream.


4. Saya menghapus filter dan hanya menyisakan find regexp dan ternyata saya menemukan banyak sekali paket yang berisi googlevideo.com. Saya lihat paket tersebut berupa DNS query dengan respon/answer berupa IP address dari *.googlevideo.com. IP tersebut dapat kita gunakan sebagai kritera firewall sebagai solusi absolut dari permasalahan kita.


3. How it works

Pada pembahasan sebelumnya, kita berhasil menemukan IP address dari streamer konten YouTube melalui DNS query. Pada MikroTik setiap DNS query akan disimpan pada DNS cache. DNS cache dapat diakses pada menu IP -> DNS -> Cache.

Dari cache tersebut, kita bisa menambahkan setiap entri dengan tipe A record ke dalam address list. Selanjutnya address list tersebut dapat digunakan pada firewall matcher. Masalahnya adalah bisa jadi IP tersebut adalah IP dinamis dan selalu berubah. Selain itu MikroTik tidak akan bisa memberikan notifikasi khusus apabila dia menemukan domain googlevideo.com. Tentu saja anda juga tidak mau memeriksa DNS cache setiap waktu dan menambahkan IP-nya ke address list secara manual.


4. Script... SKRRAAA!


#deklarasi dan inisialisasi variabel
:local rDomain "^r[0-9].+googlevideo.com";
:local addressList "testYoutubeAL";
:local timeoutAddressList "1d 00:00:00";

#looping setiap entri pada DNS cache dengan tipa A record.
:foreach aRecordLoop in=[/ip dns cache all find where (name~$rDomain && type="A")] do={
:local ipAddressData [/ip dns cache all get $aRecordLoop data];
:local ipNameData [/ip dns cache all get $aRecordLoop name];
:local ipcheckCondition [/ip firewall address-list print count-only where address=$ipAddressData && list=$addressList];
:put $ipcheckCondition;
:put ("ip address from ".$ipNameData." is ".$ipAddressData);

#jika IP address belum ada maka tambahkan ke address list
:if ($ipcheckCondition=0) do={
/ip firewall address-list add list=$addressList address=$ipAddressData timeout=$timeoutAddressList;
:put ("ip address ".$ipAddressData." is added");
:delay 5s;
/ip firewall connection remove [find dst-address=($ipAddressData.":443")];
:put "ip address has been removed from connection list";
} else={:put ("ip address ".$ipAddressData." is exist");}

}


5. Testing

Kita harus membuat scheduler untuk memanggil script secara berkala. Jika dilihat dari DNS cache diatas, timeout terpendek adalah 53 detik atau dapat kita buat 1 menit. Dengan kata lain, kita akan memberikan interval script selama 1 menit.

Setelah membuat scheduler, lakukan flush DNS untuk membersihkan cache (flush DNS harus dilakukan juga pada PC). Selanjutnya buka kembali web YouTube dan putar beberapa video. Sambil videonya berjalan, dalam rentang waktu satu menit IP dari YouTube akan bertambah pada address list.


Selanjutnya silahkan anda buat firewall rule berdasarkan IP tersebut.

Semoga membantu :)

Komentar

Postingan populer dari blog ini

Hubungan Manis antara Conan Edogawa dan Haibara Ai.

( Hubungan Manis antara Conan Edogawa dan Haibara Ai)  Halo para Conaners, tahu kenyataan unik nggak. Ternyata Haibara Ai tuh demen lho sama Conan Edogawa. Tapi dia berusaha menyembunyikannya lantaran dia udah tau kalo Conan (Shinichi) tuh suka dan cinta sama Ran. Haibara yang kita ketahui mempunyai kepribadian dingin ini, tak gampang putus asa nih buat nunjukin kegigihannya untuk mendapatkan perhatian dari Conan. Yuk kita lihat, usaha apa saja yang dilakukan Haibara untuk menaklukan Conan :

Live Streaming ke Banyak Media Sosial

Beberapa dekade terakhir, banyak sekali para gamer yang "nyambi" cari uang dengan melakukan live stream di media sosial terutama Facebook. Sebenarnya saya juga mulai kesel karena para fans live streamer sering membagikan live streaming-nya ke grup Facebook. Sehingga grup Facebook yang awalnya diperuntukkan sebagai media diskusi malah jadi ajang pencarian views. Spam dan annoying banget.

Instalasi FreeRADIUS ft. daloRADIUS | [UPDATE - Study case pada Debian Buster]

NOTE: Artikel ini telah mengalami perubahan. Sebelumnya, versi sistem operasi yang saya gunakan adalah Debian Wheezy. Dengan menggunakan Debian Buster beberapa versi package  juga ikut berubah. Update package akan saya beri warna font merah Remote Authentication Dial-In User Service atau sering disebut dengan RADIUS adalah sebuah protokol jaringan yang melayani administrasi pengguna dalam penggunaan jaringan secara terpusat. Aspek pelayanan yang diberikan meliputi  Authetication, Authorization dan Accounting  yang kemudian disingkat AAA atau triple A . RADIUS akan sangat dibutuhkan oleh provider skala besar, misalkan  Internet Service Provider (ISP) . Untuk platform MikroTik, RADIUS sering dikenal dengan userman ( user manager ) karena tugasnya memang manajemen pengguna.