CodeGym /Kurslar /Docker SELF /SELinux-a giriş: statusun yoxlanılması, aktivləşdirilməsi...

SELinux-a giriş: statusun yoxlanılması, aktivləşdirilməsi, əsas komandalar

Docker SELF
Səviyyə , Dərs
Mövcuddur

SELinux-a giriş: statusun yoxlanılması, aktivləşdirilməsi, əsas komandalar

1. SELinux nədir və niyə lazımdır?

SELinux (Security-Enhanced Linux) — hüquqların idarə edilməsinin ənənəvi modelini gücləndirən bir təhlükəsizlik moduludur. Bu sistem icbari nəzarət konsepsiyasını əlavə edərək, administratora istifadəçilər və hətta proseslər üçün daha sərt məhdudiyyətlər tətbiq etməyə imkan verir. Bununla da potensial hücumlardan yaranan ziyan minimuma endirilmiş olur.

Onun unikallığı nədədir?

Təsəvvür edin ki, sizin sisteminiz – bu bir evdir. Ənənəvi hüquqların idarəsi (rwx istifadəçi, qrup və digərləri üçün) – bu qapının kilidindən olan açarlardır. Amma bəs kimsə qapını sındırsa nə olacaq? SELinux ikinci müdafiə xətti olur, davranış qaydaları ilə müdafiəni gücləndirir: "Hey, hətta içəri daxil olsan da, vanna otağına girmək olmaz!"

SELinux-un əsas vəzifələri:

  1. Proseslər və fayllar üçün icazəsiz girişdən müdafiə.
  2. Proses hack olunmuş olsa belə, hücumlardan yaranan zərərin azaldılması.
  3. "Default qorunma" prinsipləri (hər şey qadağandır, yalnız icazə verilənlər mümkündür).

SELinux-un iş rejimləri

SELinux üç rejimdə işləyə bilər:

  1. Enforcing — aktivdir, təhlükəsizlik siyasətini tətbiq edir və qaydaları pozan prosesləri bloklayır.
  2. Permissive — yalnız qayda pozuntularını xəritəyə yazır, amma fəaliyyətləri bloklamır.
  3. Disabled — tamamilə deaktivdir
Maraqlı fakt:
<div class="lesson

2. SELinux statusunun yoxlanması

Əvvəlcə gəlin görək, SELinux aktivdir mi və hansı rejimdə işləyir. Bunun üçün bir neçə rahat komanda mövcuddur.

getenforce komandası

Bu komanda sizə hazırda hansı rejimin istifadə olunduğunu sadəcə deyəcək: Enforcing, Permissive, ya da Disabled.

$ getenforce
Enforcing

Əgər nəticə Disabled olarsa, deməli SELinux söndürülüb — və bu o deməkdir ki, aktivləşdirmək üçün bir az çalışmalı olacaqsınız, amma bu barədə sonra danışacağıq.

sestatus komandası

SELinux-un statusu haqqında daha ətraflı məlumat almaq üçün bu komandadan istifadə edin. O, cari vəziyyəti, aktiv rejimi və istifadə olunan siyasəti göstərəcək.

$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing

Burada siz bunu görə bilərsiniz:

  • enabled/disabled — SELinux-un aktiv olub-olmaması.
  • current mode — aktiv rejim (enforcing, permissive).
  • loaded policy name — yüklənmiş siyasət. Məsələn, "targeted" SELinux-un yalnız əsas proseslərə nəzarət apardığını bildirir.

3. SELinux rejimlərinin dəyişdirilməsi

SELinux-un cari iş rejimini dəyişdirmək üçün setenforce komandasından istifadə olunur.

Permissive rejiminə keçid

Əgər müvəqqəti olaraq SELinux-u "yumşaltmaq" istəyirsinizsə, permissive rejimini aktivləşdirə bilərsiniz.

$ sudo setenforce 0

İndi SELinux yalnız qayda pozuntularını qeyd edəcək, amma onları bloklamayacaq. Yeni tənzimləməni getenforce komandasının köməyi ilə yoxlaya bilərsiniz:

$ getenforce
Permissive

Enforcing rejiminə geri keçid

Əgər yenidən sərt nəzarəti aktivləşdirmək istəyirsinizsə, bunu yerinə yetirin:

$ sudo setenforce 1

Və təbii ki, nəticəni yoxlayın:

$ getenforce
Enforcing

Bu dəyişiklik dərhal tətbiq olunur, amma yalnız növbəti sistem yenidən başlatmasına qədər qüvvədədir.


4. SELinux-un aktivləşdirilməsi

Əgər SELinux deaktiv edilibsə, konfiqurasiya faylında dəyişiklik etmək lazımdır. SELinux /etc/selinux/config faylı vasitəsilə idarə olunur.

Hazırkı konfiqurasiya faylını yoxlamaq

Görək orada nə tənzimlənib. Hər hansı bir mətn redaktoru istifadə edin, məsələn nano:

$ sudo nano /etc/selinux/config

Orada belə bir şey görəcəksiniz:

# Bu fayl sistemdəki SELinux vəziyyətini idarə edir.
SELINUX=disabled
SELINUXTYPE=targeted

SELinux-u aktiv vəziyyətə keçirmək

SELinux-u aktivləşdirmək üçün SELINUX=disabled sətrini SELINUX=enforcing və ya SELINUX=permissive olaraq dəyişdirin.

Dəyişiklikdən sonra faylın nümunəsi belə görünəcək:

# Bu fayl sistemdəki SELinux vəziyyətini idarə edir.
SELINUX=enforcing
SELINUXTYPE=targeted

Dəyişiklikləri etdikdən sonra faylı yadda saxlayın və sistemi yenidən başladın:

$ sudo reboot

Restartdan sonra, SELinux-un aktiv olduğunu təsdiqləmək üçün sestatus istifadə edərək vəziyyəti yoxlaya bilərsiniz.


5. SELinux kontekstlərinin analizi

Kontekstlər nədir?

Kontekstlər — SELinux-un giriş idarəsi üçün istifadə etdiyi etiketlərdir. Hər bir faylın, prosesin və istifadəçinin öz konteksti var.

Faylların kontekstlərinə baxmaq üçün ls -Z komandasından istifadə edə bilərsiniz. Məsələn:

$ ls -Z /var/www/html
-rw-r--r--. root root unconfined_u:object_r:httpd_sys_content_t:s0 index.html

Bu nə deməkdir?

  1. unconfinedu — SELinux istifadəçisi.
  2. objectr — obyekt növü.
  3. httpdsyscontent_t — giriş növü (bu halda web-serverlə bağlıdır).
  4. s0 — təhlükəsizlik səviyyəsi.

Kontekstin dəyişdirilməsi

Əgər SELinux tətbiqinizin işinə mane olursa, ola bilsin ki, faylın kontekstini dəyişməlisiniz. chcon komandasını istifadə edin:

$ sudo chcon -t httpd_sys_content_t /var/www/html/index.html

Bu komanda müvəqqəti olaraq faylın kontekst növünü dəyişdirir. Ancaq yenidən yükləndikdən sonra dəyişikliklər itə bilər, buna görə daimi tənzimləmələr üçün SELinux siyasətini modifikasiya etmək daha yaxşıdır (bu barədə sonra danışacağıq).


6. SELinux ilə iş nümunəsi

Gəlin bir nümunəyə baxaq. Siz server administratorusunuz və veb-serveri işə salmaq istəyirsiniz, amma SELinux /var/www/html qovluğundakı fayllara girişi bloklayır.

Addımlar:

  1. SELinux-un statusunu yoxlayın:

    $ sestatus
    

    Əmin olun ki, SELinux aktivdir və enforcing-rejimdə işləyir.

  2. Faylların kontekstlərinə baxın:

    $ ls -Z /var/www/html
    
  3. Əgər kontekst düzgün deyilsə, onu dəyişin:

    $ sudo chcon -t httpd_sys_content_t /var/www/html/*
    
  4. Veb-serverin işini yoxlayın.


7. Tipik səhvlər və problemlər

  1. SELinux deaktivdir və siz bunu fərq etmirsiniz. Həmişə statusu sestatus ilə yoxlayın. Bir çox administratorlar sistem quraşdırıldıqdan sonra SELinux-u aktivləşdirməyi unudur.

  2. "Niyə mənim servis işləmir?" SELinux girişi bloklayır. Analiz üçün audit.log-dan istifadə edin:

    $ sudo cat /var/log/audit/audit.log | grep denied
    
  3. Kontekst dəyişiklikləri saxlanılmır. chcon əvəzinə daimi dəyişikliklər üçün semanage kimi komandaları istifadə edin.

SELinux-un öyrənilməsi marafona hazırlaşmağa bənzəyir: əvvəlcə çətin ola bilər, amma zamanla başa düşəcəksiniz ki, bu alət sistemin təhlükəsizliyini əhəmiyyətli dərəcədə artırır. Bu biliklərdən istifadə edərək, ən qabaqcıl hakerin belə keçə bilməyəcəyi admin olun.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION