Bosh sahifa Wiki Capability

Capability

CapabilityUnix root huquqlarini kichik, alohida tekshiriladigan privilege birliklariga bo‘luvchi Linux xavfsizlik mexanizmi. An’anaviy modelda effective UID 0 ko‘plab amallarga umumiy ruxsat bergan. Capability modeli processga faqat zarur operatsiya, masalan past portga bind qilish yoki network konfiguratsiyasini o‘zgartirish huquqini berib, qolgan root vakolatlarini olib tashlash imkonini beradi.

Capability to‘plamlari

Thread credentialida permitted, effective, inheritable, bounding va ambient to‘plamlar mavjud. Effective bitlar joriy privilege tekshiruvlarida ishlatiladi. Permitted — effectivega yoqilishi mumkin bo‘lgan yuqori chegara. Inheritable va file capability exec paytida yangi permitted setni hisoblashda qatnashadi.

Bounding set process va descendantlar exec orqali olishi mumkin bo‘lgan capability’larni cheklaydi. Undan olib tashlangan bitni oddiy exec qaytara olmaydi. Ambient set privilege’siz executable orqali ayrim capability’larni saqlashga yordam beradi, ammo qat’iy shartlarga ega.

Tekshiruv

Kernel maxsus operatsiyada CAP_NET_ADMIN, CAP_SYS_PTRACE yoki boshqa bitni tekshiradi. Capability nomi keng doirani qamrashi mumkin; ayniqsa CAP_SYS_ADMIN ko‘plab turli amallar uchun ishlatilgani sabab “yangi root”ga yaqin katta privilege hisoblanadi.

Capability tekshiruvi user namespace doirasiga bog‘liq bo‘lishi mumkin. Container ichidagi capability host obyektiga avtomatik ruxsat bermaydi. Kernel obyektning owning namespace’i va caller credentialini solishtiradi.

Exec transformatsiyasi

Executable file capability yoki set-user-ID atributiga ega bo‘lsa exec yangi credentialni hisoblaydi. no_new_privs yoqilgan process exec orqali yangi privilege ola olmaydi. Security policy va mountdagi nosuid flag ham file privilege ta’sirini cheklaydi.

Dynamic loader privileged exec holatida environment variablelarni konservativ tozalaydi. Aks holda library injection yangi capability bilan code bajarishga imkon berishi mumkin.

Least privilege

Daemon startup’da kerakli socket yoki device’ni ochib, keyin UID va ortiqcha capability’larni tashlaydi. Capability dropdan oldin supplementary group, securebits va bounding set tartibi tekshiriladi. Faqat effective setni tozalash permitted bitlarni qoldirib, keyin qayta yoqish imkonini berishi mumkin.

Service manager capability bounding va ambient setni deklarativ beradi. Containerga “barcha capability” berish namespace izolatsiyasini ancha susaytiradi. Default deny va aniq allow-list afzal.

Audit

Permission rad etilganda audit required capability va caller contextni ko‘rsatishi mumkin. Muammoni hal qilish uchun ko‘r-ko‘rona CAP_SYS_ADMIN qo‘shish attack surface’ni kengaytiradi. Avval exact operation, kernel check va resource namespace aniqlanadi.

Test capability bilan va usiz, exec, fork, user namespace, no_new_privs va bounding drop holatlarini qamraydi. Process statusidagi hexadecimal setlar kernel versiyasidagi capability ro‘yxati bilan dekodlanadi.

Securebits

Linux securebits UID 0ga o‘tish va capability saqlanishining tarixiy maxsus qoidalarini boshqaradi. keep-caps UID dropdan keyin permitted setni vaqtincha saqlashga imkon beradi, keyin kerakli effective bitlar yoqiladi. Lock bitlar descendant processga siyosatni qayta yumshatishni taqiqlaydi. Tartib noto‘g‘ri bo‘lsa daemon barcha capability’ni yo‘qotadi yoki kutilganidan ko‘pini saqlaydi.

Capability va namespace

Network namespace ichidagi interface’ni sozlash uchun target network namespace’ni boshqaruvchi user namespace doirasidagi CAP_NET_ADMIN talab qilinadi. Host physical interface’i boshqa owning boundaryga tegishli bo‘lsa ichki capability yetmaydi. “Operation not permitted” tahlilida process seti bilan birga resource namespace lineage’i aniqlanadi.

Bog‘liq tushunchalar

Linux capability, permitted set, effective set, bounding set, ambient capability, least privilege