Špikerlapa sistēmas administratoram SE vidēLinux42 atbildes uz svarīgiem jautājumiem

Raksta tulkojums tika sagatavots speciāli kursa studentiem "Administrators Linux».

Špikerlapa sistēmas administratoram SE vidēLinux42 atbildes uz svarīgiem jautājumiem

Здесь вы получите ответы на важные вопросы о жизни, вселенной и всем таком в 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 Ītans Hants no "Mission: Impossible".

Saskaroties ar šo dilemmu, daži sistēmu administratori nolemj to darīt zilā tablete, 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. SELinux 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ķēšanu
  • selinux=0 → ядро не загружает инфраструктуру SELinux
  • enforcing=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 -Z
  • id -Z
  • ps -Z
  • netstat -Z
  • cp -Z
  • mkdir -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.html

26. Логирование: 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 -M izveido 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

  • -t faila konteksts
  • -r lomu konteksts
  • -u lietotā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:

Avots: www.habr.com

Iegādājieties uzticamu mitināšanu vietnēm ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa vietņu mitināšanu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster