Pengesahan asas melalui HTTPS berbanding IPsec: apa yang dilindungi oleh setiap satu
Ikuti satu permintaan daripada pelayar ke aplikasi: lonjakan TLS, respons 401 dan terowong melindungi hubungan yang berbeza dan gagal dengan bukti yang berbeza.
Buka alat pembangun, muatkan aplikasi dalaman dan tonton satu permintaan melalui empat titik semak sebelum halaman dipaparkan. Mula-mula nama diselesaikan, kemudian sambungan TCP dibuka, kemudian jabat tangan TLS menetapkan siapa pelayan itu, dan hanya selepas itu aplikasi bertanya siapa anda. Anggap ini sebagai peristiwa berasingan, kerana setiap satu gagal dengan bukti berbeza dan setiap satu dimiliki pasukan berbeza. Kebanyakan kekeliruan dalam insiden datang daripada membaca 401 sebagai masalah terowong, atau masalah terowong sebagai kata laluan yang salah.
Titik semak satu: adakah ini pelayan yang anda mahu bercakap dengannya
Jabat tangan TLS menjawab soalan itu sebelum sebarang kelayakan dihantar. Klien anda mengesahkan rantaian sijil terhadap stor kepercayaan dan memeriksa bahawa nama dalam sijil sepadan dengan hos yang anda taip. Jika itu gagal, pelayar menunjukkan ralat sijil dan tidak menghantar pengepala Authorization langsung. Jadi gesaan kata laluan bukan bukti bahawa pelayan itu asli; ia bukti bahawa aplikasi telah menjawab.
Di sini sempadan pertama muncul. TLS melindungi sambungan sehingga titik penamatnya. Jika pengimbang beban menamatkan TLS dan memajukan HTTP biasa kepada aplikasi, segmen disulitkan berakhir di pengimbang, dan kelayakan hanya dilindungi pada lonjakan pertama itu.
Titik semak dua: apa yang sebenarnya bergerak dalam pertukaran 401
Pengesahan asas HTTP menghantar pengecam pengguna dan kata laluan dalam pengepala, dikodkan dengan Base64 seperti yang diterangkan dalam RFC 7617. Authorization: Basic dXNlcjpwYXNz ialah bentuknya; pengekodan boleh diterbalikkan oleh sesiapa yang boleh membaca permintaan, jadi semua kerahsiaan datang daripada pengangkutan di bawahnya. curl -v menunjukkan kedua-dua cabaran WWW-Authenticate: Basic dan pengepala yang anda hantar balik.
Pengepala itu memberitahu aplikasi siapa yang bertanya. Ia tidak memberitahu rangkaian siapa yang boleh bersambung, dan ia tidak menyulitkan apa-apa dengan sendirinya. Aplikasi masih perlu memeriksa kelayakan terhadap stor dan memutuskan apa yang akaun itu boleh lakukan, iaitu kebenaran dan berlaku selepas pengesahan.
Di mana terowong IPsec terletak dalam laluan itu
Sekarang berjalan ke luar dari pelayar. Terowong IPsec antara get laluan melindungi trafik terpilih antara dua get laluan keselamatan, bukan antara komputer riba anda dan proses aplikasi. ESP dalam mod terowong membalut paket asal, get laluan menyulitkan dan mengesahkannya, dan alamat dalaman kekal supaya sisi jauh boleh menghalakan permintaan ke aplikasi.
Pemilihan ialah bahagian yang membuat orang tersandung. Terowong berasaskan dasar menggunakan pemilih trafik, selalunya dinyatakan sebagai senarai kawalan akses, untuk menentukan paket mana yang masuk ke terowong. Terowong berasaskan laluan menggunakan antara muka maya dan jadual penghalaan sebaliknya. Dalam Linux ip xfrm policy menunjukkan pemilih dan ip xfrm state menunjukkan persatuan keselamatan yang terbentuk; pada peranti tembok api yang setara ialah jadual SA terowong serta pengesan paket.
Kesannya wajar dinyatakan dengan jelas. Paket boleh duduk di dalam terowong yang sempurna sihat dan masih membawa permintaan HTTPS yang ditolak oleh aplikasi, dan kelayakan yang sah boleh tiba melalui laluan tanpa sebarang terowong jika penghalaan membenarkannya.
Baca kegagalan pada lapisan yang melaporkannya
401 bermaksud aplikasi tidak menerima kelayakan itu. 403 bermaksud ia menerima identiti dan menolak operasi. Ralat TLS bermaksud klien tidak menerima pelayan. Tiada laluan atau ketidakpadanan dasar bermaksud paket tidak pernah sampai ke get laluan jauh. Empat kegagalan berbeza, empat pemilik berbeza, dan tiada satu pun didiagnosis dengan merenung borang log masuk.
Gunakan bukti yang dihasilkan setiap lapisan: panel rangkaian pelayar untuk status dan pengepala, openssl s_client -connect host:443 untuk rantaian sijil, pembilang SA dan log get laluan untuk trafik terowong, dan log aplikasi untuk keputusan akaun. Apabila dua lapisan melaporkan ralat serentak, betulkan yang lebih rendah dahulu, kerana terowong mati boleh menyembunyikan kegagalan pengesahan dengan mudah dan sebaliknya.
Petakan satu perkhidmatan dari hujung ke hujung
Tulis lima baris untuk perkhidmatan yang anda siasat: pasangan mana yang disambungkan terowong, subrangkaian dan port mana yang dibenarkan pemilih, di mana TLS berakhir dan identiti mana yang ditegaskan sijil, akaun dan peranan aplikasi mana yang digunakan, dan di mana setiap lapisan merekod log. Simpan pada satu halaman, kerana tujuan peta ialah menunjukkan di mana tanggungjawab satu lapisan berakhir dan lapisan seterusnya bermula.
Kemudian uji satu kes negatif setiap lapisan. Gunakan kata laluan yang salah dan pastikan anda mendapat 401, bukan tamat masa. Sambung dari subrangkaian di luar pemilih dan pastikan paket tidak melalui terowong. Kemukakan sijil untuk nama yang salah dan pastikan klien menolak sebelum menghantar kelayakan. Ketiga-tiga hasil itu memberitahu anda lebih banyak tentang reka bentuk daripada mana-mana rajah kotak.
Akhir sekali, putuskan dengan sengaja perlindungan apa yang diperlukan setiap hubungan. Pengesahan asas di atas TLS ialah pilihan yang wajar untuk alat dalaman kecil di belakang get laluan; ia bukan pengganti kebenaran setiap pengguna atau perlindungan trafik di luar titik akhir TLS. Terowong melindungi laluan, sijil melindungi lonjakan, dan 401 melindungi akaun, dan hanya yang terakhir tahu siapa anda.