Oplossing: OpenVPN koe de Auth-brûkersnamme net fan standertynfier lêze
De flater «could not read Auth username from stdin» fan OpenVPN is in lokale ynfierflater. Jou de tsjinst in lêsbere boarne fan oanmeldgegevens; script-security hat der neat mei te meitsjen.
could not read Auth username from stdin liket in autentikaasjeprobleem en is it net. OpenVPN besocht de brûkersnamme fan standertynfier te freegjen, fûn neat lêsbers en stoppe foardat it ea kontakt makke mei de server. It akkount kin folslein jildich wêze; it proses hat gewoan nimmen om te freegjen.
Dêrom is de earste nuttige stap befestigje wat de klant lêst, net de ferbining opnij besykje of ynstellingen oan de serverkant feroarje. Rin de kontrôles hjirûnder yn folchoarder troch en stop by de earste dy't mislearret.
Lês de flater as in lokale ynfierflater
As auth-user-pass sûnder bestânsargument ferskynt, ferwachtet de klant in fraach. Yn in ynteraktive shell wurket dy fraach om't it proses in terminal hat. Under systemd, in cron-taak of in container is standertynfier meastal leech, en it lêzen komt daliks werom mei de flater dy't jo sjogge.
It berjocht neamt ek it fjild dat mislearre, brûkersnamme of wachtwurd, wat siket hoefier it lêzen kaam. In ûntbrekkende brûkersnamme betsjut dat it proses hielendal neat lêze koe. In ûntbrekkend wachtwurd nei in suksesfolle brûkersnamme betsjut dat de ynfierstream tusken de twa lêsbewurkingen einige, wat typysk is foar in heal skreaun bestân of in sletten piip.
Befestigje de eigen werjefte fan de klant foardat jo eat oars feroarje. Rin it yn 'e foargrûn mei deselde konfiguraasje en deselde brûker, en sjoch oft de fraach ferskynt. As it yn jo shell ferskynt mar net ûnder de tsjinstbehearder, is it ferskil de ynfierboarne, net de oanmeldgegevens. In flugge ferliking fan it unit-bestân en jo shell-omjouwing lit meastal sjen hokker fan beide in terminal leveret.
Jou de tsjinst in stipe boarne fan oanmeldgegevens
De stipe boarne foar tafersjochsearjen is in bestân mei oanmeldgegevens dat as argument oan auth-user-pass jûn wurdt. It bestân wurdt as platte tekst lêzen: de earste rigel is de brûkersnamme, de twadde is it wachtwurd. Wys der mei in absolút paad nei, bygelyks /etc/openvpn/client/creds , sadat de wurkkatalogus fan it tsjinstakkount de betsjutting fan de rjochtline net feroarje kin.
Tastimmingen binne like wichtich as it paad. It bestân moat lêsber wêze foar it akkount dat de klant rint en net foar elkenien oars, en it soe eigendom wêze moatte fan it tsjinstakkount of fan root mei in groep dy't de tsjinst omfettet. Kontrolearje de lêsberens as dat akkount, sûnder de ynhâld ôf te printsjen.
In relatyf paad is de stille mislearringswize. It profyl kin yn ien katalogus stean wylst systemd it proses earne oars start, sadat in bestân dat yn jo shell oplost, net foar de tsjinst oplost. Ferpleats de oanmeldgegevens nei in fêst plak en ferwize der absolút nei. Start dêrnei de tsjinst ien kear en befestigje dat itselde paad brûkt wurdt, ynstee fan te fertrouwen op de werjefte fan de profylbewurker.
As de útrulling in ienmalige koade of in oare ynteraktive útdaging freget, beslút dan oft de wurkstream fan de klant dat echt sûnder tafersjoch stipet. In bestân mei in statysk wachtwurd kin gjin draaiende koade beäntwurdzje, en in net te beäntwurdzjen fraach opnij besykje foeget gjin ynformaasje ta.
Wêrom script-security net helpe sil
script-security regelet oft de klant skripts rinne mei en hoefolle it dêroan jaan mei, ynklusyf oft in wachtwurd fia in omjouwingsfariabele oan in skript jûn wurde kin. It seit neat oer wêr't de brûkersnamme en it wachtwurd oarspronklik wei komme.
It nei in heger nivo bringe is in gewoane refleks om't it berjocht Auth neamt, mar it feroaret skripttastimmingen ynstee fan de ynfierboarne, en it ferbredelet wat de klant útfiere mei. As in help-skript diel is fan it ûntwerp, reparearje earst de ynfierboarne en hâld it feiligensnivo op de leechste wearde dy't de útrulling nedich hat.
De behearinterface is in legitym alternatyf. In frontend kin derop ferbine, it fersyk om oanmeldgegevens ûntfange en mei de brûkersnamme en it wachtwurd antwurdzje, sa wurkje guon GUI's. As jo it brûke, byn it dan oan in lokaal adres, beskermje it mei in behearwachtwurdbestân en behein wa't ferbine kin, want it is in kontrôlekanaal foar de klant.
Kontrolearje de folgjende faze neidat de klant it bestân lêzen hat
Sadree't de klant de oanmeldgegevens lêze kin, is de folgjende flater in echte útwikseling mei de server, en it berjocht hat in oare betsjutting. In autentikaasjeflater yn dy faze betsjut dat de server it akkount wegere; in útdaging-antwurd betsjut dat de server in oare faktor wol. Behannelje se as nije problemen ynstee fan itselde werhelle.
Test it hiele paad sa't de tsjinst it rinne sil: itselde akkount, deselde wurkkatalogus, deselde unit-omjouwing. In ferbining dy't allinnich wurket as it fan jo shell ôf start wurdt, is in teken dat in omjouwingsfariabele of in terminal noch diel is fan de stream.
Hâld dan de geheimen dêr't se hearre. Wachtwurden yn kommandorigel-argumenten ferskine yn 'e prosestabel, en wachtwurden yn debug-útfier einigje yn tickets. Brûk in beskerme bestân of de behearinterface, hâld logs op in nivo dat gjin oanmeldgegevens werhellet, en rotearje it bestân as immen mei tagong fuortgiet.
Kontrolelist: absolút paad fan oanmeldgegevens, lêsber as tsjinstakkount, gjin terminal nedich, script-security op syn minimum litten, behearinterface allinnich as it bûn en autentisearre is, en it resultearjende serverantwurd behannele as in apart barren.