Anda punya common name dan alamat di catatan, serta tiga perintah yang semuanya tampak menghapus klien. Hanya satu yang melakukan yang Anda inginkan, dan pilihannya bergantung pada apakah Anda perlu mengakhiri sesi yang berjalan sekarang, menolak login berikutnya, atau mencabut hak untuk menyambung sama sekali. Baca identitas yang benar-benar Anda pegang sebelum menyentuh apa pun, karena kumpulan OpenVPN memberikan alamat tunnel yang sama ke sesi lain nanti.

Identitas mana yang sebenarnya Anda pegang

Berkas status versi 3 adalah titik awal yang biasa. Bagian CLIENT_LIST memuat common name, alamat asli, penghitung byte, dan waktu koneksi; bagian ROUTING TABLE memetakan alamat virtual ke common name dengan stempel waktu rujukan terakhir. Common name adalah identitas yang stabil. Alamat virtual adalah penetapan, dan alamat asli di balik NAT dapat berubah antar sesi tanpa ada yang berubah di server.

Antarmuka manajemen menampilkan tampilan serupa melalui perintah status dan menambahkan ID klien per sesi. ID itulah yang diharapkan client-kill, dan itu bukan alamat tunnel. Jika Anda perlu tahu common name mana menerima alamat mana saat koneksi, lingkungan skrip client-connect memiliki keduanya, bersama alamat luar yang tepercaya, tetapi skrip itu berjalan sebagai pengguna OpenVPN dan memerlukan jalur log yang dapat ditulis.

What you holdWhere it came fromWhat it can act on
Common nameCLIENT_LIST, or the auth hookkill, and credential revocation
Client IDstatus on the management socketclient-kill, that one session
Tunnel addressROUTING TABLE, client-connect environmentNothing durable, the address is recycled

Matikan sekarang, tolak saat login, cabut selamanya

Kedua perintah penghapusan di antarmuka manajemen adalah tindakan sesi. kill mengambil common name atau alamat asli dan port; client-kill mengambil ID klien dan mengakhiri instans itu segera. Keduanya bukan blokir: klien yang dikeluarkan dengan sertifikat dan kata sandi yang valid akan menyambung lagi dalam hitungan detik, yang baik saat Anda mendaur ulang peer uji dan tidak berguna saat laptop dicuri.

client-deny adalah jenis keputusan yang berbeda. Biasanya dikeluarkan dari hook autentikasi atau client-connect dan menolak sesi dengan alasan, sehingga cocok untuk kebijakan yang menolak login, bukan yang menyela koneksi. Dokumentasi juga memperingatkan bahwa penolakan yang dikeluarkan selama negosiasi ulang TLS membatalkan kunci hasil negosiasi ulang sementara sesi yang ada dapat terus berjalan sampai jendela transisi ditutup. Jika persyaratannya adalah klien hilang sekarang, jawaban yang terdokumentasi adalah client-kill.

Penghapusan permanen berada di bawah semua ini. Cabut sertifikat dan pastikan crl-verify menunjuk ke daftar yang benar-benar dimuat ulang server, nonaktifkan berkas konfigurasi khusus klien di direktori ccd, atau nonaktifkan akun di backend mana pun yang ditanyakan hook autentikasi. Pencabutan juga tidak instan: dengan pengaturan reneg-sec bawaan, sesi yang sudah terbentuk dapat terus berjalan sampai negosiasi ulang, jadi tindakan sesi dan tindakan kredensial saling melengkapi, bukan alternatif.

Apakah soket manajemen bebas?

Antarmuka manajemen melayani satu klien pada satu waktu. Jika GUI atau daemon pemantau sudah memegang koneksi, skrip Anda tidak dapat menempel di sampingnya, dan tergantung kliennya Anda mungkin mengusir yang sudah ada alih-alih gagal dengan bersih. Kata sandinya berjalan dalam teks polos pada soket itu, jadi tempatnya di alamat lokal atau soket unix, tidak pernah di antarmuka publik.

Ketika Anda tidak dapat mengambil soket, Anda masih punya pilihan, dan semuanya lebih lambat. Lepaskan dulu sesi GUI jika Anda mengendalikannya, atau terima jalur lapisan kredensial dan tunggu negosiasi ulang berikutnya. Yang seharusnya tidak Anda lakukan adalah memulai ulang layanan untuk membuang satu klien, karena itu juga mengakhiri semua sesi lain dan merusak bukti berkas status untuk sesi ini.

Urutan yang saya jalankan di server aktif

Tempel, baca keadaan saat ini, bertindaklah atas ID yang baru Anda baca, lalu baca lagi. Nilai yang disalin dari dokumen adalah cara paling umum untuk mematikan orang yang salah.

status                     # note the client ID and common name
client-kill 3              # end that session now
kill Test-Client           # alternative: by common name
status                     # confirm the session is gone

Nama dan nomor di atas adalah tempat penampung, dan ID dipakai ulang setelah klien lain terputus. Pastikan baris itu tidak ada sebelum Anda mencatat apa pun sebagai selesai, dan periksa bahwa jumlah klien yang terhubung bergeser satu, bukan beberapa.

Pastikan ia tetap pergi

Catat common name, alamat tunnel, alamat luar, dan menit penghapusan. Jika common name yang sama muncul lagi satu menit kemudian, tindakan sesi berhasil dan lapisan kredensial tidak, yang merupakan perbaikan sama sekali berbeda dari perintah yang tidak pernah berlaku.

Lalu uji dari sisi klien. Sertifikat yang dicabut seharusnya gagal pada handshake berikutnya; jika masih tersambung, CRL sama sekali tidak dibaca, dan itulah temuan yang layak dilaporkan. Pilih tindakan sesuai yang perlu Anda akhiri, konfirmasi dengan status kedua, dan perbaiki lapisan kredensial ketika jawabannya harus bertahan lebih lama daripada sesi.

Artikel terkait