Powody do wyłączenia / włączenia SELinux

36

W związku z tym pytaniem na StackOverflow i zupełnie innym tłumie, jaki tu mamy, zastanawiam się: jakie są powody, aby wyłączyć SELinux (zakładając, że większość ludzi nadal to robi)? Czy chcesz, aby było włączone? Jakie anomalie wystąpiły po pozostawieniu SELinux włączonego? Oprócz Oracle, którzy inni dostawcy mają problemy z obsługą systemów z włączonym SELinux?

Dodatkowe pytanie: Czy komuś udało się uruchomić Oracle na RHEL5 z SELinuksem w trybie wymuszonym? To znaczy, ścisłe byłyby niesamowite, ale nie sądzę, że jest to jeszcze możliwe, więc najpierw bądźmy ukierunkowani ;-)

wzzrd
źródło

Odpowiedzi:

25

RedHat domyślnie włącza SELinux, ponieważ jest bezpieczniejszy. Niemal każdy sprzedawca, który korzysta z produktów pochodzących z Redhat, wyłącza SELinux , ponieważ nie chce tracić czasu (a więc i pieniędzy), aby dowiedzieć się, dlaczego to nie działa. Ludzie Redhat / Fedora poświęcili mnóstwo czasu i wysiłku, dzięki czemu SELinux jest bardziej opłacalną opcją w Enterprise, ale niewiele innych organizacji naprawdę dba o twoje bezpieczeństwo. (Dbają o swoje bezpieczeństwo i reputację bezpieczeństwa swojego produktu, co jest zupełnie inną rzeczą).

Jeśli możesz sprawić, by działało, to idź. Jeśli nie możesz, nie oczekuj dużej pomocy ze strony sprzedawców. Prawdopodobnie możesz uzyskać pomoc od facetów Redhat / Fedora, z list mailingowych selinux i kanału #selinux na freenode. Ale od firm takich jak Oracle - cóż, SELinux tak naprawdę nie bierze pod uwagę ich biznesplanu.

tylerl
źródło
8
Dostawca oprogramowania dla przedsiębiorstw zatrudniony w celu zainstalowania swojego produktu rozwiązał problem z uprawnieniami, wykonując chmod -R 777 * na dużym drzewie katalogów. Naprawdę nie dbają o twoje bezpieczeństwo.
kmarsh
21

Zazwyczaj lepiej jest uruchomić SELinux w Permissive niż całkowicie go wyłączyć. Następnie możesz po chwili sprawdzić (via audit2why), aby sprawdzić, jakie rodzaje naruszeń zostałyby odrzucone podczas regularnego użytkowania, i stworzyć niestandardowe zasady, audit2allowjeśli te „naruszenia” są fałszywie pozytywne dla twojej konfiguracji.

Zauważyłem, że zachowanie SELinuksa w systemach nie pochodzących z Fedory jest znacznie bardziej dotkliwe niż to, co dostajesz z typowym systemem Fedora / RHEL domyślnie.

Jeśli jeszcze go nie widziałeś, możesz znaleźć edukacyjny Podręcznik użytkownika Fedory SELinux .

Ophidian
źródło
16

Powody dla:

  • Wyższy poziom bezpieczeństwa dzięki obowiązkowej kontroli dostępu
  • Potrzebujesz powodu wykraczającego poza wyższy poziom bezpieczeństwa? :-)

Powody przeciwko:

  • Trudne do zrozumienia
  • Trudne w zarządzaniu
  • Trudne do rozwiązania

To powiedziawszy, jeśli rozważasz SELinux, polecam książkę SELinux przez przykład .

Pracowałem dla firmy , która włączyła SELinux w trybie wymuszania na każdym systemie. Kluczem było dla nas zrozumienie i wykorzystanie programu audit2allow, którego można użyć do tworzenia nowych reguł kontekstowych.

Najpierw wygenerowalibyśmy szablon za pomocą audit2allow, a następnie użyliśmy skryptu, aby go zbudować, w następujący sposób:

export NAME="my_serviced"
sudo audit2allow -m "${NAME}" -i /var/log/audit/audit.log > ${NAME}.te
sudo setup_semodule ${NAME}

Skrypt setup_semodule:

#!/bin/sh

# Where to store selinux related files
SOURCE=/etc/selinux/local
BUILD=/etc/selinux/local
NAME=$1

/usr/bin/checkmodule -M -m -o ${BUILD}/${NAME}.mod ${SOURCE}/${NAME}.te
/usr/bin/semodule_package -o ${BUILD}/${NAME}.pp -m ${BUILD}/${NAME}.mod
/usr/sbin/semodule -i ${BUILD}/${NAME}.pp

/bin/rm ${BUILD}/${NAME}.mod ${BUILD}/${NAME}.pp

To buduje moduł z szablonu (plik .te), generuje pakiet, a następnie ładuje moduł.

Użyliśmy Puppet do naszego systemu zarządzania konfiguracją i napisaliśmy konfigurację dla Puppet do zarządzania tym wszystkim.

Moduł kukiełkowy SELinux:

jtimberman
źródło
2
+1, bardzo przydatna informacja.
DCookie,
10

Powodem wyłączenia jest to, że debugowanie może być uciążliwe.

Jednak teraz go nie wyłączamy. Prawie zawsze działamy. Czasami wyłączam to, aby szybko sprawdzić, czy SElinux jest problemem, czy nie.

O wiele łatwiej jest teraz debugować, zwłaszcza jeśli zapoznasz się z audit2allow. Tak naprawdę nie musisz tego rozumieć za pomocą audit2allow, ale czasami może się okazać, że otworzysz się bardziej niż myślisz z audit2allow. Powiedziawszy, że niektóre SELinux jest lepsze niż żadne.

W żadnym wypadku nie jestem ekspertem od SELinux i używam go od kilku lat. Wciąż nie rozumiem podstaw, ale wiem wystarczająco dużo, aby uruchomić aplikacje, w tym te zawarte w dystrybucji i losowe rzeczy skompilowane z sieci.

Główną rzeczą, jaką miałem do wykorzystania są ls -lZ(pokaż kontekst SELinux), audit2allow, chcon, semodule, getenforce, setenforcei wartości logiczne. Dzięki tym narzędziom udało mi się pobrać każdą aplikację, której potrzebowałem do działania w SELinux.

Uważam, że jednym z dużych problemów z debugowaniem problemów z SELinux jest po prostu zapamiętanie, aby sprawdzić problemy z SELinux, gdy mam inne mądre niewytłumaczalne problemy. Zwykle zajmuje mi trochę rozumu, żeby przejść „h! Sprawdź SELinux !!”.

Według strony man bind SELinux jest znacznie bezpieczniejszy niż uruchamianie binda w więzieniu chroot. Wiele innych osób, które mają znacznie więcej wskazówek, niż ja polecam, więc teraz prowadzę to na ślepo. Podejrzewam, że mimo sporadycznych problemów prawdopodobnie warto to zrobić.

Jason Tan
źródło
2
+1 za wskazanie, że często lepiej jest pozostawić uruchomiony SELinux i wyłączyć go tylko w celu sprawdzenia, czy to jest przyczyną problemu.
Ophidian
2

Wyłączyłem SELinux dla AppArmor , uważam, że jest o wiele bardziej przyjazny i łatwy w utrzymaniu niż SELinux.

LiraNuna
źródło
Ciekawy. Na jakiej dystrybucji jesteś? Nigdy nie korzystałem z AppArmor, ale jestem ciekawy, jaką dystrybucję skonfigurował po wyjęciu z pudełka i jakie są cechy. Przyjrzę się temu. Osobiście nie mam kłopotów z SELinux, btw, ale trzeba się przyzwyczaić.
wzzrd
AppArmor został pierwotnie opracowany przez firmę Novell i jest domyślnie dołączany do wszystkich dystrybucji openSUSE i SUSE Linux Enterprise. Jest on domyślnie włączony w dystrybucjach Enterprise i łatwo go włączyć w dystrybucjach konsumenckich. Ubuntu ma go od 7.04, ale domyślnie nie wymusza automatycznie każdej aplikacji.
andrewd18
Wydaje mi się, że pamiętam kilka rozmów o Novellu zwalniającym większość zespołu AppArmor. Czy Ubuntu nie zrzucił go z dystrybucji? A może znów słyszę głosy w mojej głowie? ;-)
wzzrd
Novell tak zrobił - ale autor wciąż pracuje nad tym, co jest nieodpłatne. Nadal jest obsługiwany w Ubuntu, a takie rzeczy jak cup i mysqld są domyślnie wymuszane.
LiraNuna,
Nie zawsze, ale często wymieniamy łatwość użycia dla bezpieczeństwa i odwrotnie. Jest to działanie równoważące, a odpowiedź nie jest trywialna, głównie ze względu na zdefiniowanie ryzyka, a cele bezpieczeństwa są bardzo trudnym zadaniem.
rev
1

Nie ma powodu, aby go wyłączać, gdy można go uruchomić w trybie zezwolenia. Nie będzie zakłócać działania uruchomionej aplikacji i nadal zapewni przydatne rejestrowanie bezpieczeństwa. Jedyny wyjątek dotyczy kontekstów użytkownika: jeśli zmieniasz się między różnymi użytkownikami mieszkającymi w innej instancji Linuksa działającej w chroot, możesz mieć problemy.

Federico
źródło
W rzeczywistości istnieją przypadki, w których SELinux może zakłócać aplikacje w trybie zezwolenia. Po pierwsze: w niektórych momentach egzekwowano pewne reguły, mimo że system był dopuszczalny. Nie jestem pewien, czy nadal tak jest. Po drugie: czas potrzebny na przetworzenie zasad może wystarczyć, by spieprzyć IPC. Widziałem to z klastrami Oracle. Znowu w przeszłości i nie jestem pewien, jaki jest obecny stan. Pamiętaj jednak, że prawie każde wywołanie systemowe ma trochę czasu przetwarzania.
Jason Tan
0

SE Linux nie jest tak beznadziejnie nieprzyjazny jak kiedyś, przynajmniej nie ma go w obsługiwanych komercyjnie dystrybucjach takich jak RHEL5. W przeważającej części możesz to pozostawić włączone i wszystko będzie w porządku z RedHatem. Cokolwiek innego może być zmienne. Problem polega na tym, że profesjonalne usługi serwisowe mające na celu umożliwienie aplikacjom pracy z obsługą SE Linux są dobrym źródłem przychodów dla firm takich jak RedHat i Oracle, więc nie mają motywacji, aby wszystko działało dobrze.

maź
źródło
Nie sądzę, żeby Oracle oficjalnie wspierało SELinuksa
wzzrd