SELinux-a Başlayanlar üçün Bələdçi

SELinux-a Başlayanlar üçün Bələdçi

Kurs tələbələri üçün hazırlanmış məqalənin tərcüməsi "Linux Təhlükəsizliyi"

SELinux və ya Security Enhanced Linux, zərərli müdaxilələrin qarşısını almaq üçün ABŞ Milli Təhlükəsizlik Agentliyi (NSA) tərəfindən hazırlanmış təkmil girişə nəzarət mexanizmidir. O, mövcud ixtiyari (və ya seçmə) modelin (İngilis dili Discretionary Access Control, DAC), yəni oxumaq, yazmaq, icra etmək üçün icazələrin üstündə məcburi (və ya məcburi) girişə nəzarət modelini (İngiliscə Məcburi Giriş Nəzarəti, MAC) həyata keçirir.

SELinux-un üç rejimi var:

  1. İcra — siyasət qaydalarına əsaslanan girişdən imtina.
  2. İcazəli — icra rejimində qadağan olunacaq siyasəti pozan hərəkətlərin jurnalının aparılması.
  3. Əlil — SELinux-un tamamilə söndürülməsi.

Varsayılan olaraq parametrlər içəridədir /etc/selinux/config

SELinux rejimlərinin dəyişdirilməsi

Cari rejimi tapmaq üçün işə salın

$ getenforce

Rejimi icazə verənə dəyişdirmək üçün aşağıdakı əmri yerinə yetirin

$ setenforce 0

və ya rejimi dəyişmək üçün icazə verici haqqında tətbiq etmək, icra etmək

$ setenforce 1

SELinux-u tamamilə söndürmək lazımdırsa, bu, yalnız konfiqurasiya faylı vasitəsilə edilə bilər

$ vi /etc/selinux/config

Deaktiv etmək üçün SELINUX parametrini aşağıdakı kimi dəyişdirin:

SELINUX=disabled

SELinux-un qurulması

Hər bir fayl və proses istifadəçi, rol, növ və s. kimi əlavə məlumatları ehtiva edən SELinux konteksti ilə qeyd olunur. Əgər bu, SELinux-u ilk dəfə işə salırsınızsa, əvvəlcə konteksti və etiketləri konfiqurasiya etməlisiniz. Etiketlərin və kontekstin təyin edilməsi prosesi etiketləmə kimi tanınır. İşarələməyə başlamaq üçün konfiqurasiya faylında rejimi dəyişdiririk icazə verici.

$ vi /etc/selinux/config
SELINUX=permissive

Rejimi qurduqdan sonra icazə verici, adı ilə kökdə boş gizli fayl yaradın autorelabel

$ touch /.autorelabel

və kompüteri yenidən başladın

$ init 6

Qeyd: Biz rejimdən istifadə edirik icazə verici rejimdən istifadə edildiyi üçün işarələmə üçün tətbiq etmək yenidən başladıqda sistemin çökməsinə səbəb ola bilər.

Yükləmə hansısa faylda ilişib qalarsa, narahat olmayın, işarələmə bir qədər vaxt aparır. İşarələmə tamamlandıqdan və sisteminiz işə salındıqdan sonra konfiqurasiya faylına keçib rejimi təyin edə bilərsiniz tətbiq etməkvə həmçinin qaçın:

$ setenforce 1

İndi kompüterinizdə SELinux-u uğurla aktivləşdirdiniz.

Qeydlərin monitorinqi

Siz işarələmə zamanı və ya sistem işləyərkən bəzi xətalarla qarşılaşmış ola bilərsiniz. SELinux-un düzgün işlədiyini və hər hansı bir porta, proqrama və s.-yə girişi əngəlləmədiyini yoxlamaq üçün qeydlərə baxmaq lazımdır. SELinux jurnalı burada yerləşir /var/log/audit/audit.log, lakin səhvləri tapmaq üçün hər şeyi oxumağa ehtiyac yoxdur. Səhvləri tapmaq üçün audit2why yardım proqramından istifadə edə bilərsiniz. Aşağıdakı əmri yerinə yetirin:

$ audit2why < /var/log/audit/audit.log

Nəticədə, səhvlərin siyahısını alacaqsınız. Jurnalda heç bir səhv yox idisə, heç bir mesaj göstərilməyəcək.

SELinux Siyasətinin konfiqurasiyası

SELinux siyasəti SELinux təhlükəsizlik mexanizmini tənzimləyən qaydalar toplusudur. Siyasət müəyyən bir mühit üçün bir sıra qaydalar müəyyən edir. İndi biz qadağan olunmuş xidmətlərə girişə icazə vermək üçün siyasətləri necə konfiqurasiya edəcəyimizi öyrənəcəyik.

1. Məntiqi dəyərlər (açarlar)

Keçidlər (booleanlar) yeni siyasətlər yaratmadan siyasətin hissələrini icra zamanı dəyişməyə imkan verir. Onlar sizə SELinux siyasətlərini yenidən yükləmədən və ya yenidən tərtib etmədən dəyişikliklər etməyə imkan verir.

Misal
Tutaq ki, biz FTP oxumaq/yazmaq vasitəsilə istifadəçinin ev kataloqunu paylaşmaq istəyirik və biz onu artıq paylaşmışıq, lakin ona daxil olmaq istəyəndə heç nə görmürük. Bunun səbəbi, SELinux siyasətinin FTP serverinin istifadəçinin ev kataloqunu oxumasına və yazmasına mane olmasıdır. FTP serverinin ev kataloqlarına daxil ola bilməsi üçün siyasəti dəyişdirməliyik. Bunu etməklə bunun üçün açarların olub olmadığını görək

$ semanage boolean -l

Bu əmr mövcud açarları onların cari vəziyyəti (açıq və ya söndürülməsi) və təsviri ilə sadalayacaq. Yalnız ftp nəticələrini tapmaq üçün grep əlavə edərək axtarışınızı dəqiqləşdirə bilərsiniz:

$ semanage boolean -l | grep ftp

və aşağıdakıları tapacaqsınız

ftp_home_dir        -> off       Allow ftp to read & write file in user home directory

Bu keçid deaktivdir, ona görə də biz onu aktiv edəcəyik setsebool $ setsebool ftp_home_dir on

İndi bizim ftp demonumuz istifadəçinin ev kataloquna daxil ola biləcək.
Qeyd: Siz həmçinin təsviri olmayan mövcud açarların siyahısını etməklə əldə edə bilərsiniz getsebool -a

2. Etiketlər və kontekst

Bu, SELinux siyasətini həyata keçirməyin ən ümumi yoludur. Hər bir fayl, qovluq, proses və port SELinux konteksti ilə qeyd olunur:

  • Fayllar və qovluqlar üçün etiketlər fayl sistemində genişləndirilmiş atributlar kimi saxlanılır və onlara aşağıdakı əmrlə baxmaq olar:
    $ ls -Z /etc/httpd
  • Proseslər və portlar üçün etiketləmə nüvə tərəfindən idarə olunur və siz bu etiketlərə aşağıdakı kimi baxa bilərsiniz:

proses

$ ps –auxZ | grep httpd

liman

$ netstat -anpZ | grep httpd

Misal
İndi etiketləri və konteksti daha yaxşı başa düşmək üçün bir nümunəyə baxaq. Deyək ki, qovluq əvəzinə veb serverimiz var /var/www/html/ использует /home/dan/html/. SELinux bunu siyasətin pozulması hesab edəcək və siz veb səhifələrinizə baxa bilməyəcəksiniz. Bunun səbəbi, biz HTML faylları ilə əlaqəli təhlükəsizlik kontekstini təyin etməmişik. Standart təhlükəsizlik kontekstinə baxmaq üçün aşağıdakı əmrdən istifadə edin:

$ ls –lz /var/www/html
 -rw-r—r—. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/

Budur, əldə etdik httpd_sys_content_t html faylları üçün kontekst kimi. Hazırda aşağıdakı kontekstdə olan cari kataloqumuz üçün bu təhlükəsizlik kontekstini təyin etməliyik:

-rw-r—r—. dan dan system_u:object_r:user_home_t:s0 /home/dan/html/

Fayl və ya kataloqun təhlükəsizlik kontekstini yoxlamaq üçün alternativ əmr:

$ semanage fcontext -l | grep '/var/www'

Düzgün təhlükəsizlik kontekstini tapdıqdan sonra konteksti dəyişdirmək üçün semanage-dən də istifadə edəcəyik. /home/dan/html kontekstini dəyişdirmək üçün aşağıdakı əmrləri yerinə yetirin:

$ semanage fcontext -a -t httpd_sys_content_t ‘/home/dan/html(/.*)?’
$ semanage fcontext -l | grep ‘/home/dan/html’
/home/dan/html(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
$ restorecon -Rv /home/dan/html

Semanage istifadə edərək kontekst dəyişdirildikdən sonra restorecon əmri fayl və qovluqlar üçün standart konteksti yükləyəcək. Veb serverimiz indi qovluqdakı faylları oxuya biləcək /home/dan/htmlçünki bu qovluq üçün təhlükəsizlik konteksti dəyişdirilib httpd_sys_content_t.

3. Yerli siyasətlər yaradın

Yuxarıdakı üsulların sizə heç bir faydası olmadığı və audit.log-da səhvlər (avc/inkar) alacağınız vəziyyətlər ola bilər. Bu baş verdikdə, yerli siyasət yaratmalısınız. Yuxarıda təsvir edildiyi kimi audit2why istifadə edərək bütün səhvləri tapa bilərsiniz.

Səhvləri həll etmək üçün yerli siyasət yarada bilərsiniz. Məsələn, httpd (apache) və ya smbd (samba) ilə bağlı xəta alırıq, səhvləri araşdırırıq və onlar üçün siyasət yaradırıq:

apache
$ grep httpd_t /var/log/audit/audit.log | audit2allow -M http_policy
samba
$ grep smbd_t /var/log/audit/audit.log | audit2allow -M smb_policy

Burada http_policy и smb_policy bizim yaratdığımız yerli siyasətlərin adlarıdır. İndi biz bu yaradılmış yerli siyasətləri cari SELinux siyasətinə yükləməliyik. Bu aşağıdakı kimi edilə bilər:

$ semodule –I http_policy.pp
$ semodule –I smb_policy.pp

Yerli siyasətlərimiz endirildi və biz audit.log-da daha heç bir avc və ya denail almamalıyıq.

Bu, SELinux-u başa düşməyinizə kömək etmək cəhdim idi. Ümid edirəm ki, bu yazını oxuduqdan sonra SELinux ilə özünüzü daha rahat hiss edəcəksiniz.

Mənbə: www.habr.com

Добавить комментарий