Bagaimana proksi awam sampai ke asal peribadi melalui VPN
Proksi songsang boleh menyajikan tapak awam daripada asal peribadi melalui terowong. Pisahkan penerbitan, titik akhir TLS dan kemasukan pengguna sebelum mendedahkannya.
Menerbitkan tapak web melalui terowong dan memberi pengguna akses VPN ialah dua susunan berbeza yang berkongsi satu kabel. Dalam yang pertama, proksi songsang awam menerima permintaan pelawat dan memajukannya melalui terowong ke asal yang tiada siapa boleh capai secara langsung. Dalam yang kedua, pengguna mesti menyertai VPN sebelum aplikasi boleh dicapai sama sekali. Mencampurkan kedua-dua penerangan itulah cara backend peribadi akhirnya terdedah secara awam.
Dua model yang kelihatan sama pada rajah
Lukis anak panah sebelum memilih apa-apa. Model penerbitan awam bergerak dari pelayar ke proksi melalui HTTPS, kemudian dari proksi ke asal melalui terowong, dan asal tidak pernah menerima sambungan dari internet. Model hanya-VPN bergerak dari klien ke gerbang, dan aplikasi hanya boleh dicapai dari dalam laluan itu. Komputer riba pengguna berada pada rangkaian yang sama dengan aplikasi, dan itulah keseluruhan tujuan model itu.
Model-model itu berbeza dari segi siapa yang mengesahkan dan di mana. Dalam yang pertama, proksi ialah pintu masuk awam dan ia memajukan apa-apa permintaan yang tiba, termasuk yang bermusuhan, tertakluk kepada dasar yang dikonfigurasikan padanya. Dalam yang kedua, kebolehcapaian itu sendiri ialah pintu, yang merupakan kemasukan kasar tetapi sebenar.
Di mana TLS berhenti, dan apa yang sebenarnya dibuktikannya
TLS antara pelayar dan proksi melindungi lompatan itu dan membolehkan pelayar mengesahkan tapak yang ingin dilawatinya. Jika proksi menamatkan TLS, permintaan itu wujud dalam bentuk boleh baca di dalam proses itu sebelum dimajukan. Sesi TLS kedua ke asal boleh melindungi lompatan seterusnya dan mengesahkan titik akhir aplikasi secara berasingan. Tiada sesi yang menentukan manusia mana yang boleh menggunakan aplikasi. Sijil wildcard pada proksi juga tidak meliputi lompatan kedua itu.
Inilah bahagian yang orang ramai ringkaskan kepada perkataan disulitkan. Kerahsiaan, integriti dan identiti pelayan ialah sifat pengangkutan; kebenaran ialah keputusan aplikasi. Alamat peribadi di sebalik terowong mengubah siapa yang boleh sampai ke soket, bukan siapa yang boleh log masuk setelah sampai.
Percayai pengepala yang dimajukan hanya daripada proksi
Aplikasi yang merekod atau membenarkan berdasarkan alamat klien biasanya membaca pengepala yang ditambah oleh proksi. Pengepala itu hanyalah teks, jadi apa-apa yang boleh sampai ke asal secara langsung boleh mendakwa apa-apa alamat yang dikehendakinya. Hadkan asal supaya hanya alamat terowong proksi boleh bersambung, dan konfigurasikan aplikasi untuk menerima pengepala hanya daripada alamat itu.
curl -s -o /dev/null -w '%{http_code}
' -H 'X-Forwarded-For: 203.0.113.9' http://172.20.5.40/
Jika permintaan itu berjaya dari hos yang bukan proksi, asal mempercayai pengepala yang sepatutnya diabaikannya. Betulkan pendengar sebelum menyentuh aplikasi. Penolakan ialah hasil yang jauh lebih baik daripada baris log yang membawa alamat palsu.
Kekalkan asal boleh dicapai dari tepat satu tempat
Ikat pendengar asal pada alamat terowong atau pagar dengan firewall ke arah proksi, kemudian sahkan apa yang sebenarnya mendengar. Perkhidmatan yang dimulakan dengan pengikatan wildcard menerima sambungan pada setiap antara muka yang dimiliki hos, termasuk yang anda terlupa bahawa ia boleh dilalukan. Jadual pendengaran ialah kebenaran asas, bukan fail konfigurasi yang anda ingin gunakan. Jika pengikatan wildcard itu disengajakan, firewall tetap mesti menjadi komponen yang menyempitkannya.
ss -ltnp | grep -E ':(80|443)'
Lakukan semakan yang sama untuk antara muka pengurusan, yang merupakan pendedahan tidak sengaja yang biasa. Kemudian tulis kedua-dua model secara berasingan: tapak awam melalui proksi, dan antara muka pentadbiran yang hanya boleh dicapai melalui terowong. Ayat bahawa pelayan berada di belakang VPN tidak mengatakan apa-apa daripada itu.