RAND_bytes ya kasa a OpenVPN: kuskuren ɗakin karatu ko turaɗɗiyar node
Gazawar RAND_bytes na iya nufin tushen entropy da aka ƙi ko node da jail ya ɓoye. Karanta jerin kurakurai da kallon tsari kafin ƙirƙirar na'urori.
RAND_bytes() failed magana ce game da primitive ɗaya na gida, ba game da asusu, maɓallin da aka raba tun farko ko tashar nesa ba. Kuskure biyu mabambanta sosai suna haifar da layi ɗaya kuma suna barin shaidu daban-daban. Ɗaya backend ne na ɓoyewa wanda ya ƙi fitar da baiti; ɗayan tsari ne da ba ya isa tushen entropy da aka gina lambar sa domin shi. Rabuwar su na buƙatar karatun layin kurakurai sau ɗaya da kallon tsarin fayil na tsarin da aka tsare sau ɗaya, kuma wannan dubawa ya kamata ya kasance kafin a ƙirƙiri wani abu a ƙarƙashin /dev.
Abin da ƙimar dawowa ke bambancewa
Yarjejeniyar da aka rubuta tana bambance sakamako uku, ba biyu ba: 1 don nasara, -1 lokacin da hanyar RAND da aka ɗora ba ta goyi bayan buƙatar ba, da 0 don sauran gazawa, tare da barin bayani a layin kurakurai. Bayanin RAND_bytes yana ƙara wani batu da ke da sauƙin tsallakewa: janaretar da aka saba tana ɗaukar iri daga tsarin aiki a dandamali da ake goyon baya, kuma lokacin da wannan shuka iri ya kasa tana kasancewa cikin yanayin kuskure maimakon mayar da baiti da za a iya hasashe.
Ɗaya ne kawai daga waɗannan lambobin ke bayyana muhalli. -1 tambaya ce ta gini, mai bayarwa ko fasali, domin lambar ta nemi abin da aiwatarwar da ke aiki ba ta bayarwa. 0 tare da korafin shuka iri tambaya ce ta muhalli, domin janaretar ba ta sami entropy ko kaɗan ba. Lambar ita kaɗai ba ta taɓa faɗin wacece, kuma sunan aikin ma ba ya faɗi.
Lokacin da ɓoyayyiyar node ta na'ura ita ce ainihin dalili
Sabis ɗin da aka iyakance yana ganin wata bishiya daban da shell ɗin da kake bugawa. Kurkukun chroot, hotunan kwantena da fayilolin unit da aka ƙarfafa suna gabatar da /dev wanda ke ɗauke da ƙananan nodes fiye da na mai masaukin. Idan aiwatarwar da ta kasa tana buɗe /dev/urandom da sunan hanya, wannan bambanci ya isa ya karya farawa yayin da mai masaukin kansa ya yi kama da lafiya sosai. Na'urar da ke waje da kurkuku ba ta tabbatar da kome game da abin da aka ba tsarin da aka tsare izinin buɗewa ba.
Duk da haka ba kowane ma'aunin bazuwar ke buƙatar hanya ba. Kira na tsarin getrandom na Linux ba ya karɓar sunan fayil ko mai bayyana fayil, kuma shafin littafin sa yana lura cewa wannan sifa tana da amfani a daidai inda chroot ke ɓoye hanyoyin na'urori.
Don haka bayanin node ɗin da ya ɓace hasashe ne game da reshe ɗaya na lambar, ba doka ba game da lambobin bazuwar gaba ɗaya. Yana tsayawa lokacin da shaidu suka ambaci hanya, kuma hasashe ne lokacin da shaidu suka ambaci wani abu dabam.
Fara karanta layin kurakurai, sannan kallon tsarin
Hanya mafi sauri ta warware tambayar ita ce karanta abin da ɗakin karatu ya riga ya rubuta, sannan ka duba kai tsaye kallon cikin kurkuku. Fara da gine-ginen OpenSSL da sabis ɗin ya ɗora a zahiri, domin tarin masu bayarwa sun bambanta tsakanin manyan juzu'i da tsakanin rarrabawa. Sannan ka tambayi systemd wane tsari ne ke gudana da waɗanne hane-hane suka shafe shi. Sai bayan duka gaskiyar biyu sun kwanta a kan tebur ne ya dace a lissafa nodes ɗin da wannan tsari yake gani.
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
Yi waɗannan karatun a kan wannan tsari ɗaya, ba a kan shell ɗin da ya kasance a buɗe ba. Kwatanta /dev na mai masauki da kallon tsarin da ba shi da alaƙa ita ce hanyar da ake gyara dogaron da bai dace ba sau biyu.
Ƙara dogaro ne kawai lokacin da za ka iya ambatar sa da suna
Lokacin da shaidu suka ambaci hanya da gaske, gyaran yana da ƙanƙanta: sanya wannan hanya ɗaya a samuwa cikin kurkuku kuma ka bar duk sauran. Bind mount na node ɗaya yawanci ya isa, kuma mknod tare da daidaitattun lambobin major da minor na node yana ba da sakamako ɗaya a kan shigarwa inda mount ba zaɓi ba ne. Faɗaɗa sandbox, ba da damar shiga kowace na'urar haruffa ko kashe PrivateDevices yana musanya gyaran da aka yi niyya da koma baya na tsaro na dindindin.
Aljanin entropy ba ya maye gurbin wannan gyaran. Fakitoci kamar haveged suna canza yadda ake ciyar da tafkin kernel; ba za su iya ƙirƙirar hanyar da aka ba tsarin da aka tsare izinin buɗewa ba. Shigar da ɗaya na iya sa jadawalin lafiya ya yi kama da kyau yayin da kiran buɗewa har yanzu yana kasawa. Ka raba matsalolin biyu, in ba haka ba za a sake danganta gazawar ta gaba da layin da bai dace ba.
Tabbatar da janareta da ramin daban
Sake farawa ita ce gwajin da kawai ke sake amfani da wannan tsarin, wannan fayil ɗin unit da wannan keɓewa da suka haifar da gazawar. Kunna shi, sannan karanta sabbin shigarwar jarida maimakon samfurin daga wata farawa da ta gabata.
sudo systemctl restart openvpn-server@lab
sudo journalctl -u openvpn-server@lab --since -5min --no-pager | grep -iE 'rand|entropy|Initialization Sequence'
Nemo abubuwa biyu daban a cikin wannan fitarwa: saƙon game da tushen bazuwar ya ɓace, da ramin ya isa matsayin farkon da ya saba. Janareta da ya sake aiki yana kawar da gazawa ɗaya ta gida kuma ba ya cewa kome game da asalin uwar garke, takardun shiga ko turawa. Gwada wannan da tsarin abokin ciniki ɗaya da ya kasa a baya, domin sakamakon ya kasance mai kwatantawa ba kawai mafi kyau ba.