Raksta tulkojums tika sagatavots speciāli kursa studentiem .

Здесь вы получите ответы на важные вопросы о жизни, вселенной и всем таком в Linux ar uzlabotu drošību.
"Svarīgā patiesība, ka lietas ne vienmēr ir tādas, kā šķiet, ir vispārzināma..."
-Duglass Ādams, Stopētāja ceļvedis uz galaktiku
Drošība. Paaugstināta uzticamība. Sarakste. Politika. Četri Apokalipses jātnieki sysadmin. Papildus mūsu ikdienas uzdevumiem - uzraudzībai, dublēšanai, ieviešanai, konfigurēšanai, atjaunināšanai utt. - mēs esam atbildīgi arī par savu sistēmu drošību. Pat tās sistēmas, kurās trešās puses pakalpojumu sniedzējs iesaka atspējot uzlabotu drošību. Tas jūtas kā darbs no "Mission: Impossible".
Saskaroties ar šo dilemmu, daži sistēmu administratori nolemj to darīt , jo viņi domā, ka nekad neuzzinās atbildi uz lielo jautājumu par dzīvi, Visumu un visu to. Un, kā mēs visi zinām, šī atbilde ir 42.
Saskaņā ar The Hitchhiker's Guide to the Galaxy garu, šeit ir 42 atbildes uz svarīgiem jautājumiem par vadību un lietošanu. jūsu sistēmās.
1. SELinux — это система принудительного управления доступом, что означает, что каждый процесс имеет метку (lable). Каждый файл, каталог и системный объект так же имеют метки. Правила политики управляют доступом между промаркированными процессами и объектами. Ядро обеспечивает соблюдение этих правил.
2. Divi vissvarīgākie jēdzieni ir: Marķēšana — marķējumi (datnes, procesi, porti utt.) un Veida izpilde (kas izolē procesus vienu no otra, pamatojoties uz veidiem).
3. Pareizs etiķetes formāts user:role:type:level (neobligāti).
4. Mērķis nodrošināt daudzlīmeņu drošību (Daudzlīmeņu drošība — MLS) ir pārvaldīt procesus (domēnus), pamatojoties uz to datu drošības līmeni, kurus tie izmantos. Piemēram, slepens process nevar nolasīt īpaši slepenus datus.
5. Vairāku kategoriju drošības nodrošināšana (Vairāku kategoriju drošība — MCS) защищает похожие процессы друг от друга (например, виртуальные машины, механизмы OpenShift, песочницы SELinux, контейнеры и т. д.).
6. Параметры ядра для изменения режимов SELinux при загрузке:
autorelabel=1→ liek sistēmai palaist pārmarķēšanuselinux=0→ ядро не загружает инфраструктуру SELinuxenforcing=0→ ielāde pieļaujamā režīmā
7. Ja jums ir jāpārmarķē visa sistēma:
# touch /.autorelabel
#reboot
Ja sistēmas marķējumā ir daudz kļūdu, iespējams, jums būs jāstartē atļauja, lai atzīmēšana būtu veiksmīga.
8. Чтобы проверить, включен ли SELinux: # getenforce
9. Чтобы временно включить/отключить SELinux: # setenforce [1|0]
10. Проверка статуса SELinux: # sestatus
11. Konfigurācijas fails: /etc/selinux/config
12. Как работает SELinux? Вот пример маркировки для веб-сервера Apache:
- Binārais attēlojums:
/usr/sbin/httpd→httpd_exec_t - Konfigurācijas direktorijs:
/etc/httpd→httpd_config_t - Žurnāla failu direktorijs:
/var/log/httpd → httpd_log_t - Satura direktorijs:
/var/www/html → httpd_sys_content_t - Palaist skriptu:
/usr/lib/systemd/system/httpd.service → httpd_unit_file_d - Process:
/usr/sbin/httpd -DFOREGROUND → httpd_t - Porti:
80/tcp, 443/tcp → httpd_t, http_port_t
Process darbojas kontekstā httpd_t, var mijiedarboties ar iezīmētu objektu httpd_something_t.
13. Daudzas komandas pieņem argumentu -Z lai skatītu, izveidotu un mainītu kontekstu:
ls -Zid -Zps -Znetstat -Zcp -Zmkdir -Z
Konteksti tiek noteikti, kad faili tiek izveidoti, pamatojoties uz to vecākdirektorija kontekstu (ar dažiem izņēmumiem). RPM var izveidot kontekstu tāpat kā instalēšanas laikā.
14. Существует четыре основных причины ошибок SELinux, которые более подробно описаны в пунктах 15-21 ниже:
- Marķēšanas problēmas
- Из-за чего-то, что SELinux vajadzētu zināt
- Ошибка в политике/приложении SELinux
- Jūsu informācija var tikt apdraudēta
15. Marķēšanas problēma: ja jūsu faili ir /srv/myweb ir atzīmēti nepareizi, piekļuve var tikt liegta. Tālāk ir norādīti daži veidi, kā to novērst.
- Ja zināt etiķeti:
# semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?' - Ja zināt failu ar līdzvērtīgu marķējumu:
# semanage fcontext -a -e /srv/myweb /var/www - Konteksta atjaunošana (abos gadījumos):
# restorecon -vR /srv/myweb
16. Marķēšanas problēma: ja failu pārvietojat, nevis kopējat, fails saglabās sākotnējo kontekstu. Lai novērstu šo problēmu:
- Mainiet konteksta komandu ar etiķeti:
# chcon -t httpd_system_content_t /var/www/html/index.html - Mainiet konteksta komandu ar saites etiķeti:
# chcon --reference /var/www/html/ /var/www/html/index.html - Atjaunojiet kontekstu (abos gadījumos):
# restorecon -vR /var/www/html/
17. Ja SELinux нужно знать, что HTTPD прослушивает порт 8585, сообщите SELinux:
# semanage port -a -t http_port_t -p tcp 8585
18. SELinux нужно знать логические значения позволяющие изменять части политики SELinux во время выполнения без знаний о перезаписи политики SELinux. Например, если вы хотите, чтобы httpd отправлял электронную почту, введите: # setsebool -P httpd_can_sendmail 1
19. SELinux нужно знать логические значения включения/выключения настроек SELinux:
- Lai skatītu visas Būla vērtības:
# getsebool -a - Lai skatītu katra aprakstu:
# semanage boolean -l - Lai iestatītu Būla vērtību:
# setsebool [_boolean_] [1|0] - Pastāvīgai instalēšanai pievienojiet
-P. Piemēram:# setsebool httpd_enable_ftp_server 1 -P
20. Политики/приложения SELinux могут содержать ошибки, в том числе:
- Neparasti koda ceļi
- Konfigurācijas
- Novirzot stdout
- Faila deskriptora noplūde
- Izpildāmā atmiņa
- Slikti uzbūvētas bibliotēkas
Atvērtās biļetes (neiesniedziet Bugzillai ziņojumu; Bugzillai nav SLA).
21. Jūsu informācija var tikt apdraudētaja jums ir ierobežoti domēni, mēģinot:
- Ielādējiet kodola moduļus
- Отключить enforced режим SELinux
- Rakstīt
etc_t/shadow_t - Mainīt iptables noteikumus
22. Инструменты SELinux для разработки модулей политики:
# yum -y install setroubleshoot setroubleshoot-server
Restartējiet vai restartējiet auditd pēc uzstādīšanas.
23. Izmantojiet
journalctl lai parādītu visu ar saistīto žurnālu sarakstu setroubleshoot:
# journalctl -t setroubleshoot --since=14:20
24. Izmantojiet journalctl для вывода списка всех логов, связанных с определенной меткой SELinux. Piemēram:
# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0
25. При возникновении ошибки SELinux используйте лог setroubleshoot piedāvājot vairākus iespējamos risinājumus.
Piemēram, no 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.html26. Логирование: SELinux записывает информацию во многих местах:
- / var / log / messages
- /var/log/audit/audit.log
- /var/lib/setroubleshoot/setroubleshoot_database.xml
27. Логирование: поиск ошибок SELinux в логе аудита:
# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
28. Для того чтобы найти сообщения SELinux Access Vector Cache (AVC) для определенной службы:
# ausearch -m avc -c httpd
29. Lietderība audit2allow собирает информацию из логов запрещенных операций, а затем генерирует правила политики разрешений SELinux. Piemēram:
- Lai izveidotu cilvēkiem lasāmu aprakstu, kāpēc piekļuve ir liegta, veiciet tālāk norādītās darbības.
# audit2allow -w -a - Lai skatītu tipa izpildes noteikumu, kas atļauj liegtu piekļuvi:
# audit2allow -a - Lai izveidotu pielāgotu moduli:
# audit2allow -a -M mypolicy - Opcija
-Mizveido tipa izpildes failu (.te) ar norādīto nosaukumu un apkopo kārtulu politikas pakotnē (.pp):mypolicy.pp mypolicy.te - Lai instalētu pielāgotu moduli:
# semodule -i mypolicy.pp
30. Lai konfigurētu atsevišķu procesu (domēnu) darbam atļaujā: # semanage permissive -a httpd_t
31. Ja vairs nevēlaties, lai domēns būtu atļaujošs: # semanage permissive -d httpd_t
32. Lai atspējotu visus pieļaujamos domēnus: # semodule -d permissivedomains
33. Включение MLS политики SELinux: # yum install selinux-policy-mls
в /etc/selinux/config:
SELINUX=atļaujošs
SELINUXTYPE=mls
Убедитесь, что SELinux работает в permissive режиме: # setenforce 0
Izmantojiet skriptu fixfileslai nodrošinātu, ka faili tiek atkārtoti apzīmēti nākamajā atsāknēšanas reizē:
# fixfiles -F onboot # reboot
34. Izveidojiet lietotāju ar noteiktu MLS diapazonu: # useradd -Z staff_u john
Izmantojot komandu useradd, сопоставьте нового пользователя с существующим пользователем SELinux (šajā gadījumā, staff_u).
35. Чтобы просмотреть соответствие между пользователями SELinux и Linux: # semanage login -l
36. Definējiet lietotājam noteiktu diapazonu: # semanage login --modify --range s2:c100 john
37. Lai labotu lietotāja mājas direktorija iezīmi (ja nepieciešams): # chcon -R -l s2:c100 /home/john
38. Lai skatītu pašreizējās kategorijas: # chcat -L
39. Lai mainītu kategorijas vai sāktu izveidot savu, rediģējiet failu šādi:
/etc/selinux/_<selinuxtype>_/setrans.conf
40. Lai palaistu komandu vai skriptu noteiktā failā, lomā un lietotāja kontekstā:
# runcon -t initrc_t -r system_r -u user_u yourcommandhere
-tfaila konteksts-rlomu konteksts-ulietotāja konteksts
41. Контейнеры, работающие с отключенным SELinux:
- Podmans:
# podman run --security-opt label=disable … - Docker:
# docker run --security-opt label=disable …
42. Ja jums ir jāpiešķir konteineram pilna piekļuve sistēmai:
- Podmans:
# podman run --privileged … - Docker:
# docker run --privileged …
И теперь вы уже знаете ответ. Поэтому, пожалуйста: не паникуйте и включите SELinux.
Saites:
- by
- autors Dens Volšs
- by
- by
Avots: www.habr.com
