Kuendesha nc -uz dhidi ya OpenVPN seva hupima karibu hakuna kitu, na mwongozo wa OpenBSD unasema hivyo katika tahadhari zake: uchunguzi wa UDP katika hali hiyo huripoti mafanikio ikiwa kitu kinasikiliza au la. Hali ya kutoka huakisi utumaji wa ndani, si hali ya mbali, kwa hivyo msimamizi anayeiamini huweka seva iliyokufa imewekwa alama kuwa nzuri mradi tu jedwali la michakato linaonekana kuaminika. Kuibadilisha huanza kwa kuamua ni swali gani kipimo kinapaswa kujibu, kwa sababu mchakato, msikilizaji, uthibitishaji na ufikivu wa programu ni uchunguzi nne tofauti. Kipimo kinachotaja kimoja wao kinafaidika; kipimo kinachodokeza vyote vinne ni mzigo.

Kipimo cha UDP kinaweza kuona nini na hakiwezi kuona nini

nc -uz hutuma datagramu na kutoka, na hali inayorudisha inaeleza utumaji wa ndani. Bandari iliyofungwa inaweza kujibu kwa ICMP port unreachable, lakini tabia iliyoandikwa ya hali hii ya uchunguzi haibadilishi hilo kuwa kushindwa, na bandari iliyochujwa haitoi jibu kabisa. Kwa hivyo ukimya na mafanikio humaanisha kitu kimoja kwa mpigaji simu.

Hilo hufanya kipimo kuwa jaribio la staki ya ndani, si la seva. Hakiweki kuwa mwenyeji anafikika, bandari imefungwa, mchakato wa OpenVPN unaendesha au mteja anaweza kuthibitisha. Jaribio la muunganisho wa TCP ni imara zaidi kwa sababu kupeana mkono kunatoa jibu la uhakika, lakini tu wakati usambazaji unasikiliza kwa kweli kwenye TCP. Kubadilisha kipimo hadi TCP kwenye nambari hiyo hiyo hujaribu msikilizaji ambaye huenda hayupo, na dhidi ya seva yenye UDP pekee kutashindwa huduma nzuri.

Kuoanisha kipimo na usafiri uliosanidiwa huja kabla ya kuamini mojawapo ya matokeo mawili. Usambazaji wa UDP unahitaji ishara tofauti, si itifaki tofauti.

Wapigaji simu watatu, maswali matatu tofauti

Utayari hutegemea nani anauliza. Msimamizi wa huduma anayeanzisha upya mchakato ulioanguka anahitaji kujua kuwa mfano ulianza na kufunga msikilizaji wake. Kipangaji mzigo anahitaji kujua kuwa mteja anayefika sasa atakubaliwa. Mfumo wa ufuatiliaji unahitaji kujua kuwa njia kutoka mtandao halisi bado inabeba kipindi hadi rasilimali iliyoruhusiwa.

Hivi si kipimo kimoja, na kipimo kimoja hakiwezi kufunika vyote vitatu kwa uaminifu. Chagua mpigaji simu kwanza, kisha ushahidi.

Jenga kipimo kutoka mfano wa sasa

OpenVPN huandika mstari wa kuanza wakati mfano unamaliza uanzishaji, na mstari huo ni ushahidi muhimu kuhusu kuanza kwa ndani. Uisome kutoka kuanza kwa sasa, si kutoka mwisho wa faili inayoongezwa, kwa sababu mafanikio ya wiki iliyopita yanasomwa sawasawa na mafanikio ya dakika moja iliyopita. Seva inaweza pia kumaliza uanzishaji kabla ya mteja yeyote kuwahi kuunganisha, kwa hivyo mstari hausemi kitu kuhusu uthibitishaji.

Kwa kipimo cha kuanza, oanisha hali ya mchakato na ushahidi wa sasa wa kumbukumbu na msikilizaji anayelingana na usafiri uliosanidiwa. Kipimo kinapaswa kushindwa wakati mchakato unaendesha lakini haujamaliza uanzishaji, ambayo inamaanisha kuwa ombi la kumbukumbu lazima liwe limepunguzwa hadi kuanza huku na kitengo hiki.

systemctl is-active openvpn@server
sudo journalctl -u openvpn@server -b --no-pager | grep "Initialization Sequence Completed"
ss -lunp | grep 1194

Matokeo matatu, madai matatu: kitengo kiko hai, kuanza huku kulizalisha mstari wa uanzishaji, na kitu kinashikilia bandari ya UDP. Hakuna hata kimoja kinachosema kuwa mteja anaweza kuunganisha. Viweke kando kwenye ukurasa wa hali ili tukio lisianguke kuwa nukta moja ya kijani.

Vunja kwa makusudi na uangalie kipimo

Kipimo ni cha kuaminika tu baada ya kuona kikishindwa. Simamisha seva, endesha kipimo na uthibitishe matokeo unayotarajia. Kisha ianzishe tena na uthibitishe kuwa kipimo kinapona bila mabadiliko mengine yoyote.

sudo systemctl stop openvpn@server
nc -uz 203.0.113.10 1194; echo "exit=$?"
ss -lunp | grep 1194
sudo systemctl start openvpn@server
ss -lunp | grep 1194

Soma kizuizi mstari kwa mstari. Amri ya netcat huchapisha exit=0 wakati hakuna kitu kilichofungwa, na hiyo ni tatizo lote katika mstari mmoja. Wa kwanza ss hauchapishi kitu, kuanzisha upya kunafanikiwa, na wa pili ss unaonyesha msikilizaji tena. Ikiwa kipimo chako kinapita dhidi ya seva iliyosimamishwa, kinapima staki ya ndani na si kitu kingine.

Kushindwa kinyume pia ni muhimu. Kipimo kinachoshindwa dhidi ya seva nzuri husababisha kuanzisha upya ambako hakukuwa kamwe kuhitajika, na mzunguko wa kuanzisha upya wenyewe ni usumbufu. Jaribu pande zote mbili kabla ya kuunganisha kipimo na kitu chochote kinachoweza kuchukua hatua juu yake.

Mstari wa hali unapaswa kusema nini

Rekodi ni mpaka gani kila kipimo kinafunika: mchakato, msikilizaji, uthibitishaji au programu. Kipimo kimoja mara chache hufunika zaidi ya kimoja, na ukurasa wa hali unaobana yote kuwa “up” huficha tofauti inayojalisha wakati wa tukio. Kwa njia ya mtandao, tumia mteja halisi mwenye utambulisho maalum, mruhusu kumaliza kupeana mkono na operesheni moja inayoruhusiwa isiyo na madhara, kisha tenganisha. Hiyo hufunza chaneli ya udhibiti, sera ya uthibitishaji na msikilizaji katika hatua moja.

Weka utambulisho huo kando na watumiaji halisi na upe ruhusa za chini kabisa ambazo kipimo kinahitaji. Kipimo cha utayari chenye ufikivu mpana ni uso mpya wa shambulio ulioongezwa kwa ajili ya urahisi. Zungusha vitambulisho vyake kama akaunti nyingine yoyote, kwa sababu kipimo kinachoacha kuthibitisha kinaonekana sawasawa na seva iliyoacha kupokea wateja.

Taja mpaka katika maandishi ya tahadhari, ili mwitikiaji wa kwanza ajue kama aangalie kitengo, soketi, cheti au njia. Kipimo kisichoweza kusema kilichothibitisha kitaaminiwa kwa sababu isiyo sahihi, na ndivyo kipimo cha netcat kilivyookoka hapo awali.

Makala zinazohusiana