Menukar satu klik kepada peraturan firewall sementara adalah mudah, dan ia juga membina sistem kebenaran yang menentukan siapa boleh mencapai sesuatu perkhidmatan. Ia mengeluarkan alamat dan bukan orang, dan perbezaan itu penting pada saat dua orang berkongsi satu NAT. Hadkan skop pemberian, sahkan dengan sengaja dan beri makna kepada tamat tempoh sebelum pautan dibina. Keputusan di hadapan anda ialah di mana meletakkan sempadan, bukan sama ada sempadan itu patut wujud.

Tentukan soalan mana yang dijawab oleh pemberian

Mulakan dengan keperluan. Jika orang yang dinamakan mesti mencapai perkhidmatan dan aplikasi sudah mengesahkan orang itu, gateway yang disahkan mengekalkan identiti di titik penguatkuasaan dan tidak memerlukan penerimaan alamat sama sekali. Jika sasarannya ialah ejen build, port lompat pentadbiran atau perkakas yang tidak boleh menyertai log masuk pengguna, pemberian alamat berskop terbatas mungkin satu-satunya kawalan praktikal yang tersedia.

Memilih penerimaan alamat untuk aplikasi yang menghadap pengguna memindahkan masalah kebenaran sebenar ke tempat lain, dan portal kemudian mewarisi kesalahan atas jurang yang tidak pernah ditutupnya.

Hadkan permintaan di pelayan

Pelayar tidak boleh memilih destinasi, port atau awalan. Portal menyelesaikan perkhidmatan daripada rekodnya sendiri dan menyemak hak dengan ujian di sebelah pelayan, iaitu prinsip yang sama yang panduan kebenaran OWASP gunakan pada setiap permintaan. Terbitan alamat juga tergolong pada sempadan yang dilindungi: apabila proksi songsang melaporkan alamat klien, terima hanya rantai proksi yang dikonfigurasikan dan pengendalian pengepalanya yang didokumenkan. Pengepala penghantaran yang dibekalkan pelawat ialah dakwaan tentang asal usul, bukan buktinya.

Kemudian semak sama ada portal dan perkhidmatan melihat sumber yang sama. Terowong berpecah, satu lompatan proksi dan IPv4 berbanding IPv6 boleh memberikan dua destinasi dua alamat berbeza, jadi pemberian yang diaktifkan melalui satu laluan mungkin tidak meliputi permintaan berikutnya.

Tunjukkan pemberian sebelum memasangnya

Membuka pautan sepatutnya memaparkan perkhidmatan yang dicadangkan, sumber yang diperhatikan dan tempoh, dan belum mengubah apa-apa. Langkah tunggal itu menjadikan pautan daripada e-mel sebagai tindakan kepada cadangan, dan ia menghalang bot pratonton atau pengimbas mel daripada memberi akses hanya dengan mengambilnya.

Pengesahan sepatutnya menjadi permintaan yang mengubah keadaan dengan pertahanan silang tapak dan asal yang biasa. Token sepatutnya sekali guna dan dimakan secara atomik pada saat peraturan dipasang, dan rekod sepatutnya merekodkan pemilik, perkhidmatan, alamat, pengecam pemberian dan tamat tempoh tanpa pernah mencatat token mentah.

Penyampaian token memerlukan penjagaan yang sama seperti peraturan itu sendiri. Pautan yang tamat tempoh atau sudah dimakan yang masih menghasilkan peraturan ialah pintu kedua yang dipasang dengan kunci yang sama.

Alamat itu dikongsi walaupun semasa pemberian masih hidup

NAT pejabat, NAT pembawa dan jalan keluar VPN yang dikongsi masing-masing meletakkan beberapa orang di belakang satu alamat. Menerima alamat itu menerima semua orang di belakangnya — setakat menyentuh sempadan seterusnya perkhidmatan —, tanpa membuktikan apa-apa tentang siapa yang memegang akaun yang dijangka oleh perkhidmatan.

Membuang peraturan itu juga bukan pemutusan sejagat. Sambungan yang telah terbentuk, token aplikasi dalam cache dan sesi panjang boleh hidup lebih lama daripada peraturan itu beberapa minit atau jauh lebih lama, jadi jangka hayat yang anda pilih harus mencerminkan apa yang perkhidmatan lakukan selepas penerimaan, bukan hanya berapa lama peraturan itu wujud.

Uji empat kes, dan kedua-dua keluarga alamat

Pemberian hanya sebaik empat kes yang dilaluinya: permintaan baru yang dibenarkan, pemohon yang tidak diluluskan, main semula pautan yang sama, dan permintaan yang sama selepas tamat tempoh.

Kemudian uji setiap keluarga secara berasingan, kerana alamat sumber yang diperhatikan perkhidmatan mungkin berbeza antara keduanya.

dig +short A service.example.com
dig +short AAAA service.example.com
curl -4 -sS -o /dev/null -w "%{http_code}\n" https://service.example.com
curl -6 -sS -o /dev/null -w "%{http_code}\n" https://service.example.com

Hasil yang berguna ialah keputusan penerimaan sementara yang boleh diaudit di bawah kebenaran pengguna biasa, bukan pembukaan kekal yang membawa nama orang yang mengklik dahulu.

Artikel berkaitan