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

Үш сәтсіздіктің қайсысы бұл?

Біріншісі — модуль мүлдем оқи алмайтын құпия. Екіншісі — оқи алатын, бірақ жаңарта алмайтын құпия. Үшіншісі — шынымен қате код, әдетте сағат ауытқуы немесе қайта қолданылған мән салдарынан.

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

Тек қызмет қана сәтсіз болғанда, бірліктің файлдық жүйе көрінісі әдеттегі кінәлі.

systemctl show -p ProtectHome -p ProtectSystem -p ReadWritePaths [email protected]
ls -l /var/lib/vpn-otp/*/.google_authenticator 2>/dev/null | head -n 20

А нұсқасы: құпияны үйден тысқары жылжыту

Қызмет /home каталогын жасырып, сіз бұл қорғанысты сақтағыңыз келсе, құпияны ол көре алатын жерге сақтаңыз. Модуль secret= жолын және файлдық операцияларды орындайтын user= тіркелгісін қабылдайды, бұл орталық қоймаға көптеген сәйкестіктерге қызмет етуге мүмкіндік береді.

Бұл — ұқыпты нұсқа және ең көп қамқорлықты қажет етеді, өйткені ортақ қойма бір каталогты әр тіркелгінің қауіпсіздік шекарасына айналдырады.

auth required pam_google_authenticator.so secret=/var/lib/vpn-otp/${USER}/.google_authenticator user=vpn-otp

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

Б нұсқасы: файлды қалдырып, жол ашу

Егер құпия пайдаланушының үйінде қалуы керек болса, бірлікке хосттағы барлық үйлерді ашпай-ақ сол бір каталогты қамтитын көрініс қажет. drop-in сендбоксқа салынған үйдің астына тар шектелген bind mount қоса алады.

Бұл пайдаланушы бойынша меншікті модель ретінде сақтайды, бірақ сендбокс өзгерген сайын қаралуы тиіс бірлік өзгерісінің құнымен.

Екі шекараны байқамау оңай. Сендбокс жасырған каталогтың астына қосылған тек-оқу жолы оны ашпайды, өйткені ата-каталог жай ғана жоқ. Ал егер модуль күйді жаңартуы керек болса, қосу жазылатын болуы тиіс, бұл келесі нұсқаны ойынға қосады. drop-in-ді /usr/lib астындағы пакеттелген бірлікті өңдеудің орнына бөлек файл ретінде жазыңыз, пакет жаңартуы оны үнсіз жоймас үшін.

С нұсқасы: сендбоксты сақтап, күй жазуларын түзету

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

Бұл сәтсіздік келесі әрекетте нашар код сияқты көрінеді, осы әрекетте емес, сондықтан оны сағат ауытқуымен шатастырады.

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

Өзіңіз ретінде емес, қызмет ретінде тексеріңіз

Әрбір маңызды тексеру бірліктің сендбоксында бірліктің сәйкестігімен жүруі керек.

root ретінде сәтті орындалған команда файлдың бар екенін айтады, одан басқа ештеңе. Нақты қызмет арқылы кіру модульдің құпияны оқи, қолдана және қажеттісін кері жаза алатынын айтады.

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

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