У нататках у вас ёсць common name і адрас, а таксама тры каманды, якія ўсе выглядаюць так, нібы выдаляюць кліента. Толькі адна робіць тое, што вы хочаце, і выбар залежыць ад таго, ці трэба скончыць сесію, якая ідзе цяпер, адмовіць у наступным уваходзе ці забраць права падключацца зусім. Прачытайце ідэнтычнасць, якая ў вас сапраўды ёсць, перш чым чагосьці кранацца, бо пул OpenVPN пазней выдае той жа адрас тунэлю іншай сесіі.

Якая ідэнтычнасць у вас сапраўды ёсць

Файл стану версіі 3 — звычайная адпраўная кропка. Секцыя CLIENT_LIST нясе common name, сапраўдны адрас, лічыльнікі байтаў і час злучэння; секцыя ROUTING TABLE суадносіць віртуальны адрас з common name і часовым штампам апошняй спасылкі. Common name — гэта ўстойлівая ідэнтычнасць. Віртуальны адрас — гэта прызначэнне, а сапраўдны адрас за NAT можа змяняцца паміж сесіямі, пакуль на серверы нічога не змяняецца.

Інтэрфейс кіравання паказвае падобны выгляд праз сваю каманду status і дадае ID кліента на кожную сесію. Менавіта гэтага ID чакае client-kill, і гэта не адрас тунэлю. Калі вам трэба ведаць, які common name атрымаў які адрас у момант злучэння, асяроддзе скрыпта client-connect мае абодва разам з давераным знешнім адрасам, але гэты скрыпт выконваецца як карыстальнік OpenVPN і патрабуе запісванага шляху журнала.

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

Забіць цяпер, адмовіць пры ўваходзе, адклікаць назаўсёды

Абедзве каманды выдалення ў інтэрфейсе кіравання — гэта дзеянні сесіі. kill прымае common name або сапраўдны адрас і порт; client-kill прымае ID кліента і неадкладна завяршае гэты асобнік. Ні адна не з'яўляецца блакіроўкай: выгнаны кліент з сапраўдным сертыфікатам і паролем падключаецца зноў за секунды, што добра, калі вы перавыкарыстоўваеце тэставы peer, і бескарысна, калі ноўтбук укралі.

client-deny — гэта іншы від рашэння. Звычайна ён выдаецца з крукі аўтэнтыфікацыі або client-connect і адхіляе сесію з прычынай, таму падыходзіць для палітыкі, якая адмаўляе ўваход, а не для той, якая перарывае злучэнне. Дакументацыя таксама папярэджвае, што адмова, выдадзеная падчас перагавораў TLS, робіць перагавораны ключ несапраўдным, пакуль існуючая сесія можа працаваць да закрыцця пераходнага акна. Калі патрабаванне ў тым, каб кліент знік цяпер, дакументаваны адказ — client-kill.

Доўгатэрміновае выдаленне знаходзіцца ніжэй за ўсё гэта. Адклічце сертыфікат і пераканайцеся, што crl-verify паказвае на спіс, які сервер сапраўды перазагружае, адключыце канфігурацыйны файл, спецыфічны для кліента, у каталозе ccd або адключыце ўліковы запіс у тым backend, які запытвае крукі аўтэнтыфікацыі. Адкліканне таксама не імгненнае: з прадвызначанымі наладамі reneg-sec усталяваная сесія можа працаваць, пакуль не перагандлюе, так што дзеянне сесіі і дзеянне ўліковых даных дапаўняюць адно аднаго, а не з'яўляюцца альтэрнатывамі.

Ці свабодны сокет кіравання?

Інтэрфейс кіравання абслугоўвае аднаго кліента за раз. Калі GUI або дэман маніторынгу ўжо трымае злучэнне, ваш скрыпт не можа далучыцца побач, і ў залежнасці ад кліента вы можаце выціснуць існуючы, а не чыста пацярпець няўдачу. Яго пароль ідзе адкрытым тэкстам па гэтым соцеце, таму ён належыць лакальнаму адрасу або unix-сокету, ніколі публічнаму інтэрфейсу.

Калі вы не можаце заняць сокет, у вас усё яшчэ ёсць варыянты, і ўсе яны павольнейшыя. Спачатку вызваліце сесію GUI, калі вы ёю кіруеце, або прыміце шлях праз пласт уліковых даных і чакайце наступных перагавораў. Чаго не варта рабіць, дык гэта перазапускаць службу, каб пазбавіцца аднаго кліента, бо гэта скончыць і ўсе іншыя сесіі і знішчыць доказы файла стану для гэтай.

Паслядоўнасць, якую я выконваю на жывым серверы

Далучыцеся, прачытайце бягучы стан, дзейнічайце па ID, які вы толькі што прачыталі, і прачытайце яго зноў. Значэнні, скапіяваныя з дакумента, — самы часты спосаб забіць не таго чалавека.

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

Імя і нумар вышэй — гэта запаўняльнікі, а ID выкарыстоўваюцца паўторна пасля адключэння іншых кліентаў. Пацвердзіце, што радок адсутнічае, перш чым запісаць што-небудзь як зробленае, і праверце, што колькасць падключаных кліентаў змянілася на адзін, а не на некалькі.

Пацвердзіце, што ён застаўся зне

Запішыце common name, адрас тунэлю, знешні адрас і хвіліну выдалення. Калі той жа common name з'явіцца зноў праз хвіліну, дзеянне сесіі спрацавала, а пласт уліковых даных не, і гэта зусім іншы рамонт, чым для каманды, якая так і не набыла моцы.

Затым праверце з боку кліента. Адкліканы сертыфікат павінен праваліцца на наступным рукапацісканні; калі ён усё яшчэ падключаецца, CRL зусім не чытаецца, і гэта знаходка, якую варта паведаміць. Выберыце дзеянне па тым, што трэба скончыць, пацвердзіце другім status і выпраўце пласт уліковых даных, калі адказ мусіць трымацца даўжэй за сесію.

Падобныя артыкулы