Dapatkah Squid digunakan sebagai "proxy terminasi TLS" untuk mengenkripsi koneksi TCP menggunakan sertifikat klien?

8

Abstrak

Saya memerlukan koneksi TCP terenkripsi dari banyak klien ke satu port melalui internet. Bisakah ini diwujudkan dengan Squid?

Situasi konkret

Kami menggunakan solusi pemantauan dan manajemen klien di perusahaan kami yang dapat diakses melalui LAN dan VPN. Seharusnya sekarang dapat diakses dari notebook eksternal yang tidak menggunakan VPN perusahaan . Komunikasi harus dienkripsi (TLS). Otentikasi klien harus menggunakan sertifikat klien. Komunikasi dimulai oleh klien dan menggunakan port TCP tunggal.

Hasil investigasi saya

NGINX Plus tampaknya menawarkan fitur ini tetapi admin kami lebih suka squid atau apache. Di wiki squid saya menemukan bahwa: Fitur: HTTPS (HTTP Secure atau HTTP over SSL / TLS) di mana penyandian TCP disebutkan. Tetapi saya juga menemukan peringatan ini:

Penting untuk diperhatikan bahwa protokol yang melewati CONNECT tidak terbatas pada yang biasanya ditangani oleh Squid. Secara harfiah apa pun yang menggunakan koneksi TCP dua arah dapat dilewatkan melalui terowongan CONNECT. Inilah sebabnya ACL standar Squid mulai dengan menolak CONNECT! SSL_Ports dan mengapa Anda harus memiliki alasan yang sangat bagus untuk menempatkan semua jenis aturan perbolehkan di atasnya.

Pertanyaan serupa

Pertanyaan ini Enkripsi koneksi klien dengan proxy squid forward menggunakan SSL adalah simlar, tetapi tidak memperlakukan proksi terbalik / proksi pemutusan TLS.

Apa yang perlu saya ketahui

Saya hanya memiliki pengetahuan dasar tentang teknologi itu dan admin kami menanyakan kelayakan umum.

  • Bisakah Squid digunakan untuk menyimpan enkripsi koneksi TCP?
  • Bisakah ini direalisasikan menggunakan otentikasi dengan sertifikat klien?
  • Atau haruskah itu digunakan hanya untuk koneksi HTTPS?
marsh-goyangkan
sumber

Jawaban:

7

Mungkin admin Anda tidak suka NGINX Pluskarena itu bukan open source dan akan menerima produk open source lain yang terawat dengan baik. Kemudian minta dia untuk melihat stunnel . Ini dirancang untuk kebutuhan Anda.

Mengutip contoh stunnel di wikipedia (untuk SMTP, tetapi ini akan cocok dengan kebutuhan Anda):

Misalnya, seseorang dapat menggunakan stunnel untuk menyediakan koneksi SSL aman ke server mail SMTP yang tidak sadar SSL. Asumsikan server SMTP mengharapkan koneksi TCP pada port 25. Seseorang akan mengkonfigurasi stunnel untuk memetakan port SSL 465 ke port non-SSL 25. Klien mail terhubung melalui SSL ke port 465. Lalu lintas jaringan dari klien awalnya melewati SSL ke stunnel aplikasi, yang secara transparan mengenkripsi / mendekripsi lalu lintas dan meneruskan lalu lintas tanpa jaminan ke port 25 secara lokal. Server email melihat klien email non-SSL.

Proses stunnel dapat berjalan pada server yang sama atau berbeda dari aplikasi email yang tidak aman; Namun, kedua mesin biasanya berada di belakang firewall pada jaringan internal yang aman (sehingga penyusup tidak dapat membuat koneksi tidak aman sendiri langsung ke port 25).

Layer8
sumber
+1, terdengar sangat menjanjikan
marsh-goyangkan
1
stunnel jelas lebih tepat untuk menyampaikan data TCP generik melalui koneksi TLS daripada proxy HTTP mana pun.
Amos Jeffries
2

CONNECT hanya digunakan oleh klien HTTP ke proxy HTTP untuk membuat terowongan melalui proxy. Tidak ada skema dalam HTTP untuk koneksi terenkripsi ke proxy HTTP.

Saya menduga proxy HTTP bukan yang Anda cari di sini.

Saya tidak tahu apakah Squid mendukung plug TCP dengan TLS dan sertifikat klien tetapi WinGate tidak. Ia juga memiliki kemampuan untuk memverifikasi UserPrincipalName di sertifikat ke Active Directory.

Penafian: Saya bekerja untuk Qbik yang merupakan penulis WinGate.

Adrien
sumber
Jadi Squid tidak dapat digunakan untuk mengenkripsi koneksi TCP (setidaknya tidak tanpa plugin tambahan)?
marsh-goyangkan
protokol apa yang akan Anda jalankan melalui koneksi TCP terenkripsi?
Adrien
TCP dengan payload yang tidak diketahui
marsh-goyangkan
OK, jadi Anda perlu sesuatu yang tidak akan mencoba mem-parsing HTTP darinya, sesuatu yang bukan proxy HTTP. Saya tidak dapat menemukan bukti pada jalur bahwa Squid dapat berjalan sebagai daemon plug generik, apalagi dengan TLS dan sertifikat klien.
Adrien