ProHoster > Блог > басқарма > Жүйе әкімшілеріне арналған SELinux хит парағы: маңызды сұрақтарға 42 жауап
Жүйе әкімшілеріне арналған SELinux хит парағы: маңызды сұрақтарға 42 жауап
Мақаланың аудармасы курс студенттері үшін арнайы дайындалған «Linux әкімшісі».
Мұнда сіз өмір, ғалам және Linux жүйесіндегі барлық нәрселер туралы маңызды сұрақтарға жақсартылған қауіпсіздікпен жауап аласыз.
«Заттар әрқашан көрінгендей бола бермейтіні туралы маңызды шындық - бұл жалпыға ортақ ...»
- Дуглас Адамс, Автохикиктің Галактикаға нұсқауы
Қауіпсіздік. Сенімділікті арттыру. Корреспонденция. Саясат. Апокалипсистің төрт серілері жүйесі. Күнделікті міндеттерімізден басқа - бақылау, сақтық көшірме жасау, енгізу, конфигурациялау, жаңарту және т.б. - біз жүйелеріміздің қауіпсіздігіне де жауаптымыз. Тіпті үшінші тарап провайдері күшейтілген қауіпсіздікті өшіруді ұсынатын жүйелер. Бұл жұмыс сияқты Этан Хант «Миссия: мүмкін емес» фильмінен.
Осы дилеммаға тап болған кейбір жүйелік әкімшілер шешім қабылдауға шешім қабылдайды көк таблетка, өйткені олар өмір, ғалам және осының бәрі деген үлкен сұрақтың жауабын ешқашан білмейді деп ойлайды. Және бәріміз білетіндей, бұл жауап 42.
Автостопшының Галактикаға арналған нұсқаулығының рухында басқару және пайдалану туралы маңызды сұрақтарға 42 жауап берілген. SELinux жүйелеріңізде.
1. SELinux - бұл мәжбүрлі қол жеткізуді басқару жүйесі, яғни әрбір процесте белгі бар. Әрбір файлдың, каталогтың және жүйелік объектінің де белгілері болады. Саясат ережелері тегтелген процестер мен нысандар арасындағы қатынасты басқарады. Ядро осы ережелерді орындайды.
2. Ең маңызды екі ұғым: Таңбалау — белгілер (файлдар, процестер, порттар және т.б.) және Типті орындау (түрлері бойынша процестерді бір-бірінен оқшаулайды).
3. Дұрыс белгі пішімі user:role:type:level (міндетті емес).
4. Көп деңгейлі қауіпсіздікті қамтамасыз ету мақсаты (Көп деңгейлі қауіпсіздік - MLS) олар пайдаланатын деректердің қауіпсіздік деңгейіне негізделген процестерді (домендерді) басқару болып табылады. Мысалы, құпия процесс өте құпия деректерді оқи алмайды.
5. Көп санатты қауіпсіздікті қамтамасыз ету (Көп санатты қауіпсіздік - MCS) ұқсас процестерді бір-бірінен қорғайды (мысалы, виртуалды машиналар, OpenShift қозғалтқыштары, SELinux құм жәшіктері, контейнерлер және т.б.).
6. Жүктеу кезінде SELinux режимдерін өзгертуге арналған ядро опциялары:
autorelabel=1 → жүйені қайта таңбалауды іске қосады
Скриптті іске қосу: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
Процесс: /usr/sbin/httpd -DFOREGROUND → httpd_t
Порттар: 80/tcp, 443/tcp → httpd_t, http_port_t
Контексте орындалатын процесс httpd_t, белгіленген нысанмен әрекеттесе алады httpd_something_t.
13. Көптеген пәрмендер аргументті қабылдайды -Z контекстті көру, жасау және өзгерту үшін:
ls -Z
id -Z
ps -Z
netstat -Z
cp -Z
mkdir -Z
Мәтінмәндер файлдар өздерінің негізгі каталогының мәтінмәніне негізделген (кейбір ерекшеліктерді қоспағанда) жасалған кезде орнатылады. RPM контексттерді орнату кезіндегідей орната алады.
14. SELinux қателерінің төрт негізгі себебі бар, олар төменде 15-21 тармақтарда толығырақ сипатталған:
Белгілеу мәселелері
SELinux білуі керек нәрсеге байланысты
SELinux саясатындағы/қолданбасындағы қате
Сіздің ақпаратыңыз бұзылған болуы мүмкін
15.Белгілеу мәселесі: файлдарыңыз болса /srv/myweb қате белгіленсе, кіруге тыйым салынуы мүмкін. Мұны түзетудің бірнеше жолы бар:
Егер сіз белгіні білсеңіз: # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
Баламалы таңбалары бар файлды білсеңіз: # semanage fcontext -a -e /srv/myweb /var/www
Мәтінмәнді қалпына келтіру (екі жағдайда да): # restorecon -vR /srv/myweb
16.Белгілеу мәселесі: егер файлды көшірудің орнына жылжытсаңыз, файл өзінің бастапқы контекстін сақтайды. Бұл мәселені шешу үшін:
18.SELinux сіз білуіңіз керек SELinux саясатының қайта жазылуын білмей SELinux саясатының бөліктерін орындау уақытында өзгертуге мүмкіндік беретін логикалық мәндер. Мысалы, httpd электрондық поштасын жібергіңіз келсе, мынаны енгізіңіз: # setsebool -P httpd_can_sendmail 1
19.SELinux сіз білуіңіз керек SELinux параметрлерін қосу/өшіру үшін логикалық мәндер:
Барлық логикалық мәндерді көру үшін: # getsebool -a
Әрқайсысының сипаттамасын көру үшін: # semanage boolean -l
Логикалық мәнді орнату үшін: # setsebool [_boolean_] [1|0]
Тұрақты орнату үшін қосыңыз -P. Мысалы: # setsebool httpd_enable_ftp_server 1 -P
20. SELinux саясаттарында/қолданбаларында қателер болуы мүмкін, соның ішінде:
Әдеттен тыс код жолдары
Конфигурациялар
Stdout қайта бағытталуда
Файл дескрипторы ағып кетеді
Орындалатын жады
Нашар салынған кітапханалар
Ашық билеттер (Bugzilla-ға есеп бермеңіз; Bugzilla-да SLA жоқ).
21.Сіздің ақпаратыңыз бұзылған болуы мүмкінегер сізде шектелген домендер болса:
Ядро модульдерін жүктеңіз
Міндетті SELinux режимін өшіріңіз
-ге жазыңыз etc_t/shadow_t
iptables ережелерін өзгертіңіз
22. Саясат модульдерін әзірлеуге арналған SELinux құралдары:
25. SELinux қатесі орын алса, журналды пайдаланыңыз setroubleshoot бірнеше ықтимал шешімдерді ұсынады.
Мысалы, бастап 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. Журнал жүргізу: SELinux ақпаратты көптеген жерлерде жазады:
30. Рұқсат беру режимінде жұмыс істеу үшін бөлек процесті (доменді) конфигурациялау үшін: # semanage permissive -a httpd_t
31. Доменнің рұқсат етілген болуын қаламасаңыз: # semanage permissive -d httpd_t
32. Барлық рұқсат етілген домендерді өшіру үшін: # semodule -d permissivedomains
33. MLS SELinux саясатын қосу: # yum install selinux-policy-mls
в /etc/selinux/config:
SELINUX=permissive
SELINUXTYPE=mls
SELinux рұқсат беру режимінде жұмыс істеп тұрғанын тексеріңіз: # setenforce 0
Сценарийді пайдаланыңыз fixfilesкелесі қайта жүктеуде файлдардың қайта таңбалануын қамтамасыз ету үшін:
# fixfiles -F onboot # reboot
34. Арнайы MLS ауқымы бар пайдаланушыны жасаңыз: # useradd -Z staff_u john
Пәрменді пайдалану useradd, жаңа пайдаланушыны бар SELinux пайдаланушысымен салыстырыңыз (бұл жағдайда, staff_u).
35. SELinux және Linux пайдаланушылары арасындағы салыстыруды көру үшін: # semanage login -l
36. Пайдаланушы үшін арнайы ауқымды анықтаңыз: # semanage login --modify --range s2:c100 john
37. Пайдаланушының негізгі каталог белгісін түзету үшін (қажет болса): # chcon -R -l s2:c100 /home/john
38. Ағымдағы санаттарды көру үшін: # chcat -L
39. Санаттарды өзгерту немесе өзіңізді жасауды бастау үшін файлды келесідей өңдеңіз:
/etc/selinux/_<selinuxtype>_/setrans.conf
40. Нақты файлда, рөлде және пайдаланушы контекстінде пәрменді немесе сценарийді іске қосу үшін: