ఒక OpenVPN క్లయింట్ను తొలగించడం: kill, deny లేక సర్టిఫికెట్ రద్దా?
OpenVPN యొక్క మూడు చర్యలు క్లైంట్ను తొలగిస్తాయి, కానీ ప్రతి ఒక్కటి వేరే దాన్ని ముగిస్తుంది: నడుస్తున్న సెషన్, ఒక లాగిన్ ప్రయత్నం, లేక మళ్లీ కనెక్ట్ అయ్యే హక్కు. గుర్తింపు ప్రకారం ఎంచుకోండి.
మీ నోట్స్లో ఒక common name మరియు ఒక చిరునామా ఉన్నాయి, మరియు అన్నీ క్లైంట్ను తొలగిస్తున్నట్టు కనిపించే మూడు ఆదేశాలు ఉన్నాయి. మీకు కావాల్సిన పని ఒకటే చేస్తుంది, మరియు ఎంపిక ఇప్పుడు నడుస్తున్న సెషన్ను ముగించాలా, తదుపరి లాగిన్ను నిరాకరించాలా, లేక కనెక్ట్ అయ్యే హక్కును పూర్తిగా తీసేయాలా అనే దానిపై ఆధారపడుతుంది. ఏదైనా తాకే ముందు మీకు నిజంగా ఉన్న గుర్తింపును చదవండి, ఎందుకంటే OpenVPN పూల్ తర్వాత అదే టన్నెల్ చిరునామాను మరో సెషన్కు ఇస్తుంది.
నిజంగా మీకు ఏ గుర్తింపు ఉంది
వెర్షన్ 3 స్థితి ఫైల్ సాధారణ ప్రారంభం. CLIENT_LIST విభాగంలో common name, నిజమైన చిరునామా, బైట్ కౌంటర్లు మరియు కనెక్ట్ సమయం ఉంటాయి; ROUTING TABLE విభాగం వర్చువల్ చిరునామాను common name తో చివరి సూచన సమయ ముద్రతో కలుపుతుంది. common name స్థిరమైన గుర్తింపు. వర్చువల్ చిరునామా ఒక కేటాయింపు, మరియు NAT వెనుక నిజమైన చిరునామా సెషన్ల మధ్య మారవచ్చు, సర్వర్లో ఏమీ మారకుండా.
నిర్వహణ ఇంటర్ఫేస్ తన status ఆదేశం ద్వారా ఇలాంటి దృశ్యాన్ని చూపిస్తుంది మరియు ప్రతి సెషన్కు క్లయింట్ ID జోడిస్తుంది. client-kill సరిగ్గా ఆ ID ను ఆశిస్తుంది, అది టన్నెల్ చిరునామా కాదు. కనెక్ట్ అయ్యే సమయంలో ఏ common name కు ఏ చిరునామా వచ్చిందో తెలుసుకోవాలంటే client-connect స్క్రిప్ట్ పరిసరంలో రెండూ నమ్మదగిన బాహ్య చిరునామాతో పాటు ఉంటాయి, కానీ ఆ స్క్రిప్ట్ OpenVPN వినియోగదారుగా నడుస్తుంది మరియు రాయగలిగే లాగ్ మార్గం అవసరం.
| What you hold | Where it came from | What it can act on |
|---|---|---|
| Common name | CLIENT_LIST, or the auth hook | kill, and credential revocation |
| Client ID | status on the management socket | client-kill, that one session |
| Tunnel address | ROUTING TABLE, client-connect environment | Nothing durable, the address is recycled |
ఇప్పుడే చంపండి, లాగిన్లో నిరాకరించండి, శాశ్వతంగా రద్దు చేయండి
నిర్వహణ ఇంటర్ఫేస్ లో రెండు తొలగింపు ఆదేశాలు సెషన్ చర్యలు. kill ఒక common name లేక నిజమైన చిరునామా మరియు పోర్ట్ తీసుకుంటుంది; client-kill క్లయింట్ ID తీసుకుని ఆ ఇన్స్టాన్స్ను వెంటనే ముగిస్తుంది. రెండూ అడ్డంకి కావు: చెల్లుబాటు అయ్యే సర్టిఫికెట్ మరియు పాస్వర్డ్ ఉన్న తొలగించిన క్లయింట్ కొన్ని సెకన్లలో మళ్లీ కనెక్ట్ అవుతుంది, ఇది పరీక్ష peer ను మళ్లీ వాడేటప్పుడు మంచిది మరియు ల్యాప్టాప్ దొంగిలించబడినప్పుడు పనికిరానిది.
client-deny మరో రకమైన నిర్ణయం. సాధారణంగా ఇది authentication లేక client-connect హుక్ నుండి జారీ అయి కారణంతో సెషన్ను నిరాకరిస్తుంది, కాబట్టి ఇది లాగిన్ను నిరాకరించే విధానానికి సరిపోతుంది, కనెక్షన్ను తెగతెంపులు చేసే విధానానికి కాదు. పత్రాలు ఇది కూడా హెచ్చరిస్తాయి: TLS పునర్ చర్చ సమయంలో జారీ చేసిన నిరాకరణ పునర్ నిర్ణయించిన కీని చెల్లనిదిగా చేస్తుంది, ఉన్న సెషన్ మాత్రం మార్పిడి విండో మూసుకునే వరకు కొనసాగవచ్చు. క్లయింట్ ఇప్పుడే వెళ్లిపోవాలి అనేది అవసరమైతే, పత్రీకరించిన సమాధానం client-kill.
శాశ్వత తొలగింపు ఇవన్నింటికీ కింద ఉంది. సర్టిఫికెట్ రద్దు చేయండి మరియు crl-verify సర్వర్ నిజంగా మళ్లీ లోడ్ చేసే జాబితాను సూచిస్తుందని నిర్ధారించుకోండి, ccd డైరెక్టరీలోని క్లయింట్-నిర్దిష్ట కాన్ఫిగరేషన్ ఫైల్ను నిలిపివేయండి, లేక authentication హుక్ అడిగే 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 తో నిర్ధారించుకోండి, మరియు సమాధానం సెషన్ కంటే ఎక్కువ కాలం నిలవాల్సి వచ్చినప్పుడు ఆధారాల పొరను సరిచేయండి.