Android yuklashda selinuxni o'chirish 7. SELinuxni sozlash, yoqish, o'chirish

Xavfsizlik takomillashtirilgan Linux (SELinux) Linux xavfsizlik yadro moduliga (LSM) asoslangan Linuxda kirishni boshqarishning yangi usulidir. SELinux sukut bo'yicha Fedora, CentOS, OpenSUSE va boshqalar kabi rpm paket bazasidan foydalanadigan ko'plab Red Hat-ga asoslangan distributivlarda yoqilgan.

Ushbu maqolada biz SELinux-ni o'rnatishni ko'rib chiqamiz, biz yangi siyosatlarni yaratishga tegmaymiz, lekin tizimga boshqa tomondan yondashishga harakat qilamiz, u oddiy Linux foydalanuvchisi uchun qanday foydali bo'lishi mumkinligini ko'rib chiqamiz, uning ishlashining asoslarini ko'rib chiqamiz. , o'chirish va holatlarni o'zgartirish.

SELinux asoslari

SELinux yorliqlash tizimi bo'lib, har bir jarayonning yorlig'i bor. Tizimdagi har bir fayl, katalog yoki hatto foydalanuvchi yorlig'iga ega. Tizimdagi portlar va qurilmalar va xost nomlariga ham teglar tayinlangan. SELinux muayyan teglar bilan ob'ektlarga kirish jarayoni uchun qoidalarni belgilaydi. Bu siyosat deyiladi. Yadro qoidalarni amalga oshiradi. Ba'zan bu majburiy kirishni boshqarish (MAC) deb ham ataladi.

Fayl egasi xavfsizlik atributlari ustidan to'liq nazoratga ega emas. Guruh va egasi kabi kirishni boshqarishning standart atributlari SELinux uchun hech narsani anglatmaydi. Hamma narsa to'liq teglar tomonidan boshqariladi. Atribut qiymatlari ildiz huquqlarisiz o'rnatilishi mumkin, ammo buni amalga oshirish uchun sizda maxsus SELinux ruxsatnomalari bo'lishi kerak.

Endi siyosatchilar haqida bir oz gapiraylik. Biz ma'lum turdagi jarayonlar uchun, shuningdek, ma'lum turdagi fayl tizimi ob'ektlari uchun yorliqni aniqlaymiz. Ob'ektlar (jarayonlar) mushuklar va itlar bo'lgan tizimni tasavvur qiling. Bu jarayon turlari. Va bizda ular foydalanishni xohlaydigan qulayliklar mavjud - oziq-ovqat. Ammo ularning taomlari boshqacha - mushuklar va itlar. Ob'ektlar faqat o'zlarining oziq-ovqatlariga kirishlari kerak.

Itning ovqatini eyishga ruxsati bor, mushuk esa ovqatini eyishi mumkin. SELinux siyosatlarida u quyidagicha ko'rinadi:

mushukning mushuk ovqatini eyishiga ruxsat bering

itga it ovqatini eyishga ruxsat bering

Endi yadro ushbu qoidalarga rioya qilinishini ta'minlaydi. SELinux tizimida hamma narsa sukut bo'yicha o'chirib qo'yilgan, shuning uchun agar it mushuk ovqatini eyishga harakat qilsa, yadro bunga ruxsat bermaydi.

Aytaylik, Apache jarayoni httpd_t deb nomlanadi va biz Apache httpd_sys_content-ga kirish huquqiga ega bo'lishi kerak bo'lgan fayllarni nomladik. Shuningdek, bizda MySQL ma'lumotlar bazasida saqlanadigan kredit karta ma'lumotlari mavjud. Agar xaker Apache jarayonini buzsa va ildizga kirish huquqiga ega bo'lsa, u hali ham MySQL-dan fayllarga kira olmaydi.

Tizim ko'pincha bir xil turdagi jarayonlarni o'z ichiga oladi. Buni aylanib o'tish va bir xil turdagi turli jarayonlar uchun ruxsatlarni sozlash uchun xavfsizlik toifalari tizimi, Multi Category Security (MCS) ixtiro qilindi. Ob'ektga toifa qo'shishimiz va ushbu toifaga qarab ruxsatlarni sozlashimiz mumkin.

SELinux tizim ma'murlari uchun juda ko'p muammolarni keltirib chiqarishi mumkin, ko'pchilik uni o'chirib qo'yishi mumkin, bu esa muammoni hal qiladi va xavfsizlikni kamaytiradi. Yuqorida aytib o'tilganidek, sukut bo'yicha SELinux hamma narsani va hamma narsani bloklaydi. Bu qat'iy siyosat tavsifiga mos keladi. Ammo tizim ma'murlari uchun ishlarni osonlashtirish uchun boshqa standart siyosatlar ishlab chiqilgan. Ko'pgina tarqatishlar maqsadli siyosatdan foydalanadi, u 200 ga yaqin tarmoq xizmatlari va jarayonlarini qamrab oladi, ammo boshqa barcha dasturlar erkin ishga tushadi va ishlaydi, ularga SELinux modellari qo'llanilmaydi.

SELinux uchta rejimda ishlashi mumkin - o'chirilgan, tizim butunlay o'chirilgan va ishlamaydi, Cheklash rejimini amalga oshirish - dastur faollashtiriladi va siyosatlarga mos kelmaydigan barcha harakatlarni bloklaydi, uchinchi rejim - ruxsat beruvchi - faqat qoidabuzarliklarni qayd qiladi.

Nazariya umumiy ma'noda muhokama qilinadi. Endi amaliy qismga o'tamiz.

SELinux sozlanmoqda

SELinux tizimi Red Hat-ga asoslangan tizimlarda oldindan o'rnatilgan bo'lib, u erda barcha komponentlar allaqachon o'rnatilgan, ammo Ubuntu va boshqa shunga o'xshash tarqatishlarda siz hamma narsani o'zingiz qilishingiz kerak bo'ladi. SELInux-ni Ubuntu-ga o'rnatish uchun quyidagi buyruqni bajaring:

sudo apt-get install selinux

O'rnatish tugallangach, barcha sozlamalar kuchga kirishi uchun tizimni qayta ishga tushirish kerak bo'ladi, chunki yadroga kerakli parametrlarni o'tkazish uchun Grub konfiguratsiya fayli ustiga yoziladi.

Qayta ishga tushirilgandan so'ng biz SELinux holatini ko'rishimiz mumkin:

SELinux holati: yoqilgan
SELinuxfs o'rnatish: /sys/fs/selinux
SELinux ildiz katalogi: /etc/selinux
Yuklangan siyosat nomi: ubuntu
Joriy rejim: ruxsat beruvchi
Konfiguratsiya faylidan rejim: ruxsat beruvchi
Siyosat MLS holati: yoqilgan
Siyosat rad etish_noma'lum holati: ruxsat berilgan
Yadro siyosatining maksimal versiyasi: 29

Bu erda biz tizim yoqilganligini ko'ramiz SELinux holati: yoqilgan, Joriy rejim ruxsat etilgan, ya'ni biz faqat jurnaldagi qoidabuzarliklar haqida xabarlarni olamiz. Hozirda ishlatilayotgan siyosat Ubuntu.

Endi faol rejimni yoqaylik, buning uchun buyruqni bajaring:

sudo setenforce 1

Xuddi shu buyruqqa 0 o'tkazish orqali faol rejimni o'chirib qo'yishingiz mumkin:

sudo setenforce 0

Shu kabi buyruq yordamida hozirda foydalanilayotgan rejimni ham ko'rishingiz mumkin:

Barcha asosiy SELinux konfiguratsiyasi /etc/selinux/config fayli orqali amalga oshiriladi. Bu yerda siz selinux-ni butunlay o'chirib qo'yishingiz yoki foydalanilgan xavfsizlik siyosatini sozlashingiz mumkin.

sudo vi /etc/selinux/config

Bu parametr SELinux ning ishlash rejimini bildiradi, bu yerda siz uchta parametrdan birini belgilashingiz mumkin: majburlash, ruxsat berish va o'chirish

SELINUX=ruxsat beruvchi

SELinux-ni butunlay o'chirish uchun disabled yoki SELinux-ni qayta yoqish uchun boshqa opsiyadan foydalaning. Ushbu rejim tizim ishga tushirilganda sukut bo'yicha qo'llaniladi.

SELinux siyosatlari ham ushbu faylda sozlangan. SELINUXTYPE parametri siyosat uchun javobgardir:

SELINUXTYPE=ubuntu

Siz /etc/selinux katalogida joylashgan har qanday siyosatga murojaat qilishingiz mumkin.

Uchta asosiy siyosatdan foydalanish mumkin:

  • maqsadli(yoki bu erda ubuntu) asosiy tizim xizmatlarini himoya qiladi, masalan, veb-server, DHCP, DNS, lekin boshqa barcha dasturlarga tegmaydi.
  • eng kam- bu maqsadlilikka asoslangan tajriba siyosati, lekin uning qoidalari sukut bo'yicha yoqilmagan, kerak bo'lganda uni yoqishingiz va o'chirib qo'yishingiz mumkin, shuningdek, ko'pincha mobil qurilmalarda ham qo'llaniladi.
  • qattiq- eng qat'iy siyosat, nafaqat tarmoq xizmatlarini, balki foydalanuvchi dasturlarini ham nazorat qiladi.
  • mls- nafaqat qoidalar, balki turli darajadagi xavfsizlikni ham o'z ichiga oladi. Bu sizga SELinux asosidagi ko'p darajali xavfsizlik tizimini amalga oshirish imkonini beradi.

Ubuntu-dagi siyosatlar maqsadli va qat'iy, paketni o'rnatish uchun alohida o'rnatilishi kerak:

sudo apt-get install selinux-policy-default

Siyosatni qo'llash uchun siz kompyuterni qayta ishga tushirishingiz kerak va bu qayta yuklash vaqtida SELinux audit rejimida (ruxsat beruvchi) bo'lishi ma'qul. Bundan tashqari, tizim fayl tizimidagi barcha teglarni yangilashi uchun siz ildizda bo'sh fayl yaratishingiz kerak bo'lishi mumkin:

sudo vi ~/.autolabel

SELinuxning barcha kuchini va shu bilan birga kamchiliklarini his qilishni xohlaysizmi? SELINUXTYPE-ni qat'iy qilib o'rnating va tizimni qayta ishga tushiring:

SELINUXTYPE=standart

Faqat SELinux ruxsat beruvchi rejimda ishlashiga ishonch hosil qiling, aks holda muammo yuzaga keladi. Standart siyosat maqsadli va qat'iy amal qiladi;

sudo semule -r cheklanmagan

Keyin biz faol rejimni boshlaymiz:

sudo setenforce 1

Xo'sh, endi siz tizim jurnallarini o'qishga harakat qilishingiz yoki audit rejimini qayta yoqishingiz mumkin. Hech narsa ishlamayaptimi? To'g'ri, SELinux har qanday ruxsatsiz harakatlarni bloklaydi. Mening terminal oynam darhol yopildi va men tizimimni boshqara olmadim. Kompyuteringiz ustidan nazoratni tiklash uchun uni qayta ishga tushirishingiz kerak.

Endi siz SELinux-ni qanday yoqish va o'chirishni, shuningdek, dastur siyosatini yoki ish rejimini qanday o'zgartirishni bilasiz. Qolganlarning hammasi bizning qisqa maqolamiz doirasidan tashqarida.

SELinux(Security-Enhanced Linux) - majburiy kirishni boshqarish tizimi bo'lib, u Linuxda standart klassik kirishni boshqarish tizimi bilan parallel ravishda ishlashi mumkin. SELinux foydalanuvchilarga yoki dasturlarga kirish qoidalarini yaratishi mumkin, bu esa ularning ayrim kirishlarini cheklash imkonini beradi. Ushbu material xavfsizlik quyi tizimining turli ish rejimlarini qanday o'rnatishni yoki uni Linux OS da oddiygina o'chirishni tasvirlaydi.

SELinux holati

Jamoalar /usr/sbin/getenforce Va /usr/sbin/sestatus SELinux ning joriy holatini tekshirish uchun ishlatiladi. Jamoa getenforce Majburiy, ruxsat beruvchi yoki o'chirilgan qaytaradi. SELinux yoqilganda getenforce buyrug'i Enforcing ni qaytaradi (SELinux siyosati qoidalari majburiy):

# /usr/sbin/getenforce majburlash

SELinux yoqilganda getenforce buyrug'i ruxsat beruvchini qaytaradi, lekin SELinux siyosati qoidalari qo'llanilmaydi va faqat DAC qoidalari ishlatiladi. SELinux o'chirilgan bo'lsa, getenforce buyrug'i Disabledni qaytaradi.

Sestatus buyrug'i SELinux holatini va foydalanilayotgan SELinux siyosatini qaytaradi:

# /usr/sbin/sestatus

SELinux holati: yoqilgan qiymati SELinux yoqilganda qaytariladi. Joriy rejim: SELinux majburiy rejimda yoqilganda, majburlash qaytariladi. Konfiguratsiya faylidagi siyosat: SELinux maqsadli siyosati ishlatilganda maqsadli qaytariladi.

SELinux boshqaruvi

SELinux o'chirilgan operatsion tizimlarda parametr sozlangan SELINUX=o‘chirilgan V /etc/selinux/config:

# Ushbu fayl tizimdagi SELinux holatini nazorat qiladi. # SELINUX= ushbu uchta qiymatdan birini qabul qilishi mumkin: # majburlash - SELinux xavfsizlik siyosati amalga oshiriladi. # ruxsat beruvchi - SELinux majburlash o'rniga ogohlantirishlarni chop etadi. # o'chirilgan - SELinux siyosati yuklanmagan. SELINUX=o'chirilgan # SELINUXTYPE= ushbu ikkita qiymatdan birini qabul qilishi mumkin: # maqsadli - Maqsadli jarayonlar himoyalangan, # mls - Ko'p darajali xavfsizlik himoyasi. SELINUXTYPE=maqsadli

Shuningdek, jamoa getenforce qiymatni qaytaradi O‘chirilgan:

# /usr/sbin/getenforce o'chirilgan

SELinux-ni yoqish uchun:

Agar bunday bo'lmasa, foydalanuvchi xaritalaridagi xatolarni tuzatish uchun buyruqni ildiz foydalanuvchi sifatida ishlating. Ogohlantirishlarga e'tibor bermaslik xavfsizroq SELinux-foydalanuvchi foydalanuvchi nomi allaqachon belgilangan, agar ular paydo bo'lsa, qaerda foydalanuvchi nomi unconfined_u, guest_u yoki xguest_u bo'lishi mumkin.

Hammaga salom kelinglar SELinux haqida bir oz gaplashamiz lekin undan oldin uning nima ekanligini eshitmaganlar uchun bir oz ta'rif. SELinux - bu ingliz tilining qisqartmasi. "Security-Enhanced Linux" so'zlari yaxshilangan xavfsizlik bilan Linux degan ma'noni anglatadi. Boshqacha qilib aytganda, bu klassik tanlangan kirishni boshqarish tizimi bilan parallel ravishda ishlashga qodir bo'lgan majburiy kirishni boshqarish tizimini amalga oshirishdir. Farqi shundaki, SELinux-da ma'lum siyosatlar orqali kirish huquqlari tizimning o'zi tomonidan belgilanadi, o'z navbatida, tanlab kirishni boshqarish tizimi foydalanuvchi huquqlari asosida resurslarga kirish jarayonini ajratadi, oddiy tushunish uchun bu uchta darajadagi rwx huquqlari - egasi , egalari guruhi va boshqa foydalanuvchilar.
Biroz tavsifdan so'ng, keling, ba'zi SELinux buyruqlari va variantlarini ko'rib chiqishga harakat qilaylik. Bizning misollarimiz Linux CentOS 6 operatsion tizimida namoyish etiladi, ehtimol birinchi va eng mashhurlari SELinux holatini tekshirish uchun buyruqlardir.

/usr/sbin/getenforce

/usr/sbin/sestatus

Getenforce buyrug'i uchun qiymatlarni qaytaring
Amalga oshirish– SELinux faollashtirilganligini va siyosat qoidalari amalga oshirilganligini bildiradi;
Ruxsat beruvchi– SELinux faollashtirilganligini bildiradi, lekin siyosat qoidalari bajarilmaydi va faqat DAC qoidalari ishlatiladi;
O‘chirilgan– SELinux o‘chirilganligini bildiradi.

Sestatus buyrug'i uchun qiymatlarni qaytaring
Ushbu buyruq SELinux holatiga qo'shimcha ravishda ishlatilgan SELinux siyosatini qaytaradi, masalan:

$ /usr/sbin/sestatus SELinux holati: yoqilgan SELinuxfs o'rnatish: /selinux Joriy rejim: konfiguratsiya faylidan rejimni qo'llash: majburlash Siyosat versiyasi: 23 Konfiguratsiya faylidan siyosat: maqsadli

SELinux holati: yoqilgan – SELinux yoqilganligini bildiradi;
Joriy rejim: majburlash - SELinux majburiy rejimda yoqilganligini bildiradi;
Konfiguratsiya faylidagi siyosat: maqsadli - SELinux maqsadli siyosati ishlatilganligini bildiradi.

SELinux yoqilmoqda
Konfiguratsiya faylida operatsion tizimda SELinux-ni yoqing/o'chiring
/etc/selinux/config

# Ushbu fayl tizimdagi SELinux holatini nazorat qiladi. # SELINUX= ushbu uchta qiymatdan birini qabul qilishi mumkin: # majburlash - SELinux xavfsizlik siyosati amalga oshiriladi. # ruxsat beruvchi - SELinux majburlash o'rniga ogohlantirishlarni chop etadi. # o'chirilgan - SELinux siyosati yuklanmagan. SELINUX=o'chirilgan # SELINUXTYPE= ushbu ikkita qiymatdan birini qabul qilishi mumkin: # maqsadli - Maqsadli jarayonlar himoyalangan, # mls - Ko'p darajali xavfsizlik himoyasi. SELINUXTYPE=maqsadli

SELINUX=o‘chirilgan varianti SELinux o‘chirilganligini bildiradi. SELinux-ni ishga tushirishdan oldin siz ba'zi manipulyatsiyalarni bajarishingiz kerak.
1. SELinux paketlarini o'rnatishni tekshiring

Rpm -qa | grep selinux rpm -q policycoreutils rpm -qa | grep muammolarni bartaraf etish

Shuningdek, quyidagi paketlar o'rnatilganligiga ishonch hosil qiling: selinux-policy-targeted, selinux-policy, libselinux, libselinux-python, libselinux-utils, policycoreutils, muammolarni bartaraf etish, sozlash-server, muammolarni bartaraf etish-pluginlar. Paketlar Policycoreutils-gui, muammolarni bartaraf etish, selinux-policy-devel, Va mcstrans ixtiyoriy.
Yo'qolgan paketlar buyruq yordamida o'rnatilishi mumkin (root sifatida)

Yum o'rnatish paketi nomi

2. Har bir fayl tizimi fayli ishga tushirishdan oldin SELinux konteksti bilan belgilanishi kerak. Ushbu nuqtaga qadar cheklangan domenlarga kirish taqiqlanishi mumkin, bu esa operatsion tizimning to'g'ri yuklanmasligiga olib kelishi mumkin. Vaziyatni /etc/selinux/config konfiguratsiya faylida SELINUX=ruxsat beruvchi parametrni o'rnatish orqali tuzatish mumkin.

3. Fayl belgisi keyingi tizimni qayta yuklashda sodir bo'ladi. Jarayon davomida barcha fayllar uchun teglar SELinux kontekstida o'rnatiladi. Oxirgi satrda har bir * belgi 1000 ta teglangan faylni bildiradi. Jarayonning davomiyligi tizimdagi fayllar soniga, shuningdek, disklarning tezligiga bog'liq.

*** Ogohlantirish -- SELinux maqsadli siyosatni qayta belgilash talab qilinadi. *** Qayta belgilash faylga *** tizim hajmi va qattiq disklar tezligiga qarab juda uzoq vaqt talab qilishi mumkin. ****

4. Agar SELinux siyosati majburiy ravishda tayinlanmagan bo'lsa va ish kengaytirish rejimida sodir bo'lsa, jurnalga majburiy rejimda taqiqlanadigan harakatlar sifatida taqiqlar yoziladi. SELinux tizimni oxirgi yuklashda harakatlarni taqiqlamasligiga ishonch hosil qiling, buning uchun buyruqni bajaring.

Grep "SELinux oldini oladi" /var/log/messages

Chiqish bo'sh bo'lishi kerak, ya'ni hamma narsa yaxshi va SELinux bu harakatni taqiqlamaydi.
5. Jurnallarda taqiqlar haqida xabarlar yo'qligiga ishonch hosil qilganingizdan so'ng, SELINUX parametrini qo'llashda o'rnating (fayl /etc/selinux/config):

# Ushbu fayl tizimdagi SELinux holatini nazorat qiladi. # SELINUX= ushbu uchta qiymatdan birini qabul qilishi mumkin: # majburlash - SELinux xavfsizlik siyosati amalga oshiriladi. # ruxsat beruvchi - SELinux majburlash o'rniga ogohlantirishlarni chop etadi. # o'chirilgan - SELinux siyosati yuklanmagan. SELINUX=inforcing # SELINUXTYPE= ushbu ikki qiymatdan birini qabul qilishi mumkin: # maqsadli - Maqsadli jarayonlar himoyalangan, # mls - Ko'p darajali xavfsizlik himoyasi. SELINUXTYPE=maqsadli

6. Shundan so'ng, operatsion tizim qayta ishga tushirilishi kerak. Qayta ishga tushirgandan so'ng, getenforce buyrug'i bilan "Enforcing return" qiymatini tekshirishingiz kerak.

$ /usr/sbin/getenforce ijrosi

7. SELinux va tizim foydalanuvchilari o'rtasidagi xaritalarni ko'rish uchun buyruqni bajaring

/usr/sbin/semanage login –l

Buyruqning chiqishi quyidagicha bo'lishi kerak:

Kirish nomi SELinux foydalanuvchisi MLS/MCS diapazoni __default__ unconfined_u s0-s0:c0.c1023 root unconfined_u s0-s0:c0.c1023 system_u system_u s0-s0:c0.c1023

Shuningdek, e'tiborga olish kerak bo'lgan ba'zi xususiyatlar mavjud. SELinux o'chirilgan bo'lsa, foydalanuvchi tomonidan yaratilgan fayllar belgilanmaydi va buning natijasida majburiy holatga o'tkazilganda muammolar paydo bo'lishi mumkin. Fayllar opsiyani o'chirilgandan ruxsat beruvchi/majburiy rejimga o'zgartirish orqali belgilanadi, bu esa belgilanmagan fayllarning paydo bo'lishi muammosini oldini oladi.

SELinux haqida juda ko'p narsa yozilgan, ammo bu materialning aksariyatida ikkita kamchilik mavjud. Yoki bu qanday qilib aniq bir narsani qilish bo'yicha qisqa amaliy maslahatlar, lekin uning qanday ishlashi va ishlashi haqida tushuntirishlarsiz. Va agar maqolada (yoki kitobning bobida) nazariy masalalar tasvirlangan bo'lsa, u qandaydir uzoq va chalkash.

Shuning uchun men SELinux nima ekanligini qisqacha va aniq tasvirlashga harakat qildim. Hali xavfsizlik tizimlariga duch kelmaganlar uchun mavjud. Qisqartirish istagi tufayli men ortiqcha yuklamaslik uchun ba'zi jihatlarni o'tkazib yubordim - bu maqolada faqat mohiyat bor. Xususan, men bu erda "eski" Linux xavfsizlik tizimi nima ekanligini tasvirlamayman - DAC (ixtiyoriy kirishni boshqarish, selektiv kirishni boshqarish). Yoki DAC, MAC va RBAC o'rtasidagi farqlar qanday. Qiziqqanlar bu haqda, masalan, Vikipediyada o'qishlari mumkin.

SELinux nima?

SELinux (Security Enhanced Linux) Bu majburiy va rolga asoslangan kirish modellariga asoslangan xavfsizlik tizimi. U 2000-yillarning boshida anʼanaviy UNIX xavfsizlik tizimining (DAC) kamchiliklarini tuzatish uchun ishlab chiqilgan. SELinux Linux yadrosining komponenti sifatida yadro versiyasi 2.6 dan boshlab joriy qilingan. Ya'ni, SELinux yadrosi 2.6 yoki undan keyingi versiyaga ega bo'lgan har qanday Linux tarqatishda ishlatilishi mumkin. Albatta, barcha distribyutorlar SELinux-dan foydalanishni imkon qadar osonlashtirmaydi, lekin printsipial jihatdan uni deyarli har biriga o'rnatish mumkin.

Bir nechta tarqatishlar SELinux-ni qutidan tashqarida o'rnatadi - RHEL, CentOS, Fedora. Shunday qilib, haqiqiy foydalanish uchun siz faqat SELinux-ni majburiy rejimga qo'yishingiz kerak. Bir nechta boshqa tarqatishlarda SELinux omborga kiritilgan, shuning uchun uni o'rnatish bir necha daqiqa vaqtni oladi - masalan, Debian, Ubuntu. Ushbu tarqatishlarda SELinux bitta buyruq bilan o'rnatiladi " sudo apt-get install selinux" keyin qayta ishga tushirish.

SELinux va DAC

SELinux DAC dan "keyin" ishlaydi. Ya'ni, SELinux-da DAC-da taqiqlangan operatsiyalarga ruxsat berilmaydi.
Boshqacha qilib aytganda, SELinux DAC orqali ruxsat etilgan amallarni to'ldiradi va belgilaydi. Biroq, SELinux DAC dan mustaqil ishlaydi.

Ob'ektlar va ob'ektlar

SELinux haqida gapirganda, sub'ektlar va ob'ektlar doimo eslatib o'tiladi. Ya'ni, SELinux sub'ektlar va ob'ektlar o'rtasidagi harakatlarda qo'llaniladigan ruxsat va taqiqlardir.

Mavzular - qat'iy aytganda, bular kompyuterda har qanday operatsiyalarni bajaradigan foydalanuvchilar. Biroq, foydalanuvchilar har doim biron bir dastur yoki boshqa dastur orqali harakat qilishadi. Ya'ni, inson foydalanuvchi kompyuterning o'zi va "o'z qo'llari bilan", masalan, faylga yoza olmaydi. Agar u faylga yozish kerak bo'lsa, u qandaydir dasturni ishga tushiradi. Shuning uchun sub'ektlar ko'pincha dasturlarni (jarayonlarni) anglatadi. Boshqacha qilib aytganda, sub'ektlar - muayyan harakatlarni bajaradiganlar.

Ob'ektlar - bu qanday harakatlar amalga oshiriladi. Ko'pincha ob'ektlar ma'lumotlar fayllariga murojaat qiladi. Ammo bu qurilmalar va hatto dasturlar bo'lishi mumkin. Misol:
cat /var/log/syslog | grep SELinux
ushbu buyruqda dastur grep dastur uchun ob'ekt mushuk. Va shunga ko'ra, mushuk dasturi grep dasturiga nisbatan mavzudir.

SELinux-ni qanday yoqish yoki o'chirish

SELinux-ni yoqish yoki o'chirish buyruq bilan amalga oshiriladi selinuxenabled 1 parametri bilan (SELinux-ni yoqish) yoki 0 (SELinux-ni o'chirish). Agar sizga tizimni ishga tushirishda SELinux-ni yoqish/o'chirish kerak bo'lsa, faylni tahrirlang /etc/selinux/config(SELinux parametri = o'chirish).

SELinux ish rejimlari

Ruxsat beruvchi- xavfsizlik siyosatini buzishga yo'l qo'yiladi. Bunday qoidabuzarliklar faqat tizim jurnalida qayd etiladi. Ya'ni, mohiyatiga ko'ra, SELinux ishlamaydi, faqat xavfsizlik siyosatining buzilishini qayd etadi.

Majburiy- xavfsizlik siyosatining buzilishi bloklanadi. SELinux to'liq ishlaydi.

Ish rejimlarini almashtirish buyruq bilan amalga oshiriladi setenforce 1 parametri (majburiy yoqilgan) yoki 0 (ruxsat beruvchini yoqish). Ammo tizim ishga tushganda darhol ish rejimini sozlash kerak bo'lsa, faylni tahrirlang /etc/selinux/config(SELinux = parametr) uchta qiymatdan birini qabul qilishi mumkin - ruxsat beruvchi, majburiy, o'chirish (SELinux o'chirilgan).

Jamoa sestatus SELinux ning joriy ish rejimini bilish imkonini beradi.

SELinux jurnali (audit)

  • auditallow sozlamasi - hodisalarni qayd qilish.
  • dontaudit sozlamalari - hodisalarni qayd qilmang.

Ish mantig'i:

  • agar operatsiya ruxsat etilgan bo'lsa, u faqat auditorlik holatida qayd etiladi;
  • Agar operatsiyaga ruxsat berilmagan bo'lsa, u faqat dontaudit holatida YO'Q.

Xavfsizlik konteksti (yorlig'i) SELinux

Bu quyidagilardan iborat ma'lumotlar to'plami:

  1. foydalanuvchi turi
  2. ma'lumotlar turi yoki jarayon domeni
  3. darajalar va toifalar (faqat ma'lum MLS/MCS siyosatlarida qo'llaniladi; umumiy siyosatlarda bu qiymatlar to'liq kirish uchun o'rnatiladi)

Xavfsizlik konteksti fayl atributlariga (fayl tizimida) yoziladi va SELinux o'rnatilganda yaratiladi (yorliqlash operatsiyasi). Oldindan tayinlangan xavfsizlik konteksti keyinchalik o'zgartirilishi mumkin - o'tish jarayoni.

Agar fayl tizimi SELinux teglarini (masalan, NFS) yozishni qo'llab-quvvatlamasa, teglar fayllardan alohida yoziladi, fayllar va teglar o'rtasidagi aloqa fayl yo'llari bo'ylab sodir bo'ladi. Agar fayl boshqa yo'lga ko'chirilgan bo'lsa, bu fayl va uning yorlig'i o'rtasida "bo'shliq" paydo bo'lishiga olib kelishi mumkin (masalan, bunday fayllar bilan katalog boshqa ulanish nuqtasiga qayta o'rnatilgan).

Fayl tizimi bunday teglarni yozishni qo'llab-quvvatlasa ham, fayl yorlig'i noto'g'ri bo'lishi mumkin, lekin fayl fayl tizimi ichida nusxa ko'chirish yoki ko'chirish operatsiyalari bilan noto'g'ri qo'llanilgan. Masalan, boshqa jildga nusxalanganda, fayl avval mavjud bo'lgan yorliq o'rniga ushbu jild uchun yorliqlar to'plamini (yorliq merosi) olishi mumkin. Shuning uchun SELinux-dan foydalanganda fayllardan nusxa ko'chirish va ko'chirish operatsiyalarini to'g'ri bajarish muhimdir.

SELinux kontekstlarini -Z kaliti bilan standart buyruqlar yordamida bilib olishingiz mumkin:

  • ps -eZ [| gerp dasturi_nomi]: Ishlayotgan dasturlar uchun (yoki ma'lum bir dastur uchun) SELinux konteksti.
  • ls -Z: Fayllar uchun SELinux konteksti.
  • id-Z: Joriy foydalanuvchi uchun SELinux konteksti.

SELinux foydalanuvchisi

Bu login va parolga ega ma'lum bir foydalanuvchi emas, tavsiflovchi foydalanuvchi turi. Aslida, bu "eski" DAC xavfsizlik tizimidagi foydalanuvchilar guruhi bilan bir xil. Har bir yangi foydalanuvchi tizimga qo'shilganda, u sukut bo'yicha (yoki aniq) ba'zi SELinux foydalanuvchi turiga moslashtiriladi va keyinchalik uning foydalanuvchi turi uchun belgilangan ruxsatlar yoki cheklovlarga ega bo'ladi.

Rol

Ruxsat etilgan harakatlar ro'yxati. Vakolatlarni o'zgartirish uchun bir roldan ikkinchisiga o'tish mumkin. Bu foydalanuvchi identifikatorini o'zgartirmaydi (su/sudo buyruqlaridan farqli o'laroq). Rollar birlashmaydi, bir-birini almashtiradi.

Xavfsizlik siyosati bir roldan ikkinchisiga ruxsat etilgan o'tishni belgilaydi. Ya'ni, biron bir roldan biron bir rolga o'tish mumkin emas. Rollar har doim turlar (domenlar) bilan bog'liq bo'lganligi sababli, ular ko'pincha rollarni o'zgartirish haqida emas, balki domenni o'zgartirish (domenga o'tish) haqida gapirishadi.

SELinux turlari (domenlari).

SELinux sandbox sifatida ham tanilgan. Ular sub'ektlar va ob'ektlarni guruhlarga birlashtiradi va bu guruhlar doirasida sub'ektlarning ob'ektlarga ruxsat etilgan harakatlarini belgilaydi. Mavzular uchun tip atamasi o'rniga domen atamasi qo'llaniladi.
Oddiy qilib aytganda, siz shunday deyishingiz mumkin:
SELinux turi - ma'lumotlar uchun;
SELinux domeni - jarayonlar uchun.
SELinux-da, umumiy siyosatlarda, majburiy turdagi tayinlash mexanizmi qo'llaniladi - Type Enforcement. Ya'ni, har bir ob'ekt va sub'ekt qandaydir turga (yoki domenga) o'tkazilishi kerak.

SELinux siyosati

Tizimda tavsiflangan barcha munosabatlar to'plami: foydalanuvchi - rol - tip (domen) - daraja va toifa. Barcha foydalanuvchi turlari, barcha rollar, barcha turlar/domenlar. Ikki turdagi siyosat qo'llaniladi:

  • Turni bajarish (TE) - Rollarga asoslangan kirishni boshqarish (RBAC). Maqsadli va qat'iylik eng ko'p qo'llaniladigan TE - RBAC SELinux siyosatidir.
  • Bell-La Padula Modeli Ko'p darajali xavfsizlik (MLS) - Ko'p toifali xavfsizlik (MCS).

Siyosat maqsadli- maxsus cheklangan domenlarga kiritilmagan barcha jarayonlar unconfined_t cheklanmagan domenida ishlaydi. Bu siyosatda hali tasvirlanmagan jarayonlarni amalga oshirish imkonini beradi. Ammo bunday jarayonlar aslida deyarli ma'muriy huquqlar bilan amalga oshiriladi. Bu siyosatning zaif nuqtasi maqsadli.

Siyosat qat'iy- barcha jarayonlar maxsus cheklangan domenlarda ishlaydi, hech kim cheksiz unconfined_t domenida ishlamaydi; Qattiq siyosat juda ixtisoslashgan tarzda qo'llaniladi, chunki u har bir alohida holat uchun qo'lda konfiguratsiyani talab qiladi. Axir, ushbu siyosatda tasvirlanmagan jarayonlar oddiygina ishlamaydi. Ammo bu siyosat SELinux-da mavjud bo'lgan imkoniyatlar doirasida to'liq himoyani ta'minlaydi.

MLS/MCS siyosati

Majburiy kirish mexanizmiga asoslangan maxsus siyosat. Barcha sub'ektlar va ob'ektlarga kirish darajalari tayinlangan. Keyinchalik, ob'ekt va ob'ektning kirish darajalari nisbati asosida operatsiya uchun ruxsat yoki taqiq beriladi. Ruxsat mavzusi faqat ikkita operatsiya - fayldan o'qish va faylga yozish. Ushbu sxema o'rtasidagi muhim farq shundaki, ruxsatlar fayllarga emas, balki ushbu fayllar bilan bog'liq ma'lumotlar oqimiga beriladi.

Qoida shundaki, ma'lumotlar oqimi kirish darajasini pasaytirish yo'nalishi bo'yicha o'tishi mumkin emas. Ya'ni, yuqori darajadan past darajaga. Bu, birinchi qarashda, agar sub'ekt va ob'ekt turli xil kirish darajalariga ega bo'lsa, o'qish yoki kirishning mantiqsiz taqiqlanishiga olib keladi. Masalan, kirish darajasi "maxfiy" bo'lgan sub'ekt kirish darajasi "tariflanmagan" faylga yoza olmaydi. Va "maxfiy" kirish huquqiga ega bo'lgan bir xil mavzu "o'ta maxfiy" darajadagi fayldan o'qiy olmaydi, lekin bu faylga yozishi mumkin.

Biroq, bu erda mantiq bor, u boshqacha. Agar Maxfiy ob'ekt ma'lumotni tasniflanmagan faylga yozsa, bu fayl (potentsial) maxfiy ma'lumotlarni o'z ichiga oladi, lekin tasniflanmagan ob'ektlar uchun ochiq bo'ladi. Ya'ni, ma'lumotlarning tarqalishi mumkin bo'ladi. Shuning uchun, MLSda fayllarga yozish faqat quyi darajadan yuqori darajagacha ruxsat etiladi.

Kirish darajasi yorliqlarini belgilashda ushbu xususiyatni tushunish kerak.

Darajalar bilan bir qatorda, kirish toifalar bo'yicha ham tartibga solinadi. “Dengiz kuchlari” turkumiga kirish huquqiga ega boʻlmagan subʼyekt ushbu turkum bilan belgilangan maʼlumotlarga kira olmaydi. Ushbu mavzu eng yuqori kirish darajasiga ega bo'lsa ham.
SELinux kontekstida darajalar va toifalar uchun kirish quyidagicha ko'rinadi: " s0-s0:c0.c1023"Qaerda" s0-s0"ruxsat etilgan darajalar" c0.c1023"Qabul qilinadigan toifalar. Bu maxsus yozuv " s0-s0:c0.c1023" har qanday toifadagi ob'ektlarga kirishning eng yuqori darajasini anglatadi.

Kontekstning bu qismi faqat maxsus MLS/MCS siyosatlarida qo'llaniladi. Maqsadli yoki qat'iy kabi umumiy siyosatlarda kontekstning bu qismi oddiygina maksimal ruxsat darajasiga o'rnatiladi va shuning uchun kirishga ta'sir qilmaydi.

Xulosa

SELinux majburiy rejimga o'tganda va qat'iy siyosat yoki MLS/MCS siyosatidan foydalanganda maksimal himoyani ta'minlaydi.

Agar SELinux ruxsat beruvchi rejimda ishlayotgan bo'lsa, u holda himoya deyarli yo'q - faqat joriy siyosatning buzilishi qayd etiladi.

Agar SELinux majburiy rejimga o'tgan bo'lsa, lekin maqsadli siyosat ishlatilsa, himoya faqat siyosatda ruxsat va cheklovlar belgilangan "ma'lum" dasturlar uchun taqdim etiladi. "Noma'lum" dastur aslida ma'muriy imtiyozlarga ega.

Agar siz Krasnodarda yashasangiz, o'rnatishning oson yo'li bor SELinux va undan foydalanishni o'rganing.

Agar siz ushbu maqolani foydali deb topsangiz yoki uni yoqtirgan bo'lsangiz, muallifni moliyaviy qo'llab-quvvatlashdan tortinmang. Buni pul otish orqali qilish oson Yandex hamyon raqami 410011416229354. Yoki telefonda +7 918-16-26-331 .

Hatto kichik miqdor ham yangi maqolalar yozishga yordam beradi :)

Tegishli maqolalar

Biz allaqachon Habré-da SELinux haqida yozgan edik, ammo bu tizim bo'yicha ko'plab batafsil qo'llanmalar nashr etilmagan. Bugun biz SELinux bo'yicha tizim haqidagi ma'lumotlardan boshlab va siyosatlarning moslashuvchan konfiguratsiyasigacha bo'lgan shunday batafsil qo'llanmani nashr etmoqdamiz.
Postni tushunish qiyin bo'lgan "varaq" ga aylantirmaslik uchun biz qo'llanmani ikki qismga bo'lishga qaror qildik. Birinchisi, tizimning o'zi va uning ba'zi xususiyatlari haqida gapiradi. Ikkinchisi siyosatni o'rnatish bilan bog'liq. Hozir biz birinchi qismini nashr etmoqdamiz, ikkinchi qismi birozdan keyin nashr etiladi.

1.Kirish

SELinux (SELinux) yadro darajasida amalga oshirilgan majburiy kirishni boshqarish tizimidir. Ushbu tizim birinchi marta CentOS ning to'rtinchi versiyasida paydo bo'ldi va 5 va 6 versiyalarida amalga oshirish sezilarli darajada to'ldirildi va yaxshilandi. Ushbu yaxshilanishlar SELinux-ga ko'plab dolzarb muammolarni samarali hal qilishga qodir universal tizimga aylanish imkonini berdi. Shuni esda tutish kerakki, klassik Unix huquqlar tizimi birinchi bo'lib qo'llaniladi va boshqaruv faqat ushbu dastlabki tekshirish muvaffaqiyatli bo'lsa, SELinux-ga o'tadi.

1.1 Ba'zi dolzarb muammolar.

SELinux ning amaliy ahamiyatini tushunish uchun standart kirishni boshqarish tizimi etarli bo'lmagan bir nechta misollarni ko'rib chiqaylik. Agar SELinux o'chirilgan bo'lsa, siz faqat DAC (ixtiyoriy kirishni boshqarish) yoki ACL (kirishni boshqarish ro'yxatlari) o'z ichiga olgan klassik ixtiyoriy kirish boshqaruviga kirishingiz mumkin. Ya'ni, biz foydalanuvchilar va foydalanuvchilar guruhlari darajasida yozish, o'qish va bajarish huquqlarini manipulyatsiya qilish haqida bormoqda, bu ba'zi hollarda mutlaqo etarli bo'lmasligi mumkin. Masalan:

- Administrator foydalanuvchining harakatlarini to'liq nazorat qila olmaydi. Masalan, foydalanuvchi boshqa barcha foydalanuvchilarga SSH kalitlari kabi o'zlarining nozik fayllarini o'qish huquqini berishi mumkin.

Jarayonlar xavfsizlik sozlamalarini o'zgartirishi mumkin. Misol uchun, foydalanuvchining pochtasini o'z ichiga olgan fayllar faqat bitta foydalanuvchi tomonidan o'qilishi kerak, ammo pochta mijozi kirish huquqlarini o'zgartirishi mumkin, shunda bu fayllar hamma tomonidan o'qilishi mumkin.

Jarayonlar ularni ishga tushirgan foydalanuvchining huquqlarini meros qilib oladi. Misol uchun, Firefox brauzerining troyan bilan zararlangan versiyasi foydalanuvchining SSH kalitlarini o'qiy oladi, ammo buning uchun hech qanday sabab yo'q.

Aslida, an'anaviy selektiv kirishni boshqarish (DAC) modelida kirishning faqat ikkita darajasi yaxshi amalga oshiriladi - foydalanuvchi va superuser. Har bir foydalanuvchiga kerakli minimal imtiyozlarga ega bo'lish imkonini beradigan oddiy usul yo'q.
Albatta, klassik xavfsizlik modeli doirasida ushbu muammolarni hal qilishning ko'plab usullari mavjud, ammo ularning hech biri universal emas.

1.1.1 SELinux-da ishlatiladigan asosiy atamalar:

Domen- jarayon amalga oshirishi mumkin bo'lgan harakatlar ro'yxati. Odatda, domen jarayonning ishlashi mumkin bo'lgan minimal mumkin bo'lgan harakatlar to'plami sifatida aniqlanadi. Shunday qilib, agar jarayon obro'sizlansa, hujumchi ko'p zarar etkaza olmaydi.

Rol- qo'llanilishi mumkin bo'lgan domenlar ro'yxati. Agar ma'lum bir domen rol uchun domenlar ro'yxatida bo'lmasa, u holda ushbu domendagi amallarni qo'llash mumkin emas.

Turi- ob'ektga nisbatan joiz bo'lgan harakatlar majmui. Turning domendan farqi shundaki, u quvurlar, kataloglar va fayllarga qo'llanilishi mumkin, domen esa jarayonlarga qo'llaniladi.

Xavfsizlik konteksti- barcha SELinux atributlari - rollar, turlar va domenlar.

1.2 An'anaviy xavfsizlik modeli muammolarini hal qilish.

SELinux har bir xizmat, foydalanuvchi va dastur uchun minimal talab qilinadigan imtiyozlar modeliga qat'iy amal qiladi. Odatiy bo'lib, tizimning har bir elementi faqat uning ishlashi uchun muhim bo'lgan huquqlarga ega bo'lganda, "taqiqlovchi rejim" o'rnatiladi. Agar foydalanuvchi, dastur yoki xizmat faylni o'zgartirishga yoki uni hal qilish uchun aniq kerak bo'lmagan resursga kirishga harakat qilsa, ularga kirish shunchaki rad etiladi va bunday urinish qayd qilinadi.

SELinux yadro darajasida amalga oshiriladi, shuning uchun dastur ilovalari ushbu majburiy kirishni boshqarish tizimining versiyasi, uning ishlash xususiyatlari va boshqalar haqida umuman hech narsa bilmasligi mumkin. Agar to'g'ri sozlangan bo'lsa, SELinux uchinchi tomon dasturlari va xizmatlarining ishlashiga ta'sir qilmaydi. Garchi, agar dastur ushbu kirishni boshqarish tizimidan xato xabarlarini ushlab turishga qodir bo'lsa-da, dasturdan foydalanish qulayligi sezilarli darajada oshadi. Haqiqatan ham, agar himoyalangan resurs yoki faylga kirishga urinilsa, SELinux “kirish taqiqlangan” oilasidan xatoni asosiy dasturga yuboradi. Ammo bir nechta ilovalar SELinux-dan olingan tizim qo'ng'iroqlarini qaytarish kodlaridan foydalanadi.

Bu erda butun tizimingiz xavfsizligini qanday oshirish mumkinligini ko'rsatish uchun SELinux-dan foydalanishning ba'zi misollari keltirilgan.

- ssh tugmachalarini o'qiy oladigan dasturlar ro'yxatini yaratish va sozlash.

Pochta mijozi orqali ma'lumotlarga ruxsatsiz kirishning oldini olish.

Brauzerni faqat foydalanuvchining asosiy papkasida ishlash uchun zarur bo'lgan fayl va papkalarni o'qiy oladigan qilib sozlash.

2. SELinux ish rejimlari

SELinux-da uchta asosiy ish rejimi mavjud bo'lib, sukut bo'yicha Majburlash rejimi o'rnatilgan. Bu juda qattiq rejim va agar kerak bo'lsa, uni oxirgi foydalanuvchi uchun qulayroq narsaga o'zgartirish mumkin.

Amalga oshirish: Standart rejim. Ushbu rejim tanlanganda, joriy xavfsizlik siyosatini qandaydir tarzda buzadigan barcha harakatlar bloklanadi va buzishga urinish jurnalda qayd etiladi.

Ruxsat beruvchi: Ushbu rejimdan foydalanganda, joriy xavfsizlik siyosatini buzgan barcha harakatlar to'g'risidagi ma'lumotlar jurnalga yoziladi, lekin harakatlarning o'zi bloklanmaydi.

O‘chirilgan: Majburiy kirishni boshqarish tizimini to'liq o'chirish.

Siz joriy rejimni va boshqa SELinux sozlamalarini Administratsiya menyusida (system-config-selinux) mavjud bo'lgan maxsus GUI vositasi yordamida ko'rishingiz mumkin (va agar kerak bo'lsa, uni o'zgartiring). Agar siz konsolda ishlashga odatlangan bo'lsangiz, joriy holatni sestatus buyrug'i bilan ko'rishingiz mumkin.

# sestatus SELinux holati: yoqilgan SELinuxfs o'rnatish: /selinux Joriy rejim: konfiguratsiya faylidan rejimni qo'llash: qo'llash siyosati versiyasi: 21 Konfiguratsiya faylidan siyosat: maqsadli

SELinux holatini getenforce buyrug'i yordamida ham bilib olishingiz mumkin.
"Setenforce" buyrug'i Majburlash va Ruxsat berish rejimlarini tezda almashtirish imkonini beradi, o'zgarishlar qayta yuklanmasdan kuchga kiradi. Ammo agar siz SELinux-ni yoqsangiz yoki o'chirsangiz, qayta ishga tushirish talab qilinadi, chunki xavfsizlik belgilari fayl tizimida qayta o'rnatilishi kerak.
Tizim har safar yuklanganda qo'llaniladigan standart rejimni tanlash uchun /etc/selinux/config faylida "SELINUX=" qatorining qiymatini o'rnating, rejimlardan birini belgilang - "majburlash", "ruxsat berish" yoki " nogiron". Masalan: "SELINUX = ruxsat beruvchi".

3. SELinux siyosatlari

Yuqorida ta'kidlab o'tilganidek, SELinux sukut bo'yicha Majburlash rejimida ishlaydi, ruxsat etilganlardan tashqari har qanday harakatlar avtomatik ravishda bloklanganda, har bir dastur, foydalanuvchi yoki xizmat faqat ishlashi kerak bo'lgan imtiyozlarga ega, ammo boshqa hech narsa yo'q. Bu juda qat'iy siyosat bo'lib, uning ikkala afzalliklari - axborot xavfsizligining eng yuqori darajasi va kamchiliklari - tizimni ushbu rejimda sozlash tizim ma'murlari uchun juda ko'p mehnat bilan bog'liq, bundan tashqari, foydalanuvchilar buni amalga oshirish xavfi yuqori. agar ular tizimdan hech bo'lmaganda ahamiyatsiz bo'lmagan tarzda foydalanishni xohlasalar, kirish cheklovlariga duch kelishadi. Ushbu yondashuv Enterprise sektorida qabul qilinadi, lekin oxirgi foydalanuvchi kompyuterlarida qabul qilinishi mumkin emas. Ko'pgina ma'murlar bunday muammolarni oldini olish uchun SELinux-ni ish stantsiyalarida o'chirib qo'yishadi.

Bunga yo'l qo'ymaslik uchun, masalan, httpd, nomli, dhcpd, mysqld kabi asosiy ilovalar va xizmatlar uchun tajovuzkorga muhim ma'lumotlarga kirishga ruxsat bermaydigan oldindan sozlangan maqsadli siyosatlar belgilangan. Siyosat aniqlanmagan ilovalar unconfined_t domenida ishlaydi va SELinux tomonidan himoyalanmagan. Shunday qilib, to'g'ri tanlangan maqsadli siyosatlar foydalanuvchi uchun keraksiz muammolarni yaratmasdan qabul qilinadigan xavfsizlik darajasiga erishishga imkon beradi.

4. SELinux-da kirishni boshqarish

SELinux kirishni boshqarishning quyidagi modellarini taqdim etadi:

Amal qilish turi (TE): Maqsadli siyosatlarda foydalaniladigan asosiy kirishni boshqarish mexanizmi. Ruxsatlarni eng past darajada batafsil boshqarish imkonini beradi. Tizim ma'muri uchun eng moslashuvchan, lekin ayni paytda eng ko'p mehnat talab qiladigan mexanizm.

Rolga asoslangan kirishni boshqarish (RBAC): Ushbu modelda kirish huquqlari rollar sifatida amalga oshiriladi. Rol - bu tizimning bir yoki bir nechta elementlari tomonidan tizimning boshqa qismlariga nisbatan ma'lum harakatlarni bajarish uchun ruxsat. Aslida, RBAC TE ning keyingi rivojlanishidir.

Ko'p darajali xavfsizlik (MLS): ko'p darajali xavfsizlik modeli bo'lib, unda barcha tizim ob'ektlariga ma'lum darajadagi kirish huquqi beriladi. Kirishga ruxsat berish yoki rad etish faqat ushbu darajalar o'rtasidagi munosabatlar bilan belgilanadi.

SELinux ichidagi barcha jarayonlar va fayllar xavfsizlik kontekstiga ega.
Keling, /var/www/html/index.html manzilida joylashgan Apache veb-serverining boshlang'ich sahifasini diqqat bilan ko'rib chiqish orqali kontekstni amalda ko'rib chiqaylik.

$ ls -Z /var/www/html/index.html -rw-r--r-- foydalanuvchi nomi foydalanuvchi nomi system_u:object_r:httpd_sys_content_t /var/www/html/index.html

Standart fayl ruxsatnomalariga qo'shimcha ravishda biz SELinux xavfsizlik kontekstini ko'rishimiz mumkin: system_u: object_r: httpd_sys_content_t.

Kontekst user:role:type:mls ga asoslangan, lekin mls maydoni yashirilganda foydalanuvchi:rol:type maydonlari ko'rsatiladi. Biz maqsadli siyosatni ham ko'rishimiz mumkin, bu holda httpd_sys_content_t.

Endi “httpd” jarayoni (Apache veb-server) uchun SELinux xavfsizlik kontekstini ko‘rib chiqamiz:

$ps axZ | grep httpd system_u:system_r:httpd_t 3234 ? Ss 0:00 /usr/sbin/httpd

Ko'rib turganimizdek, bu jarayon httpd_t domenida ishlamoqda.

Xo'sh, endi uy katalogimizdagi faylning xavfsizlik kontekstini ko'rib chiqamiz:

$ ls -Z /home/username/myfile.txt -rw-r--r-- foydalanuvchi nomi foydalanuvchi nomi user_u:object_r:user_home_t /home/username/myfile.txt

Biz fayl user_home_t turida ekanligini ko'ramiz, bu tip sukut bo'yicha uy katalogidagi barcha fayllarga tayinlangan.
Kirish faqat bir xil turdagi elementlar o'rtasida ruxsat etiladi, shuning uchun Apache veb-serveri httpd_sys_content_t tipidagi /var/www/html/index.html faylini osongina o'qiy oladi. Shu bilan birga, Apache httpd_t domenida ishlayotganligi va to'ldirilgan userid:username maydonlariga ega bo'lmaganligi sababli, u home/username/myfile.txt fayliga kira olmaydi, garchi bu faylni o'qish mumkin bo'lmasa-da. maqsadli siyosat. Shunday qilib, agar Apache veb-serveri buzilgan bo'lsa, tajovuzkor httpd_t domenida bo'lmagan fayllarga kira olmaydi yoki jarayonlarni ishga tushira olmaydi.

5. SELinux muammolarini bartaraf etish

Ertami-kechmi SELinux sizni biror narsaga kirishni rad etadigan vaziyatga duch keladigan vaziyat bo'ladi. Kirishni rad etishning bir necha asosiy sabablari bor:

Noto'g'ri belgilangan fayl.
- Jarayon noto'g'ri kontekstda ketmoqda
- Siyosatdagi xato. Jarayon siyosatni yaratishda hisobga olinmagan faylga kirishni talab qiladi.
- Bosqinga urinish.

Kirishni rad etishning dastlabki uchta sababi juda oson hal qilinadi, shu bilan birga bosqinga urinish paytida signal eshitiladi va foydalanuvchiga tegishli bildirishnoma yuboriladi.
Har qanday muammoni hal qilish uchun SELinux jurnaliga qarang. Odatiy bo'lib, u auditd jarayoni tomonidan /var/log/audit/audit.log fayliga yoziladi. Agar bu jarayon ishlamayotgan bo'lsa, u holda SELinux /var/log/messages faylida qayd qiladi, bu holda kirishni boshqarish tizimining barcha xabarlari AVC tugmachasi bilan belgilanadi, bu esa, masalan, kerakli qatorlarni tezda filtrlash imkonini beradi. grep buyrug'i yordamida.
Distribyutsiyalarning so'nggi versiyalari (CentOS 5 dan boshlab) SELinux jurnalini qulay va foydalanuvchilar uchun qulay shaklda ko'rsatishga imkon beruvchi grafik foydalanuvchi interfeysiga ega yordamchi dasturni o'z ichiga oladi. Siz sealert -b ni yozib konsoldan qo'ng'iroq qilishingiz mumkin. Yordamchi dastur muammolarni bartaraf etish paketining bir qismidir. Agar X server ishlamayotgan bo'lsa, siz quyidagi buyruq bilan odam o'qiy oladigan hisobotlarni yaratishingiz mumkin:

Sealert -a /var/log/audit/audit.log > /path/to/mylogfile.txt

5.1 Fayl xavfsizligi kontekst belgilarini o'zgartirish.

"Chcon" buyrug'i fayllar yoki kataloglarning SELinux kontekstini xuddi "chown" va "chmod" buyruqlari fayl egasini yoki kirish huquqlarini standart kirishni boshqarish tizimida o'zgartirishga imkon beradigan tarzda o'zgartirishga imkon beradi.

Keling, bir nechta misollarni ko'rib chiqaylik.
Faraz qilaylik, tizimda Apache veb-server o'rnatilgan va biz saytlar saqlanadigan papkani (sukut bo'yicha bu /var/www/html/), masalan, /html/ ga o'zgartirishimiz va indeks yaratishimiz kerak. html fayli ushbu katalogda.
# mkdir /html # touch /html/index.html # ls -Z /html/index.html -rw-r--r-- root root user_u:object_r:default_t /html/index.html # ls -Z | grep html drwxr-xr-x root root user_u:object_r:default_t html

Yuqorida biz xavfsizlik kontekstidagi /html katalogi va /html/index.html fayli default_t turiga ega ekanligini ko'ramiz. Bu shuni anglatadiki, agar biz Apache-ni ishga tushirsak va ushbu katalog yoki fayl bilan ishlashga harakat qilsak, SELinux bizga kirishni rad etadi. Va bu mutlaqo to'g'ri bo'ladi, chunki Apache bilan o'zaro ishlaydigan fayllar uchun to'g'ri xavfsizlik konteksti httpd_sys_content_t hisoblanadi.
Keling, kontekstni o'zgartiramiz va hamma narsa to'g'ri bajarilganligini tekshiramiz:

# chcon -v --type=httpd_sys_content_t /html konteksti user_u:object_r:httpd_sys_content_t ga o‘zgartirildi # chcon -v --type=httpd_sys_content_t /html/index.html konteksti /html/index.html foydalanuvchi_u:object_r ga o‘zgartirildi :httpd_sys_content_t # ls -Z /html/index.html -rw-r--r-- root root user_u:object_r:httpd_sys_content_t /html/index.html # ls -Z | grep html drwxr-xr-x root root user_u:object_r:httpd_sys_content_t html
Har bir faylni va har bir katalogni qo'lda qayta ishlash shart emas, siz shunchaki -R rekursiv katalog o'tish opsiyasidan foydalanishingiz mumkin:

# chcon -Rv --type=httpd_sys_content_t /html

Xavfsizlik kontekstidagi bunday o'zgarishlar qayta yuklashlar orasida ham saqlanib qoladi, biroq fayl tizimi yorliqlari o'zgartirilsa, o'zgarishlar yo'qoladi. Texnik xizmat ko'rsatish va ekspluatatsiya qilish paytida bu juda kam uchraydi. Bunday vaziyatda to'g'ri yechim (sinovdan so'ng, albatta) qo'shimcha qoida yaratish va keyin uni mahalliy mahalliy qoidalar bilan birlashtirish bo'ladi. Shunday qilib, u asosiy qoidalarga qaraganda yuqoriroq ustuvorlikka ega bo'ladi.

SELinux fayl tizimi yorliqlarini o'zgartirgandan keyin ham to'g'ri ishlashi uchun biz SELinuxni GUI interfeysi va semanage konsol yordam dasturi bilan boshqarish uchun ikkala vositadan ham foydalanishimiz mumkin:

Semanage fcontext -a -t httpd_sys_content_t "/html(/.*)?"

Yuqoridagi misolda biz /html katalogida joylashgan barcha fayllarga httpd_sys_content_t kontekstini tayinladik.

5.2 SELinux xavfsizlik kontekstini tiklash.

"Qayta tiklash" buyrug'i xavfsizlik kontekstini sukut bo'yicha tayinlanganiga o'zgartirish imkonini beradi.
Yana biz misol sifatida Apache veb-serveridan foydalanamiz. Faraz qilaylik, foydalanuvchi o'zining bosh katalogidagi index.html faylining nusxasini tahrir qildi va uni (mv buyrug'i bilan) saytlar saqlanadigan katalogga (/var/www/html) ko'chirdi.

Esda tutingki, nusxa ko'chirishda (cp buyrug'i) faylning xavfsizlik konteksti maqsadli katalog kontekstiga to'g'ri keladi, ko'chirishda esa xavfsizlik konteksti manba kontekstiga to'g'ri keladi. Albatta, biz xavfsizlik kontekstini o'zgartirish uchun chcon buyrug'idan foydalanishimiz mumkin, lekin ko'chirilgan fayllar endi /var/www/html katalogida bo'lganligi sababli, biz ushbu katalogda joylashgan barcha fayllar uchun kontekst sozlamalarini tiklashimiz mumkin.

Kontekstni faqat index.html fayli uchun tiklash uchun biz quyidagi buyruqdan foydalanishimiz mumkin:

# restorecon -v /var/www/html/index.html

Agar biz butun katalogni rekursiv ravishda aylanib chiqmoqchi bo'lsak va undagi barcha fayllar uchun kontekstni o'zgartirmoqchi bo'lsak, biz quyidagi buyruqdan foydalanamiz:

# restorecon -Rv /var/www/html

5.3 Butun fayl tizimi uchun teglarni o'zgartirish.

Ba'zan butun fayl tizimida xavfsizlik belgilarini qayta o'rnatish kerak bo'lishi mumkin. Ko'pincha, bu operatsiya tizim bir muncha vaqt o'chirilganidan keyin SELinux-ni qayta yoqishda amalga oshiriladi. Agar biz siyosatni boshqarish turini qat'iyga o'zgartirsak, bu ham zarur (bu holda barcha jarayonlar o'zlarining maxsus domenlarida ishlaydi; unconfined_t domenida hech kim ishlay olmaydi).

Keyingi safar qayta yuklaganingizda fayl tizimini avtomatik ravishda qayta bo'lish uchun quyidagi buyruqlarni kiriting:
# teging /.autorelabel # qayta yuklash
Ba'zida avtomatik qayta bo'linish ishlamaydi (ko'pincha SELinux o'chirilgan tarqatish to'plami yangilangan hollarda). Bunday holda, quyidagi buyruqdan foydalaning:

# genhomedircon # touch /.autorelabel # qayta ishga tushirish

5.4 Portlarga kirishni ta'minlash.

Ko'pincha biz Apache kabi xizmatlarning nostandart portlarni tinglashi va ulardagi kiruvchi ulanishlarni qabul qilishini xohlaymiz. SELinux-ning asosiy siyosatlari faqat ma'lum bir xizmat uchun qattiq kodlangan oldindan belgilangan portlarga kirish imkonini beradi. Aytaylik, biz Apache 81-portda tinglashini xohlaymiz. Bunday holda, biz semanage buyrug'i yordamida qoida qo'shishimiz kerak:

# semanaj porti -a -t http_port_t -p tcp 81

SELinux ruxsat beruvchi portlarning to'liq ro'yxatini quyidagicha ko'rish mumkin:

# semanage port -l

Qo'llanmaning keyingi, ikkinchi qismida biz tizim siyosatini moslashuvchan konfiguratsiya qilish imkoniyatini ko'rsatamiz.