OpenVPN auth-user-pass: fayl, stdin ama codsi? Sida loo doorto
Dooro ka mid ah codsiga console-ka, fayl aqoonsi, qulqul iyo is-dhexgalka maamulka, ka dibna hagaaji khaladaadka uun u eg password khaldan.
Saddex arrimood ayaa go'aamiya isha aqoonsiga ee aad isticmaasho: haddii qof ku fadhiyo console-ka, haddii sirta ay ku noolaan karto disk-ka, iyo haddii hab kale uu ka jawaabo codsiga. Haddii aad si khaldan u dooratid, macmiilku wuxuu soo sheegaa dhibaato stdin ah iyada oo password-ku si buuxda u ansax yahay, taas oo dadka badankood si sabab la'aan ah ugu diraysa server-ka. Marka hore dooro jidka; fariimaha khaladaadku waxay macne sameeyaan oo kaliya marka aad ogaato jidka keenay.
Saddexda shuruudood ee go'aamiya
Codsiga console-ka waa jidka kaliya ee u baahan qof, sidaas darteed waa kan kaliya ee si aamusan ugu guuldareysta systemd unit ama konteenar. Haddii qof uu bilaabo macmiilka oo qoro password-ka, ma jiro fayl ku lug leh oo wax xasaasi ah ma gaadho disk-ka. Haddii macmiilku bilaabo waqtiga boot-ka, isla codsigaas wuxuu noqdaa hakad, oo waqtiga dhammaadkiisu wuxuu inta badan u muuqdaa guuldarro xiriir guud ah halkii uu ahaan lahaa khalad aqoonsi.
Faylka aqoonsigu waa jawaabta saxda ah marka habku bilaabo iyada oo aan la ilaalin oo sirta ay ku noolaan karto disk-ka iyada oo hoos timaadda go'an oggolaansho la xakameeyay. Marka sirta aan la qori karin gabi ahaanba - siyaasad keliya kayd, calaamad muddo gaaban - waxaad u baahan tahay qulqul macmiilku furi karo, taas oo ficil ahaan macnaheedu yahay beddelaad hab ama caawiye ku qora sharraxa fayl. Is-dhexgalka maamulku wuxuu daboolaa kiiska afaraad: kontoroolo hore u maamula wareegga nololeed ee tunnel-ka oo ka jawaabi kara su'aalaha socket.
- Qof console-ka, otomaatig la'aan: codsi is-dhexgal.
- Bilow la'aan ilaalin, sirta waa la kaydin karaa: fayl aqoonsi leh qaab 0600.
- Bilow la'aan ilaalin, sirta lama kaydin karo: beddelaad hab ama fd uu wakiil sir qoro.
- Hab kale ayaa leh macmiilka: is-dhexgal maamul.
Marka laba jawaab ay ku habboonaadaan, dooro kan sirta ka ilaaliya argv iyo taariikhda shell. Password-ka loo gudbiyo sidii dood barnaamij ahaan waa mid qof kasta oo maxalli ah ku akhriyi karo liiska hababka, oo soo-gaadhistaas waa adag tahay in la beddelo.
Waxa ay dhab ahaan sameyso jid kasta oo gelin
--auth-user-pass keligiis wuxuu console-ka ku weyddiistaa magaca isticmaalaha iyo password-ka. Marka la siiyo magac fayl, macmiilku wuxuu qaataa safka koowaad magaca isticmaalaha iyo safka labaad password-ka; wax ma taageero xigasho, faallo ama qaab fure-qiime. Taasi waa qaabka oo dhan, sidaas darteed qof kasta oo wax ka beddela isagoo filaya fayl INI wuu jebiyaa. Qaybta <auth-user-pass> ee dhexda ku jirta waxay ku haysaa isla labadaas saf gudaha profile-ka, taas oo profile-ka laftiisa ka dhigta sir oo gelisa isla fasalka maaraynta furaha gaarka ah.
Labada jid ee kale waa qulqul iyo socket. OpenVPN waxay u baahan tahay oo kaliya sharraxa fayl la akhrin karo, sidaas darteed waxay aqbali doontaa beddelaad hab, gelin /dev/fd oo tuubo taageerto ama magac fayl oo dhab ahaan FIFO ah. Is-dhexgalka maamulku wuu ka duwan yahay dabeecad ahaan: macmiilku wuxuu weyddiistaa hab ilaaliye qiimayaasha halkii uu isagu akhrin lahaa. Farqigaas waa muhiim marka dib loo xidho: fayl aqoonsi, FIFO oo caawiyaha sir uu mar kale qori karo, iyo is-dhexgalka maamulku waxay dib u bixin karaan qof la'aan; beddelaad hab ma karo, sababtoo ah sharraxa waa la isticmaalaa akhriska koowaad.
Faylku waa inuu noqdaa laba saf oo sax ah
Laba qaab oo guuldarro ayaa daboola inta badan faylalka aqoonsiga ee jaban. Tafatiraha Windows wuxuu ka tagaas dhammaadka CRLF, soo-noqoshada gaadhiga waxay noqotaa qayb password-ka, oo server-ku wuu diidaa qiime shaashadda ka muuqda mid sax ah. Safka labaad ee madhan - saf madhan halka password-ku ku habboon yahay - wuxuu macmiilka kaga tagaa password madhan, oo server-ku diido inkastoo qiimaha shaashadda uu sax u muuqdo. Saf cusub oo dheeraad ah password-ka kadib waa waxyeello la'aan. Faylka ka qor shell-ka, ma aha tafatire, oo hubi baytyada:
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 -3Jidku waa muhiim sida nuxurka. Jid qaraabo ah waxaa lagu xalliyaa iyada oo laga eegayo hagaha shaqada ee habka, kaas oo adeeg ahaan dhif u ah hagaha aad ku tijaabisay. Isticmaal jid buuxa, ka dhig faylka milkiilaha akoonka maamula macmiilka, oo hay qaabka 0600 si kooxda iyo kuwa kale aanay u akhrin karin. Buug-gacmeedka OpenVPN 2.6 wuxuu taxayaa qaababka la aqbalay ee dardaaranka; hubi ka hor inta aadan ikhtiraac qaab saddexaad.
Tijaabi faylka ka hor inta aadan server-ka eedayn. Socodsiinta openvpn --config client.ovpn --auth-user-pass /etc/openvpn/client.creds --verb 4 waxay daabacdaa haddii faylka la furay iyo mar dambe haddii aqoonsiga la aqbalay, taas oo kuu sheegta lakabka xiga ee la beddelo.
Qulqullada, stdin iyo khaladaadka ay soo saaraan
Password-ka tuubo ku gudbin waa waxa ugu horreeya ee dadka badankood isku dayaan iyo jidka ugu yaabab badan. Beddelaad hab wuxuu shaqeeyaa sababtoo ah macmiilku wuxuu u baahan yahay oo kaliya sharraxa la akhrin karo: openvpn --config client.ovpn --verb 3 --auth-user-pass <(printf '%s\n%s\n' "$VPN_USER" "$VPN_PASS"). Gudbinta /dev/stdin waxay shaqaysaa oo kaliya marka stdin uu weli furan yahay oo la akhrin karo waqtiga macmiilku weyddiisto, taas oo aan run ahayn tuubada hore u isticmaashay.
ERROR: could not read Auth username from stdin wuxuu leeyahay laba sababood oo kala duwan. Qaar ka mid ah macmiilada 2.3.x fariintu waxay ka timid cillad maaraynta stdin oo daabacaadaha 2.3 dambe ay hagaajiyeen, sidaas darteed macmiil sidaas u duugoobay wuxuu hagaagaa oo kaliya isku-ku-celin. Macmiil casri ah isla odhaahdu waxay ka dhigan tahay macmiilku wuxuu codsaday gelin console ah oo stdin ma ahayn terminal - si sax ah xaaladda ku jirta systemd unit, hawsha cron ama konteenar la bilaabay iyada oo aan -t lahayn.
auth-nocache wuxuu ku darayaa wareeg saddexaad oo u eg password jaban. Wuxuu tuurayaa aqoonsiga xusuusta kadib isticmaalka, sidaas darteed dib-u-xidhka ay sababtay isbeddel shabakadeed ma haysto wax dib loo ciyaaro oo codsigu wuu soo noqdaa. Taasi waa dardaaranka u shaqeeya sida loo qorsheeyay. auth-nocache wuxuu beddelaa waxa macmiilku xusuusta ku hayo, ma aha waxa server-ka ama bixiyaha aqoonsiga uu ka fikirayo akoonka, sidaas darteed hagaajinta oo dhan waa in isla faylkaas dib loo bixiyo, oo dib loo akhriyo marka dib loo bilaabo - iyo xiriir la maamulo bixintaas waa inay ka timaaddaa kaydka sirta ee la ansixiyay, ma aha password ku jira script.
Is-dhexgalka maamulka marka hab kale uu leeyahay codsiga
Kontoroolaha hore u ilaalinaya tunnel-ka wuxuu sidoo kale ka jawaabi karaa su'aalahiisa. Bilaab macmiilka --management 127.0.0.1 7505, akhri safafka xaaladda, oo fiirso >PASSWORD:Need 'Auth' username/password. Kontorooluhu wuxuu ku jawaabaa username "Auth" alice oo ay ku xigto password "Auth" ... safaf amarro gooni ah. Calaamadda 'Auth' waxay ku celisaa aqoonsiga codsiga oo waa inuu ku habboonaadaa, haddii kale jawaabta waa la iska indhatirayaa oo macmiilku wuu sugayaa.
Qiimuhu waa mishiin xaaladeed oo hadda adiga leh: nidaamka xiriirada, dib-u-bilaabista macmiilka, iyo socket maxalli ah oo isticmaalayaasha kale ee host-ka aysan gaari karin. Waxa aad iibsato waa aqoonsi la bixiyay waqtiga socodka, iyada oo aan fayl ku jirin disk-ka iyo iyada oo aan codsi hakad geli karin. Haddii wax kale oo ku jira stack-kaaga aanay hore u hadlin borotokoolkan, jidkani wuxuu ku darayaa qayb u baahan dayactir.
Guuldarrooyin u eg dhibaatooyin aqoonsi
Gacan-qabasho TLS ah oo aan waligiis dhammaanin, ama VERIFY ERROR: depth=0, error=certificate signature failure, waa dhibaato kalsooni oo dhacda ka hor inta aan magac isticmaale la akhrin. Macmiil proto tcp oo u jeedan dhageyste UDP wuxuu ku guuldareystaa isla meeshaas: baakaduhu waligood ma gaaraan heerka xaqiijinta, sidaas darteed password kastaa wuxuu u muuqdaa khalad sababtoo ah xiriirka. Hay xaqiijinta shahaadada daaran ka hor inta aqoonsiga la dirin; codsi caadi ah waxba kama sheego yaa helaya password-ka. Hubi silsiladda shahaadada, magaca guud iyo gaadiidka ka hor inta aadan taaban aqoonsiga.
Khaladaadka shell ee script-ka soo ururiya profile-ka waa raadka labaad ee khiyaanada leh. Meel bannaan oo maqan gudaha [ ! -f "$file" ] waxay soo saartaa command not found, script-ku goor hore ayuu istaagaa, profile-ka waligiis dib looma dhiso, oo macmiilku wuxuu ku bilaabmaa kii hore. Khaladkaas waa shell-ka, ma aha xaqiijinta, iyo inta jeer ee aad password-ka dib u qorto ma tirtirayo.
Ma aha codsi kasta oo ku jira qulqulkan aqoonsigan. Erayga sirta furaha gaarka ah, gelinta proxy HTTP iyo password-ka adeegga waa saddex sir oo kala duwan oo lagu weyddiisto wejiyo kala duwan, oo erayga sirta furaha inta badan waxaa maamula macmiilka ama wakiil halkii auth-user-pass. Haddii codsigu soo baxo ka hor inta aan fadhi TLS taagan, waxaad ka jawaabaysaa su'aasha khaldan oo dib-u-dejinta akoon ma caawinayso. Marka codsiga khaldan la reebay, hubinta hadhay waxay ka bilaabataa lakabka ugu horreeya:
- Akhri khaladka borotokoolka ugu horreeya, ma aha safka aqoonsiga ugu dambeeya: TLS, ka dib xaqiijin, ka dib push.
- Xaqiiji in faylku laba saf yahay, aanu lahayn soo-noqosho gaadhi, oo lagu tilmaamay jid buuxa.
- Xaqiiji in profile-ka iyo safka amarku aanay isku khilaafin dardaaranka.
- Kala saar "aqoonsiga la aqbalay" iyo "taraafikadu socoto" - marin-u-jiidka iyo DNS waa lakab dambe.
Marka macmiilku gaaro wejiga push, jooji fiirinta aqoonsiga oo bilaab akhrinta dariiqooyinka iyo server-yada DNS ee server-ku soo diray. Taasi waa dhibaatada xigta, oo wax xiriir ah lama laha password-ka aad hadda hagaajisay.