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

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 "Missiya: Mümkünsüz" filmindən.
Bu dilemma ilə qarşı-qarşıya qalan bəzi sistem administratorları qərar qəbul edirlər , çü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. 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 olurselinux=0→ nüvə SE infrastrukturunu yükləmirLinuxenforcing=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 -Zid -Zps -Znetstat -Zcp -Zmkdir -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.html26. 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
-Mgö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
-tfayl konteksti-rrol konteksti-uistifadəç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:
- by
- Dan Walsh tərəfindən
- by
- by
Mənbə: www.habr.com
