SE-də Sistem Administratoru üçün Fırıldaqçı VərəqLinux: Vacib suallara 42 cavab

Məqalənin tərcüməsi kursun tələbələri üçün xüsusi hazırlanmışdır "İdarəçi Linux».

SE-də Sistem Administratoru üçün Fırıldaqçı VərəqLinux: Vacib suallara 42 cavab

Burada həyat, kainat və içindəki hər şey haqqında vacib suallara cavab tapacaqsınız Linux təkmilləşdirilmiş təhlükəsizlik ilə.

"Hər şeyin həmişə göründüyü kimi olmadığı vacib həqiqət hamıya məlumdur..."

-Duqlas Adams, Otostopçunun Qalaktikaya bələdçisi

Təhlükəsizlik. Artan etibarlılıq. Yazışmalar. Siyasət. Dörd Apokalipsis Atlısı sistem rəhbəri. Gündəlik tapşırıqlarımızdan əlavə - monitorinq, ehtiyat nüsxə, tətbiq, konfiqurasiya, yeniləmə və s. - biz sistemlərimizin təhlükəsizliyinə də cavabdehik. Hətta üçüncü tərəf provayderinin gücləndirilmiş təhlükəsizliyi söndürməyi tövsiyə etdiyi sistemlər. İş kimi hiss olunur Ethan Hunt "Missiya: Mümkünsüz" filmindən.

Bu dilemma ilə qarşı-qarşıya qalan bəzi sistem administratorları qərar qəbul edirlər mavi həb, çünki onlar həyat, kainat və bütün bu kimi böyük sualın cavabını heç vaxt bilməyəcəklərini düşünürlər. Və hamımızın bildiyi kimi, bu cavab 42-dir.

Avtostopçuların Qalaktikaya dair bələdçisinin ruhuna uyğun olaraq burada nəzarət və istifadə ilə bağlı vacib suallara 42 cavab verilmişdir. SELinux sistemlərinizdə.

1. SELinux — məcburi giriş nəzarəti sistemidir, yəni hər bir prosesin bir etiketi var. Hər bir fayl, qovluq və sistem obyektinin də bir etiketi var. Siyasət qaydaları etiketlənmiş proseslər və obyektlər arasında girişi tənzimləyir. Bu qaydaları nüvə tətbiq edir.

2. Ən vacib iki anlayış bunlardır: Etiketləmə — işarələmələr (fayllar, proseslər, portlar və s.) və Tətbiq növü (tiplərə görə prosesləri bir-birindən təcrid edən).

3. Düzgün etiket formatı user:role:type:level (isteğe bağlı).

4. Çoxsəviyyəli təhlükəsizliyin təmin edilməsi məqsədi (Çox Səviyyəli Təhlükəsizlik - MLS) istifadə edəcəkləri məlumatların təhlükəsizlik səviyyəsinə əsasən prosesləri (domenləri) idarə etməkdir. Məsələn, gizli bir proses çox gizli məlumatları oxuya bilməz.

5. Çox kateqoriyalı təhlükəsizliyin təmin edilməsi (Çox Kateqoriyalı Təhlükəsizlik - MCS) oxşar prosesləri bir-birindən qoruyur (məsələn, virtual maşınlar, OpenShift mühərrikləri, SE sandboxları)Linux, qablar və s.).

6. SE rejimlərini dəyişdirmək üçün nüvə parametrləriLinux yüklənərkən:

  • autorelabel=1 → sistemin yenidən etiketləməni işə salmasına səbəb olur
  • selinux=0 → nüvə SE infrastrukturunu yükləmirLinux
  • enforcing=0 → icazə verən rejimdə yükləmə

7. Bütün sistemi yenidən etiketləmək lazımdırsa:

# touch /.autorelabel
#reboot

Sistem işarələməsində çoxlu sayda səhv varsa, qeydin uğur qazanması üçün icazə verən rejimdə yükləməli ola bilərsiniz.

8. SE-nin aktiv olub olmadığını yoxlamaq üçünLinux: # getenforce

9. SE-ni müvəqqəti olaraq aktivləşdirmək/deaktiv etmək üçünLinux: # setenforce [1|0]

10. SE Statusu YoxlanılırLinux: # sestatus

11. Konfiqurasiya faylı: /etc/selinux/config

12. SE necə işləyirLinuxApache veb serveri üçün işarələmə nümunəsi:

  • İkili təmsil: /usr/sbin/httpd→httpd_exec_t
  • Konfiqurasiya kataloqu: /etc/httpd→httpd_config_t
  • Giriş faylı qovluğu: /var/log/httpd → httpd_log_t
  • Məzmun kataloqu: /var/www/html → httpd_sys_content_t
  • Skripti işə salın: /usr/lib/systemd/system/httpd.service → httpd_unit_file_d
  • Proses: /usr/sbin/httpd -DFOREGROUND → httpd_t
  • Limanlar: 80/tcp, 443/tcp → httpd_t, http_port_t

Kontekstdə işləyən proses httpd_t, etiketli obyektlə qarşılıqlı əlaqə qura bilər httpd_something_t.

13. Bir çox əmrlər arqumenti qəbul edir -Z konteksti görmək, yaratmaq və dəyişdirmək üçün:

  • ls -Z
  • id -Z
  • ps -Z
  • netstat -Z
  • cp -Z
  • mkdir -Z

Kontekstlər, fayllar öz əsas kataloqunun kontekstinə əsasən yaradıldıqda (bəzi istisnalarla) qurulur. RPM-lər quraşdırma zamanı olduğu kimi kontekstlər yarada bilər.

14. SE səhvlərinin dörd əsas səbəbi varLinux, aşağıdakı 15-21-ci bəndlərdə daha ətraflı təsvir edilmişdir:

  • Etiketləmə problemləri
  • SE-yə görəLinux bilməlidir
  • SE siyasətində/tətbiqində xətaLinux
  • Məlumatlarınız oğurlana bilər

15. Etiketləmə problemi: fayllarınız varsa /srv/myweb səhv qeyd olunarsa, giriş qadağan edilə bilər. Bunu düzəltməyin bir neçə yolu var:

  • Əgər etiketi bilirsinizsə:
    # semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?'
  • Ekvivalent işarələri olan bir fayl bilirsinizsə:
    # semanage fcontext -a -e /srv/myweb /var/www
  • Kontekstin bərpası (hər iki hal üçün):
    # restorecon -vR /srv/myweb

16. Etiketləmə problemi: faylı köçürmək əvəzinə köçürsəniz, fayl orijinal kontekstini saxlayacaq. Bu problemi həll etmək üçün:

  • Kontekst əmrini etiketlə dəyişdirin:
    # chcon -t httpd_system_content_t /var/www/html/index.html
  • Bağlantı etiketi ilə kontekst əmrini dəyişdirin:
    # chcon --reference /var/www/html/ /var/www/html/index.html
  • Konteksti bərpa edin (hər iki halda): # restorecon -vR /var/www/html/

17. Əgər SELinux bilmək lazımdır, HTTPD-nin 8585 portunda dinlədiyini SE-yə bildirinLinux:

# semanage port -a -t http_port_t -p tcp 8585

18. SELinux bilmək lazımdır SE siyasətinin hissələrini dəyişdirməyə imkan verən Boolean dəyərləriLinux SE siyasətinin yenidən yazılması barədə məlumat olmadan iş vaxtındaLinuxMəsələn, httpd-nin e-poçt göndərməsini istəyirsinizsə, daxil edin: # setsebool -P httpd_can_sendmail 1

19. SELinux bilmək lazımdır SE parametrlərini aktivləşdirmək/söndürmək üçün məntiqi dəyərlərLinux:

  • Bütün boolean dəyərləri görmək üçün: # getsebool -a
  • Hər birinin təsvirinə baxmaq üçün: # semanage boolean -l
  • Boolean dəyəri təyin etmək üçün: # setsebool [_boolean_] [1|0]
  • Daimi quraşdırma üçün əlavə edin -P. Məsələn: # setsebool httpd_enable_ftp_server 1 -P

20. SE Siyasətləri/TətbiqləriLinux səhvlər ola bilər, o cümlədən:

  • Qeyri-adi kod yolları
  • Konfiqurasiyalar
  • stdout yönləndirilir
  • Fayl deskriptoru sızması
  • İcra edilə bilən yaddaş
  • Zəif qurulmuş kitabxanalar

Açıq biletlər (Bugzilla-ya hesabat təqdim etməyin; Bugzilla-nın SLA-sı yoxdur).

21. Məlumatlarınız oğurlana bilərƏgər məhdudlaşdırılmış domenləriniz varsa:

  • Kernel modullarını yükləyin
  • SE məcburi rejimini deaktiv edinLinux
  • -a yazın etc_t/shadow_t
  • iptables qaydalarını dəyişdirin

22. SE AlətləriLinux siyasət modullarının hazırlanması üçün:

# yum -y install setroubleshoot setroubleshoot-server

Yenidən başladın və ya yenidən başladın auditd quraşdırıldıqdan sonra.

23. İstifadə edin

journalctl

ilə əlaqəli bütün qeydlərin siyahısını göstərmək üçün setroubleshoot:

# journalctl -t setroubleshoot --since=14:20

24. İstifadə edin journalctl müəyyən bir SE etiketi ilə əlaqəli bütün qeydləri sadalamaq üçünLinux. Məsələn:

# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0

25. SE xətası baş verdikdəLinux jurnaldan istifadə edin setroubleshoot bir neçə mümkün həllər təklif edir.
Məsələn, dən 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. Qeydiyyat: SELinux məlumatları bir çox yerdə qeyd edir:

  • / var / log / messages
  • /var/log/audit/audit.log
  • /var/lib/setroubleshoot/setroubleshoot_database.xml

27. Qeydiyyat: SE səhvlərinin tapılmasıLinux audit jurnalında:

# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today

28. SE mesajlarını tapmaq üçünLinux Müəyyən bir xidmət üçün Vektor Keşinə (AVC) daxil olun:

# ausearch -m avc -c httpd

29. Kommunal audit2allow qadağan olunmuş əməliyyatların qeydlərindən məlumat toplayır və sonra SE icazə siyasəti qaydalarını yaradırLinux. Məsələn:

  • Girişin niyə rədd edildiyinin insan tərəfindən oxuna bilən təsvirini yaratmaq üçün: # audit2allow -w -a
  • İnkar edilmiş girişə icazə verən növün tətbiqi qaydasına baxmaq üçün: # audit2allow -a
  • Fərdi modul yaratmaq üçün: # audit2allow -a -M mypolicy
  • Seçim -M göstərilən adla bir növ tətbiq faylı (.te) yaradır və qaydanı siyasət paketinə (.pp) tərtib edir: mypolicy.pp mypolicy.te
  • Fərdi modul quraşdırmaq üçün: # semodule -i mypolicy.pp

30. İcazə verən rejimdə işləmək üçün ayrı bir prosesi (domeni) konfiqurasiya etmək üçün: # semanage permissive -a httpd_t

31. Artıq domenin icazəli olmasını istəmirsinizsə: # semanage permissive -d httpd_t

32. Bütün icazə verilən domenləri deaktiv etmək üçün: # semodule -d permissivedomains

33. MLS SE siyasətinin aktivləşdirilməsiLinux: # yum install selinux-policy-mls
в /etc/selinux/config:

SELINUX=icazə verən
SELINUXTYPE=mls

SE-dən əmin olunLinux icazə rejimində işləyir: # setenforce 0
Skriptdən istifadə edin fixfilesfaylların növbəti rebootda yenidən etiketlənməsini təmin etmək üçün:

# fixfiles -F onboot # reboot

34. Xüsusi MLS diapazonu olan istifadəçi yaradın: # useradd -Z staff_u john

Komandadan istifadə etməklə useradd, yeni istifadəçini mövcud SE istifadəçisi ilə əlaqələndirinLinux (bu halda, staff_u).

35. SE istifadəçiləri arasındakı yazışmaları görmək üçünLinux и Linux: # semanage login -l

36. İstifadəçi üçün xüsusi bir sıra təyin edin: # semanage login --modify --range s2:c100 john

37. İstifadəçinin ev kataloqu etiketini düzəltmək üçün (lazım olduqda): # chcon -R -l s2:c100 /home/john

38. Cari kateqoriyalara baxmaq üçün: # chcat -L

39. Kateqoriyaları dəyişdirmək və ya öz kateqoriyanızı yaratmağa başlamaq üçün faylı aşağıdakı kimi redaktə edin:

/etc/selinux/_<selinuxtype>_/setrans.conf

40. Müəyyən bir faylda, rolda və istifadəçi kontekstində əmr və ya skripti işə salmaq üçün:

# runcon -t initrc_t -r system_r -u user_u yourcommandhere

  • -t fayl konteksti
  • -r rol konteksti
  • -u istifadəçi konteksti

41. SE deaktiv edilmiş konteynerlərLinux:

  • Podman: # podman run --security-opt label=disable …
  • Docker: # docker run --security-opt label=disable …

42. Konteynerə sistemə tam giriş vermək lazımdırsa:

  • Podman: # podman run --privileged …
  • Docker: # docker run --privileged …

İndi cavabı artıq bilirsiniz. Xahiş edirəm: panikaya düşməyin və SE-ni yandırın.Linux.

Referanslar:

Mənbə: www.habr.com

DDoS mühafizəsi, VPS VDS serverləri olan saytlar üçün etibarlı hostinq alın 🔥 DDoS qorunması, VPS VDS serverləri ilə etibarlı veb sayt hostinqi alın | ProHoster