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

Burada siz Linux ilə daha yaxşı təhlükəsizlik təmin edən yaşam, kainat və hər şey barədə mühüm suallara cavablar alacaqsınız.
«Məsələnin əhəmiyyəti budur ki, şeylər həmişə göründüyü kimi olmur, bu isə geniş yayılmış bir həqiqətdir...»
―Duglas Adams, Kainatda Avtoş
Təhlükəsizlik. Etibarlılığı artırmaq. Uyğunluq. Siyasət. Sistem admininin Dörd Apokalipsi Atlısı. Gündəlik vəzifələrimiz — monitorinq, ehtiyat nüsxə, tətbiq etmə, konfiqurasiya, yeniləmə və s. ilə yanaşı — biz həm də sistemlərimizin təhlükəsizliyinə cavabdehik. Hətta xarici təminatçı bizə möhkəmləndirilmiş təhlükəsizliyi söndürməyi tövsiyə etdiyi sistemlərdə belə. Bu, “Mümkün olmayan Missiya” filmindən.
Bu dilemmanı yaşayarkən, bəziləri sistem administratorları götürməyə qərar verirlər, çünki düşünürlər ki, həyatın, kainatın və hər şeyin böyük sualının cavabını heç vaxt öyrənməyəcəklər. Və, hamının bildiyi kimi, bu cavab 42-dir.
«Avtoşla Kainatda» ruhunda, burada idarə etmə və istifadə ilə bağlı mühüm suallara 42 cavabı təqdim edirik sistemlərinizdə.
1. SELinux — məcburi giriş idarəetmə sistemidir, bu, hər bir prosesin bir etiketi (label) olması deməkdir. Hər bir fayl, kataloq və sistem obyekti de eynilə etiketlərə malikdir. Siyasət qaydaları etiketlənmiş proseslər və obyektlər arasında giriş imtiyazlarını idarə edir. Nüvə bu qaydaların yerinə yetirilməsini təmin edir.
2. İki əsas anlayış bunlardır: Etiketləmə — etiketləmə (fayllar, proseslər, portlar və s.) və Növün icrası (bu, prosesi tiplərinin əsasına görə bir-birindən ayırır).
3. Doğru etiket formatı istifadəçi:rol:növ:səviyyə (istəyə bağlı).
4. Çoxsəviyyəli təhlükəsizliyin məqsədi (Çoxsəviyyəli Təhlükəsizlik — MLS) istifadə olunan məlumatların təhlükəsizlik səviyyəsinə əsaslanaraq proseslərin (domenlərin) idarə edilməsidir. Məsələn, gizli proses supergizli verilənləri oxuya bilməz.
5. Çoxkateqoriyalı təhlükəsizliyin təmin edilməsi (Çoxkateqoriyalı Təhlükəsizlik — MCS) bənzər prosesləri bir-birindən qoruyur (məsələn, virtual maşınlar, OpenShift mexanizmləri, SELinux qum sahələri, konteynerlər və s.).
6. SELinux rejimlərini yükləmə zamanı dəyişmək üçün nüvənin parametrləri:
autorelabel=1→ sistemi yenidən etiketləməyə məcbur edirselinux=0→ nüvə SELinux infrastrukturunu yükləmirenforcing=0→ icazə verici rejimdə yükləmə
7. Bütün sistemi yenidən etiketləməyə ehtiyacınız varsa:
# touch /.autorelabel
#reboot
Əgər sistemin etiketlənməsi çox sayda səhv ehtiva edirsə, yenidən etiketləmənin uğurla başa çatması üçün icazə verici rejimdə yüklənməyə ehtiyacınız ola bilər.
8. SELinux-un aktiv olub olmadığını yoxlamaq üçün: # getenforce
9. SELinux-u müvəqqəti aktivləşdirməkdə və ya söndürməkdə: # setenforce [1|0]
10. SELinux-un statusunu yoxlamaq: # sestatus
11. Konfiqurasiya faylı: /etc/selinux/config
12. SELinux necə çalışır? Apache veb serveri üçün bir nümunə etiketləmə:
- İkilik nümayəndəliyi:
/usr/sbin/httpd→httpd_exec_t - Konfiqurasiya kataloqu:
/etc/httpd→httpd_config_t - Log faylları kataloqu:
/var/log/httpd → httpd_log_t - Məzmun kataloqu:
/var/www/html → httpd_sys_content_t - Başlatma skripti:
/usr/lib/systemd/system/httpd.service → httpd_unit_file_d - Proses:
/usr/sbin/httpd -DFOREGROUND → httpd_t - Portlar:
80/tcp, 443/tcp → httpd_t, http_port_t
Kontekstdə işləyən proses httpd_t, aşağıdakı etiketə sahib obyekti ilə qarşılıqlı əlaqə qura bilər httpd_something_t.
13. Bir çox əmrlər -Z konteksləri görmək, yaratmaq və dəyişdirmək üçün istifadə olunur:
ls -Zid -Zps -Znetstat -Zcp -Zmkdir -Z
Kontekstlər, fayllar yaradıldıqda onların valideyn kataloqunun kontekstinə əsasən təyin olunur (bəzi istisnalar istisna olmaqla). RPM-lər kontekstləri quraşdırarkən təyin edə bilər.
14. SELinux ilə bağlı dörd əsas səhv səbəbi var, daha ətraflı 15-21 maddələrdə izah edilir:
- Etiketləmə problemləri
- SELinux-un bilməli olduğu bir səbəb
- SELinux siyasəti/tətbiqindəki səhv
- Məlumatlarınız təhlükə altına düşə bilər
15. Etiketləmə problemi: əgər fayllarınız düzgün etiketlənməyibsə, giriş qadağan oluna bilər. Bunu düzəltmək üçün bir neçə yol var: /srv/myweb Əgər etiketi bilirsinizsə:
- Əgər ekvivalent etiketli bir faylı bilirsinizsə:
# semanage fcontext -a -t httpd_sys_content_t '/srv/myweb(/.*)?' - Hər iki hal üçün konteksti bərpa edin:
# semanage fcontext -a -e /srv/myweb /var/www - Etiketləmə problemi:
# restorecon -vR /srv/myweb
16. əgər faylı köçürmək əvəzinə, onu köçürsəniz, fayl orijinal kontekstini saxlayacaq. Bu problemi düzəltmək üçün: Etiketlə kontekst əmri dəyişin:
- Bağlantı ilə kontekst əmri dəyişin:
# chcon -t httpd_system_content_t /var/www/html/index.html - Hər iki hal üçün konteksti bərpa edin:
# chcon --reference /var/www/html/ /var/www/html/index.html - SELinux bilməlidir
# restorecon -vR /var/www/html/
17. WLAN cihazına qoşula bilməzsənsə, bu cür bir şey görəcəksiniz: , HTTPD 8585 portunu dinləyir, SELinux-a bildirin:SELinux siyasətini yazılışını dəyişmədən istədiyiniz zaman dəyişmək üçün məntiqi dəyərlər. Məsələn, əgər httpd-nin elektron poçt göndərməsini istəyirsinizsə, yazın:
# semanage port -a -t http_port_t -p tcp 8585
18. , HTTPD 8585 portunu dinləyir, SELinux-a bildirin: SELinux-un parametrlərini açıb bağlımaq üçün məntiqi dəyərlər: # setsebool -P httpd_can_sendmail 1
19. , HTTPD 8585 portunu dinləyir, SELinux-a bildirin: Bütün məntiqi dəyərləri görmək üçün:
- Hər biri üçün təsviri görmək üçün:
# getsebool -a - Məntiqi dəyəri təyin etmək üçün:
# semanage boolean -l - Davamlı quraşdırma üçün əlavə edin
# setsebool [_boolean_] [1|0] - -P
. Məsələn:SELinux siyasətləri/tətbiqləri səhvlər ehtiva edə bilər, bunlara:# setsebool httpd_enable_ftp_server 1 -P
20. Sıra dışı kod yolları
- Konfiqurasiyalar
- stdout-yönləndirmə
- Fayl deskriptarlarının sızması
- İcra edilə bilən yaddaş
- Pis hazırlanmış kitabxanalar
- Tiket açın (Bugzilla-da hesabat göndərməyin; Bugzilla-da SLA yoxdur).
, əgər məhdud domenləriniz varsa, bunları etməyə çalışın:
21. Məlumatlarınız təhlükə altına düşə bilərKernel modullarını yükləmək
- SELinux-un məcburi rejimini söndürmək
- yə yazmaq
- etc_t/shadow_t
iptables qaydalarını dəyişmək - SELinux siyasət modullarının inkişaf alətləri:
22. Quraşdırdıqdan sonra yenidən başladın və ya yenidən başladın.
# yum -y install setroubleshoot setroubleshoot-server
journalctl auditd bütün logların siyahısını vermək üçün,
23. Windows VPS-i uzaqdan iş üçün istifadə edin
setroubleshoot müəyyən bir SELinux etiketinə aid bütün logların siyahısını vermək üçün. Məsələn: SELinux səhvi baş verdikdə, logu istifadə edin:
# journalctl -t setroubleshoot --since=14:20
24. Windows VPS-i uzaqdan iş üçün istifadə edin setroubleshoot bir neçə mümkün həll təklifini ilə.
# journalctl _SELINUX_CONTEXT=system_u:system_r:policykit_t:s0
25. Məsələn, SELinux səhvi baş verdikdə, logu istifadə edin baxın.
Hər iki halda. setroubleshoot:
Jun 14 19:41:07 web1 setroubleshoot: SELinux httpd'nin /var/www/html/index.html dosyasına getattr erişimini engelliyor. Tam mesajı görüntülemek için şunu çalıştırın: sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
# sealert -l 12fd8b04-0119-4077-a710-2d0e0ee5755e
SELinux httpd'nin /var/www/html/index.html dosyasına getattr erişimini engelliyor.
***** Plugin restorecon (99.5 güven) önerir ************************
Etiketi düzeltmek istiyorsanız,
/var/www/html/index.html varsayılan etiketi httpd_syscontent_t olmalıdır.
Sonra restorecon'u çalıştırabilirsiniz.
Bunu yapın
# /sbin/restorecon -v /var/www/html/index.html26. Günlük Kaydı: SELinux birçok yerde bilgi kaydeder:
- /var/log/messages
- /var/log/audit/audit.log
- /var/lib/setroubleshoot/setroubleshoot_database.xml
27. Günlük Kaydı: SELinux hata araması için denetim günlüğünde:
# ausearch -m AVC,USER_AVC,SELINUX_ERR -ts today
28. Belirli bir hizmet için SELinux Erişim Vektörü Önbelleği (AVC) mesajlarını bulmak için:
# ausearch -m avc -c httpd
29. Araç audit2allow yasaklı işlemler günlüğünden bilgi toplar ve ardından SELinux izin politika kuralları oluşturur. Örneğin:
- Erişim reddinin nedenini açıklayan okunaklı bir açıklama oluşturmak için:
# audit2allow -w -a - Yasaklı erişimi izin veren tür zorunlu kullanım kuralını görüntülemek için:
# audit2allow -a - Kullanıcı modülü oluşturmak için:
# audit2allow -a -M mypolicy - Opsiya
-Mverilen adla bir zorunlu uygulama türü (.te) dosyası oluşturur ve kuralı politika paketine (.pp) derler:mypolicy.pp mypolicy.te - Kullanıcı modülünü yüklemek için:
# semodule -i mypolicy.pp
30. Bir sürecin (alanın) izinli modda çalışması için ayarlamak için: # semanage permissive -a httpd_t
31. Artık bir alanın izinli olmasını istemiyorsanız: # semanage permissive -d httpd_t
32. Tüm izinli alanları devre dışı bırakmak için: # semodule -d permissivedomains
33. SELinux'un MLS politikasını etkinleştirmek: # yum install selinux-policy-mls
yə "/etc/selinux/config:"
SELINUX=permissive
SELINUXTYPE=mls
SELinux'un izinli modda çalıştığından emin olun: # setenforce 0
Şu betiği kullanın fixfiles, dosyaların bir sonraki yeniden başlatmada yeniden etiketlenmesini sağlamak için:
# fixfiles -F onboot # reboot
34. Belirli bir MLS aralığına sahip bir kullanıcı oluşturun: # useradd -Z staff_u john
Aşağıdaki komutu kullanarak useradd, yeni kullanıcıyı mevcut SELinux kullanıcısı ile eşleştirin (bu durumda, staff_u).
35. SELinux ve Linux kullanıcıları arasındaki eşleşmeyi görüntülemek için: # semanage login -l
36. Kullanıcı için belirli bir aralık tanımlamak: # semanage login --modify --range s2:c100 john
37. Kullanıcının ev dizinindeki etiketi düzeltmek için (gerekirse): # chcon -R -l s2:c100 /home/john
38. Geçerli kategorileri görüntülemek için: # chcat -L
39. Kategorileri değiştirmek veya kendi kategorilerinizi oluşturmaya başlamak için dosyayı aşağıdaki gibi değiştirin:
/etc/selinux/_<selinuxtype>_/setrans.conf
40. Belirli bir dosyada, rol ve kullanıcı bağlamında bir komut veya betik çalıştırmak için:
# runcon -t initrc_t -r system_r -u user_u yourcommandhere
-tdosya bağlamı-rrol bağlamı-ukullanıcı bağlamı
41. SELinux devre dışı bırakıldığında çalışan konteynerler:
- Podman:
# podman run --security-opt label=disable … - Docker:
# docker run --security-opt label=disable …
42. Eğer bir konteynere sisteme tam erişim izni vermeniz gerekiyorsa:
- Podman:
# podman run --privileged … - Docker:
# docker run --privileged …
Ve şimdi zaten cevabı biliyorsunuz. Lütfen: panik yapmayın ve SELinux'u etkinleştirin.
Linklər:
- tarafından
- Dan Walsh tarafından
- tarafından
- tarafından
Mənbə: habr.com
