Menambah --csd-wrapper pada profil menyerahkan skrip tempatan kepada daemon yang menjalankannya semasa log masuk, jadi keputusan di hadapan anda ialah semakan kod, bukan togol keutamaan. Pilihan ini wujud supaya komponen pemeriksaan hos gateway boleh diganti, dan ia menerima laluan kepada skrip yang anda sediakan. Semua di bawah menganggap pemilik penggunaan sudah menyatakan pemeriksaan postur mana yang diperlukan; jika bahagian itu masih terbuka, selesaikannya dahulu. Buku panduan mempunyai empat langkah: cari peringkat yang gagal, baca skrip, pilih identiti yang menjalankannya, dan buktikan hasilnya.

Langkah 1: Cari peringkat yang gagal

Mesej terakhir klien biasanya tentang kuki, iaitu hujung rantaian dan bukan permulaannya. Log masuk HTTPS, pemeriksaan sijil pelayan, pertukaran pengesahan dan komponen postur semuanya berada di hadapan mesej itu.

Catat versi dan alamat log masuk yang digunakan, kemudian ulangi percubaan dengan output terperinci disimpan pada terminal anda sendiri. Baca ralat pertama yang bukan percubaan semula, bukan baris terakhir transkrip. Jika log berhenti sebelum mana-mana komponen penilaian dinamakan, pembalut itu belum menjadi masalah anda. Menambahnya pada ketika itu hanya meluaskan permukaan yang perlu anda pertahankan kemudian.

openconnect --version
openconnect --verbose --user="$VPN_USER" vpn.example.com </dev/null

Simpan transkrip secara tempatan, kerana kuki dan respons pengesahan ialah bahan akses. Jejak yang ditampal dalam utas sembang ialah kebocoran kelayakan walaupun langkah penilaian kelihatan tidak berbahaya. Kongsi teks ralat dan titik dalam aliran tempat ia muncul, jangan sekali-kali muatannya.

Langkah 2: Baca skrip sebelum ia masuk ke profil

Pembalut hanya boleh dipercayai setakat semakan yang anda teliti, jadi pin semakan itu dan simpan hashnya di sebelah nota kelulusan. Dua arahan di bawah memberi anda cap jari dan pemeriksaan sintaks murah sebelum anda membaca satu baris pun. Ia juga memberi orang seterusnya rujukan tetap, yang penting apabila fail itu hidup di luar pengurusan pakej. Tiada arahan memberitahu apa yang skrip lakukan, jadi jalankannya dan terus membaca.

sha256sum ./vpn-csd-wrapper.sh
bash -n ./vpn-csd-wrapper.sh

Baca seluruh fail dengan empat soalan di fikiran: adakah ia membuat panggilan HTTP keluar, adakah ia membaca fail kelayakan atau pemboleh ubah persekitaran, adakah ia menulis di luar direktori sementara, dan adakah mana-mana cabang melaporkan postur lulus tanpa mengukur apa-apa. Corak terakhir itu ialah pemintasan dasar dengan baris log terlekat. Pembalut yang disalin cenderung menyeludupkannya di sebalik pemeriksaan yang kelihatan munasabah. Jika skrip memutuskan peranti itu baik sebelum melihat peranti, berhenti di situ.

Periksa juga muatan yang dibungkus, kerana pengepala yang boleh dibaca tidak membuktikan apa-apa tentang baki fail. Memuat turun skrip dari utas forum tidak menjadikannya boleh dipercayai hanya kerana namanya bergema komponen pemeriksaan hos sebenar. Catat siapa yang memasangnya, dari mana ia datang dan bagaimana ia akan dikemas kini.

grep -nE 'base64 -d|xxd -r|eval |curl |wget ' ./vpn-csd-wrapper.sh

Langkah 3: Pilih identiti yang menjalankan pembalut

--csd-user menurunkan keistimewaan semasa program CSD, TNCC atau HIP dijalankan. Akaun itu sebahagian daripada susunan pelaksanaan tempatan, bukan nama pengguna yang diserahkan kepada gateway.

Beri pembalut akaun khusus tanpa shell interaktif, tanpa hak sudo dan tanpa keahlian kumpulan yang tidak diperlukan. Beri akses baca kepada skrip dan fail tertentu yang diperiksanya, kemudian uji penurunan keistimewaan sebelum menyentuh profil VPN. Mencari masalah di sini lebih murah daripada mencarinya di dalam klien.

sudo -u vpn-csd /usr/local/libexec/vpn-csd-wrapper.sh

Menurunkan keistimewaan mengehadkan kerosakan yang boleh dilakukan oleh skrip buruk. Namun ia tidak menyemak kod itu, tidak menjadikan laporan itu benar, dan tidak membuktikan pentadbir gateway menerima pelaksanaan ini sebagai memenuhi dasar peranti.

Langkah 4: Kekalkan perubahan boleh diterbalikkan

Buat sandaran profil sebelum menyuntingnya, dan simpan pembalut di bawah kawalan versi supaya pengunduran memulihkan hash yang diketahui dan bukannya mencari salinan. Catat laluan skrip, hash, pengguna pelaksanaan dan pelulus dalam satu tempat.

Untuk mengundur, buang pilihan itu, mulakan semula klien dan sahkan ralat asal kembali. Jika gateway masih menolak log masuk selepas pengunduran, ada perkara lain juga berubah, dan mencari perbezaan itu datang sebelum mencuba pembalut sekali lagi. Simpan salinan sebelumnya sepanjang tetingkap perubahan, yang bagi kebanyakan pasukan bermaksud sehingga tetingkap penyelenggaraan seterusnya berlalu.

Selepas pelaksanaan berjaya, periksa dua perkara bukan satu: terowong naik, dan peranti yang sepatutnya gagal dalam pemeriksaan postur masih ditolak. Sambungan yang berfungsi untuk semua orang bukan bukti bahawa penilaian itu bertahan daripada perubahan anda.

Pintasan yang mencipta masalah kedua

Jangan biarkan pembantu melaporkan keadaan patuh tanpa menjalankan pemeriksaan yang diperlukan, dan jangan timpa identiti platform untuk sepadan dengan sistem pengendalian lain. Menuntut platform yang berbeza bukan bukti bahawa peranti sebenar memenuhi dasar. Ia meninggalkan anda dengan klien yang berbohong pada setiap log masuk akan datang.

Mematikan pengesahan pelayan, memainkan semula kuki lama dan menyusun skrip yang belum disemak semuanya menukar kegagalan yang kelihatan dengan yang tidak kelihatan. Jika klien yang dipasang tidak dapat melengkapkan aliran yang disokong, minta alternatif yang diluluskan dan bukannya membengkokkan yang anda ada.

Manual OpenConnect mendokumenkan --csd-wrapper dan --csd-user secara berasingan, dan itulah petunjuk yang penting: skrip dan identiti ialah dua keputusan. Semak kedua-duanya secara berasingan dan tulis kedua-duanya. Kemudian gesaan log masuk berhenti menjadi teka-teki yang anda selesaikan dengan menampal kod.

Artikel berkaitan