Szybkie poskromienie SELinuksa

SELinux to nakładka na linuksowe jądro, kontrolująca przydzielanie zasobów dla różnych aplikacji. Początkujący administratorzy systemów redhatopodobnych, jak CentOS czy Fedora niejednokrotnie stają przed poważnym problemem: jak uporać się z restrykcyjną polityką SELinuksa, który niczym Hubert Urbański w „Milionerach” będzie się dwieście razy pytał, czy „ostatecznie i definitywnie” pozwolić Apache’owi na dostęp do takiego czy innego katalogu?

Sam jestem amatorem, który nieraz miał ochotę wpisać set enforce 0, by przełączyć SELinuksa w tryb pobłażliwy, albo w ogóle się tego wynalazku pozbyć. Wychodzę jednak z założenia, że SELinux służy jednak czemuś pożytecznemu i lepiej spróbować z nim po dobroci. Na szczęście na ogół wystarczy odnaleźć w /var/log/messages komunikat z kodem dla programu sealert, który podaje gotowe rozwiązania, np. jaką opcję należy przełączyć za pomocą setsebool.

Są jednak przypadki, gdy porady sealert są zbyt enigmatyczne. W takich wypadkach FAQ Fedory radzi skorzystać z programu audit2allow. Zasada jest bardzo prosta. Najpierw generujemy zestaw regułek, które pozwalają obejść ostatnio napotkane błędy:

# audit2allow -m local -l -i /var/log/messages > local.te

Jeżeli nasz system korzysta z pliku /var/log/audit/audit.log to w nim program znajdzie potrzebne mu informacje:

# audit2allow -m local -l -i /var/log/audit/audit.log > local.te

Teraz możemy przejrzeć local.te i usunąć regułki, które nas nie interesują, by nie odblokować w systemie zbyt wielu zabezpieczeń.

Następnie upewniamy się, że mamy zainstalowany pakiet checkpolicy i kompilujemy moduł z naszymi regułkami, po czym generujemy paczkę:

# checkmodule -M -m -o local.mod local.te
# semodule_package -o local.pp -m local.mod

Na koniec dodajemy ją do obowiązującej w systemie polityki bezpieczeństwa (może to chwilę potrwać):

# semodule -i local.pp

Należy przy tym pamiętać, że jeżeli w pamięci jest już moduł o nazwie local, to zostanie nadpisany przez swoją nową wersję!

Dodawanie komentarzy

XHTML: Możesz używać tagów: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">