Kawasan admin SaaS di belakang VPN: alamat mana yang boleh dipercayai?
Asalan melihat alamat keluar gateway VPN anda, bukan alamat terowong komputer riba. Percayai hanya pengepala proksi yang dikonfigurasikan, kemudian pintu setiap operasi admin.
Halaman SaaS awam boleh kekal terbuka kepada semua orang sementara operasi admin di belakangnya menolak sesiapa di luar VPN. Mekanisme yang membolehkannya bukan menu tersembunyi atau halaman log masuk berasingan; ia adalah pemeriksaan laluan rangkaian yang menyampaikan permintaan itu. Jika bukti alamat salah, pemeriksaan itu sama ada mengunci admin sebenar atau menerima sesiapa yang boleh menaip pengepala. Mulakan dengan apa yang sebenarnya diterima oleh asalan.
Apa yang sebenarnya diterima oleh asalan selepas terowong
Apabila pelayar sampai ke tapak awam melalui VPN yang juga membawa trafik internet, gateway menterjemah sambungan itu sebelum ia keluar. SaaS melihat alamat keluar awam gateway, biasanya satu alamat atau julat kecil, dan tidak pernah melihat alamat terowong komputer riba. Itulah sebabnya menambah 10.90.0.42 ke senarai dibenarkan gagal, dan itulah sebabnya menambah seluruh RFC 1918 gagal lebih kuat: yang kedua menerima setiap rangkaian peribadi yang boleh sampai kepada anda. Satu-satunya alamat yang wajar dijadikan syarat ialah alamat yang benar-benar dimiliki organisasi anda di pintu keluar.
curl -s https://ifconfig.me
dig +short admin.example.com
Terowong berpecah memecahkan andaian itu secara senyap. Jika VPN hanya membawa laluan pejabat peribadi, permintaan ke nama hos admin awam keluar melalui ISP tempatan dan asalan melihat alamat kediaman. Ikon VPN yang bersambung tidak membuktikan apa-apa tentang destinasi tertentu ini, jadi uji destinasi, bukan terowong.
Berhenti dan betulkan penghalaan sebelum menulis sebarang dasar jika alamat keluar berbeza mengikut pengguna. Syarat yang hanya sepadan dengan sesetengah admin lebih buruk daripada tiada syarat, kerana ia menyembunyikan masalah sehingga berlaku insiden.
Percayai hanya proksi yang menulis semula alamat itu
Kebanyakan tapak awam berada di belakang CDN atau proksi terbalik, jadi alamat soket asalan milik bahagian hadapan itu, bukan pelawat. Bahagian hadapan biasanya memajukan alamat asal dalam pengepala, dan pengepala itu dikawal oleh penyerang melainkan asalan hanya menerimanya daripada proksi yang diketahui. Konfigurasikan senarai sumber dipercayai secara jelas dan jadikan asalan tidak boleh dicapai dari mana-mana tempat lain. Tanpa separuh kedua itu, penyerang memintas proksi dan menghantar pengepala secara terus.
set_real_ip_from 192.0.2.0/24;
real_ip_header X-Forwarded-For;
real_ip_recursive on;
curl -H 'X-Forwarded-For: 198.51.100.27' https://origin.example.com/admin
Alasan yang sama terpakai pada protokol PROXY: ia boleh dipercayai hanya apabila pendengar terikat pada antara muka yang boleh dicapai oleh proksi dan tiada yang lain boleh. Konteks alamat yang hilang mesti menggagalkan pemeriksaan terlindung dan bukannya jatuh ke kebenaran lalai. Pengepala yang tiada bukan bukti laluan dipercayai.
Lampirkan syarat itu pada setiap operasi terlindung
Letakkan pemeriksaan di sempadan kebenaran yang dilalui setiap operasi terlindung, bukan di halaman yang memaparkan menu. Kumpulan laluan, middleware atau lapisan dasar semuanya berfungsi; salinan setiap pengendali tidak, kerana pengendali yang ditambah seseorang pada suku berikutnya tidak akan memilikinya.
user = requireAuthenticatedSession()
requirePermission(user, "admin")
requireVpnEgress(verifiedClientAddress(request))
performProtectedOperation(user, request)
Sempadan yang sama mesti meliputi JSON API, eksport, URL muat turun bertandatangan dan jabat tangan WebSocket, kerana tiada satu pun memerlukan halaman HTML diminta dahulu. Pautan muat turun yang dicipta semasa VPN aktif kekal sah selepas itu melainkan titik akhir muat turun menyemak semula. Sesi jangka panjang juga memerlukan peraturan penilaian semula, jika tidak satu permintaan disahkan menjadi pengecualian kekal. Penolakan lalai ialah satu-satunya tetapan yang bertahan perubahan kakitangan.
Cache kongsi ialah jalan lain di sekeliling pemeriksaan. Cache yang sudah menyimpan respons terlindung boleh menyampaikannya tanpa menghubungi asalan, jadi tandakan respons admin sebagai peribadi dan jauhkan daripada storan kongsi. Jika cache mesti menyampaikannya, pemeriksaan akses mesti berjalan sebelum penyampaian, yang biasanya bermakna ia sama sekali tidak boleh menjadi cache kongsi.
Uji pintasan yang baru anda tutup
Latih matriks itu, bukan laluan gembira: admin melalui VPN, admin yang sama tanpanya, bukan admin melaluinya, dan pengepala alamat yang dipalsukan. Tambah permintaan terus ke asalan dan permintaan dengan respons cache, kerana kedua-duanya yang memintas bahagian hadapan sepenuhnya.
curl -sI https://admin.example.com/export.csv
curl -s -H 'X-Forwarded-For: 198.51.100.27' https://origin.example.com/admin
curl -s https://admin.example.com/api/me -o /dev/null -w '%{http_code}\n'
Setiap permintaan hendaklah mengembalikan status yang dijanjikan oleh dasar itu, dan log hendaklah merekodkan bukti alamat yang digunakan. Liputi IPv6 secara berasingan, kerana asalan dwi-timbunan mungkin melihat keluarga sumber yang berbeza daripada yang anda uji. Kekalkan operasi pelanggan biasa berfungsi di luar VPN, jika tidak perubahan akan dibatalkan apabila pelanggan mengadu kali pertama. Tulis hasil yang dijangka bagi setiap baris sebelum menjalankannya, supaya kelulusan yang mengejutkan kelihatan.
Alamat keluar membuktikan laluan rangkaian yang dibenarkan, bukan orang dan bukan peranti terurus. Kekalkannya sebagai satu syarat di samping pengesahan dan kebenaran, dan kawasan admin kekal sempit tanpa menjadikan keseluruhan produk sebagai perkhidmatan khusus VPN. Pemisahan itu ialah reka bentuknya, bukan hadnya.