OpenVPN кілтін жасау үшін уақытша файл қажет емес
Кілт материалын жадыда ұстау файлдың өмірлік циклін болдырмайды, ағып кетуді емес. Шығыс пен қате ағындарын бөлек ұстаңыз, содан кейін кілтті құпия ретінде қарастырыңыз.
Кілт жасау уақытша файлды қажет етпейді, және одан бас тарту көптеген нұсқаулықтар меңзегеннен азырақ түзейді. Ол жоятыны — файлдың өмірлік циклі және оның айналасындағы тазалау жарысы. Ол тиіспеген күйде қалдыратыны — кейін құпияны ағызып жіберудің әрбір мүмкіндігі. Бұл скрипттердегі дұрыстық мәселесі әдетте басқа жерде отырады, өйткені диагностика мен кілт материалы түрлі ағындармен жүреді.
Файл ешқашан сіз ойлаған әшкерелеу болмады
Уақытша файл — ол барлығына оқуға қолжетімді болғанда, құлаудан аман қалғанда немесе ерекшеліктен кейін тазалау қадамы өткізіліп кеткенде нақты тәуекел. Бұлар шынайы және оларды түзетуге тұрарлық. Олар сонымен қатар жергілікті, көрінетін және тексеруге оңай. Өзгеріс тек көрініс үшін болды деп қорытынды жасамас бұрын, әрқайсысын өз скриптіңізде атаңыз.
Тыныш тәуекелдер төменде отырады: жөндеу кезінде басылған кілт, бүкіл нәтиже нысанын сериялайтын ерекшелік, ядролық дамп жазатын құлау өңдеушісі, алдымен файл жолын, содан кейін мазмұнын алатын журнал жинаушысы. Уақытша файлдан бас тарту олардың ешқайсысы үшін ештеңе жасамайды, және керісінше сену — жақсы ниетті қайта жазу құпияны бұрынғыдан гөрі ашық қалдыратын жол. Өзгерісті кезектегі бір жақсарту ретінде қарастырыңыз, шешім ретінде емес.
Файл атауы берілмегенде клиент не жазады
Клиенттің ағымдағы нұсқалары шығыс жолы берілмей кілт пәрмені берілгенде жасалған кілтті стандартты шығысқа жібереді. Дәл осы құжатталған әрекет жадындағы тәсілді өміршең етеді және құралды құрылғы жолына бағыттаудың ескі айласына деген қажеттілікті жояды.
import subprocess
proc = subprocess.run(
["openvpn", "--genkey", "tls-crypt"],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
check=True,
)
key_material = proc.stdout
Пәрменді тізім ретінде беріңіз. Мұнда қабықшаны кеңейту қажет емес, ал қабықшаны қосу аргумент шекарасын өзіңіз бақыламайтын тырнақшаларға тәуелді етер еді. Скрипт күткеннен өзге іздеу жолымен жұмыс істей алатын болса, ниеттелген орындалатын файлды абсолютті жолмен пайдаланыңыз.
Қайтару кодын тексеру сәтсіз шақырудан кейін табыс жолының жалғасуына жол бермейді. Онсыз бос байт жолы әрі қарай аға алады және тек әлдеқайда кейін, кілт пайдаланылатын жерде сәтсіздікке ұшырайды, ал қате хабарламасы енді жасауды мүлдем атамайды.
Екі ағын, екі мағына
Стандартты шығыс кілтті тасиды. Стандартты қате құралдың айтқысы келгеннің бәрін тасиды, соның ішінде конфигурация, нұсқа және кілт түрі туралы ескертулер. Екеуін бір буферге бағыттау — ортасына сөйлем тігілген сенімді көрінетін кілт шығаратын қате.
Сәтсіздік жолын да бөлек ұстаңыз. Шақыру сәтсіз болғанда, сәтсіз болған пәрмен мен шығу мәртебесін хабарлаңыз, содан кейін стандартты қатенің қандай да бір бөлігін көрсету қауіпсіз бе деп саналы түрде шешіңіз. Бүкіл нәтиже нысанын журналға төгу — әдеттегі қысқа жол, және ол кілтті өзімен бірге алып кетуі мүмкін.
Екілік үшін қауіпсіз оқу кейін материалды хэштесеңіз немесе салыстырсаңыз маңызды. Күтпеген кодтаумен мәтіндік режим ешқашан мәтін болуға арналмаған байттарды өзгертуі мүмкін, ал өзгерген кілтті қол алысу сәтсіз болғанша қате кілттен ажырату мүмкін емес.
Егер оны бәрібір сақтасаңыз, мұны саналы түрде жасаңыз
Көптеген орналастырулар ақырында кілтті дискіде, шлюзде немесе құпиялар қоймасында қажет етеді. Оны бір рет жазыңыз, кейінгі chmod емес, жасалған сәттен бастап шектеулі рұқсаттармен, және жазуды атомдық етіңіз, сонда ішінара файл қызмет іске қосылғанда оқитын файл болмайды. Сол каталогтағы жолдан қайта атау бұл үшін әдетте жеткілікті. Сәтсіздік тармағында дайындау жолын жойыңыз, өйткені сәтсіз жазу — адамдар ұмытатын көшірменің дәл өзі.
Файл жасалғанда оның режимін орнатыңыз, және каталог режимін де шектеулі ұстаңыз. Сақтық көшірме жұмысы ойланбастан сыпыратын орынның астындағы кез келген жолдан аулақ болыңыз, өйткені түнгі сақтық көшірмедегі құпия — сол көшірменің әрбір көшірмесіндегі құпия. Дәл сол пайым басқа қызметтер оқи алатын ортақ томға да қатысты.
Ортақ кілт — бұл жеке басы емес
Бұл материалды жасау куәлік шығармайды, клиентті тіркемейді және кім қосылып жатқанын анықтамайды. Ортақ кілт бір-біріне әлдеқашан сенетін тараптар арасындағы арнаны қорғайды; жеке басы әлі де куәліктен және оның алдында тұрған кез келген аутентификациядан келеді.
Кілт түрлері де бірін-бірі алмастырмайды. Бір мүмкіндік үшін симметриялық кілт екіншісі үшін дайын балама емес, ал жаңа шығарылымдар әр ұшында түрлі файлдармен өз нұсқаларын қосады. Конфигурацияңыз шынымен атайтын түрді жасаңыз, содан кейін оны сол түр анықтайтын рөлде пайдаланыңыз.
Нәтижені файл өлшемін қараумен емес, нақты қосылыммен тексеріңіз. Қол алысу аяқталып, журналдар кілт туралы ескерту көрсетпесе, жасау жолы дұрыс; егер кілт біріктірілген ағыннан кесілген болса, қосылым скриптті емес, қарсы тарапты нұсқайтындай сәтсіздікке ұшырар еді.