Ar ôl gollwng y breintiau: pa ffeiliau OpenVPN sy’n dal i weithio?
Mae disgrifyddion a agorwyd cyn y gollwng yn parhau i weithio; nid yw llwybrau a ailagorir yn ddiweddarach. Penderfynwch pa un o dri ffeil amser rhedeg y mae eich gosodiad yn gorfod ei ailagor.
Mae amser rhedeg hir ond yn profi bod y cychwyn wedi llwyddo gyda’r breintiau a oedd gan y daemon ar y pryd. Daw’r methiannau sy’n cyfrif yma yn ddiweddarach: mae cleient newydd yn cysylltu, mae rhestr ddirymu yn cael ei disodli, mae sgript gymorth angen ysgrifennu ffeil. Mae pob un ohonynt yn agoriad newydd a wneir gan y cyfrif heb freintiau, gyda’i gwestiwn caniatâd ei hun a’i neges gwall ei hun. Mae tri phenderfyniad yn gwahanu gosodiad sy’n dal i weithio oddi wrth un sy’n methu ar y digwyddiad nesaf.
Gwahanwch yr hyn a lwythwyd yn gynnar oddi wrth yr hyn a agorir yn ddiweddarach
Mae disgrifydd yn handlen ar ddisgrifiad ffeil agored, a phenderfynwyd y modd mynediad pan grewyd y disgrifiad hwnnw. Nid yw newid defnyddiwr y broses yn ddiweddarach yn cau’r handlen, ac felly mae ffeil allwedd a ddarllenwyd fel root yn dal i weithio ar ôl y gollwng. Nid yw’r modd yn newid chwaith: nid yw handlen a agorwyd ar gyfer darllen yn dod yn ysgrifennadwy, ac nid yw handlen ysgrifennadwy yn cael ei dirymu dim ond oherwydd bod y cyfrif wedi colli ei hawliau i’r llwybr. Mae’r ddau ffaith hyn yn esbonio’r rhan fwyaf o’r ymddygiad rhyfedd yn yr adroddiadau hyn.
Yr hanner arall yw cof. Gall daemon ddadansoddi tystysgrif, cadw’r deunydd dadansoddedig a chau’r ffeil; yr hyn sy’n parhau mewn defnydd yw data, nid ffeil agored. Felly nid yw traffig parhaus yn profi bod disgrifydd yn agored nac bod yr enw llwybr yn gyrraeddadwy. Mae ond yn profi bod y deunydd sydd ei angen ar gyfer y sesiwn bresennol wedi ei gael yn gynt.
Mae agoriad diweddarach yn drafodiad gwahanol. Mae’n rhedeg o dan y tystlythyrau presennol, y cyd-destun diogelwch presennol a’r olwg mowntio bresennol, felly gall llwybr a oedd yn ddarllenadwy wrth gychwyn gael ei wrthod ar y cysylltiad nesaf. Mae cylchdroi yn ychwanegu trap: mae ysgrifennu ffeil newydd dros yr un enw llwybr yn gadael disgrifydd presennol ynghlwm wrth yr hen wrthrych, felly gall ail-lwytho ymddangos yn llwyddiannus tra mae’r daemon yn dal i ddefnyddio’r cynnwys blaenorol. Cymharwch yr inode y mae’r broses yn ei ddal a’r un ar y disg cyn credu bod cylchdro wedi cymryd effaith.
Enwch y tri darlleniad amser rhedeg a phryd mae pob un yn tanio
Mae tri adnodd fel arfer yn agor ymhell ar ôl y cychwyn, ac maent yn methu ar adegau gwahanol. Mae ffeil ffurfweddu cleient penodol yn cael ei darllen pan mae’r cleient hwnnw yn cysylltu, felly gall dorri i un defnyddiwr tra mae pawb arall yn parhau. Mae data dirymu yn cael ei ymgynghori yn ystod dilysu cymar ac eto pan ddisodlir y ffeil. Ni chyffyrddir â chyfeiriadur dros dro ond pan mae sgript neu ategyn yn ysgrifennu rhywbeth.
Nid oes yr un o’r tri yn perthyn i lwybr cychwyn, ac felly gall gweinydd a fu’n iach am wythnosau fethu ar y cysylltiad nesaf. Mae’r categori hefyd yn enwi perchennog y cywiriad: y ddau gyntaf yw hawliau darllen ar ffurfweddiad o dan gyfrif y daemon, a’r trydydd yw lle ysgrifennadwy â phwrpas cul.
| Path reopened later | What triggers the open | First sign when it fails |
|---|---|---|
| Client configuration file | A connection for that client identity | One client rejected while others connect |
| Revocation data | Peer authentication, including after replacement | Revoked and valid peers both refused |
| Script or plugin temporary directory | A helper needs to create a file | The helper exits with a path error |
persist-key yn ateb cwestiwn culach nag y mae’r rhan fwyaf yn ei dybio. Mae’n cadw’r ffeil allwedd ar agor drwy’r ailosodiadau SIGUSR1 a ping-restart a ddogfennwyd, ac nid yw’n gwneud dim ar gyfer ffeiliau CCD, data dirymu, gweithredadwy cymorth neu ailgychwyn proses llawn. Mae’r rhain yn dal i ddilyn eu llwybrau agor eu hunain, o dan ba bynnag gyfrif sy’n rhedeg ar y pryd.
Cadarnhewch y cyfrif a’r olwg sydd ganddo mewn gwirionedd
Gofynnwch i’r daemon sy’n rhedeg pa gyfrif y mae’n ei ddefnyddio yn lle ymddiried yn y ffeil uned, yna cymharwch yr ateb a’r hyn y mae’r uned yn ei osod. Anghysondeb yw’r peth cyntaf i’w ddatrys, oherwydd mae pob gwiriad caniatâd diweddarach yn rhedeg fel pwy yw’r broses mewn gwirionedd. Yna cerddwch y llwybr un gydran ar y tro; mae tramwyo yn cael ei werthuso ar bob lefel, felly mae ffeil ddarllenadwy mewn cyfeiriadur na ellir ei dramwyo yn parhau’n annarllenadwy. Y modd ffeil terfynol yw’r cwestiwn olaf, nid y cyntaf.
Mae gofodau enw a blychau tywod gwasanaeth yn ychwanegu ffiniau nad yw perchnogaeth a darnau modd yn eu disgrifio. Gall llwybr gweladwy yn eich cragen fod yn absennol neu’n ddarllen yn unig y tu mewn i chroot, gofod enw mowntio, neu uned sy’n cuddio cyfeiriaduron cartref. Mae modiwlau diogelwch yn ychwanegu haen arall, felly gall ffeil sy’n edrych yn ddarllenadwy gael ei gwrthod pan agorir hi.
ps -o user:12,pid,args -C openvpn
systemctl show -p User -p Group -p ProtectHome -p RootDirectory [email protected]
sudo -u openvpn namei -l /etc/openvpn/ccd/aliceNid yw darlleniad llwyddiannus yng nghragen y gweinyddwr yn profi’r un o’r amodau cyfunol hynny. Rhedegwch y gwiriad fel cyfrif y daemon, gyda’r un gofod enw a blwch tywod, neu dderbyn bod y canlyniad yn disgrifio eich cragen ac nid y gweinydd. Y trydydd gorchymyn yw fersiwn rhad y prawf hwnnw: mae’n argraffu modd pob cydran ac yn methu ar y gyntaf na all cyfrif y daemon ei thramwyo.
Rhowch yr ysgrifennu amser rhedeg mewn cyfeiriadur ei hun
Dim ond hanner y rhestr yw darllen. Efallai y bydd angen i sgript gymorth greu ffeil statws, efallai y bydd angen i ategyn ysgrifennu cyflwr wrth ymyl ei ffurfweddiad, ac nid yw’r ysgrifeniadau hynny’n cael eu cynnwys drwy wneud coeden y ffurfweddiad yn ysgrifennadwy. Rhowch i’r cyfeiriadur penodol y caniatâd ysgrifennu y mae ei swyddogaeth yn ei angen, gyda pherchennog a modd y gallwch eu hesbonio. Dewiswch fynediad darllen yn unig ar gyfer popeth a ddarllenir yn unig.
Cadwch hawliau’r allwedd breifat ar wahân i’r ffeiliau polisi. Mae gan allwedd y mae’n rhaid ei hailddarllen ar ôl ailosodiad ofyniad gwahanol i ffeil cleient a ddarllenir ar bob cysylltiad, ac mae un modd caniataol ar gyfer y ddau yn rhoi mwy o fynediad nag y mae’r broblem yn ei ofyn. Mae cyfrif daemon pwrpasol â pherchnogaeth gul yn haws ei archwilio na grŵp eang. Pan fydd rhaid i’r allwedd oroesi ailosodiadau, persist-key mae’n dileu’r ailddarllen yn lle lledaenu’r cyfeiriadur.
Penderfynwch o’r digwyddiad y gallwch ei atgynhyrchu
Mae twnnel byw yn profi un llwybr drwy’r cod. Y digwyddiad sydd angen y ffeil yw’r unig brawf sy’n cynnwys yr agoriad sy’n bwysig i chi, boed yn gysylltiad cleient newydd, yn ffeil ddirymu wedi ei disodli, yn ailosodiad meddal a ganiateir neu’n ailgychwyn wedi ei gynllunio. Dewiswch y digwyddiad, rhedegwch ef, a chadwch y gwall cyntaf yn hytrach na’r olaf.
Ar gyfer ailosodiad meddal, mae un signal a chofnod yr uned yn dangos a ailddarllenwyd yr allwedd. Anfonwch y signal, yna darllenwch y llinellau olaf a ysgrifennodd yr uned:
systemctl kill -s SIGUSR1 [email protected]
journalctl -u [email protected] -n 40 --no-pagerPeidiwch â chasglu na all daemon sydd wedi ei gyfaddawdu newid ffeiliau mwyach dim ond oherwydd bod breintiau wedi eu gostwng. Mae’r hyn y gall ei wneud o hyd yn dibynnu ar y tystlythyrau sy’n weddill, ei alluoedd, y cyfeiriaduron y gall ysgrifennu ynddynt a phob disgrifydd ysgrifennadwy y mae’n dal i’w ddal. Mae lleihau breintiau yn culhau awdurdod, a’r rhestr o agoriadau amser rhedeg sy’n dangos pa mor bell. Ysgrifennwch y ffin honno wrth ymyl y ffurfweddiad fel na fydd rhaid i’r person nesaf ei hailddarganfod.