SELinux-un qurulması, aktivləşdirilməsi, söndürülməsi. SELinux - nəzəriyyə Subyektlər və obyektlər
Təhlükəsizliyi artıran Linux (SELinux) Linux-da girişə nəzarət təhlükəsizlik siyasətlərinə dəstək verən xüsusiyyət mexanizmidir.
SELinux istifadəçilərə və ya utilitlərə daxil olmaq üçün qaydalar yarada bilər ki, bu da bu imkanları və onların davranışlarını qaydalar şəklində müəyyən etməklə utilitlərin bəzi giriş imkanlarını məhdudlaşdırmağa imkan verir və SELinux-dan istifadə edən ƏS bu qaydalara riayət olunmasına nəzarət edəcək. Bu mövzuda sizə CentOS-da SELinux-u necə söndürmək və ya aktivləşdirmək barədə məlumat verəcəyəm. Bəzi paylamalarda defolt olaraq SELinux aktivləşdirilib ki, siz SELinux-un necə işlədiyini və ya onu necə konfiqurasiya edəcəyinizi başa düşmürsinizsə, bu, bəzi arzuolunmaz davranışlara səbəb ola bilər.
SELinux-u söndürmək üçün bu məqalədə qeyd olunan 4 müxtəlif üsuldan hər hansı birini istifadə edə bilərsiniz.
SELinux Linux nüvəsində müəyyən edilmiş məcburi giriş nəzarətləri daxil olmaqla təhlükəsizlik siyasətlərini tətbiq edəcək. Sistemdəki hər bir fayl və proses SELinux tərəfindən istifadə olunacaq xüsusi qısa yollarla etiketlənəcək. Siz əmrdən istifadə edə və bu qısa yollara aşağıda göstərildiyi kimi baxa bilərsiniz:
# ls -Z /etc/
Bu təqdim etdiyim tam siyahı deyil, sizin üçün fərqli ola bilər.
CentOS-da SELinux-u söndürmək üçün 1-ci üsul. Müvəqqəti olaraq.
SELinux-u müvəqqəti olaraq söndürmək üçün aşağıda göstərildiyi kimi /selinux/enforce redaktə etməlisiniz. Nəzərə alın ki, sistem yenidən başladıqdan sonra bu seçim artıq mövcud olmayacaq.
Beləliklə, SELinux-un serverdə hansı vəziyyətə sahib olduğunu yoxlayaq:
# cat /selinux/enforce 1
Və ya istifadə edə bilərsiniz:
# /usr/sbin/sestatus SELinux statusu: aktiv SELinuxfs montajı: /selinux Cari rejim: konfiqurasiya faylından icazə verən rejim: tətbiq olunan Siyasət versiyası: 24 Konfiqurasiya faylından siyasət: hədəflənmiş
Bu o deməkdir ki, işə salınıb. Onu söndürmək üçün aşağıdakı əmrdən istifadə edin:
# echo 0 > /selinux/enforce
Və yenidən yoxlayaq:
# cat /selinux/enforce 0
Setenforce üçün mümkün variantlar bunlardır:
- 1 (aktiv edin).
- 0 (deaktiv).
SELinux-u söndürmək üçün aşağıda göstərildiyi kimi setenforce əmrindən də istifadə edə bilərsiniz. Bu əmrin bir nümunəsidir:
#setenforce 0
Və ya başqa bir istifadə halını təqdim edəcəyəm:
# setenforce İcazəli
PS: Yoxlamaq üçün başqa bir əla əmr var:
# getenforce İcazəli
CentOS-da SELinux-u söndürməyin 2-ci üsulu. Birdəfəlik!
CentOS-da SELinux-un vəziyyətini yoxlayaq.
# cat /etc/selinux/config
Mən onu yandırdım, söndürmək istəyirəm, sonra bunu etmək üçün konfiqurasiyanı açıb yazmalısınız:
# vim /etc/selinux/config
Tapmaq lazımdır:
SELINUX=aktivdir
Əvəz edilib:
Aşağıdakı ekran görüntüsündə göstərildiyi kimi:
Bundan sonra əməliyyat sistemimizi yenidən başlatmalıyıq:
# yenidən başladın
3-cü üsul. Grub yükləyicisinin özündə SELinux-u söndürmək.
Sisteminizdə /etc/selinux/config tapa bilmirsinizsə, aşağıda göstərildiyi kimi GRUB yükləmə yükləyicisinə parametr ötürməklə SELinux-u söndürə bilərsiniz.
# pişik /boot/grub/grub.conf
4-cü üsul. SELinux-da yalnız xüsusi bir xidməti söndürmək - HTTP/Apache
Əgər siz bütün SELinux-u deaktiv etməkdə maraqlı deyilsinizsə, yalnız müəyyən bir xidmət üçün SELinux-u deaktiv edə bilərsiniz. Məsələn, siz HTTP/Apache-yə xidmət üçün SELinux-u söndürmək istəyirsiniz, sonra /etc/selinux/targeted/booleans-da httpd_disable_trans dəyişənini dəyişdirməlisiniz.
Biz artıq Habré-də SELinux haqqında yazmışıq, lakin bu sistemlə bağlı çoxlu ətraflı təlimatlar dərc olunmayıb. Bu gün biz SELinux-da sistem haqqında məlumatdan başlayaraq siyasətlərin çevik konfiqurasiyasına qədər tam belə ətraflı təlimatı dərc edirik.
Yazının başa düşülməsi çətin olan “vərəqə” çevrilməməsi üçün təlimatı iki hissəyə bölmək qərarına gəldik. Birincisi sistemin özü və onun bəzi xüsusiyyətləri haqqında danışacaq. İkincisi, siyasətin qurulması ilə bağlıdır. İndi birinci hissəni dərc edirik, ikinci hissə bir az sonra çıxacaq.
1. Giriş
SELinux (SELinux) nüvə səviyyəsində həyata keçirilən məcburi girişə nəzarət sistemidir. Bu sistem ilk dəfə CentOS-un dördüncü versiyasında ortaya çıxdı və 5 və 6-cı versiyalarda tətbiq əhəmiyyətli dərəcədə əlavə edildi və təkmilləşdirildi. Bu təkmilləşdirmələr SELinux-a bir çox cari problemləri effektiv şəkildə həll etməyə qadir olan universal sistemə çevrilməyə imkan verdi. Yadda saxlamaq lazımdır ki, klassik Unix hüquq sistemi əvvəlcə tətbiq edilir və nəzarət yalnız bu ilkin yoxlama uğurlu olarsa SELinux-a keçəcək.
1.1 Bəzi cari problemlər.
SELinux-un praktik dəyərini başa düşmək üçün standart girişə nəzarət sisteminin kifayət etmədiyi bir neçə nümunəyə baxaq. SELinux söndürülübsə, onda siz yalnız DAC (ixtiyari giriş nəzarəti) və ya ACL (giriş nəzarəti siyahıları) daxil olan klassik ixtiyari giriş nəzarətinə daxil ola bilərsiniz. Yəni, bəzi hallarda tamamilə qeyri-kafi ola bilən istifadəçilər və istifadəçi qrupları səviyyəsində yazma, oxuma və icra hüquqlarının manipulyasiyasından gedir. Misal üçün:
- Administrator istifadəçinin hərəkətlərinə tam nəzarət edə bilmir. Məsələn, istifadəçinin bütün digər istifadəçilərə SSH açarları kimi öz həssas fayllarına oxumaq hüquqlarını verməsi tamamilə mümkündür.
Proseslər təhlükəsizlik parametrlərini dəyişə bilər. Məsələn, istifadəçinin poçtunu ehtiva edən fayllar yalnız bir xüsusi istifadəçi tərəfindən oxuna bilər, lakin poçt müştərisi giriş hüquqlarını yaxşı dəyişə bilər ki, bu fayllar hamı tərəfindən oxuna bilsin.
Proseslər onları işə salan istifadəçinin hüquqlarını miras alır. Məsələn, Firefox brauzerinin troyanla yoluxmuş versiyası istifadəçinin SSH açarlarını oxuya bilir, baxmayaraq ki, bunun üçün heç bir səbəb yoxdur.
Əslində, ənənəvi seçmə girişə nəzarət (DAC) modelində girişin yalnız iki səviyyəsi yaxşı həyata keçirilir - istifadəçi və super istifadəçi. Hər bir istifadəçinin tələb olunan minimum imtiyazlara malik olmasına imkan verən sadə üsul yoxdur.
Əlbəttə ki, klassik təhlükəsizlik modeli çərçivəsində bu problemlərin aradan qaldırılması üçün bir çox üsul var, lakin onların heç biri universal deyil.
1.1.1 SELinux-da istifadə olunan əsas terminlər:
Domen- prosesin yerinə yetirə biləcəyi hərəkətlərin siyahısı. Tipik olaraq, bir domen prosesin fəaliyyət göstərə biləcəyi minimum mümkün hərəkətlər toplusu kimi müəyyən edilir. Beləliklə, proses nüfuzdan düşərsə, təcavüzkar çox zərər verə bilməyəcək.
Rol- tətbiq oluna bilən domenlərin siyahısı. Müəyyən bir domen rol üçün domenlər siyahısında deyilsə, bu domendən olan hərəkətlər tətbiq edilə bilməz.
Növ- obyektə münasibətdə icazə verilən hərəkətlər toplusu. Bir növ domendən onunla fərqlənir ki, o, borulara, kataloqlara və fayllara tətbiq oluna bilər, domen isə proseslərə tətbiq olunur.
Təhlükəsizlik konteksti- bütün SELinux atributları - rollar, növlər və domenlər.
1.2 Ənənəvi təhlükəsizlik modelinin problemlərinin həlli.
SELinux hər bir xidmət, istifadəçi və proqram üçün minimum tələb olunan imtiyazlar modelini daha ciddi şəkildə izləyir. Varsayılan olaraq, sistemin hər bir elementi yalnız onun işləməsi üçün vacib olan hüquqlara malik olduqda "qadağan rejimi" təyin edilir. Əgər istifadəçi, proqram və ya xidmət faylı dəyişdirməyə və ya onun həlli üçün aydın şəkildə lazım olmayan resursa daxil olmağa cəhd edərsə, o zaman onlara sadəcə olaraq giriş qadağan ediləcək və belə cəhd qeydiyyata alınacaq.
SELinux nüvə səviyyəsində həyata keçirilir, ona görə də tətbiq proqramları bu məcburi girişə nəzarət sisteminin versiyası, onun işləmə xüsusiyyətləri və s. haqqında ümumiyyətlə heç nə bilməyə bilər. Düzgün konfiqurasiya olunarsa, SELinux üçüncü tərəf proqram və xidmətlərinin fəaliyyətinə təsir göstərməyəcək. Tətbiq bu girişə nəzarət sistemindən gələn səhv mesajlarını tutmağa qadir olsa da, tətbiqdən istifadənin asanlığı əhəmiyyətli dərəcədə artır. Həqiqətən, qorunan resursa və ya fayla daxil olmaq cəhdi olarsa, SELinux “giriş rədd edildi” ailəsindən əsas proqrama xəta göndərir. Lakin bir neçə proqram SELinux-dan əldə edilən sistem zənglərinin qaytarılması kodlarından istifadə edir.
Bütün sisteminizin təhlükəsizliyini necə təkmilləşdirə biləcəyinizi göstərmək üçün SELinux-dan istifadənin bəzi nümunələri buradadır.
- ssh düymələrini oxuya bilən proqramların siyahısının yaradılması və konfiqurasiyası.
Poçt müştərisi vasitəsilə məlumatlara icazəsiz girişin qarşısının alınması.
Brauzeri elə konfiqurasiya edin ki, o, yalnız istifadəçinin ev qovluğunda işləmək üçün lazım olan faylları və qovluqları oxuya bilsin.
2. SELinux iş rejimləri
SELinux-un üç əsas iş rejimi var, defolt olaraq Tətbiqetmə rejimi təyin olunur. Bu, kifayət qədər sərt rejimdir və lazım gələrsə, son istifadəçi üçün daha əlverişli bir şeyə dəyişdirilə bilər.
İcra: Defolt rejim. Bu rejim seçildikdə, mövcud təhlükəsizlik siyasətini bir şəkildə pozan bütün hərəkətlər bloklanacaq və pozuntuya cəhd jurnalda qeyd olunacaq.
İcazə verən: Bu rejimdən istifadə edərkən, mövcud təhlükəsizlik siyasətini pozan bütün hərəkətlər haqqında məlumat jurnalda qeyd olunacaq, lakin hərəkətlərin özləri bloklanmayacaq.
Əlil: Məcburi girişə nəzarət sisteminin tamamilə söndürülməsi.
Siz İdarəetmə menyusunda (sistem-config-selinux) mövcud olan xüsusi GUI alətindən istifadə edərək cari rejimi və digər SELinux parametrlərinə baxa bilərsiniz (və lazım olduqda onu dəyişdirə bilərsiniz). Əgər siz konsolda işləməyə öyrəşmisinizsə, cari vəziyyətə sestatus əmri ilə baxa bilərsiniz.
# sestatus SELinux statusu: aktiv SELinuxfs montajı: /selinux Cari rejim: konfiqurasiya faylından Modu tətbiq edir: Siyasət versiyasını tətbiq edir: 21 Konfiqurasiya faylından siyasət: hədəflənmiş
Getenforce əmrindən istifadə edərək SELinux statusunu da öyrənə bilərsiniz.
"Setenforce" əmri sizə Təcrübəli və İcazəli rejimlər arasında sürətlə keçid etməyə imkan verir, dəyişikliklər yenidən başlamadan qüvvəyə minir. Lakin SELinux-u aktivləşdirsəniz və ya söndürsəniz, yenidən yükləmə tələb olunur, çünki təhlükəsizlik etiketləri fayl sistemində yenidən quraşdırılmalıdır.
Sistem hər dəfə yükləndikdə tətbiq ediləcək standart rejimi seçmək üçün /etc/selinux/config faylında rejimlərdən birini - "məcburi", "icazə verən" və ya " təyin edərək "SELINUX=" xəttinin dəyərini təyin edin. əlil". Məsələn: "SELINUX=icazə verən".
3. SELinux siyasətləri
Daha əvvəl qeyd edildiyi kimi, SELinux defolt olaraq Təcrübə rejimində işləyir, icazə veriləndən başqa hər hansı hərəkətlər avtomatik bloklandıqda, hər bir proqram, istifadəçi və ya xidmət yalnız işləmək üçün lazım olan imtiyazlara malikdir, lakin başqa heç nə yoxdur. Bu kifayət qədər sərt siyasətdir, onun həm üstünlükləri var - informasiya təhlükəsizliyinin ən yüksək səviyyəsi, həm də çatışmazlıqları - sistemin bu rejimdə konfiqurasiyası sistem administratorları üçün çoxlu əməklə bağlıdır, əlavə olaraq, istifadəçilərin sistemdən ən azı qeyri-ciddi şəkildə istifadə etmək istəsələr, giriş məhdudiyyətləri ilə üzləşirlər. Bu yanaşma Müəssisə sektorunda məqbuldur, lakin son istifadəçi kompüterlərində qəbuledilməzdir. Bir çox idarəçilər bu cür problemlərin qarşısını almaq üçün sadəcə olaraq SELinux-u iş stansiyalarında söndürürlər.
Bunun qarşısını almaq üçün, məsələn, httpd, adlandırılmış, dhcpd, mysqld kimi əsas tətbiqlər və xidmətlər üçün təcavüzkarın vacib məlumatlara çıxış əldə etməsinə imkan verməyəcək əvvəlcədən konfiqurasiya edilmiş hədəf siyasətləri müəyyən edilir. Siyasətinin müəyyən edilmədiyi proqramlar unconfined_t domenində işləyir və SELinux tərəfindən qorunmur. Beləliklə, düzgün seçilmiş hədəf siyasətləri istifadəçi üçün lazımsız problemlər yaratmadan məqbul təhlükəsizlik səviyyəsinə nail olmağa imkan verir.
4. SELinux-da girişə nəzarət
SELinux aşağıdakı giriş idarəetmə modellərini təqdim edir:
Növün Tətbiqi (TE): Hədəf siyasətlərində istifadə olunan əsas giriş nəzarət mexanizmi. İcazələri ən aşağı səviyyədə ətraflı şəkildə idarə etməyə imkan verir. Sistem administratoru üçün ən çevik, eyni zamanda ən çox əmək tələb edən mexanizm.
Rol Əsaslı Giriş Nəzarəti (RBAC): Bu modeldə giriş hüquqları rollar kimi həyata keçirilir. Rol sistemin bir və ya bir neçə elementi tərəfindən sistemin digər hissələri üzərində müəyyən hərəkətləri yerinə yetirmək icazəsidir. Əslində, RBAC TE-nin sonrakı inkişafıdır.
Çox Səviyyəli Təhlükəsizlik (MLS): bütün sistem obyektlərinə müəyyən giriş səviyyəsinin təyin edildiyi çoxsəviyyəli təhlükəsizlik modeli. Girişin icazəsi və ya rədd edilməsi yalnız bu səviyyələr arasındakı əlaqə ilə müəyyən edilir.
SELinux daxilindəki bütün proseslər və fayllar təhlükəsizlik kontekstinə malikdir.
Apache veb serverinin /var/www/html/index.html ünvanında yerləşən başlanğıc səhifəsinə daha yaxından nəzər salaraq praktikada kontekstə nəzər salaq.
$ ls -Z /var/www/html/index.html -rw-r--r-- istifadəçi adı istifadəçi adı system_u:object_r:httpd_sys_content_t /var/www/html/index.html
Standart fayl icazələrinə əlavə olaraq biz SELinux təhlükəsizlik kontekstini görə bilərik: system_u: object_r: httpd_sys_content_t.
Kontekst user:rol:type:mls-ə əsaslanır, lakin mls sahəsi gizlədildiyi halda istifadəçi:rol:type sahələri göstərilir. Hədəf siyasətini də görə bilərik, bu halda httpd_sys_content_t.
İndi "httpd" prosesi (Apache veb serveri) üçün SELinux təhlükəsizlik kontekstinə baxaq:
$ps axZ | grep httpd system_u:system_r:httpd_t 3234 ? Ss 0:00 /usr/sbin/httpd
Gördüyümüz kimi, bu proses httpd_t domenində işləyir.
Yaxşı, indi ev kataloqumuzdakı faylın təhlükəsizlik kontekstinə baxaq:
$ ls -Z /home/username/myfile.txt -rw-r--r-- istifadəçi adı istifadəçi adı user_u:object_r:user_home_t /home/username/myfile.txt
Faylın user_home_t tipində olduğunu görürük, bu tip standart olaraq ev kataloqundakı bütün fayllara təyin edilir.
Girişə yalnız eyni tipli elementlər arasında icazə verilir, buna görə də Apache veb serveri httpd_sys_content_t tipli /var/www/html/index.html faylını asanlıqla oxuya bilir. Eyni zamanda, Apache httpd_t domenində işlədiyinə və userid:username sahələrinin doldurulmadığına görə o, home/username/myfile.txt faylına daxil ola bilmir, baxmayaraq ki, bu fayl heç bir sənədi olmayan proseslər tərəfindən oxuna bilər. hədəf müəyyən edilmiş siyasət. Bu yolla, Apache veb serveri təhlükə altına düşərsə, təcavüzkar httpd_t domenində olmayan fayllara daxil ola və ya prosesləri işlədə bilməyəcək.
5. SELinux problemlərinin aradan qaldırılması
Gec-tez elə bir vəziyyət yaranacaq ki, siz SELinux-un nəyəsə girişi rədd etdiyi bir vəziyyətlə qarşılaşacaqsınız. Girişdən imtina üçün bir neçə əsas səbəb var:
Yanlış etiketlənmiş fayl.
- Proses yanlış kontekstdə gedir
- Siyasətdə səhv. Proses siyasət yaratarkən nəzərə alınmayan fayla giriş tələb edir.
- İşğal cəhdi.
Girişin rədd edilməsinin ilk üç səbəbi olduqca asanlıqla həll edilir, müdaxilə cəhdi zamanı həyəcan siqnalı verilir və istifadəçiyə müvafiq bildiriş göndərilir.
İstənilən problemi həll etmək üçün SELinux jurnalına baxmaq kifayətdir. Varsayılan olaraq, auditd prosesi tərəfindən /var/log/audit/audit.log faylına yazılır. Əgər bu proses işləmirsə, o zaman SELinux /var/log/messages faylına daxil olur, bu halda bütün girişə nəzarət sisteminin mesajları AVC düyməsi ilə qeyd olunur ki, bu da məsələn, lazımi sətirləri cəld filtrləməyə imkan verir. grep əmrindən istifadə etməklə.
Dağıtımların ən son versiyalarına (CentOS 5-dən başlayaraq) SELinux jurnalını rahat və istifadəçi dostu formada göstərməyə imkan verən qrafik istifadəçi interfeysi olan yardım proqramı daxildir. Siz sealert -b yazaraq konsoldan zəng edə bilərsiniz. Köməkçi proqram problemlərin aradan qaldırılması paketinin bir hissəsidir. X server işləmirsə, aşağıdakı əmrlə insan tərəfindən oxuna bilən hesabatlar yarada bilərsiniz:
Sealert -a /var/log/audit/audit.log > /path/to/mylogfile.txt
5.1 Fayl təhlükəsizliyi kontekst etiketlərinin dəyişdirilməsi.
"Chcon" əmri sizə faylların və ya qovluqların SELinux kontekstini dəyişdirməyə imkan verir ki, "chown" və "chmod" əmrləri standart girişə nəzarət sistemi daxilində faylın sahibini və ya giriş hüquqlarını dəyişməyə imkan verir.
Gəlin bir neçə nümunəyə baxaq.
Tutaq ki, sistemdə Apache veb serveri quraşdırılıb və biz saytların saxlandığı qovluğu (defolt olaraq bu /var/www/html/-dir) məsələn, /html/-ə dəyişib indeks yaratmalıyıq. html faylı bu qovluqda.
# mkdir /html # touch /html/index.html # ls -Z /html/index.html -rw-r--r-- kök kök user_u:object_r:default_t /html/index.html # ls -Z | grep html drwxr-xr-x kök kök user_u:object_r:default_t html
Yuxarıda görürük ki, təhlükəsizlik kontekstində həm /html kataloqu, həm də /html/index.html faylı default_t tiplidir. Bu o deməkdir ki, biz Apache-ni işə salsaq və bu kataloq və ya faylla işləməyə çalışsaq, SELinux bizə girişi rədd edəcək. Və bu tamamilə düzgün olacaq, çünki Apache ilə qarşılıqlı əlaqədə olan fayllar üçün düzgün təhlükəsizlik konteksti httpd_sys_content_t-dir.
Konteksti dəyişdirək və hər şeyin düzgün aparıldığını yoxlayaq:
# chcon -v --type=httpd_sys_content_t /html konteksti user_u:object_r:httpd_sys_content_t olaraq dəyişdirildi # chcon -v --type=httpd_sys_content_t /html/index.html /html/index.html konteksti user_u:object_r olaraq dəyişdirildi :httpd_sys_content_t # ls -Z /html/index.html -rw-r--r-- kök kök istifadəçi_u:object_r:httpd_sys_content_t /html/index.html # ls -Z | grep html drwxr-xr-x kök kök user_u:object_r:httpd_sys_content_t html
Hər bir faylı və hər bir kataloqu əl ilə emal etmək lazım deyil, sadəcə olaraq -R rekursiv kataloq keçid seçimindən istifadə edə bilərsiniz:
# chcon -Rv --type=httpd_sys_content_t /html
Təhlükəsizlik kontekstindəki bu cür dəyişikliklər yenidən yükləmələr arasında davam edəcək, lakin fayl sisteminin etiketləri dəyişdirilərsə, dəyişikliklər itiriləcək. Baxım və istismar zamanı bu qeyri-adi deyil. Belə bir vəziyyətdə düzgün həll (təbii ki, sınaqdan sonra) əlavə bir qayda yaratmaq və sonra onu yerli yerli qaydalarla birləşdirmək olardı. Beləliklə, əsas qaydalardan daha yüksək prioritet olacaqdır.
SELinux-un fayl sistemi etiketlərini dəyişdirdikdən sonra da düzgün işləməsi üçün biz SELinux-u GUI interfeysi ilə idarə etmək üçün hər iki alətdən və semanage konsol yardım proqramından istifadə edə bilərik:
Semanage fcontext -a -t httpd_sys_content_t "/html(/.*)?"
Yuxarıdakı nümunədə biz /html qovluğunda yerləşən bütün fayllara httpd_sys_content_t kontekstini təyin etdik.
5.2 SELinux təhlükəsizlik kontekstinin bərpası.
"Restorecon" əmri təhlükəsizlik kontekstini standart olaraq təyin edilmiş birinə dəyişdirməyə imkan verir.
Yenə də nümunə kimi Apache veb serverindən istifadə edirik. Tutaq ki, istifadəçi öz ana kataloqunda index.html faylının surətini redaktə edib (mv əmri ilə) vebsaytların saxlandığı qovluğa (/var/www/html) köçürüb.
Nəzərə alın ki, kopyalama zamanı (cp əmri) faylın təhlükəsizlik konteksti təyinat qovluğunun konteksti ilə üst-üstə düşəcək, köçürmə zamanı isə təhlükəsizlik konteksti mənbə konteksti ilə üst-üstə düşəcək. Əlbəttə ki, biz təhlükəsizlik kontekstini dəyişdirmək üçün chcon əmrindən istifadə edə bilərdik, lakin köçürülmüş fayllar indi /var/www/html kataloqunda olduğundan, biz sadəcə olaraq həmin kataloqda yerləşən bütün fayllar üçün kontekst parametrlərini bərpa edə bilərik.
Yalnız index.html faylı üçün konteksti bərpa etmək üçün əmrdən istifadə edə bilərik:
# restorecon -v /var/www/html/index.html
Bütün qovluğu rekursiv şəkildə keçmək və onun ehtiva etdiyi bütün fayllar üçün konteksti dəyişdirmək istəyiriksə, aşağıdakı əmrdən istifadə edirik:
# restorecon -Rv /var/www/html
5.3 Bütün fayl sistemi üçün etiketlərin dəyişdirilməsi.
Bəzən bütün fayl sistemində təhlükəsizlik etiketlərini yenidən qurmaq lazımdır. Çox vaxt bu əməliyyat sistem bir müddət söndürüldükdən sonra SELinux-u yenidən aktivləşdirərkən həyata keçirilir. Siyasət idarəetmə növünü sərt olaraq dəyişdirsək də bu lazımdır (bu halda bütün proseslər öz xüsusi domenlərində işləyir; heç kim unconfined_t domenində işləyə bilməz).
Növbəti dəfə yenidən başladığınız zaman fayl sistemini avtomatik olaraq bölmək üçün aşağıdakı əmrləri daxil edin:
# toxunun /.autorelabel # yenidən başladın
Bəzən avtomatik yenidən bölmə işləmir (əksər hallarda SELinux-un söndürüldüyü paylama dəstinin yeniləndiyi hallarda). Bu halda, aşağıdakı əmrdən istifadə edin:
# genhomedircon # touch /.autorelabel # reboot
5.4 Limanlara girişin təmin edilməsi.
Çox vaxt biz istəyirik ki, Apache kimi xidmətlər qeyri-standart portları dinləyə və onlarda daxil olan əlaqələri qəbul edə bilsin. Əsas SELinux siyasətləri yalnız müəyyən xidmətlə sıx əlaqəli olan əvvəlcədən təyin edilmiş portlara giriş imkanı verir. Tutaq ki, biz Apache-nin 81-ci portda dinləməsini istəyirik. Bu halda semanage əmrindən istifadə edərək qayda əlavə etməliyik:
# semanage port -a -t http_port_t -p tcp 81
SELinux-un giriş təmin etdiyi portların tam siyahısına aşağıdakı kimi baxmaq olar:
# semanage port -l
Təlimatın növbəti, ikinci hissəsində sistem siyasətlərinin çevik konfiqurasiyasının mümkünlüyünü göstərəcəyik.
Bəzi Linux paylamalarında defolt olaraq SELinux aktivdir və bu, müxtəlif problemlərə səbəb ola bilər. SELinux-un necə işlədiyini başa düşmürsinizsə və onu necə düzgün konfiqurasiya edəcəyinizi bilmirsinizsə, onun işinin əsas prinsiplərini öyrənənə qədər onu söndürmək daha yaxşıdır.
Söndürmək SELinux təsvir olunan 4 üsuldan hər hansı birini istifadə edə bilərsiniz.
SELinux-un nə üçün istifadə edildiyi barədə təfərrüatlara girməyəcəyik və birbaşa onu söndürməyə davam edəcəyik. Əgər sistem SELinux-dan istifadə edirsə, o zaman ls -Z əmrini işlətməklə aşağıdakı şəkli görə bilərsiniz.
# ls -Z /etc/-rw-r--r-- kök kök sistemi_u:object_r:etc_t:s0 a2ps.cfg -rw-r--r-- kök kök sistemi_u:object_r:adjtime_t:s0 adjtime -rw-r--r-- kök root system_u:object_r:etc_aliases_t:s0 ləqəblər drwxr-x--- root root system_u:object_r:auditd_etc_t:s0 audit drwxr-xr-x root root system_u:object_r:etc_runtime_t:s0 blkid-xr: root_system drwxuject :bluetooth_conf_t:s0 bluetooth drwx------ kök kök sistemi_u:object_r:system_cron_spool_t:s0 cron.d -rw-rw-r-- kök disk sistemi_u:object_r:amanda_dumpdates_t:s0 dumpdates
Metod 1: SELinux-u müvəqqəti olaraq söndürün
SELinux-u müvəqqəti olaraq söndürmək üçün siz /selinux/enforce faylını dəyişdirə bilərsiniz. Nəzərə alın ki, bu müvəqqəti söndürmədir və sistem yenidən işə salındıqdan sonra SELinux yenidən işləyəcək.
# cat /selinux/enforce 1 # echo 0 > /selinux/enforce# cat /selinux/enforce 0
Aşağıdakı nümunədə göstərildiyi kimi setenforce əmrindən də istifadə edə bilərsiniz. setenforce əmri üçün mümkün variantlar bunlardır: Tətbiqetmə, İcazə verən, 1 (aktiv) və ya 0 (deaktiv).
#setenforce 0
Metod 2: SELinux-u həmişəlik söndürün
SELinux-u həmişəlik söndürmək üçün /etc/selinux/config faylını redaktə edin və aşağıda göstərildiyi kimi SELINUX=diabled təyin edin. Bundan sonra serveri yenidən başladın.
# cat /etc/selinux/config SELINUX=deaktiv SELINUXTYPE=məqsədli SETLOCALDEFS=0
Metod 3: Grub Bootloader-də SELinux-un söndürülməsi
Üçüncü üsul SELinux-u söndürmək üçün GRUB yükləmə yükləyicisindən istifadə edir. Xəttin sonuna əlavə edin selinux=0
# cat /boot/grub/grub.conf default=0 timeout=5 splashimage=(hd0,0)/boot/grub/splash.xpm.gz gizli menyu başlığı Enterprise Linux Enterprise Linux Server (2.6.18-92.el5PAE) root (hd0,0) kernel /boot/vmlinuz -2.6.18-92.el5PAE ro root=LABEL=/ rhgb sakit selinux=0 initrd /boot/initrd-2.6.18-92.el5PAE.img başlığı Enterprise Linux Enterprise Linux Server (2.6.18-92.el5) root (hd0,0) kernel /boot/vmlinuz-2.6.18-92.el5 ro root=LABEL=/ rhgb sakit selinux=0 initrd /boot/initrd-2.6.18-92.el5.img
Metod 4: SELinux-u yalnız müəyyən xidmətlər üçün söndürün - HTTP/Apache
SELinux-u tamamilə söndürmək lazım deyilsə, ancaq müəyyən xidmətlər üçün bu seçiminiz var. Məsələn, dəyişənin dəyərini dəyişdirərək HTTP/Apache üçün SELinux-u deaktiv edək. httpd_disable_trans faylda /etc/selinux/targeted/booleans.
# grep httpd /etc/selinux/targeted/booleans httpd_builtin_scripting=1 httpd_disable_trans=1 httpd_enable_cgi=1 httpd_enable_homedirs=1 httpd_ssi_exec=1 httpd_tty_comm=0 httpd_unified=1
Həmçinin setsebool əmrindən istifadə edərək dəyişən təyin edin. Bundan sonra dəyişikliklərin qüvvəyə minməsi üçün httpd-ni yenidən başladın.
Android 5.0 Lollipop-da Google defolt olaraq SeLinux funksiyasını aktiv etdi və sistem bölməsini dəyişdirməyi çox çətinləşdirdi! Necə söndürmək olar? Oxumağa davam edin!
Mikroproqramı dəyişdirməyi sevən və ya tətbiqi yerləşdirməyə ehtiyacı olanlar üçün Google bunun qarşısını almaq üçün çox çalışdı - sistem bölməsində bitən faylları "sındıran" selinux texnologiyası, eləcə də dəyişdirilmiş təhlükəsizlik sistemi əsasında aktivləşdirildi. Knox-da, Samsung-dan götürülmüşdür. Bütün bunlar ona görə yaradılmışdır ki, biz adi istifadəçilər sistem bölməsini dəyişə bilməyək! Bunu düzəltməyin vaxtıdır!
Android-də müdafiəni söndürmək üçün nə lazımdır?
1. Kompüter ilə UBUNTU ƏS
2. Əsas boot.img Android smartfon və ya planşetinizdən
Android nüvəsində qorunmanın necə söndürülməsinə dair təlimatlar
Hazırlıq
Fayl menecerində terminalın açılmasını birləşdirən paket quraşdırın
1. Terminal açın və aşağıdakı əmri daxil edin
32-bit sistemlər üçün:
sudo apt-get install nautilus-open-terminal:i386
64-bit sistemlər üçün:
sudo apt-get quraşdırma nautilus-open-terminal
2. Sonra fayl menecerini yenidən işə salmaq əmrini yerinə yetirin
3. Android nüvəsi ilə işləmək üçün tələb olunan paketi quraşdırın
sudo apt-get install abootimg
Kernel ilə işləmək
1. Ev qovluğunda istənilən rahat adla qovluq yaradın və Android nüvəsini ora köçürün - boot.img. (Nümunə nüvə qovluğunu göstərəcək)
2. Qovluğa keçin ləpə, istənilən boş yerdə, sağ klikləyin və "Terminalda Aç" seçin
3. Açılan terminalda əmri daxil edin:
abootimg -x boot.img
Sonra qovluqda ləpə yeni qovluqların göründüyünü görəcəksiniz (kernel açıldı)
4. Gəlin yeni qovluq yaradaq (buna zəng edək rw) qovluğun içərisində ləpə, terminalda yazırıq
5. Bölməni daha da açmaq üçün terminalda əmr yazın initrd.img
zcat ../initrd.img | cpio -i
6. Sonra qovluqda rwçoxlu fayl tapacaqsınız
7. Faylı tapın və açın default.prop
8. Faylda xətti dəyişdirin
və faylı yadda saxlayın və ondan çıxın
9. Terminalda initrd.img faylını qurun və əmri yazın
tapmaq. | cpio -o -H newc | gzip > ../initrd.img
10. Biz kernel qovluğuna qayıdırıq, bunun üçün terminalda yazırıq
11. Edilən dəyişikliklərlə Android nüvəsinin tərtib edilməsi
abootimg --boot.img yaradın -k zImage -r initrd.img
və sonra daha bir əmr
abootimg --yarat boot.img -f bootimg.cfg -k zImage -r initrd.img
init.d dəstəyi ilə Android nüvəsi tamamlandı! Sonra flaş etməlisiniz!
Hamısı budur! İzləmədə qalın və sosial qruplara abunə olun! Bundan sonra daha maraqlı olacaq!
Hər kəsə salam gəlin bir az SELinux haqqında danışaq, amma ondan əvvəl onun nə olduğunu eşitməyənlər üçün bir az tərif. SELinux ingilis dilinin abbreviaturasıdır. Sözləri Security-Enhanced Linux, yəni təkmilləşdirilmiş təhlükəsizlik ilə Linux deməkdir. Başqa sözlə, bu, klassik selektiv giriş idarəetmə sistemi ilə paralel işləməyə qadir olan məcburi girişə nəzarət sisteminin tətbiqidir. Fərq ondadır ki, SELinux-da müəyyən siyasətlər vasitəsilə giriş hüquqları sistemin özü tərəfindən müəyyən edilir, öz növbəsində selektiv girişə nəzarət sistemi istifadəçilərin hüquqlarına əsaslanaraq resurslara prosesin girişini bölür, sadə başa düşmək üçün bunlar üç səviyyədə rwx hüquqlarıdır - sahib , sahib qrupu və digər istifadəçilər.
Bir az təsvir etdikdən sonra bəzi SELinux əmr və seçimlərinə baxmağa çalışaq. Nümunələrimiz Linux CentOS 6 əməliyyat sistemində nümayiş etdiriləcək.Bəlkə də birinci və yəqin ki, ən populyarı SELinux statusunu yoxlamaq üçün əmrlərdir.
/usr/sbin/getenforce
/usr/sbin/sestatus
Getenforce əmri üçün dəyərləri qaytarın
İcra– SELinux-un aktivləşdirildiyini və siyasət qaydalarının tətbiq edildiyini bildirir;
İcazə verən– SELinux-un aktivləşdirildiyini, lakin siyasət qaydalarının tətbiq olunmadığını və yalnız DAC qaydalarının istifadə edildiyini göstərir;
Əlil– SELinux-un söndürüldüyünü göstərir.
Sestatus əmri üçün dəyərləri qaytarın
Bu əmr SELinux statusuna əlavə olaraq istifadə edilmiş SELinux siyasətini qaytarır, məsələn:
$ /usr/sbin/sestatus SELinux statusu: aktivləşdirilmiş SELinuxfs montajı: /selinux Cari rejim: konfiqurasiya faylından rejimin tətbiqi: tətbiq edilməsi Siyasət versiyası: 23 Konfiqurasiya faylından siyasət: hədəflənmiş
SELinux statusu: aktiv – SELinux-un aktiv olduğunu bildirir;
Cari rejim: tətbiqetmə – SELinux-un məcburi rejimdə işə salınması deməkdir;
Konfiqurasiya faylından siyasət: hədəflənmiş – SELinux hədəf siyasətinin istifadə edildiyini göstərir.
SELinux işə salınır
Konfiqurasiya faylında əməliyyat sistemində SELinux-u aktivləşdirin/deaktiv edin
/etc/selinux/config
# Bu fayl sistemdəki SELinux vəziyyətinə nəzarət edir. # SELINUX= bu üç dəyərdən birini qəbul edə bilər: # tətbiq - SELinux təhlükəsizlik siyasəti tətbiq edilir. # icazə verən - SELinux məcbur etmək əvəzinə xəbərdarlıqları çap edir. # disabled - SELinux siyasəti yüklənməyib. SELINUX=disabled # SELINUXTYPE= bu iki dəyərdən birini qəbul edə bilər: # hədəflənmiş - Hədəflənmiş proseslər qorunur, # mls - Çox Səviyyəli Təhlükəsizlik qorunması. SELINUXTYPE=hədəflənmiş
SELINUX=disabled seçimi o deməkdir ki, SELinux qeyri-aktivdir. SELinux-a başlamazdan əvvəl bəzi manipulyasiyalar etməlisiniz.
1. SELinux paketlərinin quraşdırılmasını yoxlayın
Rpm -qa | grep selinux rpm -q policycoreutils rpm -qa | grep problemlərini həll edin
Həmçinin aşağıdakı paketlərin quraşdırıldığından əmin olun: selinux-siyasəti-targeted, selinux-policy, libselinux, libselinux-python, libselinux-utils, policycoreutils, setroubleshoot, setroubleshoot-server, setroubleshoot-plugins. Paketlər Policycoreutils-gui, problem həlli, selinux-policy-devel, Və mcstrans isteğe bağlıdır.
Çatışmayan paketlər (root kimi) əmrindən istifadə etməklə quraşdırıla bilər.
Yum quraşdırma paketinin adı
2. Hər bir fayl sistemi faylı işə salınmazdan əvvəl SELinux konteksti ilə işarələnməlidir. Bu nöqtəyə qədər məhdudlaşdırılmış domenlərə giriş qadağan edilə bilər ki, bu da əməliyyat sisteminin düzgün yüklənməməsi ilə nəticələnə bilər. Vəziyyət /etc/selinux/config konfiqurasiya faylında SELINUX=icazə verən seçimi təyin etməklə düzəldilə bilər.
3. Faylın işarələnməsi sistemin növbəti yenidən yüklənməsi zamanı baş verəcək. Bütün fayllar üçün etiketlər proses zamanı SELinux kontekstində təyin edilir. Son sətirdə hər * simvolu 1000 etiketlənmiş faylı təmsil edir. Prosesin müddəti sistemdəki faylların sayından, həmçinin disklərin sürətindən asılıdır.
*** Xəbərdarlıq -- SELinux ünvanlı siyasətin yenidən etiketlənməsi tələb olunur. *** Yenidən etiketləmə fayldan *** sistemin ölçüsündən və sabit disklərin sürətindən asılı olaraq çox uzun müddət çəkə bilər. ****
4. SELinux siyasəti zorla təyin edilmədikdə və iş genişləndirmə rejimində baş verdikdə, məcburi rejimdə qadağan ediləcək hərəkətlər kimi qadağalar jurnala yazılır. Sistemin son yüklənməsi zamanı SELinux-un hərəkətləri qadağan etmədiyinə əmin olun, bunu etmək üçün əmri yerinə yetirin.
Grep "SELinux qarşısını alır" /var/log/messages
Çıxış boş olmalıdır, yəni hər şey qaydasındadır və SELinux bu hərəkəti qadağan etmir.
5. Jurnallarda qadağalar haqqında heç bir mesaj olmadığına əmin olduqdan sonra, tətbiqdə SELINUX parametrini təyin edin (file /etc/selinux/config):
# Bu fayl sistemdəki SELinux vəziyyətinə nəzarət edir. # SELINUX= bu üç dəyərdən birini qəbul edə bilər: # tətbiq - SELinux təhlükəsizlik siyasəti tətbiq edilir. # icazə verən - SELinux məcbur etmək əvəzinə xəbərdarlıqları çap edir. # disabled - SELinux siyasəti yüklənməyib. SELINUX=məcburi # SELINUXTYPE= bu iki dəyərdən birini qəbul edə bilər: # hədəflənmiş - Hədəflənmiş proseslər qorunur, # mls - Çox Səviyyəli Təhlükəsizlik qorunması. SELINUXTYPE=hədəflənmiş
6. Bundan sonra əməliyyat sistemi yenidən işə salınmalıdır. Yenidən başladıqdan sonra getenforce əmri ilə Enforcing return dəyərini yoxlamaq lazımdır.
$ /usr/sbin/getenforce Tətbiq
7. SELinux və sistem istifadəçiləri arasındakı xəritələrə baxmaq üçün əmri işə salın
/usr/sbin/semanage login –l
Komandanın çıxışı belə olmalıdır:
Giriş Adı SELinux İstifadəçisi MLS/MCS Aralığı __default__ unconfined_u s0-s0:c0.c1023 root unconfined_u s0-s0:c0.c1023 system_u system_u s0-s0:c0.c1023
Bəzi xüsusiyyətlər var ki, onları da nəzərə almaq lazımdır. SELinux söndürüldükdə, istifadəçi tərəfindən yaradılmış fayllar qeyd olunmur və nəticədə məcburi vəziyyətə salındıqda problemlər yarana bilər. Fayllar seçimi qeyri-aktivdən icazə verən/məcburi rejimə dəyişdirməklə qeyd olunacaq və beləliklə, işarələnməmiş faylların görünməsi probleminin qarşısı alınacaq.