OpenVPN'дин auth-user-pass-verify скрипти: чыгуу кодун туура коюу
Хуктун чыгуу статусу — чечим, анын журнал сабы эмес. Текшерүүчүнүн жыйынтыктарын 0, 1 же кийинкиге калтырылганга дал келтириңиз, ыйгарым укук файлын маалымат катары окуңуз жана катада жабык түрдө ийгиликсиз болуңуз.
OpenVPN кирүү скриптинин так бир чыгымына таянат: чыгуу статусуна. Скрипт жасаган калгандын баары — жасалга. Хук туура текшерүүчүгө жетип, жоопту талдап жана достук сапты басып чыгарып, бирок автордун оюна карама-каршы маанидеги статус кайтара алат. Адегенде келишимди окуп, анын айланасына адаптер жазыңыз, ошондо ушул сыяктуу каталардын бүт классы жок болот.
Келишим кичине: жиберилген аккаунтту аныктаңыз, бекитилген текшерүүчүгө көздөлгөн суроону бериңиз жана ошол сурам үчүн ошол текшерүүчүнүн документтештирилген оң жыйынтыгын гана кабыл алыңыз. Калганынын баары — инфраструктура.
Хук кайтара ала турган үч статус
auth-user-pass-verify үчүн OpenVPN 2.6 колдонмосу чыгуу кодун 0 — кабыл алуу, 1 — баш тартуу жана 2 — кийинкиге калтырылган аутентификация деп аныктайт. Сервер түшүнгөн жалгыз үч жооп ушул, жана ар биринин туташууга башкача таасири бар. Акыркы буйругунун статусу менен чыккан скрипт чындыгында журнал чакыруусуна же тазалоо кадамына добуш берүүгө жол берген. Статусту ар бир бутакта ачык жазыңыз, текшерүүчүгө эч качан жетпеген бутактарды да кошуп.
HTTP ийгилиги жана аутентификация ийгилиги — өзүнчө катмарлар, жана аларды аралаштыруу бул хуктун ката кетишинен эң көп кездешкен жол. 202 жообу сурам иштетүүгө кабыл алынганын билдирет, сырсөз текшерилгенин эмес. Күтүлгөн статусту, жооптун формасын жана акыркы өкүмдү сизге берилген API келишиминен аныктаңыз жана акылга сыярлык көрүнгөнү үчүн талаа атын ойлоп таппаңыз.
Эгер жооп чын эле кийин келсе, бул — кийинкиге калтырылган жол жана аны ошондой куруу керек. Эч качан бүтпөгөн кийинкиге калтырылган аракет ресурстарды мөөнөт бүткөнгө чейин кармайт.
Ыйгарым укук файлын жазылган калыбында окуңуз
Документтештирилген файл аркылуу ыкмада сервер колдонуучу атын жана сырсөздү убактылуу файлдын биринчи эки сабы катары жазат, ошол жолду скриптке берет жана скрипт кайтканда файлды өчүрөт. Ошол эки сапты маалымат катары окуңуз: файлды эч качан source аркылуу иштетпеңиз, аны эч качан баалабаңыз жана анын мазмунун процесстер таблицасы көрө турган буйрук сабына эч качан койбоңуз. Сырсөздү байт-байт сактаңыз, анткени колдонуучу атын калыпка келтиргендей аны калыпка келтирүү ыйгарым укукту ичинен өзгөртөт. Ошол убактылуу файлдын каталогу — жайгаштыруу чечими, ошондуктан анын бар экенин жана хосттогу баарына окууга жеткиликсиз экенин ырастаңыз.
Текшерүүчүнүн өз ыйгарым укугун колдонуучунукунан өзүнчө кармаңыз: алар шлюз интеграциясына таандык, платформанын сырлар кампасында жашайт жана текшерүү укугун гана талап кылат, ошондуктан белгилүү бир адамдын аутентификацияланганына далил эмес. Хуктун экинчи сырсөз текшерүүчүсү болушуна да жол бербеңиз. Хэш салыштырууну кол менен кайра жазуу циклди оптималдаштыруу менен коопсуз болбойт, ал эми тейленген текшерүүчү аккаунт кампасынын туздалган жана кымбат схемасын буга чейин түшүнөт.
Классификациялоого келбеген жооптун маанисин чечиңиз
Мөөнөттөр, транспорт каталары, бузулган жооптор жана жеткиликсиз backend бир касиетти бөлүшөт: алардын эч бири оң текшерүү эмес. Хук алардын ар бири үчүн жабык түрдө ийгиликсиз болушу жана оператор аракет кыла ала турган себепти жазышы керек. Ошол себеп корголгон журналга таандык, туташууга аракет кылып жаткан адамга кайтарылуучу билдирүүгө эмес.
Текшерүүчүгө такыр жетпеген жолдорго да ушунчалык кылдат болуңуз. Жетишпеген конфигурация мааниси, окулбаган сыр же орнотулбаган көз карандылык кокустан кабыл алуунун ордуна өзгөчө операциялык белгиси бар баш тартууну жаратышы керек. Ошол бутактарды лабораторияда көз карандылыкты алып салып текшериңиз, алар жөнүндө ойлонуунун ордуна. Журналдоо ийгиликсиздиги чыгуу статусун өзгөртө алган жерде журналдоо чечимдин бөлүгүнө айланган жана аны зыянсыз кылуу керек.
Сервер конфигурациясы бул жерде да маанилүү: колдонуучу аныктаган скрипттер учурдагы конфигурация аларды талап кылынган коопсуздук деңгээлинде уруксат бергенде гана эске алынат, жана бул параметр көтөрүлүүчү демейки маани эмес, аң-сезимдүү тандоо.
Өкүмдү текшериңиз, басылган сапты эмес
Чыгуу статусун түздөн-түз текшерген тест куруңуз. Үлгү ыйгарым укук файлын жазыңыз, хукту ага белгилүү жакшы жана белгилүү начар аккаунт менен иштетиңиз жана скрипт баскан текстти эмес, кабык билдирген статусту окуңуз. Ошол бир текшерүү кардар туташканга чейин келишим каталарынын көбүн кармап калат.
Андан кийин ошол эле учурларды реалдуу кардар аркылуу өндүрүштүк эмес угуучуга каршы жүргүзүңүз жана сервер эмнени жазганын ырастаңыз: кабыл алынды, баш тартылды же кийинкиге калтырылды. Өчүрүлгөн аккаунтту, туура эмес сырсөздү, бузулган текшерүүчү жообун, мөөнөттү жана жеткиликсиз текшерүүчүнү камтыңыз. Эгер кандайдыр бир учур сиз атай албаган абалга түшсө, адаптер бүтө элек.
текшерүүчүнүн жыйынтыгынан чыгуу статусуна чейинки дал келтирүүнү кампада скрипттин жанында кармаңыз, кийинки инженер кодду тескери инженериялоосуз келишимди окуй алышы үчүн.