Rubutun da ke fara OpenVPN kuma ba ya taɓa haɗuwa yawanci ba matsalar cibiyar sadarwa ba ce: abokin ciniki yana zaune a kan tambaya ba tare da terminal ɗin da zai zana ta ba. OpenVPN yana da hanyoyi biyu da aka tallafa daidai don amsa wannan tambayar ba tare da mutum ba, fayil ɗin shaida a bayan auth-user-pass da soket ɗin sarrafawa, kuma ba sa musanya. Fayil ɗin yana kashe umarni ɗaya kuma yana amsa tambaya ɗaya; soket ɗin yana amsa kowace tambaya kuma yana ba duk abin da zai iya buɗe tashar loopback hanyar sarrafawa marar tabbaci. Wanne ne ya dace da turawar ka ya dogara da wace tambaya ce ke toshewa a zahiri, da kuma wane sirri za ka iya barin a huta.

Faɗi sunan tambayar kafin ka zaɓi hanyar

Tambayoyi huɗu suna kama da juna a kan terminal. Biyun asusu suna zuwa daga saitin PAM ko auth-user-pass-verify na uwar garke kuma auth-user-pass ne ke amsa su. Kalmar wucewa ta maɓallin sirri ta fayil ɗin maɓalli ce kuma ana karanta ta ta --askpass ko a rubuta ta da hannu. Kunshin PKCS#12 yana neman kalmar wucewa ta kansa. Tabbatar da wakili yana amfani da fayil ɗin auth da --http-proxy ke ɗauka, ba shaidar asusu ba.

Lokacin da OpenVPN ke aiki a matsayin ɗa na systemd, PHP ko Node babu terminal, don haka kowanne daga cikinsu yana toshewa shiru. Tsarin yana nan zaune, log ɗin yana tsayawa bayan layin sirrin, kuma naúrar a ƙarshe ta wuce lokaci; wannan shiru shi ne dalilin da ya sa mutane ke ƙara maimaita madauki ko sleep maimakon duba wace tambaya ke jira. Soket ɗin sarrafawa kaɗai zai iya amsa duka huɗun. Fayil ɗin shaida yana amsa ta farko kuma ba komai ba.

auth-user-pass: fayil ɗaya, tambaya ɗaya

Fayil ɗin yana riƙe sunan mai amfani a layi na ɗaya da kalmar wucewa a layi na biyu, ba komai ba: babu alamomin ambato, babu sunayen maɓalli, babu sharhi. Sanya yanayi 600 kuma ka mai da shi asusun da ke tafiyar da openvpn, wanda ga sabis yawanci mai amfani ne na musamman maimakon shigarka. Fayil ɗin mallakar root a ƙarƙashin /root shi ne bambanci tsakanin umarnin da ke aiki a cikin shell ɗinka da naúrar da ke kasawa a lokacin tashi.

Cikakkun bayanai biyu suna mai da daidaitaccen fayil tambaya. Edita da ke adana CRLF yana barin dawowar karusa manne da kalmar wucewa, don haka uwar garke ta ƙi kalmar wucewa da ta yi kama da daidai a cikin fayil ɗin; duba da cat -A ko od -c maimakon da ido. Kuma auth-user-pass marar hujja a cikin bayanin yana nufin «tambayi mai amfani» bisa ƙira, wanda wata umarni ta biyu a kan layin umarni watakila ba za ta shawo kanta ba, domin ana nazarin bayanin a inda yake.

Tsarin zaɓi shi ne tarko na uku, kuma ya dogara da sigar. Wasu gine-ginen OpenVPN 2.4 suna watsi da --auth-user-pass idan ya bayyana kafin --config, don haka zaɓi biyun a wani tsari suna haɗuwa. Sanya umarnin cikin bayanin, ko bayan --config a kan layin umarni, kuma ka grep bayanin don kowace bayyanar kafin ka canza wani abu.

auth-nocache na wannan hanyar ne amma ba ya bayar da komai. Yana iyakance tsawon lokacin da abokin ciniki ke riƙe shaidar a ƙwaƙwalwa, wanda ke taimakawa bayan faɗuwa kuma ba ya taimakawa ko kaɗan idan fayil ɗin ya ɓace. Sake haɗuwa bayan lokacin zaman ya ƙare a gefen uwar garke yana sake karanta fayil ɗin, don haka shaidar da ta yi aiki a tashin na iya ƙarewa a tsakiyar rana.

Soket ɗin sarrafawa: kowace tambaya, ƙarin fili

Fara abokin ciniki da mai sauraro kuma ka bayyana sarai cewa za a ba da rahoton tambayoyi a kansa, ta amfani da umarnin da aka rubuta a cikin littafin OpenVPN 2.6:

management 127.0.0.1 3030
management-query-passwords

Daga bash, riƙe haɗin a kan wani ƙarin mai bayanin fayil kuma ka amsa da sunan tambaya maimakon da matsayi, domin sake haɗuwa na iya tambaya a wani tsari:

exec 3<>/dev/tcp/127.0.0.1/3030
while read -r -u 3 line; do
  case "$line" in
    *"Need 'Auth' username/password"*)
      echo 'username "Auth" alice' >&3
      echo 'password "Auth" secret' >&3 ;;
    *"Need 'Private Key' password"*)
      echo 'password "Private Key" secret' >&3 ;;
  esac
done

Iyaka ita ce jigilar. Ka'idar sarrafawa bayyanannen rubutu ne a kan TCP a loopback, don haka ba za a buga mai sauraro a adireshin LAN ko rami ba domin mai sarrafawa na nesa ya isa gare shi; mai sarrafawa na nesa yana nufin tura SSH, ba faɗaɗɗen ɗaure ba. Daemon na al'umma kuma yana karɓar abokin ciniki ɗaya na sarrafawa a lokaci ɗaya, don haka GUI ko mai lura ba za su iya raba soket ɗin da rubutunka ba. Ana ƙi haɗin na biyu, ba a jera shi ba, kuma gazawar tana kama da rubutun da ya zama kurma.

Wannan soket ɗin hanyar sarrafawa ce kuma. Ba tare da kalmar wucewa ta sarrafawa ba, duk abin da zai iya haɗi da 127.0.0.1:3030 zai iya karanta matsayi, kashe ramin ko ya amsa tambaya da kansa. Kalmar wucewa ta sarrafawa da fayil ɗin shaida sirri ne na aji ɗaya, kuma duka biyu sun cancanci kulawa ɗaya.

Wanne ya dace da turawar

Zaɓi fayil ɗin shaida lokacin da tambaya kaɗai ita ce biyun asusu, abokin ciniki yana aiki a matsayin sabis da tabbataccen mai shi, kuma za ka iya riƙe fayil ɗin 600 a wajen ajiyar da ba ka sarrafa. Zaɓi soket ɗin sarrafawa lokacin da kalmar wucewa ta maɓalli ko kalmar wucewa ta PKCS#12 ke cikin wasa, lokacin da mai nadewa yana kula da tsarin tuni, ko lokacin da kake buƙatar kallon matsayi da tambayoyi yayin gyara sake haɗuwa.

Sharudda biyu suna motsa shawarar. Idan mai nadewa /bin/sh ne, naúrar systemd da ke kira binary kai tsaye, ko kwandon da ba shi da yawa, to mannen soket ɗin bash kaɗai ba ya samuwa kuma fayil ɗin shi ne amsa mafi arha. Idan sirrin yana juyawa sau da yawa, babu fayil da zai zama gida mai kyau a gare shi: tambayi zoben maɓalli daga ƙaramin mai nadewa kuma ka bar naúrar ta kira mai nadewar, wanda ke riƙe juyawa a wuri ɗaya da kalmar wucewa a wajen tarihin shell.

Musanya tsari yana tsaye tsakanin biyun kuma ba na ɗayansu ba. Layi ɗaya da ke ƙasa yana aiki domin bash yana faɗaɗa shi kafin openvpn ya fara, ba domin abokin ciniki ya fahimci tsarin rubutu ba:

openvpn --config client.ovpn --auth-user-pass <(printf "%s
%s
" "$USER" "$PASS")

Yana karyewa a ƙarƙashin /bin/sh, a cikin naúrar da ke ƙetare shell, da kuma cikin hotuna marasa bash ko /dev/fd. Riƙe shi don gwaji na hulɗa, ba wai a matsayin yarjejeniyar da sabis ya dogara da ita ba.

Kare sirrin, sannan ka tabbatar daga log ɗin

Duka hanyoyin biyu suna barin sirri wanda tsarin OpenVPN zai iya karantawa. Kada ka taɓa sanya kalmar wucewa a kan layin umarni ko a cikin fayil ɗin naúrar, inda ps da systemctl ke nuna ta ga kowane mai amfani na gida; ba da hanyar fayil ɗin, ba ƙimar da ke ciki ba. Inda takardun shaida za su iya maye gurbin biyun asusu, hakan yana cire rukunin tambayar maimakon ɓoye ta.

Tafiya daidai tana nuna jerin tambayoyi sun cika kuma zaman ya kai «Initialization Sequence Completed». Idan abokin ciniki ya tsaya a wannan tambayar, daidaiton ya kasa: buga ainihin layukan da soket ɗin ya aika, duba ambato da sunan tambayar, kuma gyara tsarin maimakon ƙara sleep. Ramin da ke ba da rahoton nasara kuma ba ya ɗaukar komai matsala ce ta hanya ko push, ba ta shaidar ba.

Sannan gwada sake haɗuwa, ba kawai farkon tashi ba. Fitar da zaman gefen uwar garke ko jira lokacinsa ya ƙare; abokin ciniki ya sake tambaya, kuma a nan ne fayil ɗin da ya yi kama da daidai a tashin zai nuna ko har yanzu ana iya karanta shi ga asusun da ke sake haɗuwa.

Labarai masu alaƙa