Terminalda root, SELinux altında rədd edildi: qarmaq nə üçün uğursuz olur
Əllə mükəmməl işləyən qarmaq xidmətin içində rədd edilə bilər. Redaktə etməzdən əvvəl proses domenini, fayl etiketini və rədd edilmiş icazəni müqayisə edin.
Siz up skriptini root kimi işlədirsiniz, o tamamlanır və xidmət onu çağıranda eyni skript uğursuz olur. Fayl icazələrində heç nə dəyişməyib, ona görə də növbəti təbii addım onları yenidən yumşaltmaqdır ki, bu heç nəyi düzəltmir. SELinux hostunda həlledici amil çox vaxt prosesin kim olması deyil, onun hansı domenə aid olmasıdır və məhdud domenin içindəki root yenə də məhduddur.
Eyni əmr, iki fərqli təhlükəsizlik domeni
Tip məcburiyyəti mənbə domenini, hədəf etiketini və tələb olunan əməliyyatı birlikdə qiymətləndirir. Sizin terminal sessiyanız məhdudiyyətsiz və ya inzibati domendə işləyir, daemon isə öz vahidinə təyin edilmiş domendə işləyir. Buna görə eyni əmrlər fərqli qərarlar verir və bu fərq siyasətdəki xəta deyil, dizayn nəticəsidir.
Bu, iki işə salmanı müqayisə etməyin yalnız onların kontekstlərini müqayisə etdikdə faydalı olmasının səbəbidir. Eyni əmri qabıqdan və qarmaqdan işə salın; qabıq versiyası binarın mövcud olduğunu və arqumentlərin doğru olduğunu sübut edir, amma xidmətin onu icra etməsinə icazə verilib-verilmədiyi barədə heç nə sübut etmir. Hər iki yolla işə salın və yalnız çıxış kodlarını deyil, domenləri müqayisə edin. Məhz bu müqayisə qeyri-müəyyən icazə şikayətini bir domen və bir etiket haqqında konkret suala çevirir.
Bu nasazlığın klassik forması xarici alət çağıran köməkçidir. Qarmağın özünə icazə verilə bilər, halbuki onun çağırdığı alət xidmət domeninin icra edə bilmədiyi etiket daşıyır və ya etiketi buna imkan verməyən qovluğa yazır.
AVC qeydini qarmaq xətasının yanında oxuyun
AVC rəddi işi həll edən sahələri adlandırır: prosesin mənbə konteksti, obyektin hədəf konteksti, obyekt sinfi və rədd edilmiş konkret icazə. Nəzəriyyə qurmadan əvvəl dördünü də oxuyun, çünki icraya dair rədd ilə yazmaya dair rədd tamamilə fərqli düzəlişlərə malikdir.
ausearch -m AVC,USER_AVC -ts recent
ls -Z /usr/local/sbin/vpn-up.sh
ps -eZ | grep openvpn
Mənbə konteksti xidmətin həqiqətən işlədiyi domenə, hədəf konteksti isə əməliyyatın toxunduğu faylın və ya qovluğun etiketinə uyğun olmalıdır. Əgər bunlardan biri izlədiyiniz xətaya uyğun gəlmirsə, siz başqa hadisə oxuyursunuz.
Qeydin yanında siyasətin versiyasını və dəqiq icra olunan yolunu qeyd edin. Bir distributivin siyasətində görünən domen adı həmin quraşdırma üçün sübutdur, başqa bir qurğunun eyni qaydaları daşıdığına zəmanət deyil. Məhz bu kontekst başqasına sizin nəticənizi öz hostunda təkrar etməyə imkan verir. O olmadan qeyd sübut kimi deyil, lətifə kimi oxunur.
Etiket, konfiqurasiya və ya siyasət: üç düzəliş
Birinci düzəliş faylın quraşdırılmış yeri ilə uyğun gəlməyən etiketdir. cp ilə yerinə köçürülmüş və ya redaktorla yazılmış skript xidmət domeninin istifadə edə bilmədiyi standart etiket daşıya bilər və gözlənilən kontekstin bərpası siyasətə heç toxunmadan bunu düzəldir.
İkincisi konfiqurasiyadır. Distributiv əməliyyatı işə salmaq üçün dəstəklənən üsul, köməkçi üçün sənədləşdirilmiş qovluq və ya onu artıq icazə verən yenilənmiş siyasət paketi təqdim edə bilər. Düzülüşünüzü dəstəklənən birinə dəyişmək siyasət yazmaqdan ucuzdur və yeniləmələrə davam edir.
Üçüncüsü həqiqətən çatışmayan qaydadır və son çarə olmalıdır. Audit alətləri ilə namizəd yaradın, onun həqiqətən nəyə icazə verdiyini oxuyun, müşahidə etdiyiniz əməliyyat və domenlə məhdudlaşdırın və istehsala yaxınlaşmadan əvvəl başqasına nəzərdən keçirdin.
Nə üçün köhnə icazə modulu cavab deyil
Bu nasazlıq üçün axtarış nəticələri hazır modullarla doludur, çox vaxt qarmağın artıq çağırmadığı alət üçün. Birini quraşdırmaq rəddinizlə heç bir əlaqəsi olmaya biləcək icazələr verir və əsl uyğunsuzluğu yerində saxlayaraq daimi bir deşik əlavə edir.
O, növbəti nasazlığı da gizlədir. Geniş əməliyyat sinfinə icazə verən modul bu xətanı yox edəcək və növbətini aid etməsi çox daha çətin bir şeyə çevirəcək. Modulu sonradan silmək də heç kimin planlaşdırmaq istəmədiyi dəyişiklikdir, ona görə qısa yol adətən daimi olur.
İntizamlı müqayisə oxuya bildiyiniz rədd ilə təklif etdiyiniz dəyişiklik arasındadır. Red Hat-ın SELinux problemlərinin aradan qaldırılması təlimatı etiketləmə və konfiqurasiya yoxlamalarını məhz bu səbəbdən yaradılmış siyasətdən əvvəl qoyur. Əgər qeyddə uyğun rədd yoxdursa, SELinux çox güman ki sizin probleminiz deyil və yol, sandbox və ya icazə məsələləri hələ açıqdır.