Kí ni ìdí tí kóòdù ìlò-ẹ̀ẹ̀kan tó tọ́ ṣì kùnà ní ìwọlé VPN
Kóòdù tí a kọ̀ máa ń jẹ́ ìṣòro ní ìtòlẹ́sẹẹsẹ ìbéèrè, ìforúkọsílẹ̀ tàbí àkókò, kì í ṣe kóòdù tí kò tọ́. Yẹ̀wò àwọn wọ̀nyí ní ìtòlẹ́sẹẹsẹ kí o tó forúkọ sílẹ̀ lẹ́ẹ̀kan sí i.
O ṣí VPN client, o tẹ ọ̀rọ̀ ìkọ̀kọ̀, àwọn nọ́mbà mẹ́fà láti ẹ̀rọ ìjẹ́rìí rẹ sì padà wá bí aláìwúlò — lẹ́ẹ̀mejì, lẹ́yìn náà ní ìgbà kẹta. Kò sí ohun tó yí padà nínú àkọsílẹ̀ láti àná, nítorí náà ìmọ̀lára àkọ́kọ́ ni láti pa àkọsílẹ̀ inú ẹ̀rọ ìjẹ́rìí rẹ́ kí o sì tún ṣe àyẹ̀wò rẹ̀ — ní ọ̀pọ̀ ìgbà ìyẹn ni àtúnṣe tí kò tọ́. Kóòdù ìlò-ẹ̀ẹ̀kan kì í ṣe ọ̀rọ̀ ìkọ̀kọ̀ kejì: ẹnubodè gbọ́dọ̀ béèrè fún un ní ìgbésẹ̀ pàtó kan, láti inú àkọsílẹ̀ tí a forúkọ sílẹ̀ pàtó kan, nínú àlàfo àkókò pàtó kan, àti pé ọ̀pọ̀ jùlọ àwọn ìkọ̀ ni ó ń ṣẹlẹ̀ kí a tó fi àwọn nọ́mbà wé ara wọn. Wá ìgbésẹ̀ tí o wà nínú rẹ̀ kí o tó fi ọwọ́ kan ìforúkọsílẹ̀.
Ìtòlẹ́sẹẹsẹ ìbéèrè sọ ìṣàn tí o wà nínú rẹ̀
Àwọn ọ̀nà mẹ́ta ń bo fẹ́rẹ̀ẹ́ gbogbo ìwọlé VPN tí ó ní kóòdù. Nínú ọ̀nà ìgbésẹ̀ méjì, client fi ọ̀rọ̀ ìkọ̀kọ̀ ránṣẹ́, server gbé ìpèńija jáde, client sì tún béèrè. Nínú ọ̀nà àpapọ̀, ẹnubodè fẹ́ ọ̀rọ̀ ìkọ̀kọ̀ àti kóòdù nínú ìfiránṣẹ́ kan ṣoṣo — nígbà mìíràn a so wọ́n pọ̀, nígbà mìíràn lẹ́yìn ohun ìpín tí ẹni tó ń ṣiṣẹ́ nìkan ń kọ sílẹ̀. Nínú ọ̀nà browser, client kò ní pápá rárá: kóòdù náà ń lọ sí ojú-ìwé wẹ́ẹ̀bù, tàbí ìfọwọ́sí títì kan rọ́pò rẹ̀, client desktop sì ń dúró de èsì.
Ọ̀nà tí kò tọ́ dà bí kóòdù burúkú. Fi kóòdù tuntun mọ́ pápá tí a yà sọ́tọ̀ fún ọ̀rọ̀ ìkọ̀kọ̀ nìkan, server yóò kà á gẹ́gẹ́ bí apá kan ọ̀rọ̀ ìkọ̀kọ̀. Ní ẹ̀gbẹ́ client, OpenVPN 2.4 àti àwọn tó tẹ̀le ń jẹ́ kí ìyàtọ̀ hàn: server tí ó dáhùn pẹ̀lú AUTH_FAILED,CRV1: ń retí ìdáhùn ìpèńija, nítorí náà profile nílò static-challenge tàbí fáìlì ọ̀rọ̀ ìkọ̀kọ̀ ní ọ̀nà SCRV1:. Profile àtijọ́ tí ó kàn ní auth-user-pass yóò jẹ́rìí ọ̀rọ̀ ìkọ̀kọ̀ kí ó sì dúró, èyí tí ó dà bí ìkùnà OTP nínú àkọsílẹ̀ bí ó tilẹ̀ jẹ́ pé kò sí kóòdù tí a ránṣẹ́.
Ó yẹ kí a dárúkọ WireGuard gẹ́gẹ́ bí ìyàsọ́tọ̀: ó ń jẹ́rìí àwọn bọ́tìnì kọ́kọ́rọ́ kì í ṣe ènìyàn, nítorí náà kò sí pápá fún kóòdù. Bí olùpèsè kan bá polówá irú rẹ̀, ohun kan ní òde ojú-ọ̀nà ni ó ń gbà á.
Ohun tí server ń ṣe pẹ̀lú nọ́mbà mẹ́fà
Àwọn kóòdù tí ó dá lórí àkókò tẹ̀lé RFC 6238, èyí tí ó fi ìkọ́lé àtijọ́ tí ó dá lórí kíkà láti RFC 4226 pamọ́: HMAC lórí ohun tí ń gbéra, tí a gé sí nọ́mbà mẹ́fà ní àkọ́kọ́. Nínú TOTP ohun tí ń gbéra ni àkókò Unix lọ́wọ́lọ́wọ́ tí a pín pẹ̀lú ìgbésẹ̀ kan, 30 ṣẹ́kọ̀ndì àyàfi bí olùṣiṣẹ́ kò bá yí i padà. Olùjẹ́rìí kì í fi àwọn nọ́mbà rẹ wé iye tí a fipamọ́ rí; ó ń tún kóòdù tí a retí kà láti inú irúgbìn tí a pín, ó sì sábà gba àwọn ìgbésẹ̀ tó wà lẹ́gbẹ̀ẹ́ pẹ̀lú, nítorí náà ìrìn àjò tí ó lọ́ra kì í mú ìwọlé kùnà.
Àwọn àbájáde méjì ni a kò ṣàkíyèsí. Àgbègbè àkókò fọ́nù kò ṣe pàtàkì, nítorí irúgbìn kì í rí aago àdúgbò rí — ìyàtọ̀ sí UTC gidi nìkan ni ó ṣe pàtàkì, ẹ̀rọ tí ó ń lọ síwájú ní ìṣẹ́jú méjì yóò kùnà ní gbogbo kóòdù bí ó tilẹ̀ ń fi ìkàsí ẹ̀yìn tí ó mọ́ hàn. Kóòdù sì jẹ́ ìlò-ẹ̀ẹ̀kan nípasẹ̀ àpẹẹrẹ: olùjẹ́rìí ń rántí iye kíkà tí ó gbà gbẹ̀yìn fún irúgbìn yẹn, nítorí náà àwọn nọ́mbà kan náà tí a tún fi ránṣẹ́ ni a kọ̀ pàápàá nínú àlàfo kan náà. Client tí ó tún gbìyànjú lẹ́yìn àkókò tí ó parí lè jó kóòdù tí ó ṣẹ̀ṣẹ̀ ránṣẹ́.
Àwọn àmì tí ó dá lórí kíkà ń gbé kíkà wọn lọ pẹ̀lú gbogbo ìtẹ̀, nítorí náà wọ́n jáde kúrò nínú ìbámu lẹ́yìn tí a ti dá àwọn kóòdù ṣùgbọ́n tí a kò ránṣẹ́ wọn rí; àtúnṣe tí ó wọ́pọ̀ ni àlàfo àtúnbámu tí ó gba àwọn iye díẹ̀ síwájú. Bí olùṣiṣẹ́ bá forúkọ HOTP sílẹ̀ tí app rẹ sì ń fi TOTP hàn, gbogbo iye kò tọ́ ní ọ̀nà tí ó dà bí ìṣòro aago. URI ìpèsè lẹ́yìn kóòdù QR sọ irú, àwọn nọ́mbà, àkókò àti hash.
Àwọn ìkùnà tí ó dà bí kóòdù tí kò tọ́
Àkọsílẹ̀ tí a forúkọ sílẹ̀ ni ẹlẹ́bi tí ó wọ́pọ̀ jùlọ. Àwọn app ìjẹ́rìí ń fi àmì sí àwọn àkọsílẹ̀ nípasẹ̀ olùgbéjáde àti àkọsílẹ̀, nítorí náà ẹnikẹ́ni tí ó ní ìdánimọ̀ méjì lórí VPN kan náà lè ní àkọsílẹ̀ méjì tí àmì wọn yàtọ̀ ní lẹ́tà kan. Kóòdù wúlò fún irúgbìn tí ó dá a nìkan, kì í ṣe fún ohun mìíràn. Fi àmì tó wà lórí fọ́nù wé orúkọ olùmúlò tí server ń kọ sílẹ̀, kì í ṣe ohun tí o rántí pé o tẹ̀.
Ẹ̀kejì ni àkójọ àwọn ìpín tí kò bámu. Irúgbìn tí a forúkọ sílẹ̀ pẹ̀lú nọ́mbà mẹ́jọ, àkókò ṣẹ́kọ̀ndì 60 tàbí SHA-256 ń fúnni ní àwọn kóòdù tí olùjẹ́rìí tí ó retí nọ́mbà mẹ́fà, ṣẹ́kọ̀ndì 30 àti SHA-1 kọ̀, ní ẹ̀gbẹ́ client a kò sì lè yà á sọ́tọ̀ kúrò nínú kóòdù tí kò tọ́. Ó ń farahàn lẹ́yìn àwọn ìṣípòpadà níbi tí a ti tún àkọsílẹ̀ kún látinú fọ́tò kóòdù QR, tàbí níbi tí a ti tún àkọsílẹ̀ àmì kọ́ pẹ̀lú àwọn iye àkọ́kọ́.
Ẹ̀kẹta kì í ṣe nípa kóòdù. Àwọn ẹnubodè sábà ń dá ìkùnà ìjẹ́rìí kan tí ó wọ́pọ̀ padà fún ọ̀rọ̀ ìkọ̀kọ̀ tí kò tọ́, kóòdù tí ó ti parí àkókò àti àkọsílẹ̀ tí a ti dídì, ní àìmọ̀ọ́mọ̀, kí ẹnikẹ́ni kò lè ṣèwádìí ipa wo ni ó kùnà. Ka àkọsílẹ̀ ẹnubodè tàbí RADIUS dípò àmì client: ìpèńija tí a kò gbé jáde rí, ìkọ̀ ìwọlé láìsí ànímọ́ OTP àti ìkọ̀ nípasẹ̀ ìlànà ń dà bí ara wọn lórí ojú-ìwé, wọ́n sì ń yọrí sí àwọn ìgbésẹ̀ tí ó yàtọ̀.
Ìtẹ̀lé kúkúrú tí ó ń dín in kù
Bẹ̀rẹ̀ pẹ̀lú àyẹ̀wò tí ó pọ̀ jùlọ lóore, kí o sì dúró ní ìgbésẹ̀ àkọ́kọ́ tí kò dúró.
- Dúró de kóòdù tuntun, ránṣẹ́ rẹ̀ lẹ́ẹ̀kan, kí o sì ṣàkíyèsí bóyá ìpèńija farahàn kí a tó gba ọ̀rọ̀ ìkọ̀kọ̀ tàbí lẹ́yìn náà.
- Bá àmì inú ẹ̀rọ ìjẹ́rìí mu mọ́ orúkọ olùmúlò tí server ń fipamọ́.
- Jẹ́rìí pé profile lè dáhùn ìpèńija rárá, gẹ́gẹ́ bí ọ̀ràn
CRV1lókè. - Fi aago ẹ̀rọ wé orísun àkókò tí a mọ̀; ìyàtọ̀ tí ó ju ọ̀pọ̀ mẹ́wàá ṣẹ́kọ̀ndì lọ ń ba TOTP jẹ́ fúnra rẹ̀.
- Bèèrè lọ́wọ́ olùṣiṣẹ́ bóyá àmì náà jẹ́ TOTP tàbí HOTP, àti àwọn nọ́mbà, àkókò àti hash wo ni a forúkọ sílẹ̀.
Àwọn ìlànà méjì ń dá àbò bo èyí kí ó má baà burú sí i. Má ṣe tún gbìyànjú ní ọ̀pọ̀ ìgbà: ọ̀pọ̀ ẹnubodè ń ka ìkùnà fún àkọsílẹ̀ kọ̀ọ̀kan, wọ́n sì ń tì í tàbí bẹ̀rẹ̀ sí í dúró pẹ́ nínú ìdáhùn, nítorí náà ìrújẹ̀ kan ń yí àṣìṣe ìtòlẹ́sẹẹsẹ kékeré padà sí tíkẹ́ẹ̀tì ìtìlẹ́yìn. Àti pé má ṣe tún àmì forúkọ sílẹ̀ gẹ́gẹ́ bí àyẹ̀wò àrùn, nítorí ìyẹn ń sọ irúgbìn àtijọ́ di aláìwúlò; bí ìṣòro gidi bá jẹ́ ìpèńija tí client kò ránṣẹ́ rí, ní báyìí o ní ìyípadà méjì láti ṣàlàyé dípò ọ̀kan.
Pa irúgbìn àti àwọn kóòdù ìmúpadàbọ̀sípò mọ́ kúrò nínú ìyípo
Nọ́mbà mẹ́fà àti àṣírí tí ó wà lẹ́yìn wọn kì í ṣe pàṣípààrọ̀. Kóòdù QR ìpèsè tàbí irúgbìn Base32 ń dá gbogbo kóòdù ọjọ́ iwájú fún àkọsílẹ̀, nítorí náà ó wà nínú ẹ̀ka kan náà pẹ̀lú ọ̀rọ̀ ìkọ̀kọ̀: kì í ṣe nínú àwòrán ojú-ìwé, kì í ṣe nínú àkọsílẹ̀ tíkẹ́ẹ̀tì, kì í sì í ṣe nínú ìfọ̀rọ̀wérọ̀ pẹ̀lú ẹni tí ó kọ́kọ́ bá ọ sọ̀rọ̀. Àwọn kóòdù ìmúpadàbọ̀sípò jẹ́ ọ̀nà mìíràn — ìlò-ẹ̀ẹ̀kan, wọ́n sábà ń fo ìbéèrè kóòdù pátápátá, tí ẹnìkan bá sì ná ọ̀kan láti dán àkọsílẹ̀ wò, ó ń mú ọ̀nà àbẹ̀wò tí o lè nílò lẹ́yìn náà kúrò.
Kóòdù kì í sọ ojú-ìwé ìwọlé di ohun tí a lè gbẹ́kẹ̀lé: ìbéèrè OTP lórí agbègbè tí ó jọra ń kó kóòdù tí ó wúlò jọ, ó sì ń tún un ṣe nínú àlàfo náà, àti pé ìwé-ẹ̀rí ni ó ṣì ń sọ ibi tí o ń tẹ̀.
Bí ìtẹ̀lé bá parí lórí profile tí kò lè dáhùn ìpèńija, tún profile ṣe kí o sì dán wò lẹ́ẹ̀kan sí i pẹ̀lú kóòdù tuntun kan. Bí ó bá parí lórí àwọn ìpín ìforúkọsílẹ̀ tí kò bámu, ní kí olùṣiṣẹ́ ka àkọsílẹ̀ àmì náà kí ẹnikẹ́ni tó ṣe àyẹ̀wò ohunkóhun. Bí ó bá parí lórí títì pa, dúró de kí ó kọjá dípò yíyí client padà — ipò àkọsílẹ̀ ni ìdíwọ́, kì í ṣe app.