Theip ar RAND_bytes in OpenVPN: earráid leabharlainne nó nód ar iarraidh
Is féidir le teip RAND_bytes foinse eantrópachta a bheith diúltaithe nó nód atá i bhfolach ag jail a chur in iúl. Léigh an scuaine earráidí agus radharc an phróisis sula gcruthaítear feistí.
RAND_bytes() failed is ráiteas é faoi bhunphrionsabal áitiúil amháin, ní faoin gcuntas, an eochair réamhroinnte ná an port cianda. Táirgeann dhá locht an-difriúla an líne chéanna agus fágann siad fianaise dhifriúil ina ndiaidh. Ceann amháin is inneall cripteagrafach é a dhiúltaíonn bearta a astú; an ceann eile is próiseas é nach sroicheann an fhoinse eantrópachta ar tógadh a chód di. Chun iad a dheighilt teastaíonn léamh amháin ar an scuaine earráidí agus sracfhéachaint amháin ar radharc chóras comhad an phróisis atá faoi ghlas, agus baineann an seiceáil sin le bheith ann sula gcruthaítear aon rud faoi /dev.
Cad a dhealaíonn an luach fillte
Dealaíonn an conradh doiciméadaithe trí thoradh, ní dhá cheann: 1 le haghaidh ratha, -1 nuair nach dtacaíonn an modh RAND luchtaithe leis an iarratas, agus 0 le haghaidh lochtanna eile, agus an míniú fágtha ag an scuaine earráidí. Cuireann an tagairt RAND_bytes pointe leis atá éasca a fhágáil thar lear: síolraíonn an gineadóir réamhshocraithe ón gcóras oibriúcháin ar ardáin thacaithe, agus nuair a theipeann ar an síolrú sin fanann sé i riocht earráide in ionad bearta intuartha a thabhairt ar ais.
Ní thuairiscíonn ach ceann amháin de na huimhreacha sin an timpeallacht. Is ceist tógála, soláthraí nó gné í -1, toisc gur iarr an cód rud éigin nach dtairgeann an cur i bhfeidhm gníomhach. Is ceist timpeallachta é 0 le casaoid faoi shíolrú, toisc nach raibh an gineadóir in ann eantrópacht ar bith a fháil. Ní deir an uimhir léi féin riamh cé acu, agus ní deir ainm na feidhme ach an oiread.
Nuair is é nód feiste i bhfolach an fíorchúis
Feiceann seirbhís theoranta crann difriúil ón sliogán ina bhfuil tú ag clóscríobh. Cuireann jails chroot, íomhánna coimeádán agus comhaid aonaid chruaite /dev i láthair go rialta nach bhfuil iontu ach níos lú nód ná mar atá ag an óstach. Má osclaíonn an cur i bhfeidhm atá ag teip /dev/urandom de réir an chosáin, is leor an difríocht sin chun an tosú a bhriseadh agus an t-óstach féin ag breathnú go hiomlán sláintiúil. Ní chruthaíonn feiste atá taobh amuigh den jail aon rud faoin méid a bhfuil cead ag an bpróiseas faoi ghlas a oscailt.
Ní gá cosán do gach comhéadan randamach, áfach. Ní ghlacann glaochóras getrandom Linux le hainm comhaid ná le tuairisceoir comhaid, agus tugann a leathanach láimhe faoi deara go bhfuil an tréith sin úsáideach go díreach san áit a bhfuil cosáin feiste á bhfolach ag chroot.
Mar sin is hipitéis í an míniú ar an nód atá ar iarraidh faoi bhrainse amháin den chód, ní riail faoi uimhreacha randamacha i gcoitinne. Seasann sé nuair a luann an fhianaise cosán, agus is buille faoi thuairim é nuair a luann an fhianaise rud éigin eile.
Léigh an scuaine earráidí, ansin radharc an phróisis
Is é an bealach is tapa chun an cheist a réiteach ná an méid atá taifeadta ag an leabharlann cheana a léamh, agus ansin breathnú go díreach ar an radharc taobh istigh den jail. Tosaigh leis an tógáil OpenSSL a luchtaigh an tseirbhís i ndáiríre, mar go mbíonn staic soláthraithe difriúil idir mórleaganacha agus idir dáiltí. Iarr ar systemd ansin cén próiseas atá ag rith agus cén srianta a bhaineann leis. Ní fiú na nóid a liostú a fheiceann an próiseas sin ach amháin nuair a bhíonn an dá fhíric ar an tábla.
openssl version -a
systemctl show openvpn-server@lab -p MainPID -p PrivateDevices -p DevicePolicy
pid=$(systemctl show -p MainPID --value openvpn-server@lab)
sudo ls -l /proc/"$pid"/root/dev/urandom /proc/"$pid"/root/dev/random
Rith na léamha sin i gcoinne an phróisis chéanna, ní i gcoinne an tsliogáin a tharlaíonn a bheith oscailte. Is é comparáid /dev an óstaigh le radharc próisis neamhghaolmhar an bealach a ndeisítear an spleáchas mícheart faoi dhó.
Cuir an spleáchas leis ach amháin nuair is féidir leat é a ainmniú
Nuair a luann an fhianaise cosán i ndáiríre, tá an deisiú beag: déan an t-aon chosán sin ar fáil taobh istigh den jail agus fág gach rud eile mar atá. Is leor bind mount den nód singil de ghnáth, agus tugann mknod leis na huimhreacha caighdeánacha major agus minor den nód an toradh céanna ar shuiteálacha nach rogha iad a shuiteáil. Má leathnaítear an sandbox, má thugtar rochtain ar gach feiste charachtair nó má mhúchtar PrivateDevices, malartaítear ceartú dírithe ar aisghairm slándála buan.
Ní hionann deamhan eantrópachta agus an deisiú sin. Athraíonn pacáistí ar nós haveged an chaoi a gcuirtear linn eithne le beatha; ní féidir leo cosán a chruthú a bhfuil cead ag próiseas faoi ghlas a oscailt. D'fhéadfadh ceann a shuiteáil féachaint níos fearr a thabhairt ar ghraf sláinte agus an glao oscailte fós ag teip. Coinnigh an dá fhadhb ar leithligh, nó cuirfear an chéad teip eile i leith an tsraithe mhícheart arís.
Fíoraigh an gineadóir agus an tollán ar leithligh
Is é atosú an t-aon tástáil a athúsáideann an chumraíocht chéanna, an comhad aonaid céanna agus an teorannú céanna a tháirg an teip. Rith é, ansin léigh na hiontrálacha is nua sa dialann seachas sampla ó thosú níos luaithe.
sudo systemctl restart openvpn-server@lab
sudo journalctl -u openvpn-server@lab --since -5min --no-pager | grep -iE 'rand|entropy|Initialization Sequence'
Cuardaigh dhá rud ar leith san aschur sin: an teachtaireacht faoin bhfoinse randamach ag imeacht, agus an tollán ag sroicheadh a ghnáthchloch mhíle tosaithe. Baineann gineadóir a oibríonn arís teip áitiúil amháin agus ní deir sé aon rud faoi chéannacht an fhreastalaí, na dintiúirí ná an ródú. Tástáil é leis an gcumraíocht chliaint chéanna a theip roimhe seo, ionas go mbeidh an toradh inchomparáide agus ní hamháin níos fearr.