systemd qattiqlashtirishini OpenVPN'ning user tushishiga ustma-ust qo'ymang
Ikki minimal imtiyoz retsepti birgalikda qat'iyroq bo'lmaydi. Kimlik almashinuvini kim bajarishini tanlang, so'ngra butun hayot tsikli bo'ylab vakolatni xaritalang.
Bir-biriga yopishtirilgan ikki minimal imtiyoz retsepti qat'iyroq joylashtirish bermaydi. Bir model demonning imtiyozlar bilan boshlanishiga va ishga tushirilgandan so'ng imtiyozsiz hisobga tushishiga yo'l qo'yadi; ikkinchisi xizmat menejeriga uni birinchi ko'rsatmadanoq cheklangan kimlik ostida ishga tushirishga imkon beradi. Har biri alohida ishlaydi, ikkalasining birikmasi esa ko'pincha ikki ishning birini ham toza bajara olmaydigan xizmat yaratadi. Qolgani qarorni tartib bilan ko'rib chiqadi.
Ikki model, almashinuvning bitta egasi
Birinchi model demonga tegishli. Hamjamiyat OpenVPN ning user va group parametrlari tunnel va kalitlar o'rnatilgandan so'ng kimlikni o'zgartiradi, persist-key bilan persist-tun esa o'sha resurslarni keyin ham ishlatsa bo'ladigan qilib saqlaydi.
Ikkinchi model xizmat menejeriga tegishli. systemd ning User= yoki Group= sozlamasi jarayon qaysi kimlik ostida boshlanishini belgilaydi, qobiliyat ko'rsatmalari esa u nimalarni ushlab turishi mumkinligini belgilaydi. Modellar orasida tanlov xavfsizlik masalasi bo'lishidan oldin paketlash masalasi, va paketni yurituvchi allaqachon javob bergan. Sizning vazifangiz uchinchi variant o'ylab topish emas, o'sha javobni topishdir.
Ikkalasi ham qonuniy. Xato — ularni bitta dizaynning qatlamlari deb hisoblash, chunki ikkinchi model birinchisining kimlik almashinuvini jarayonga endi ruxsat etilmagan operatsiyaga aylantirishi mumkin.
Kimlik qayerda o'zgarishini aniqlang
Agar birlik allaqachon maxsus hisob sifatida boshlansa, demonga boshqa hisob bo'lish haqidagi ko'rsatma qattiqlashtirilgan xizmat hech qachon qilmasligi kerak bo'lgan setuid o'tishini talab qiladi. Nosozlik ishga tushishda ruxsat xatosi sifatida ko'rinadi, aniq siyosat xabari sifatida emas. Bu yetishmayotgan qobiliyat kabi o'qiladi, bu odamlarni kimlik savoli o'rniga kengroq cheklovlar to'plamiga undaydi.
Biror narsani tahrirlashdan oldin o'rnatilgan paket aslida nima taqdim etishini o'qing, uning drop-in katalogi bilan birga. Ba'zi birliklar menejer allaqachon shug'ullangani uchun demonning o'z tushishini ataylab qoldiradi, ba'zilari esa ishga tushirilgandan keyingi almashinuv uchun o'sha parametrlarga tayanadi. Qaysi model meros qolganini bilmasdan birini olib tashlash ishlab turgan xizmatning ishga tushmay qo'yish yo'lidir.
Tanlangan modelni bitta satrga yozing: menejerga tegishli yoki demonga tegishli. Har bir keyingi ko'rsatma o'sha gapga mos bo'lishi kerak, aralash birlik esa murosa emas, xato deb qaralishi lozim.
Qobiliyatlar chegaralar, in'om emas
Qobiliyat cheklovlar to'plami jarayon eng ko'pi bilan nimalarni ushlab turishini aytadi. Bu shift, va u yerda qobiliyatni sanab o'tish o'z-o'zidan hech narsa bermaydi, shuning uchun saxiy cheklovlar to'plamiga ega birlik ham tunnel yarata olmasligi mumkin.
Qobiliyatni xizmatning atrofdagi to'plamiga aslida joylashtiradigan narsa AmbientCapabilities=. systemd ijro ma'lumotnomasi ikki ko'rsatmani alohida hujjatlashtiradi, va aynan shu farq internetdagi qobiliyatlar haqidagi chalkash maslahatlarning ko'pini tushuntiradi.
Qobiliyatni faqat muvaffaqiyatsiz operatsiya uni aniqlagandan keyin qo'shing. Kengroq cheklovlar to'plami haqiqiy sababni yashiradi va xizmatni dizayn mo'ljallaganidan ortiq imtiyoz bilan qoldiradi. Bu birlikni ko'rib chiqishni ham qiyinlashtiradi, chunki shift endi ishni tasvirlamaydi. Haqiqiy nuqson tuzatilgach, ortiqcha qobiliyatni olib tashlang.
Vakolatni hayot tsikli bo'ylab xaritalang
Har bir bosqichda jarayon nima qilishi kerakligini sanang: ishga tushish, barqaror holat, qayta autentifikatsiya va demontaj. Interfeys yaratish, marshrut o'zgarishlari, himoyalangan kalitni o'qish va yordamchini chaqirish hammasi bir vaqtda yoki bir xil talablar ostida sodir bo'lmaydi. Ro'yxatni qobiliyat bo'yicha saralashdan oldin bosqich bo'yicha saralang.
Barqarorlik parametrlari qayta muzokaralar davomida resurslarni saqlaydi va hech qachon bo'lmagan ruxsatlarni bermaydi. Jarayon ishga tushishda o'qiy olmaydigan kalit keyin ham o'qilmaydigan bo'lib qoladi, barqarorlik bayroqlari nima desa ham. Bayroqlar avval ishlagan narsani saqlaydi.
Umumiy emas, maxsus hisobdan foydalaning. OpenVPN ishlab chiquvchilari nobody ni umumiy misol sifatida ishlatish odatidan ogohlantiradi, chunki xostdagi boshqa xizmatlar allaqachon o'sha hisob ostida ishlayotgan bo'lishi mumkin va siz o'ylagan izolyatsiya u yerda yo'q.
Mahalliy yukni o'zgartiradigan xususiyatlar, masalan, ma'lumot kanalini tushirish yoki boshqacha bog'lanadigan qurilish, qaysi operatsiyalar kerakligini siljitishi mumkin. Paket o'zgarganda xaritani qayta ko'rib chiqing, faqat biror narsa buzilganda emas.
Rejani yozib qo'ying va tiklash ruxsatini saqlang
Joylashtirish yozuvi menejerni, ishga tushish kimligini, mo'ljallangan barqaror kimlikni va har bir ruxsatni uni talab qiladigan operatsiya bilan birga nomlashi kerak. Aynan o'sha yozuv keyingi o'zgarishni tajriba emas, ko'rib chiqiladigan qiladi.
Tahrirlash paytida konsolga kirishni ochiq tuting, chunki ishga tushishda muvaffaqiyatsiz bo'lgan birlikni masofadan tuzatish qiyin. O'zgarishni tugallangan deb e'lon qilishdan oldin qayta ishga tushirish va to'liq qayta yuklashni sinab ko'ring. Qayta ishga tushirishdan o'tgan birlik ham tarmoq ko'tarilishidan oldin muvaffaqiyatsiz bo'lishi mumkin.
Muvaffaqiyat — tushunilgan minimal vakolatli hayot tsikli, root bo'lmagan nom ostida tasodifan ishlab turgan jarayon emas.