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:
- Proseslər və fayllar üçün icazəsiz girişdən müdafiə.
- Proses hack olunmuş olsa belə, hücumlardan yaranan zərərin azaldılması.
- "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:
- Enforcing — aktivdir, təhlükəsizlik siyasətini tətbiq edir və qaydaları pozan prosesləri bloklayır.
- Permissive — yalnız qayda pozuntularını xəritəyə yazır, amma fəaliyyətləri bloklamır.
- Disabled — tamamilə deaktivdir
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?
- unconfinedu — SELinux istifadəçisi.
- objectr — obyekt növü.
- httpdsyscontent_t — giriş növü (bu halda web-serverlə bağlıdır).
- 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:
SELinux-un statusunu yoxlayın:
$ sestatus
Əmin olun ki, SELinux aktivdir və enforcing-rejimdə işləyir.
Faylların kontekstlərinə baxın:
$ ls -Z /var/www/html
Əgər kontekst düzgün deyilsə, onu dəyişin:
$ sudo chcon -t httpd_sys_content_t /var/www/html/*
Veb-serverin işini yoxlayın.
7. Tipik səhvlər və problemlər
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."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
Kontekst dəyişiklikləri saxlanılmır.
chcon
əvəzinə daimi dəyişikliklər üçünsemanage
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.
GO TO FULL VERSION