OpenConnect csd-wrapper: audit skrip sebelum masuk
Perlakukan --csd-wrapper sebagai batas eksekusi kode: audit skripnya, pilih pengguna csd khusus, dan pastikan apa yang benar-benar dilihat gateway.
Menambahkan --csd-wrapper ke profil menyerahkan skrip lokal kepada daemon yang menjalankannya saat login, jadi keputusan di depan Anda adalah tinjauan kode, bukan tombol preferensi. Opsi ini ada agar komponen pemeriksaan host milik gateway dapat diganti, dan menerima jalur ke skrip yang Anda sediakan. Semua yang di bawah mengasumsikan pemilik penerapan sudah menyebutkan pemeriksaan postur mana yang diperlukan; jika bagian itu masih terbuka, selesaikan dulu. Panduannya punya empat langkah: temukan tahap yang gagal, baca skripnya, pilih identitas yang menjalankannya, dan buktikan hasilnya.
Langkah 1: Temukan tahap yang gagal
Pesan terakhir klien biasanya tentang cookie, yang merupakan ujung rantai dan bukan awalnya. Login HTTPS, pemeriksaan sertifikat server, pertukaran autentikasi, dan komponen postur semuanya berada di depan pesan itu.
Catat versi dan alamat login yang dipakai, lalu ulangi percobaan dengan keluaran rinci yang disimpan di terminal Anda sendiri. Baca kesalahan pertama yang bukan percobaan ulang, bukan baris terakhir transkrip. Jika log berhenti sebelum komponen penilaian apa pun disebut, wrapper belum menjadi masalah Anda. Menambahkannya pada titik itu hanya memperlebar permukaan yang harus Anda pertahankan nanti.
openconnect --version
openconnect --verbose --user="$VPN_USER" vpn.example.com </dev/nullSimpan transkrip secara lokal, karena cookie dan respons autentikasi adalah bahan akses. Jejak yang ditempel ke utas obrolan adalah kebocoran kredensial bahkan ketika langkah penilaian tampak tidak berbahaya. Bagikan teks kesalahan dan titik dalam alur tempat ia muncul, jangan pernah muatannya.
Langkah 2: Baca skrip sebelum masuk ke profil
Wrapper hanya seandalkan revisi yang Anda tinjau, jadi patok revisi itu dan simpan hash-nya di samping catatan persetujuan. Dua perintah di bawah memberi Anda sidik jari dan pemeriksaan sintaks murah sebelum membaca satu baris pun. Keduanya juga memberi orang berikutnya rujukan tetap, yang penting bila berkas hidup di luar manajemen paket. Tidak satu pun perintah memberi tahu apa yang dilakukan skrip, jadi jalankan dan teruslah membaca.
sha256sum ./vpn-csd-wrapper.sh
bash -n ./vpn-csd-wrapper.shBaca seluruh berkas dengan empat pertanyaan di kepala: apakah ia melakukan panggilan HTTP keluar, apakah ia membaca berkas kredensial atau variabel lingkungan, apakah ia menulis di luar direktori sementara, dan apakah ada cabang yang melaporkan postur lulus tanpa mengukur apa pun. Pola terakhir itu adalah pintasan kebijakan dengan baris log yang menempel. Wrapper hasil salinan cenderung menyelundupkannya di balik pemeriksaan yang tampak masuk akal. Jika skrip memutuskan perangkat baik-baik saja sebelum melihat perangkatnya, berhentilah di situ.
Periksa juga muatan terpaket, karena header yang terbaca tidak membuktikan apa pun tentang sisa berkas. Mengunduh skrip dari utas forum tidak membuatnya tepercaya hanya karena namanya menggaungkan komponen pemeriksaan host yang nyata. Catat siapa yang memasangnya, dari mana asalnya, dan bagaimana ia akan diperbarui.
grep -nE 'base64 -d|xxd -r|eval |curl |wget ' ./vpn-csd-wrapper.shLangkah 3: Pilih identitas yang menjalankan wrapper
--csd-user menurunkan hak istimewa saat program CSD, TNCC, atau HIP berjalan. Akun itu bagian dari pengaturan eksekusi lokal, bukan nama pengguna yang dikirim ke gateway.
Beri wrapper akun khusus tanpa shell interaktif, tanpa hak sudo, dan tanpa keanggotaan grup yang tidak diperlukannya. Beri akses baca ke skrip dan ke berkas tertentu yang diperiksanya, lalu uji penurunan hak itu sebelum menyentuh profil VPN. Menemukan masalah di sini lebih murah daripada menemukannya di dalam klien.
sudo -u vpn-csd /usr/local/libexec/vpn-csd-wrapper.shMenurunkan hak istimewa membatasi kerusakan yang bisa dilakukan skrip buruk. Namun itu tidak meninjau kodenya, tidak membuat laporannya jujur, dan tidak membuktikan bahwa administrator gateway menerima penerapan ini sebagai pemenuhan kebijakan perangkat.
Langkah 4: Jaga perubahan tetap dapat dibalik
Cadangkan profil sebelum mengeditnya, dan simpan wrapper dalam kendali versi agar pengembalian memulihkan hash yang dikenal alih-alih mencari salinan. Catat jalur skrip, hash, pengguna eksekusi, dan pemberi persetujuan di satu tempat.
Untuk mengembalikan, hapus opsinya, jalankan ulang klien, dan pastikan kesalahan aslinya kembali. Jika gateway masih menolak login setelah pengembalian, ada hal lain yang juga berubah, dan menemukan perbedaan itu datang sebelum mencoba wrapper lagi. Simpan salinan sebelumnya sepanjang jendela perubahan, yang bagi sebagian besar tim berarti sampai jendela pemeliharaan berikutnya lewat.
Setelah peluncuran berhasil, periksa dua hal alih-alih satu: terowongan menyala, dan perangkat yang seharusnya gagal dalam pemeriksaan postur masih ditolak. Koneksi yang berfungsi untuk semua orang bukan bukti bahwa penilaian bertahan dari perubahan Anda.
Pintasan yang menciptakan masalah kedua
Jangan biarkan pembantu melaporkan status patuh tanpa menjalankan pemeriksaan yang diwajibkan, dan jangan menimpa identitas platform agar cocok dengan sistem operasi lain. Mengaku platform berbeda bukan bukti bahwa perangkat sebenarnya memenuhi kebijakan. Itu meninggalkan Anda dengan klien yang berbohong pada setiap login berikutnya.
Menonaktifkan verifikasi server, memutar ulang cookie lama, dan menumpuk skrip yang belum ditinjau semuanya menukar kegagalan yang terlihat dengan yang tak terlihat. Jika klien terpasang tidak dapat menyelesaikan alur yang didukung, minta alternatif yang disetujui alih-alih membengkokkan yang Anda miliki.
Panduan OpenConnect mendokumentasikan --csd-wrapper dan --csd-user secara terpisah, dan itulah petunjuk yang penting: skrip dan identitas adalah dua keputusan. Tinjau keduanya secara terpisah dan catat keduanya. Lalu prompt login berhenti menjadi teka-teki yang Anda pecahkan dengan menempel kode.