Skrift sem ræsir OpenVPN og tengist aldrei er venjulega ekki netvandamál: biðlarinn situr við kvaðningu án terminals til að teikna hana á. OpenVPN hefur nákvæmlega tvær studdar leiðir til að svara þeirri kvaðningu án manns, skírteinisskrá bak við auth-user-pass og stjórnsokkurinn, og þær eru ekki skiptanlegar. Skráin kostar eina tilskipun og svarar einni kvaðningu; sokkurinn svarar hverri kvaðningu og gefur öllu sem getur opnað loopback-port óauðkenndan stjórnarrás. Hvort þeirra á heima í uppsetningunni þinni fer eftir því hvaða kvaðning er í raun að teppa, og hvaða leyndarmál þú getur leyft þér að láta liggja í friði.

Nefndu kvaðninguna áður en þú velur fyrirkomulag

Fjórar kvaðningar líta eins út á terminal. Reikningsparinu er svarað af auth-user-pass og kemur úr PAM- eða auth-user-pass-verify uppsetningu þjónsins. Lykilorðssetning einkalykils tilheyrir lykilskránni og er lesin í gegnum --askpass eða slegin inn handvirkt. PKCS#12 búnt biður um sitt eigið lykilorð. Proxy-auðkenning notar auth-skrána sem --http-proxy tekur, ekki skírteini reikningsins.

Þegar OpenVPN keyrir sem barn systemd, PHP eða Node er ekkert terminal, svo hver þessara teppir hljóðlaust. Ferlið situr þar, annállinn stöðvast eftir dulritunarlínuna og einingin lendir loks í tímamarki; þessi þögn er ástæðan fyrir því að fólk bætir við endurtilraunarlykkju eða sleep í stað þess að skoða hvaða kvaðning bíður. Aðeins stjórnsokkurinn getur svarað öllum fjórum. Skírteinisskráin svarar þeirri fyrstu og engu öðru.

auth-user-pass: ein skrá, ein kvaðning

Skráin geymir notandanafnið á fyrstu línu og lykilorðið á annarri, og ekkert annað: engar gæsalappir, engin lykilnöfn, engin athugasemd. Stilltu 600 ham og gerðu eigandann að því reikningi sem keyrir openvpn, sem fyrir þjónustu er oft sérstakur notandi frekar en innskráningin þín. Skrá í eigu root undir /root er munurinn á skipun sem virkar í skelinni þinni og einingu sem mistekst við ræsingu.

Tveir smáatriðir gera rétta skrá að kvaðningu. Ritstjóri sem vistar CRLF skilur eftir vagnfærslu límda við lykilorðið, svo þjónninn hafnar lykilorði sem lítur rétt út í skránni; athugaðu með cat -A eða od -c frekar en með auganu. Og auth-user-pass án röksemdar inni í sniðinu þýðir «spurðu notandann» að hönnun, sem önnur tilskipun á skipanalínunni gæti ekki hnekkt, því sniðið er þáttað þar sem það liggur.

Röð valkosta er þriðja gildran, og hún fer eftir útgáfu. Sumar OpenVPN 2.4 byggingar hunsa --auth-user-pass þegar það kemur fyrir --config, svo sömu tveir valkostir í hinni röðinni tengjast. Settu tilskipunina inni í sniðinu, eða á eftir --config á skipanalínunni, og grep sniðið fyrir hverri tilviksmynd áður en þú breytir einhverju öðru.

auth-nocache tilheyrir þessu fyrirkomulagi en veitir ekkert. Það takmarkar hversu lengi biðlarinn heldur skírteininu í minni, sem hjálpar eftir hrun og alls ekki þegar skráin vantar. Endurtenging eftir tímamark setu á þjónshlið les skrána aftur, svo skírteini sem virkaði við ræsingu getur samt runnið út mitt í degi.

Stjórnsokkurinn: hver kvaðning, meira yfirborð

Ræstu biðlarann með hlustara og lýstu því skýrt yfir að kvaðningar verði tilkynntar á honum, með tilskipununum sem skjalfestar eru í OpenVPN 2.6 handbókinni:

management 127.0.0.1 3030
management-query-passwords

Frá bash skaltu halda tengingunni á varaskráarlýsingu og svara eftir nafni kvaðningarinnar í stað stöðu, því endurtenging getur spurt í annarri röð:

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

Mörkin eru flutningurinn. Stjórnsamskiptin eru hreinn texti yfir TCP á loopback, svo hlustarinn má ekki vera birtur á LAN- eða gönguslóðaheimilisfangi svo fjartengdur stjórnandi nái til hans; fjartengdur stjórnandi þýðir SSH-framsendingu, ekki breiðari bindingu. Samfélagspúkinn tekur líka aðeins við einum stjórnbiðlara í einu, svo GUI eða skjár geta ekki deilt sokkinum með skriftinni þinni. Seinni tengingunni er hafnað, ekki raðað, og bilunin lítur út eins og skrift sem heyrir ekki lengur.

Sá sokkur er líka stjórnarrás. Án stjórnlykilorðs getur allt sem getur tengst 127.0.0.1:3030 lesið stöðu, drepið göngin eða svarað kvaðningu sjálft. Stjórnlykilorðið og skírteinisskráin eru leyndarmál af sama flokki, og bæði eiga skilið sömu gætni.

Hvort hentar uppsetningunni

Veldu skírteinisskrána þegar eina kvaðningin er reikningsparið, biðlarinn keyrir sem þjónusta með stöðugan eiganda, og þú getur haldið 600 skrá utan afrita sem þú stjórnar ekki. Veldu stjórnsokkurinn þegar lykilorðssetning lykils eða PKCS#12 lykilorð er í spili, þegar umbúðirnar hafa nú þegar umsjón með ferlinu, eða þegar þú þarft að fylgjast með stöðu og kvaðningum meðan þú kembir endurtengingu.

Tvö skilyrði færa ákvörðunina. Ef umbúðirnar eru /bin/sh, systemd eining sem kallar tvíundina beint, eða lágmarksílát, er sokkalími eingöngu fyrir bash ekki tiltækur og skráin er ódýrara svarið. Ef leyndarmálið snýst oft er hvorug skráin gott heimili fyrir það: spurðu lyklahring úr lítilli umbúð og láttu eininguna kalla umbúðirnar, sem heldur snúningnum á einum stað og lykilorðinu utan skeljasögunnar.

Ferlishliðrun stendur milli þeirra tveggja og tilheyrir hvorugu. Einn línurinn hér að neðan virkar vegna þess að bash víkkar hann áður en openvpn byrjar, ekki vegna þess að biðlarinn skilji setningafræðina:

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

Hann brotnar undir /bin/sh, í einingu sem fer fram hjá skelinni og í ímyndum án bash eða /dev/fd. Haltu honum fyrir gagnvirka prófun, aldrei sem samninginn sem þjónusta byggir á.

Verndaðu leyndarmálið og staðfestu síðan úr annálnum

Bæði fyrirkomulagið skilja eftir leyndarmál sem OpenVPN-ferlið getur lesið. Settu lykilorðið aldrei á skipanalínuna eða í einingarskrána, þar sem ps og systemctl sýna það hverjum staðbundnum notanda; gefðu slóðina að skránni, ekki gildið í henni. Þar sem skírteini geta komið í stað reikningsparsins fjarlægir það flokk kvaðningarinnar í stað þess að fela hana.

Rétt keyrsla sýnir kvaðningarröðina klárast og setuna ná «Initialization Sequence Completed». Ef biðlarinn stöðvast við sömu kvaðningu mistókst samsvörunin: prentaðu nákvæmu línurnar sem sokkurinn sendi, athugaðu gæsalappir og nafn kvaðningarinnar, og lagaðu mynstrið í stað þess að bæta við sleep. Göng sem tilkynna árangur og flytja ekkert er vandamál í leiðsögn eða push, ekki skírteina.

Prófaðu síðan endurtenginguna, ekki aðeins fyrstu ræsinguna. Slepptu setunni á þjónshlið eða bíddu eftir tímamarki hennar; biðlarinn spyr aftur, og þar sýnir skrá sem leit rétt út við ræsingu hvort hún sé enn læsileg fyrir reikninginn sem tengist aftur.

Tengdir greinar