OpenVPN auth-user-pass: ගොනුව, stdin හෝ විමසුම? තෝරා ගන්නේ කෙසේද
කොන්සෝල විමසුම, අක්තපත්ර ගොනුව, ධාරාව සහ කළමනාකරණ අතුරුමුහුණත අතර තෝරා, පසුව වැරදි මුරපදයක් ලෙස පෙනෙන දෝෂ නිවැරදි කරන්න.
ඔබ භාවිත කළ යුතු අක්තපත්ර මූලාශ්රය තීරණය කරන කරුණු තුනකි: කොන්සෝලයේ කෙනෙක් අසුන්ගෙන සිටීද, රහස තැටියේ ජීවත් විය හැකිද, සහ තවත් ක්රියාවලියක් විමසුමට පිළිතුරු දිය යුතුද යන්නයි. වැරදි ලෙස තෝරා ගත් විට, මුරපදය සම්පූර්ණයෙන් වලංගු වුවත් සේවාලාභියා stdin ගැටලුවක් වාර්තා කරයි, එය බොහෝ දෙනා හේතුවක් නැතිව සේවාදායකය වෙත යවයි. පළමුව මාර්ගය තෝරන්න; කුමන මාර්ගය ඒවා නිපදවාද යන්න දැනගත් පසුව පමණක් දෝෂ පණිවිඩ අර්ථවත් වේ.
එය තීරණය කරන කොන්දේසි තුන
කොන්සෝල විමසුම මිනිසෙකු අවශ්ය වන එකම මාර්ගයයි, එබැවින් systemd ඒකකයක හෝ බහාලුමක නිශ්ශබ්දව අසාර්ථක වන එකම මාර්ගයද එයයි. කෙනෙක් සේවාලාභියා අරඹා මුරපදය ටයිප් කරන්නේ නම්, කිසිදු ගොනුවක් සම්බන්ධ නොවන අතර සංවේදී කිසිවක් තැටියට නොපැමිණේ. සේවාලාභියා බූට් වන විට ආරම්භ වන්නේ නම්, එම විමසුමම එල්ලීමක් බවට පත් වේ, සහ කාල සීමාව සාමාන්යයෙන් අක්තපත්ර දෝෂයක් ලෙස නොව සාමාන්ය සම්බන්ධතා අසාර්ථකත්වයක් ලෙස පෙනේ.
ක්රියාවලිය අධීක්ෂණයකින් තොරව ආරම්භ වන අතර පාලිත අවසර කට්ටලයක් යටතේ රහස තැටියේ රැඳී සිටිය හැකි විට අක්තපත්ර ගොනුව නිවැරදි පිළිතුරයි. රහස කිසිසේත් ලිවිය නොහැකි විට - භාණ්ඩාගාරය පමණක් ප්රතිපත්තිය, කෙටි කාලීන ටෝකනය - සේවාලාභියාට විවෘත කළ හැකි ධාරාවක් අවශ්ය වේ, එය ප්රායෝගිකව ක්රියාවලි ආදේශනය හෝ ගොනු විස්තරකාරකයට ලියන සහායකයක් යන්නයි. කළමනාකරණ අතුරුමුහුණත සිව්වන අවස්ථාව ආවරණය කරයි: දැනටමත් උමං මාර්ගයේ ජීවන චක්රය කළමනාකරණය කරන සහ සොකට් හරහා ප්රශ්නවලට පිළිතුරු දිය හැකි පාලකයෙකි.
- කොන්සෝලයේ මිනිසෙක්, ස්වයංක්රීයකරණයක් නැත: අන්තර්ක්රියාකාරී විමසුම.
- අධීක්ෂණයකින් තොර ආරම්භය, රහස ගබඩා කළ හැක: මාදිලිය 0600 අක්තපත්ර ගොනුව.
- අධීක්ෂණයකින් තොර ආරම්භය, රහස ගබඩා කළ නොහැක: ක්රියාවලි ආදේශනය හෝ රහස් නියෝජිතයා ලියන fd.
- සේවාලාභියා තවත් ක්රියාවලියකට අයත් වේ: කළමනාකරණ අතුරුමුහුණත.
පිළිතුරු දෙකක් ගැළපෙන විට, රහස argv සහ shell ඉතිහාසයෙන් පිටත තබා ගන්නා එක තෝරන්න. වැඩසටහන් තර්කයක් ලෙස ලබා දෙන මුරපදයක් ක්රියාවලි ලැයිස්තුව හරහා සෑම දේශීය පරිශීලකයෙකුට කියවිය හැකි අතර, එම නිරාවරණය ආපසු හැරවීම දුෂ්කරය.
එක් එක් ආදාන මාර්ගය ඇත්තටම කරන්නේ කුමක්ද
--auth-user-pass තනිවම කොන්සෝලයේ පරිශීලක නාමයක් සහ මුරපදයක් ඉල්ලා සිටී. ගොනු නාමයක් දුන් විට, සේවාලාභියා පළමු පේළිය පරිශීලක නාමය ලෙසත් දෙවන පේළිය මුරපදය ලෙසත් ගනී; උද්ධෘත, අදහස් හෝ යතුරු-අගය වාක්ය සැකැස්ම කිසිවක් අනුබල නොදේ. මෙය සම්පූර්ණ ආකෘතියයි, එබැවින් INI ගොනුවක් අපේක්ෂාවෙන් එය සංස්කරණය කරන ඕනෑම කෙනෙක් එය බිඳ දමයි. එකතු කළ <auth-user-pass> කොටස පැතිකඩ තුළම එම පේළි දෙකම රඳවා ගනී, එය පැතිකඩම රහසක් කරන අතර එය පුද්ගලික යතුරක් වැනිම හසුරුවන පන්තියක තබයි.
ඉතිරි මාර්ග දෙක ධාරාවක් සහ සොකට් එකකි. OpenVPN ට අවශ්ය වන්නේ කියවිය හැකි ගොනු විස්තරකාරකයක් පමණි, එබැවින් එය ක්රියාවලි ආදේශනයක්, නළයකින් ආධාරක /dev/fd සටහනක් හෝ ඇත්ත වශයෙන්ම FIFO වන ගොනු නාමයක් පිළිගනී. කළමනාකරණ අතුරුමුහුණත ස්වභාවයෙන්ම වෙනස් ය: සේවාලාභියා අගයන් තමාම කියවනවා වෙනුවට අධීක්ෂණ ක්රියාවලියකින් ඉල්ලා සිටී. නැවත සම්බන්ධ වන විට එම වෙනස වැදගත් වේ: අක්තපත්ර ගොනුව, රහස් සහායකයාට නැවත ලිවිය හැකි FIFO, සහ කළමනාකරණ අතුරුමුහුණත මිනිසෙකු නොමැතිව නැවත සැපයිය හැක; ක්රියාවලි ආදේශනයට නොහැක, මන්ද විස්තරකාරකය පළමු කියවීමේදීම වැය වේ.
ගොනුව හරියටම පේළි දෙකක් විය යුතුය
බිඳුණු අක්තපත්ර ගොනු බොහොමයක් ආවරණය කරන අසාර්ථක ක්රම දෙකකි. Windows සංස්කාරකය CRLF අන්ත ඉතිරි කරයි, වාහන නැවතුම් මුරපදයේ කොටසක් බවට පත් වේ, සහ තිරයේ නිවැරදි ලෙස පෙනෙන අගයක් සේවාදායකය ප්රතික්ෂේප කරයි. හිස් දෙවන පේළියක් - මුරපදය තිබිය යුතු තැන හිස් පේළියක් - සේවාලාභියා හිස් මුරපදයක් සමඟ තබයි, තිරයේ අගය නිවැරදි ලෙස පෙනුණත් සේවාදායකය එය ප්රතික්ෂේප කරයි. මුරපදයට පසු අමතර නව පේළියක් හානිකර නොවේ. ගොනුව සංස්කාරකයකින් නොව shell එකෙන් ලියා බයිට් පරීක්ෂා කරන්න:
install -m 600 /dev/null /etc/openvpn/client.creds
printf '%s\n%s\n' "$VPN_USER" "$VPN_PASS" > /etc/openvpn/client.creds
od -c /etc/openvpn/client.creds | head -3මාර්ගය අන්තර්ගතය තරම්ම වැදගත් ය. සාපේක්ෂ මාර්ගයක් ක්රියාවලියේ කාර්ය නාමාවලියට සාපේක්ෂව විසඳනු ලැබේ, එය සේවාවකට ඔබ පරීක්ෂා කළ නාමාවලිය වන්නේ කලාතුරකිනි. නිරපේක්ෂ මාර්ගයක් භාවිත කරන්න, ගොනුව සේවාලාභියා ධාවනය කරන ගිණුමේ අයිතියට පත් කරන්න, සහ කණ්ඩායමට හා අන් අයට කියවීමට නොහැකි වන පරිදි මාදිලිය 0600 තබා ගන්න. OpenVPN 2.6 අත්පොත නියෝගයේ පිළිගත් ආකාර ලැයිස්තුගත කරයි; තුන්වැන්න නිර්මාණය කිරීමට පෙර එය පරීක්ෂා කරන්න.
සේවාදායකයට දොස් පැවරීමට පෙර ගොනුව පරීක්ෂා කරන්න. openvpn --config client.ovpn --auth-user-pass /etc/openvpn/client.creds --verb 4 ධාවනය කිරීමෙන් ගොනුව විවෘත වූයේද සහ පසුව අක්තපත්ර පිළිගත්තේද යන්න මුද්රණය වේ, එය ඊළඟට කුමන ස්තරය වෙනස් කළ යුතුද යන්න ඔබට කියයි.
ධාරා, stdin සහ ඒවා නිපදවන දෝෂ
මුරපදය නළයකට දැමීම බොහෝ දෙනා මුලින්ම උත්සාහ කරන දෙය වන අතර වැඩිපුරම පුදුම ඇති මාර්ගයයි. ක්රියාවලි ආදේශනය ක්රියා කරන්නේ සේවාලාභියාට කියවිය හැකි විස්තරකාරකයක් පමණක් අවශ්ය වන බැවිනි: openvpn --config client.ovpn --verb 3 --auth-user-pass <(printf '%s\n%s\n' "$VPN_USER" "$VPN_PASS"). /dev/stdin යැවීම ක්රියා කරන්නේ සේවාලාභියා ඉල්ලන මොහොතේ stdin තවමත් විවෘතව හා කියවිය හැකිව ඇති විට පමණි, එය දැනටමත් එය වැය කළ නළ පෙළක සත්ය නොවේ.
ERROR: could not read Auth username from stdin ට වෙනස් හේතු දෙකක් ඇත. සමහර 2.3.x සේවාලාභීන්ගේ පණිවිඩය පසුව 2.3 නිකුතු මගින් නිවැරදි කළ stdin හසුරුවන දෝෂයකින් පැමිණියේය, එබැවින් එතරම් පැරණි සේවාලාභියෙකු උත්ශ්රේණි කිරීමෙන් පමණක් දියුණු වේ. වර්තමාන සේවාලාභියෙකුට එම වාක්යයම අදහස් වන්නේ සේවාලාභියා කොන්සෝල ආදානය ඉල්ලා ඇති අතර stdin පර්යන්තයක් නොවූ බවයි - හරියටම systemd ඒකකයක, cron කාර්යයක හෝ -t නොමැතිව ආරම්භ කළ බහාලුමක ඇති තත්ත්වය.
auth-nocache බිඳුණු මුරපදයක් වැනි තුන්වන ලූපයක් එකතු කරයි. එය භාවිතයෙන් පසු අක්තපත්ර මතකයෙන් ඉවතට හෙළයි, එබැවින් ජාල වෙනසක් නිසා ඇති වූ නැවත සම්බන්ධතාවයට නැවත වාදනය කිරීමට කිසිවක් නැති අතර විමසුම නැවත පැමිණේ. මෙය නිර්මාණය කළ පරිදි ක්රියා කරන නියෝගයයි. auth-nocache සේවාලාභියා මතකයේ තබා ගන්නා දේ වෙනස් කරයි, සේවාදායකය හෝ අනන්යතා සපයන්නා ගිණුම ගැන සිතන දේ නොවේ, එබැවින් මුළු නිවැරදි කිරීමම එම ගොනුවම නැවත සැපයීමයි, නැවත ආරම්භයේදී නැවත කියවනු ලැබේ - සහ කළමනාකරණය කළ සම්බන්ධතාවයක් සඳහා එම සැපයීම අනුමත රහස් ගබඩාවෙන් පැමිණිය යුතුය, ස්ක්රිප්ටයක ඇති මුරපදයකින් නොවේ.
විමසුම තවත් ක්රියාවලියකට අයත් වන විට කළමනාකරණ අතුරුමුහුණත
දැනටමත් උමං මාර්ගය අධීක්ෂණය කරන පාලකයෙකුට එහි ප්රශ්නවලටද පිළිතුරු දිය හැක. සේවාලාභියා --management 127.0.0.1 7505 සමඟ අරඹන්න, තත්ත්ව පේළි කියවන්න, සහ >PASSWORD:Need 'Auth' username/password කෙරෙහි අවධානය යොමු කරන්න. පාලකය වෙන වෙනම විධාන පේළිවල username "Auth" alice සහ පසුව password "Auth" ... සමඟ පිළිතුරු දෙයි. 'Auth' ටෝකනය ඉල්ලීමේ හඳුනාගැනීම්කරු නැවත කියයි, එය ගැළපිය යුතුය, එසේ නොවුනහොත් පිළිතුර නොසලකා හරිනු ලබන අතර සේවාලාභියා රැඳී සිටී.
මිල වන්නේ දැන් ඔබට ඇති තත්ත්ව යන්ත්රයයි: සම්බන්ධතා අනුපිළිවෙල, සේවාලාභියා නැවත ආරම්භ කිරීම්, සහ සත්කාරකයේ අනෙක් පරිශීලකයින්ට ළඟා විය යුතු නොවන දේශීය සොකට් එකක්. ඔබ මිලදී ගන්නේ ධාවන කාලයේදී සපයන අක්තපත්රයක්, තැටියේ ගොනුවක් නොමැතිව සහ එල්ලා තැබිය හැකි විමසුමක් නොමැතිව. ඔබේ තොගයේ වෙන කිසිවක් දැනටමත් මෙම ප්රොටෝකෝලය කතා නොකරන්නේ නම්, මෙම මාර්ගය නඩත්තු කළ යුතු අංගයක් එකතු කරයි.
අක්තපත්ර ගැටලුවක් ලෙස පෙනෙන අසාර්ථකත්වයන්
කිසිදා සම්පූර්ණ නොවන TLS අතට අත දීමක්, හෝ VERIFY ERROR: depth=0, error=certificate signature failure, විශ්වාස ගැටලුවක් වන අතර ඕනෑම පරිශීලක නාමයක් කියවීමට පෙර සිදු වේ. UDP සවන්දෙන්නෙකු වෙත යොමු කළ proto tcp සේවාලාභියාද එම තැනම අසාර්ථක වේ: පැකට් මගින් කිසිදා සත්යාපන අවස්ථාවට නොපැමිණේ, එබැවින් සෑම මුරපදයක්ම සම්බන්ධකම නිසා වැරදි ලෙස පෙනේ. අක්තපත්ර යැවීමට පෙර සහතික සත්යාපනය සක්රීයව තබා ගන්න; හුරුපුරුදු විමසුමක් මුරපදය ලබන්නේ කවුද යන්න ගැන කිසිවක් නොකියයි. අක්තපත්රයට ස්පර්ශ කිරීමට පෙර සහතික දාමය, පොදු නාමය සහ ප්රවාහනය පරීක්ෂා කරන්න.
පැතිකඩ එකලස් කරන ස්ක්රිප්ටයේ shell දෝෂ දෙවන අසත්ය සළකුණයි. [ ! -f "$file" ] තුළ නැති වූ හිස් අවකාශයක් command not found නිපදවයි, ස්ක්රිප්ටය ඉක්මනින් නතර වේ, පැතිකඩ කිසිදා නැවත ගොඩනැගෙන්නේ නැත, සහ සේවාලාභියා පෙර එක සමඟ ආරම්භ වේ. එම දෝෂය shell එකට අයත් ය, සත්යාපනයට නොවේ, සහ මුරපදය කී වතාවක් නැවත ටයිප් කළත් එය මකා නොදමයි.
මෙම ප්රවාහයේ සෑම විමසුමක්ම මෙම අක්තපත්රය නොවේ. පුද්ගලික යතුරු මුරපද වාක්යය, HTTP ප්රොක්සි පිවිසුම සහ සේවා මුරපදය විවිධ අවස්ථාවල ඉල්ලන වෙනස් රහස් තුනකි, සහ යතුරු මුරපද වාක්යය සාමාන්යයෙන් auth-user-pass වෙනුවට සේවාලාභියා හෝ නියෝජිතයෙකු විසින් හසුරුවයි. TLS සැසිය සක්රීය වීමට පෙර විමසුම දිස්වන්නේ නම්, ඔබ වැරදි ප්රශ්නයට පිළිතුරු දෙමින් සිටින අතර ගිණුම් නැවත සැකසීමක් උපකාර නොකරයි. වැරදි විමසුම ඉවත් කළ පසු, ඉතිරි පරීක්ෂණ ඉතාම මුල් ස්තරයෙන් ආරම්භ වේ:
- අවසාන අක්තපත්ර පේළිය නොව පළමු ප්රොටෝකෝල දෝෂය කියවන්න: TLS, පසුව සත්යාපනය, පසුව push.
- ගොනුව පේළි දෙකක් බව, වාහන නැවතුම් නොමැති බව, සහ නිරපේක්ෂ මාර්ගයකින් යොමු වී ඇති බව තහවුරු කරන්න.
- පැතිකඩ සහ විධාන පේළිය නියෝගය සම්බන්ධයෙන් එකඟ නොවන බව තහවුරු කරන්න.
- "අක්තපත්ර පිළිගත්" සහ "රථවාහන ගලා යයි" වෙන් කරන්න - මාර්ගගත කිරීම සහ DNS පසුකාලීන ස්තරයකි.
සේවාලාභියා push අවස්ථාවට ළඟා වූ විට, අක්තපත්ර දෙස බැලීම නවත්වා සේවාදායකය එවූ මාර්ග සහ DNS සේවාදායක කියවීම අරඹන්න. එය ඊළඟ ගැටලුවයි, සහ ඔබ දැන් නිවැරදි කළ මුරපදය සමඟ එයට කිසිදු සම්බන්ධයක් නැත.