SELinux uchun yangi boshlanuvchilar uchun qo'llanma

SELinux uchun yangi boshlanuvchilar uchun qo'llanma

Kurs talabalari uchun tayyorlangan maqolaning tarjimasi "Linux xavfsizligi"

SELinux yoki Security Enhanced Linux - bu AQSh Milliy Xavfsizlik Agentligi (NSA) tomonidan zararli hujumlarning oldini olish uchun ishlab chiqilgan kengaytirilgan kirishni boshqarish mexanizmi. U mavjud ixtiyoriy (yoki selektiv) model (inglizcha Discretionary Access Control, DAC), ya'ni o'qish, yozish, bajarish uchun ruxsatnomalar ustiga majburiy (yoki majburiy) kirishni boshqarish modelini (English Mandatory Access Control, MAC) amalga oshiradi.

SELinux uchta rejimga ega:

  1. Amalga oshirish — siyosat qoidalari asosida kirishni rad etish.
  2. Ruxsat beruvchi — majburlash rejimida taqiqlangan siyosatni buzadigan harakatlar jurnalini yuritish.
  3. nogironlar — SELinux-ni to'liq o'chirish.

Odatiy bo'lib sozlamalar mavjud /etc/selinux/config

SELinux rejimlarini o'zgartirish

Joriy rejimni bilish uchun ishga tushiring

$ getenforce

Rejimni ruxsat beruvchiga o'zgartirish uchun quyidagi buyruqni bajaring

$ setenforce 0

yoki rejimni o'zgartirish uchun ruxsat beruvchi haqida amalga oshirish, bajarish

$ setenforce 1

Agar siz SELinux-ni butunlay o'chirib qo'yishingiz kerak bo'lsa, bu faqat konfiguratsiya fayli orqali amalga oshirilishi mumkin

$ vi /etc/selinux/config

O'chirish uchun SELINUX parametrini quyidagicha o'zgartiring:

SELINUX=disabled

SELinux sozlanmoqda

Har bir fayl va jarayon SELinux konteksti bilan belgilanadi, unda foydalanuvchi, rol, tur va boshqalar kabi qo'shimcha ma'lumotlar mavjud. Agar siz SELinux-ni birinchi marta yoqayotgan bo'lsangiz, avval kontekst va teglarni sozlashingiz kerak bo'ladi. Yorliqlar va kontekstni belgilash jarayoni teglash deb nomlanadi. Belgilashni boshlash uchun konfiguratsiya faylida biz rejimni o'zgartiramiz ruxsat beruvchi.

$ vi /etc/selinux/config
SELINUX=permissive

Rejimni o'rnatgandan so'ng ruxsat beruvchi, nomi bilan ildizda bo'sh yashirin fayl yarating autorelabel

$ touch /.autorelabel

va kompyuterni qayta ishga tushiring

$ init 6

Eslatma: Biz rejimdan foydalanamiz ruxsat beruvchi rejimdan foydalangandan beri belgilash uchun amalga oshirish qayta yuklash vaqtida tizimning ishdan chiqishiga olib kelishi mumkin.

Yuklash faylga yopishib qolsa, tashvishlanmang, belgilash biroz vaqt oladi. Belgilash tugallangach va tizimingiz ishga tushirilgach, siz konfiguratsiya fayliga o'tishingiz va rejimni o'rnatishingiz mumkin amalga oshirishva shuningdek, ishga tushiring:

$ setenforce 1

Endi siz SELinux-ni kompyuteringizda muvaffaqiyatli yoqdingiz.

Jurnallarni kuzatish

Belgilash paytida yoki tizim ishlayotganda siz ba'zi xatolarga duch kelgan bo'lishingiz mumkin. SELinux to'g'ri ishlayotganligini tekshirish va u biron bir portga, dasturga va hokazolarga kirishni bloklamasa, jurnallarga qarashingiz kerak. SELinux jurnali bu yerda joylashgan /var/log/audit/audit.log, lekin xatolarni topish uchun to'liq o'qish shart emas. Xatolarni topish uchun audit2why yordam dasturidan foydalanishingiz mumkin. Quyidagi buyruqni bajaring:

$ audit2why < /var/log/audit/audit.log

Natijada siz xatolar ro'yxatini olasiz. Agar jurnalda xatolik bo'lmasa, hech qanday xabar ko'rsatilmaydi.

SELinux siyosatini sozlash

SELinux siyosati - bu SELinux xavfsizlik mexanizmini boshqaradigan qoidalar to'plami. Siyosat muayyan muhit uchun qoidalar to'plamini belgilaydi. Endi biz taqiqlangan xizmatlarga kirishga ruxsat berish uchun siyosatlarni qanday sozlashni o'rganamiz.

1. Mantiqiy qiymatlar (kalitlar)

Kalitlar (booleanlar) yangi siyosatlar yaratmasdan, ish vaqtida siyosat qismlarini o'zgartirishga imkon beradi. Ular sizga SELinux siyosatlarini qayta yuklamasdan yoki qayta kompilyatsiya qilmasdan o'zgartirishlar kiritish imkonini beradi.

misol
Aytaylik, biz FTP o'qish/yozish orqali foydalanuvchining uy katalogini baham ko'rmoqchimiz va biz uni allaqachon baham ko'rganmiz, lekin unga kirishga harakat qilganimizda, biz hech narsani ko'rmayapmiz. Buning sababi, SELinux siyosati FTP serverini foydalanuvchining uy katalogini o'qish va yozishni oldini oladi. FTP serveri uy kataloglariga kirishi uchun siyosatni o'zgartirishimiz kerak. Keling, buni amalga oshirish uchun kalitlar mavjudligini ko'rib chiqaylik

$ semanage boolean -l

Ushbu buyruq mavjud kalitlarni ularning joriy holati (yoqilgan yoki o'chirilgan) va tavsifi bilan ro'yxatga oladi. Faqat ftp natijalarini topish uchun grep qo'shish orqali qidiruvingizni aniqlashtirishingiz mumkin:

$ semanage boolean -l | grep ftp

va siz quyidagilarni topasiz

ftp_home_dir        -> off       Allow ftp to read & write file in user home directory

Ushbu kalit o'chirilgan, shuning uchun biz uni yoqamiz setsebool $ setsebool ftp_home_dir on

Endi bizning ftp demonimiz foydalanuvchining uy katalogiga kira oladi.
Eslatma: Shuningdek, siz mavjud kalitlar ro'yxatini tavsifsiz ham qilishingiz mumkin getsebool -a

2. Yorliqlar va kontekst

Bu SELinux siyosatini amalga oshirishning eng keng tarqalgan usuli. Har bir fayl, papka, jarayon va port SELinux konteksti bilan belgilangan:

  • Fayllar va papkalar uchun teglar fayl tizimida kengaytirilgan atributlar sifatida saqlanadi va ularni quyidagi buyruq bilan ko'rish mumkin:
    $ ls -Z /etc/httpd
  • Jarayonlar va portlar uchun yorliqlash yadro tomonidan boshqariladi va siz ushbu teglarni quyidagicha ko'rishingiz mumkin:

jarayon

$ ps –auxZ | grep httpd

port

$ netstat -anpZ | grep httpd

misol
Endi teglar va kontekstni yaxshiroq tushunish uchun misolni ko'rib chiqaylik. Aytaylik, bizda katalog o'rniga veb-server mavjud /var/www/html/ использует /home/dan/html/. SELinux buni siyosatning buzilishi deb hisoblaydi va siz veb-sahifalaringizni ko'ra olmaysiz. Buning sababi, biz HTML fayllari bilan bog'liq xavfsizlik kontekstini o'rnatmaganmiz. Standart xavfsizlik kontekstini ko'rish uchun quyidagi buyruqdan foydalaning:

$ ls –lz /var/www/html
 -rw-r—r—. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/

Mana oldik httpd_sys_content_t html fayllari uchun kontekst sifatida. Hozirda quyidagi kontekstga ega bo'lgan joriy katalogimiz uchun ushbu xavfsizlik kontekstini o'rnatishimiz kerak:

-rw-r—r—. dan dan system_u:object_r:user_home_t:s0 /home/dan/html/

Fayl yoki katalogning xavfsizlik kontekstini tekshirish uchun muqobil buyruq:

$ semanage fcontext -l | grep '/var/www'

To'g'ri xavfsizlik kontekstini topganimizdan keyin kontekstni o'zgartirish uchun semanagedan ham foydalanamiz. /home/dan/html kontekstini o'zgartirish uchun quyidagi buyruqlarni bajaring:

$ semanage fcontext -a -t httpd_sys_content_t ‘/home/dan/html(/.*)?’
$ semanage fcontext -l | grep ‘/home/dan/html’
/home/dan/html(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
$ restorecon -Rv /home/dan/html

Semanage yordamida kontekst o'zgartirilgandan so'ng, restorecon buyrug'i fayllar va kataloglar uchun standart kontekstni yuklaydi. Bizning veb-serverimiz endi papkadagi fayllarni o'qiy oladi /home/dan/htmlchunki bu jild uchun xavfsizlik konteksti o'zgartirilgan httpd_sys_content_t.

3. Mahalliy siyosatlarni yaratish

Yuqoridagi usullar sizga foyda keltirmaydigan holatlar bo'lishi mumkin va siz audit.logda xatolarga (avc/rad etish) duch kelishingiz mumkin. Bu sodir bo'lganda, siz mahalliy siyosatni yaratishingiz kerak. Yuqorida aytib o'tilganidek, audit2why yordamida barcha xatolarni topishingiz mumkin.

Xatolarni hal qilish uchun mahalliy siyosat yaratishingiz mumkin. Misol uchun, biz httpd (apache) yoki smbd (samba) bilan bog'liq xatoga duch kelamiz, biz xatolarni topamiz va ular uchun siyosat yaratamiz:

apache
$ grep httpd_t /var/log/audit/audit.log | audit2allow -M http_policy
samba
$ grep smbd_t /var/log/audit/audit.log | audit2allow -M smb_policy

u http_policy и smb_policy Biz yaratgan mahalliy siyosatlarning nomlari. Endi biz ushbu yaratilgan mahalliy siyosatlarni joriy SELinux siyosatiga yuklashimiz kerak. Buni quyidagicha amalga oshirish mumkin:

$ semodule –I http_policy.pp
$ semodule –I smb_policy.pp

Mahalliy siyosatlarimiz yuklab olindi va audit.log saytida endi hech qanday avc yoki denail olmaymiz.

Bu mening SELinux-ni tushunishingizga yordam berishga urinishim edi. Umid qilamanki, ushbu maqolani o'qib chiqqandan so'ng siz SELinux bilan o'zingizni yanada qulay his qilasiz.

Manba: www.habr.com

a Izoh qo'shish