Bu yerda siz hayot, koinot va Linuxdagi barcha narsalar haqidagi muhim savollarga yaxshilangan xavfsizlik bilan javob olasiz.
"Narsalar har doim ham ko'rinadigandek emasligi haqidagi muhim haqiqat hammaga ma'lum ..."
- Duglas Adams, Avtostopchining Galaktika bo'yicha qo'llanmasi
Xavfsizlik. Ishonchlilikning oshishi. Xat yozish. Siyosat. Apokalipsisning to'rt otliqlari tizimi boshqaruvchisi. Kundalik vazifalarimizdan tashqari - monitoring, zaxiralash, amalga oshirish, sozlash, yangilash va boshqalar - biz tizimlarimiz xavfsizligi uchun ham javobgarmiz. Hatto uchinchi tomon provayderi kengaytirilgan xavfsizlikni o'chirishni tavsiya qiladigan tizimlar ham. Bu ish kabi Ethan Hunt "Missiya: imkonsiz" filmidan.
Ushbu dilemmaga duch kelgan ba'zi tizim ma'murlari buni qilishga qaror qilishadi ko'k tabletka, chunki ular hayot, koinot va shunga o'xshash katta savolga javobni hech qachon bilmaydi deb o'ylashadi. Va hammamiz bilganimizdek, bu javob 42.
Avtostopchining Galaktika boʻyicha qoʻllanmasi ruhida bu yerda nazorat va foydalanish boʻyicha muhim savollarga 42 ta javob berilgan. SELinux tizimlaringizda.
1. SELinux - bu majburiy kirishni boshqarish tizimi, ya'ni har bir jarayonning yorlig'i bor. Har bir fayl, katalog va tizim obyekti ham teglarga ega. Siyosat qoidalari teglangan jarayonlar va ob'ektlar o'rtasidagi kirishni nazorat qiladi. Yadro bu qoidalarga amal qiladi.
2. Ikkita eng muhim tushunchalar: Etiketleme — belgilar (fayllar, jarayonlar, portlar va boshqalar) va Amal qilish turi (turlarga qarab jarayonlarni bir-biridan ajratib turadi).
3. To'g'ri yorliq formati user:role:type:level (ixtiyoriy).
4. Ko'p darajali xavfsizlikni ta'minlashdan maqsad (Ko'p darajali xavfsizlik - MLS) jarayonlarni (domenlarni) ular foydalanadigan ma'lumotlarning xavfsizlik darajasiga qarab boshqarishdir. Masalan, maxfiy jarayon juda maxfiy ma'lumotlarni o'qiy olmaydi.
5. Ko'p toifali xavfsizlikni ta'minlash (Ko'p toifali xavfsizlik - MCS) o'xshash jarayonlarni bir-biridan himoya qiladi (masalan, virtual mashinalar, OpenShift dvigatellari, SELinux qum qutilari, konteynerlar va boshqalar).
6. Yuklashda SELinux rejimlarini o'zgartirish uchun yadro variantlari:
autorelabel=1 → tizimni qayta etiketlashni ishga tushirishga olib keladi
selinux=0 → yadro SELinux infratuzilmasini yuklamaydi
enforcing=0 → ruxsat beruvchi rejimda yuklash
7. Agar butun tizimni qayta belgilash kerak bo'lsa:
# touch /.autorelabel
#reboot
Tizim belgilashda koʻp sonli xatolar boʻlsa, qayd etish muvaffaqiyatli boʻlishi uchun ruxsat beruvchi rejimda yuklashingiz kerak boʻlishi mumkin.
Skriptni ishga tushirish: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
Jarayon: /usr/sbin/httpd -DFOREGROUND → httpd_t
Portlar: 80/tcp, 443/tcp → httpd_t, http_port_t
Kontekstda ishlayotgan jarayon httpd_t, belgilangan ob'ekt bilan o'zaro aloqada bo'lishi mumkin httpd_something_t.
13. Ko'pgina buyruqlar argumentni qabul qiladi -Z kontekstni ko'rish, yaratish va o'zgartirish uchun:
ls -Z
id -Z
ps -Z
netstat -Z
cp -Z
mkdir -Z
Kontekstlar fayllar asosiy katalog konteksti asosida yaratilganda (ba'zi istisnolardan tashqari) o'rnatiladi. RPMlar o'rnatish paytida bo'lgani kabi kontekstlarni o'rnatishi mumkin.
14. SELinux xatolarining to'rtta asosiy sababi bor, ular quyida 15-21 bandlarda batafsil tavsiflangan:
Belgilash muammolari
SELinux bilishi kerak bo'lgan narsa tufayli
SELinux siyosati/ilovasida xato
Sizning ma'lumotlaringiz buzilgan bo'lishi mumkin
15.Belgilash muammosi: agar sizning fayllaringiz bo'lsa /srv/myweb noto'g'ri belgilangan bo'lsa, kirish rad etilishi mumkin. Buni tuzatishning ba'zi usullari:
Agar siz yorliqni bilsangiz: # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
Agar siz ekvivalent belgilarga ega faylni bilsangiz: # semanage fcontext -a -e /srv/myweb /var/www
Kontekstni tiklash (har ikkala holatda ham): # restorecon -vR /srv/myweb
16.Belgilash muammosi: agar siz uni nusxalash o'rniga faylni ko'chirsangiz, fayl asl kontekstini saqlab qoladi. Ushbu muammoni hal qilish uchun:
Yorliq bilan kontekst buyrug'ini o'zgartiring: # chcon -t httpd_system_content_t /var/www/html/index.html
Kontekst buyrug'ini havola yorlig'i bilan o'zgartiring: # chcon --reference /var/www/html/ /var/www/html/index.html
Kontekstni tiklang (har ikki holatda ham): # restorecon -vR /var/www/html/
17. agar Siz bilishingiz kerak SELinuxHTTPD 8585 portda tinglayotganini SELinuxga ayting:
# semanage port -a -t http_port_t -p tcp 8585
18.Siz bilishingiz kerak SELinux SELinux siyosatining qismlarini ish vaqtida SELinux siyosati ustidan yozilmagan holda o'zgartirishga imkon beruvchi mantiqiy qiymatlar. Misol uchun, agar siz httpd elektron pochta xabarlarini yuborishni istasangiz, quyidagilarni kiriting: # setsebool -P httpd_can_sendmail 1
19.Siz bilishingiz kerak SELinux SELinux sozlamalarini yoqish/o'chirish uchun mantiqiy qiymatlar:
Barcha mantiqiy qiymatlarni ko'rish uchun: # getsebool -a
Har birining tavsifini ko'rish uchun: # semanage boolean -l
25. Agar SELinux xatosi yuzaga kelsa, jurnaldan foydalaning setroubleshoot bir nechta mumkin bo'lgan echimlarni taklif qiladi.
Masalan, dan journalctl:
Jun 14 19:41:07 web1 setroubleshoot: SELinux is preventing httpd from getattr access on the file /var/www/html/index.html. For complete message run: sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
# sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
SELinux is preventing httpd from getattr access on the file /var/www/html/index.html.
***** Plugin restorecon (99.5 confidence) suggests ************************
If you want to fix the label,
/var/www/html/index.html default label should be httpd_syscontent_t.
Then you can restorecon.
Do
# /sbin/restorecon -v /var/www/html/index.html
26. Jurnal: SELinux ko'p joylarda ma'lumotlarni yozib oladi:
27. Jurnal: audit jurnalida SELinux xatolarini qidirish:
# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
28. Muayyan xizmat uchun SELinux Access vektor keshi (AVC) xabarlarini topish uchun:
# ausearch -m avc -c httpd
29. Qulaylik audit2allow taqiqlangan operatsiyalar jurnallaridan ma'lumotlarni to'playdi va keyin SELinux ruxsat siyosati qoidalarini yaratadi. Masalan:
Nima uchun kirish taqiqlanganligi haqida odam o'qiy oladigan tavsifni yaratish uchun: # audit2allow -w -a
Ruxsat etilgan ruxsatga ruxsat beruvchi turdagi ijro qoidasini ko‘rish uchun: # audit2allow -a
Maxsus modul yaratish uchun: # audit2allow -a -M mypolicy
Variant -M belgilangan nomga ega boʻlgan turdagi ijro faylini (.te) yaratadi va qoidani siyosat paketiga (.pp) kompilyatsiya qiladi: mypolicy.pp mypolicy.te
Maxsus modulni o'rnatish uchun: # semodule -i mypolicy.pp
30. Ruxsat beruvchi rejimda ishlash uchun alohida jarayonni (domenni) sozlash uchun: # semanage permissive -a httpd_t
31. Agar siz endi domenga ruxsat berishni xohlamasangiz: # semanage permissive -d httpd_t
32. Barcha ruxsat etilgan domenlarni o'chirish uchun: # semodule -d permissivedomains
33. MLS SELinux siyosatini yoqish: # yum install selinux-policy-mls
в /etc/selinux/config:
SELINUX=permissive
SELINUXTYPE=mls
SELinux ruxsat beruvchi rejimda ishlayotganiga ishonch hosil qiling: # setenforce 0
Skriptdan foydalaning fixfilesKeyingi qayta yuklashda fayllar qayta etiketlanganligiga ishonch hosil qilish uchun:
# fixfiles -F onboot # reboot
34. Muayyan MLS diapazoniga ega foydalanuvchi yarating: # useradd -Z staff_u john
Buyruqdan foydalanish useradd, yangi foydalanuvchini mavjud SELinux foydalanuvchisi bilan taqqoslang (bu holda, staff_u).
35. SELinux va Linux foydalanuvchilari o'rtasidagi xaritani ko'rish uchun: # semanage login -l
36. Foydalanuvchi uchun ma'lum diapazonni belgilang: # semanage login --modify --range s2:c100 john
37. Foydalanuvchining uy katalogi yorlig'ini tuzatish uchun (agar kerak bo'lsa): # chcon -R -l s2:c100 /home/john
38. Joriy toifalarni ko'rish uchun: # chcat -L
39. Kategoriyalarni o'zgartirish yoki o'zingizni yaratishni boshlash uchun faylni quyidagi tarzda tahrirlang:
/etc/selinux/_<selinuxtype>_/setrans.conf
40. Muayyan fayl, rol va foydalanuvchi kontekstida buyruq yoki skriptni ishga tushirish uchun: