mitos dan fakta proxy SSL transparan

8

Saya telah mencari selama berjam-jam sekarang tentang cara mengatur proxy transparan untuk SSL (bukan Squid). Jawaban umumnya adalah saya tidak bisa, tetapi saya tahu ada beberapa cara . Tujuan saya hanya sebagai berikut:

  1. Nama domain daftar hitam / daftar putih (bukan nomor IP). Konten tidak akan difilter atau dimodifikasi sama sekali.
  2. Paksa pengguna melalui daftar ini. Jika saya mengubah pengaturan seperti itu di browser web, mereka bisa membatalkannya.

Halaman berikut memberi tahu bahwa saya dapat melewati traffic yang tidak dimodifikasi, tetapi tidak mengatakan bagaimana: iptables https proxy transparan dengan privoxy?

Halaman berikut menunjukkan aturan iptables untuk 443 yang saya sendiri tidak dapat mulai bekerja: http://alien.slackbook.org/dokuwiki/doku.php?id=slackware:proxy

Halaman berikut memberi tahu cara menjalankan ini hanya dengan Squid: http://www.rahulpahade.com/content/squid-transparent-proxy-over-ssl-https

EDIT: Satu orang mengatakan di sini: Bagaimana cara saya menggunakan IPTABLES untuk membuat HTTPS (443) passthrough sekitar Squid? "Hal terbaik yang harus Anda lakukan adalah memblokir akses langsung ke port 443 dan memberi tahu pengguna Anda bahwa jika mereka ingin menggunakan HTTPS, mereka harus mengonfigurasi browser mereka untuk menggunakan proxy." Tapi saya hanya tahu cara memblokir 443 sepenuhnya, bukan untuk membuatnya bekerja di bawah proxy itu.

Teresa e Junior
sumber

Jawaban:

7

Jika Anda ingin memfilter pada nama domain, Anda memiliki dua cara yang mungkin: Anda bisa mengambil nama dari metode CONNECT yang dikeluarkan oleh klien jika ia tahu bahwa ia harus menggunakan proxy untuk konvergensi HTTPS dan memfilternya (Filter mendukung BTW). Atau, jika Anda benar- benar perlu melakukannya secara transparan, Anda perlu melihat ke dalam header permintaan (terenkripsi).

Jika Anda ingin melihat tajuk permintaan terenkripsi, Anda harus memiliki kunci. Jika Anda ingin memiliki kunci, Anda memerlukan sertifikat yang a) dipercaya oleh klien untuk menjadi sertifikat "benar" dan b) mengesahkan setiap host yang mungkin (wildcard-everything).

Jadi yang perlu Anda lakukan adalah

  1. mengatur sertifikat untuk proxy Anda. Tergantung pada perangkat lunak Anda bagaimana melakukannya - Anda mungkin menggunakan stunnel untuk mengakhiri koneksi SSL di sisi proxy, memiliki beberapa penyaringan proxy HTTP di belakangnya dan membangun kembali SSL untuk semua lalu lintas keluar menggunakan iptables target DNAT dan stunnel lagi. Mungkin ada solusi "kotak" untuk proksi MitM SSL juga.
  2. instal sertifikat yang disebutkan di atas pada semua klien Anda yang akan menggunakan proxy

Sebagian besar, jika Anda memerlukan proxy transparan, itu karena Anda tidak ingin atau tidak dapat mengkonfigurasi ulang klien untuk menggunakan proxy. Jika demikian halnya dengan permintaan Anda, Anda mungkin tidak akan memiliki opsi untuk menginstal sertifikat pada klien dan menandainya sebagai "tepercaya". Jadi meskipun ada cara teknis untuk proxy SSL transparan, saya kira tidak banyak yang akan dimenangkan untuk Anda.

the-wabbit
sumber
Ini cukup untuk menjelaskan kepada saya fakta tentang proksi transparan. Terima kasih!
Teresa e Junior
Bagaimana Anda "... mengambil nama dari metode CONNECT yang dikeluarkan oleh klien jika ia tahu bahwa ia harus menggunakan proxy untuk koneksinya HTTPS dan memfilternya"?
Big McLargeHuge
@ davidkennedy85 dengan Squid hampir sama dengan cara Anda memfilter untuk metode akses lainnya - cukup gunakan ACL. Contoh: servercomputing.blogspot.de/2012/01/…
the-wabbit
Penjelasan Anda sebagian besar dapat diterima; Aku belajar banyak. Terima kasih. Satu hal yang saya ragukan adalah bahwa nama host (nama domain) diketahui oleh siapa saja yang memantau lalu lintas. security.stackexchange.com/questions/2914/…
Albert Netymk
4

Saya tahu ini adalah pertanyaan lama, tetapi jika OP hanya ingin blacklist / daftar putih nama domain tertentu, mereka tidak harus menggunakan proxy sama sekali, mereka hanya bisa menggunakan daftar hitam berbasis DNS.

  • siapkan server DNS di tempat Anda untuk mengembalikan 127.0.0.1 untuk domain apa pun yang ingin Anda daftar hitam
  • di gateway internet Anda memblokir semua IP kecuali server DNS Anda dari mengakses port TCP / UDP 53, jadi hanya server DNS Anda yang dapat membuat permintaan DNS dari server berbasis internet.

Domain lain apa pun akan diizinkan. Semua lalu lintas web SSL atau sebaliknya akan melewati gateway tidak berubah.

Sunting: Melihat OP siap untuk memaksa pengguna melalui daftarnya, ia dapat memblokir metode lain untuk mengakses DNS. Dengan cara ini, jika pengguna mencoba menggunakan salah satu dari metode DNS lain yang diblokir, situs web tidak akan berfungsi. alias 'Jalan saya atau jalan raya'

Untuk DNS-over-HTTPS yang @wheeler sebutkan, Anda bisa memblokir DNS lookup biasa ke situs-situs seperti https://dns.google.com dan https://cloudflare-dns.com/dns-query dan https: // doh.cleanbrowsing.org/doh/family-filter/ . Meskipun ini akan dengan cepat menjadi tidak dapat dipertahankan karena semakin banyak layanan yang online.

Anda mungkin juga perlu cara memblokir tipe MIME seperti application / dns-udpwireformat untuk metode DNS lain yang sedang dikembangkan.

BeowulfNode42
sumber
Bukan solusi yang sangat efektif lagi, mengingat DNS-over-HTTPS adalah masalah sekarang.
kendaraan roda
2

Delegasi dapat berfungsi sebagai proksi Man-In-The-Middle untuk HTTPS.

AlexD
sumber
Terima kasih, memang, tapi saya tidak bisa membuatnya bekerja! Tampaknya membutuhkan aturan iptables yang berbeda dari yang ada di port 80, atau ada beberapa opsi yang tidak dapat saya tentukan untuk Delegasi.
Teresa e Junior
1

Untuk mode transparan, sistem Inline IPS (Suricata, Snort) dapat membantu Anda memblokir situs ssl.

https://redmine.openinfosecfoundation.org/projects/suricata/wiki/Setting_up_IPSinline_for_Linux

Blokir Aturan Situs SSL untuk Pengguna Tertentu:

drop ip any 443 -> 192.168.3.x any (content:".facebook.com"; msg:"Simplewall block facebook.com  ";sid:7;rev:1;)

drop ip any 443 -> 192.168.3.204 any (content:".youtube"; msg:"Simplewall block youtube.com" ;sid:4;rev:1;)

Blokir Aturan Unduhan File Berdasarkan Ekstensi:

drop ip any any -> 192.168.3.63 any (msg:"File exe block"; fileext:"exe"; filestore ;sid:1;rev:1;)

drop ip any ssl -> 192.168.3.63 any (msg:"File mp3 block"; fileext:"mp3"; filestore ;sid:11;rev:1;)

drop ip any ssl -> 192.168.3.63 any (msg:"File pdf block"; fileext:"pdf"; filestore ;sid:21;rev:1;)

Coba ini dengan SimpleWall

Sangat sangat sederhana untuk menambahkan aturan blok dengan antarmuka web Simplewall.

Anda juga dapat menambahkan aturan yang Simplewall => Content Filtermenggunakan aturan yang sama untuk IPS bersama dengan filter konten http.

chetan-simplewall
sumber