Anda mempunyai common name dan alamat dalam nota, serta tiga arahan yang semuanya kelihatan mengeluarkan klien. Hanya satu melakukan apa yang anda mahu, dan pilihan bergantung pada sama ada anda perlu menamatkan sesi yang sedang berjalan sekarang, menolak log masuk seterusnya, atau mengambil hak untuk menyambung sepenuhnya. Baca identiti yang sebenarnya anda pegang sebelum menyentuh apa-apa, kerana kolam OpenVPN memberikan alamat terowong yang sama kepada sesi lain kemudian.

Identiti yang sebenarnya anda pegang

Fail status versi 3 ialah titik permulaan biasa. Bahagian CLIENT_LIST membawa common name, alamat sebenar, pembilang bait dan masa sambungan; bahagian ROUTING TABLE memetakan alamat maya kepada common name dengan cap masa rujukan terakhir. Common name ialah identiti yang stabil. Alamat maya ialah penugasan, dan alamat sebenar di belakang NAT boleh berubah antara sesi tanpa apa-apa berubah pada pelayan.

Antara muka pengurusan memaparkan pandangan serupa melalui arahan status dan menambah ID klien bagi setiap sesi. ID itulah yang dijangka oleh client-kill, dan ia bukan alamat terowong. Jika anda perlu tahu common name mana menerima alamat mana pada masa sambungan, persekitaran skrip client-connect mempunyai kedua-duanya, bersama alamat luar yang dipercayai, tetapi skrip itu berjalan sebagai pengguna OpenVPN dan memerlukan laluan log yang boleh 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

Bunuh sekarang, tolak semasa log masuk, batalkan selamanya

Kedua-dua arahan penyingkiran dalam antara muka pengurusan ialah tindakan sesi. kill mengambil common name atau alamat sebenar dan port; client-kill mengambil ID klien dan menamatkan instans itu serta-merta. Kedua-duanya bukan sekatan: klien yang dikeluarkan dengan sijil dan kata laluan yang sah akan menyambung semula dalam beberapa saat, yang baik apabila anda mengitar semula peer ujian dan tidak berguna apabila komputer riba dicuri.

client-deny ialah jenis keputusan yang berbeza. Ia biasanya dikeluarkan daripada cangkuk pengesahan atau client-connect dan menolak sesi dengan alasan, jadi ia sesuai untuk dasar yang menolak log masuk dan bukannya yang mengganggu sambungan. Dokumentasi juga memberi amaran bahawa penolakan yang dikeluarkan semasa rundingan semula TLS membatalkan kunci yang dirunding semula sementara sesi sedia ada boleh berjalan sehingga tetingkap peralihan ditutup. Jika keperluannya ialah klien sudah tiada sekarang, jawapan yang didokumenkan ialah client-kill.

Penyingkiran kekal terletak di bawah semua ini. Batalkan sijil dan pastikan crl-verify menunjuk kepada senarai yang benar-benar dimuat semula oleh pelayan, lumpuhkan fail konfigurasi khusus klien dalam direktori ccd, atau lumpuhkan akaun dalam mana-mana backend yang ditanya oleh cangkuk pengesahan. Pembatalan juga tidak serta-merta: dengan tetapan reneg-sec lalai, sesi yang telah terbentuk boleh terus berjalan sehingga ia berunding semula, jadi tindakan sesi dan tindakan kelayakan saling melengkapi, bukan alternatif.

Adakah soket pengurusan bebas?

Antara muka pengurusan melayani satu klien pada satu masa. Jika GUI atau daemon pemantauan sudah memegang sambungan, skrip anda tidak boleh menyertai di sisinya, dan bergantung pada klien anda mungkin mengusir yang sedia ada dan bukannya gagal dengan bersih. Kata laluannya bergerak dalam teks biasa pada soket itu, jadi ia milik alamat tempatan atau soket unix, tidak pernah pada antara muka awam.

Apabila anda tidak dapat mengambil soket itu, anda masih mempunyai pilihan, dan semuanya lebih perlahan. Lepaskan sesi GUI dahulu jika anda mengawalnya, atau terima laluan lapisan kelayakan dan tunggu rundingan semula seterusnya. Apa yang anda tidak patut lakukan ialah memulakan semula perkhidmatan untuk membuang satu klien, kerana itu juga menamatkan setiap sesi lain dan memusnahkan bukti fail status untuk sesi ini.

Urutan yang saya jalankan pada pelayan hidup

Sambung, baca keadaan semasa, bertindak atas ID yang baru anda baca, kemudian baca semula. Nilai yang disalin daripada dokumen ialah cara paling biasa untuk membunuh 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 nombor di atas ialah pemegang tempat, dan ID digunakan semula selepas klien lain terputus. Sahkan baris itu tiada sebelum anda mencatat apa-apa sebagai selesai, dan periksa bahawa bilangan klien yang bersambung bergerak satu dan bukan beberapa.

Sahkan ia kekal jauh

Catat common name, alamat terowong, alamat luar dan minit penyingkiran. Jika common name yang sama muncul semula seminit kemudian, tindakan sesi berjaya dan lapisan kelayakan tidak, yang merupakan pembaikan yang sama sekali berbeza daripada arahan yang tidak pernah berkuat kuasa.

Kemudian uji dari sisi klien. Sijil yang dibatalkan sepatutnya gagal pada jabat tangan seterusnya; jika ia masih menyambung, CRL tidak dibaca langsung, dan itulah penemuan yang patut dilaporkan. Pilih tindakan mengikut apa yang perlu anda tamatkan, sahkan dengan status kedua, dan betulkan lapisan kelayakan apabila jawapannya perlu bertahan lebih lama daripada sesi.

Artikel berkaitan