Ұзақ жұмыс уақыты тек сол сәтте демонда болған артықшылықтармен іске қосу сәтті болғанын дәлелдейді. Мұнда маңызды ақаулар кейінірек келеді: жаңа клиент қосылады, кері қайтару тізімі ауыстырылады, көмекші скрипт файл жазуы керек. Олардың әрқайсысы артықшылықсыз есептік жазба жасайтын жаңа ашу, өз рұқсат сұрағымен және өз қате хабарламасымен. Үш шешім жұмысын жалғастыратын конфигурацияны келесі оқиғада сәтсіздікке ұшырайтыннан ажыратады.

Ерте жүктелгенді кейін ашылатыннан бөліңіз

Дескриптор — ашық файл сипаттамасындағы тұтқа, ал қатынау режимі сол сипаттама жасалған кезде бекітілген. Кейін процестің пайдаланушысын ауыстыру тұтқаны жабпайды, сондықтан root ретінде оқылған кілт файлы төмендетуден кейін де жұмыс істейді. Режим де өзгермейді: оқуға ашылған тұтқа жазуға жарамды болмайды, ал жазуға жарамды тұтқа тек есептік жазба жолдағы құқықтарынан айырылғаны үшін кері қайтарылмайды. Осы екі факт осы есептердегі таңқаларлық мінез-құлықтың басым бөлігін түсіндіреді.

Екінші жартысы — жад. Демон сертификатты талдап, талданған материалды сақтап, файлды жаба алады; қолданыста қалатыны деректер, ашық файл емес. Сондықтан жалғасқан трафик дескриптордың ашық екенін де, жол атауына қол жететінін де дәлелдемейді. Ол тек ағымдағы сессияға қажет материалдың бұрын алынғанын дәлелдейді.

Кейінгі ашу — басқа транзакция. Ол ағымдағы тіркелгі деректерімен, ағымдағы қауіпсіздік контекстімен және ағымдағы тағу көрінісімен жүреді, сондықтан іске қосу кезінде оқылатын жол келесі қосылымда қабылданбауы мүмкін. Айналдыру тұзақ қосады: сол жол атауына жаңа файл жазғанда бар дескриптор ескі нысанға байланған күйде қалады, сондықтан қайта жүктеу сәтті болып көрінуі мүмкін, ал демон әлі алдыңғы мазмұнды пайдаланады. Айналдыру күшіне енді деп сенбес бұрын процестің ұстаған inode-ын дискідегімен салыстырыңыз.

Үш орындалу уақытындағы оқылымды және қайсысы қашан болатынын атаңыз

Үш ресурс әдетте инициализациядан әлдеқайда кейін ашылады және әртүрлі сәттерде сәтсіздікке ұшырайды. Белгілі клиенттің конфигурация файлы сол клиент қосылғанда оқылады, сондықтан қалғандары жалғасып жатқанда бір пайдаланушы үшін бұзылуы мүмкін. Кері қайтару деректері теңдестірушінің аутентификациясы кезінде және файл ауыстырылғанда қайта қаралады. Уақытша каталогқа скрипт немесе қосымша бірдеңе жазғанда ғана қол тиеді.

Үшеуінің ешқайсысы іске қосу жолына жатпайды, сондықтан апталап сау болған сервер келесі қосылымда сәтсіздікке ұшырауы мүмкін. Санат түзетудің иесін де атайды: алғашқы екеуі демон есептік жазбасының астындағы конфигурацияға оқу рұқсаты, ал үшіншісі тар мақсатты жазуға болатын орын.

Path reopened laterWhat triggers the openFirst sign when it fails
Client configuration fileA connection for that client identityOne client rejected while others connect
Revocation dataPeer authentication, including after replacementRevoked and valid peers both refused
Script or plugin temporary directoryA helper needs to create a fileThe helper exits with a path error

persist-key көбісі ойлағаннан тар сұраққа жауап береді. Ол құжатталған SIGUSR1 және ping-restart қайта орнатуларында кілт файлын ашық ұстайды, ал CCD файлдарына, кері қайтару деректеріне, көмекші орындалатын файлдарға немесе процесті толық қайта іске қосуға ештеңе істемейді. Олар әлі өз ашу жолдарымен жүреді, сол кезде жұмыс істеп тұрған қандай да бір есептік жазбаның астында.

Есептік жазбаны және оның нақты көрінісін растаңыз

unit файлына сенудің орнына жұмыс істеп тұрған демоннан қай есептік жазбаны пайдаланып жатқанын сұраңыз, содан кейін жауапты unit белгілегенімен салыстырыңыз. Сәйкессіздік — бірінші шешілетін мәселе, өйткені кейінгі әрбір рұқсат тексерісі процестің шын мәнінде кім екені ретінде жүреді. Содан кейін жолды компонент-компонент бойынша жүріңіз; өту әр деңгейде бағаланады, сондықтан өтуге болмайтын каталогтағы оқылатын файл оқылмайтын күйінде қалады. Соңғы файл режимі — бірінші емес, соңғы сұрақ.

Атау кеңістіктері мен қызмет құмсалғыштары меншік пен режим биттері сипаттамайтын шекараларды қосады. Сіздің shell-іңізде көрінетін жол chroot, тағу атау кеңістігі немесе үй каталогтарын жасыратын unit ішінде болмауы немесе тек оқуға болатын болуы мүмкін. Қауіпсіздік модульдері тағы бір қабат қосады, сондықтан оқылатын көрінетін файл ашылғанда әлі де қабылданбауы мүмкін.

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/alice

Әкімші shell-індегі сәтті оқылым сол біріккен шарттардың ешқайсысын тексермейді. Тексеруді демон есептік жазбасымен, сол атау кеңістігі мен құмсалғышпен орындаңыз, немесе нәтиже серверді емес, сіздің shell-іңізді сипаттайтынын қабылдаңыз. Үшінші пәрмен — сол тестің арзан нұсқасы: ол әр компоненттің режимін шығарады және демон есептік жазбасы өте алмайтын бірінші компонентте сәтсіздікке ұшырайды.

Орындалу уақытындағы жазуды өз каталогына беріңіз

Оқу — тізімнің жартысы ғана. Көмекші скрипт күй файлын жасауды қажет етуі мүмкін, қосымша өз конфигурациясының жанында күй жазуы мүмкін, ал бұл жазбалар конфигурация ағашын жазуға жарамды етумен жабылмайды. Нақты каталогқа оның функциясы қажет ететін жазу рұқсатын беріңіз, түсіндіре алатын иесімен және режимімен. Тек оқылатынның бәріне тек оқуға арналған қатынауды таңдаңыз.

Жеке кілттің рұқсаттарын саясат файлдарынан бөлек ұстаңыз. Қайта орнатудан кейін қайта оқылуы керек кілттің талабы әр қосылымда оқылатын клиент файлынан өзгеше, ал екеуіне бір жеңіл режим мәселе талап еткеннен көп қатынау береді. Тар меншікті арнайы демон есептік жазбасы кең топтан тексеруге оңай. Кілт қайта орнатуларға төтеп беруі керек болғанда, persist-key каталогты кеңейтудің орнына қайта оқуды алып тастайды.

Қайта шығара алатын оқиғадан шешім қабылдаңыз

Тірі туннель кодтағы бір жолды ғана дәлелдейді. Файл қажет оқиға — сізді қызықтыратын ашуды қамтитын жалғыз тест, ол жаңа клиент қосылымы, ауыстырылған кері қайтару файлы, рұқсат етілген жұмсақ қайта орнату немесе жоспарланған қайта іске қосу болсын. Оқиғаны таңдаңыз, орындаңыз және соңғы емес, бірінші қатені сақтаңыз.

Жұмсақ қайта орнату үшін бір сигнал және unit журналы кілттің қайта оқылғанын көрсетеді. Сигналды жіберіңіз, содан кейін unit жазған соңғы жолдарды оқыңыз:

systemctl kill -s SIGUSR1 [email protected]
journalctl -u [email protected] -n 40 --no-pager

Тек артықшылықтар төмендеді деп бұзылған демон енді файлдарды өзгерте алмайды деп қорытынды жасамаңыз. Ол әлі не істей алатыны қалған тіркелгі деректеріне, оның мүмкіндіктеріне, жаза алатын каталогтарына және әлі ұстап отырған кез келген жазуға жарамды дескрипторына байланысты. Артықшылықтарды азайту билікті тарылтады, ал орындалу уақытындағы ашулар тізімі қаншалықты екенін көрсетеді. Осы шекараны конфигурацияның жанына жазыңыз, сонда келесі адам оны қайта ашпайды.

Қатысты мақалалар