could not read Auth username from stdin izskatās pēc autentifikācijas problēmas, un tā nav. OpenVPN mēģināja pieprasīt lietotājvārdu no standarta ievades, neatrada neko lasāmu un apstājās, pirms vēl bija sazinājies ar serveri. Konts var būt pilnīgi derīgs; procesam vienkārši nav neviena, ko pajautāt.

Tāpēc pirmais lietderīgais solis ir pārliecināties, ko klients lasa, nevis atkārtot savienojumu vai mainīt servera puses iestatījumus. Izpildiet zemāk esošās pārbaudes secīgi un apstājieties pie pirmās, kas neizdodas.

Lasiet kļūdu kā lokālu ievades kļūdu

Kad auth-user-pass parādās bez faila argumenta, klients sagaida uzvedni. Interaktīvā čaumalā šī uzvedne darbojas, jo procesam pieder terminālis. Sistēmā systemd, cron uzdevumā vai konteinerā standarta ievade parasti ir tukša, un lasīšana nekavējoties atgriežas ar kļūdu, kuru redzat.

Ziņojums nosauc arī lauku, kas neizdevās, lietotājvārdu vai paroli, kas parāda, cik tālu lasīšana aizgāja. Trūkstošs lietotājvārds nozīmē, ka process nevarēja nolasīt neko. Trūkstoša parole pēc veiksmīga lietotājvārda nozīmē, ka ievades plūsma beidzās starp abām lasīšanām, kas ir raksturīgi pusrakstītam failam vai aizvērtai caurulei.

Pirms kaut ko citu mainīt, apstipriniet paša klienta skatījumu. Palaidiet to priekšplānā ar to pašu konfigurāciju un to pašu lietotāju un vērojiet, vai uzvedne parādās. Ja tā parādās jūsu čaumalā, bet ne zem pakalpojumu pārvaldnieka, atšķirība ir ievades avotā, nevis akreditācijas datos. Ātrs unit faila un jūsu čaumalas vides salīdzinājums parasti parāda, kurš no tiem nodrošina termināli.

Dodiet servisam atbalstītu akreditācijas datu avotu

Atbalstītais neuzraudzītas darbības avots ir akreditācijas datu fails, kas nodots kā arguments auth-user-pass. Fails tiek lasīts kā vienkāršs teksts: pirmā rinda ir lietotājvārds, otrā ir parole. Norādiet uz to ar absolūtu ceļu, piemēram /etc/openvpn/client/creds , lai servisa konta darba direktorijs nevarētu mainīt direktīvas nozīmi.

Atļaujas ir tikpat svarīgas kā ceļš. Failam jābūt lasāmam kontam, kas palaiž klientu, un ne visiem pārējiem, un tam vajadzētu piederēt servisa kontam vai root ar grupu, kurā ietilpst serviss. Pārbaudiet lasāmību kā šis konts, neizdrukājot saturu.

Relatīvs ceļš ir klusais kļūmes režīms. Profils var atrasties vienā direktorijā, kamēr systemd palaiž procesu citur, tāpēc fails, kas atrisinās jūsu čaumalā, servisam neatrisinās. Pārvietojiet akreditācijas datus uz fiksētu vietu un atsaucieties uz tiem absolūti. Pēc tam vienreiz palaidiet servisu un apstipriniet, ka tiek izmantots tas pats ceļš, nevis paļaujieties uz profila redaktora skatījumu.

Ja izvietošanai nepieciešams vienreizējs kods vai cits interaktīvs izaicinājums, izlemiet, vai klienta darbplūsma to patiešām atbalsta bez uzraudzības. Fails ar statisku paroli nevar atbildēt uz rotējošu kodu, un neatbildama pieprasījuma atkārtošana neko nepievieno.

Kāpēc script-security nepalīdzēs

script-security kontrolē, vai klients drīkst palaist skriptus un cik daudz tas drīkst tiem nodot, tostarp vai paroli var nodot skriptam caur vides mainīgo. Tas neko nesaka par to, no kurienes sākotnēji nāk lietotājvārds un parole.

Tā pacelšana augstākā līmenī ir ierasta refleksija, jo ziņojums piemin Auth, bet tas maina skriptu atļaujas, nevis ievades avotu, un paplašina to, ko klients drīkst izpildīt. Ja palīgskripts ir dizaina daļa, vispirms salabojiet ievades avotu un turiet drošības līmeni zemākajā vērtībā, kas nepieciešama izvietošanai.

Pārvaldības saskarne ir likumīga alternatīva. Priekšgals var tai pieslēgties, saņemt akreditācijas datu pieprasījumu un atbildēt ar lietotājvārdu un paroli, tā darbojas daži GUI. Ja to lietojat, piesaistiet to vietējai adresei, aizsargājiet ar pārvaldības paroles failu un ierobežojiet, kas var pieslēgties, jo tā ir klienta vadības kanāls.

Pārbaudiet nākamo posmu pēc tam, kad klients ir nolasījis failu

Kad klients var nolasīt akreditācijas datus, nākamā kļūme ir īsta apmaiņa ar serveri, un tās ziņojumam ir cita nozīme. Autentifikācijas kļūme šajā posmā nozīmē, ka serveris noraidīja kontu; izaicinājuma atbilde nozīmē, ka serveris vēlas citu faktoru. Uztveriet tās kā jaunas problēmas, nevis kā tās pašas atkārtojumu.

Pārbaudiet visu ceļu tā, kā serviss to palaidīs: tas pats konts, tā pati darba direktorija, tā pati unit vide. Savienojums, kas darbojas tikai tad, ja to palaiž no jūsu čaumalas, ir zīme, ka vides mainīgais vai terminālis joprojām ir plūsmas daļa.

Pēc tam glabājiet noslēpumus tur, kur tiem jābūt. Paroles komandrindas argumentos parādās procesu tabulā, un paroles atkļūdošanas izvadē nonāk biļetēs. Izmantojiet aizsargātu failu vai pārvaldības saskarni, turiet žurnālus tādā līmenī, kas neatkārto akreditācijas datus, un nomainiet failu, kad aiziet jebkurš ar piekļuvi.

Kontrolsaraksts: absolūts akreditācijas datu ceļš, lasāms kā servisa konts, terminālis nav nepieciešams, script-security atstāts minimumā, pārvaldības saskarne tikai tad, ja tā ir piesaistīta un autentificēta, un iegūtā servera atbilde tiek uztverta kā atsevišķs notikums.

Saistītie raksti