Uruchamiasz skrypt up jako root, kończy się, a ten sam skrypt zawodzi, gdy usługa go wywołuje. W uprawnieniach pliku nic się nie zmieniło, więc naturalnym następnym krokiem jest ponowne ich poluzowanie, co niczego nie naprawia. Na hoście SELinux czynnikiem decydującym często nie jest to, kim jest proces, ale to, w której domenie działa, a root w ograniczonej domenie pozostaje ograniczony.

To samo polecenie, dwie różne domeny bezpieczeństwa

Wymuszanie typów ocenia domenę źródłową, etykietę docelową i żądaną operację razem. Twoja sesja terminala działa w domenie nieograniczonej lub administracyjnej, a demon działa w domenie przypisanej jego jednostce. Dlatego identyczne polecenia dają różne decyzje, a różnica jest zamierzona, a nie błędem w polityce.

Dlatego porównanie obu uruchomień jest przydatne tylko wtedy, gdy porównasz ich konteksty. Uruchom to samo polecenie z powłoki i z hooka, a wersja z powłoki dowodzi, że plik binarny istnieje i argumenty są poprawne; nie dowodzi niczego o tym, czy usługa ma prawo go uruchomić. Uruchom je oboma sposobami i porównaj domeny, nie tylko kody wyjścia. Właśnie to porównanie zamienia mgliste skargi na uprawnienia w konkretne pytanie o jedną domenę i jedną etykietę.

Klasyczną formą tej usterki jest pomocnik, który wywołuje zewnętrzne narzędzie. Sam hook może być dozwolony, podczas gdy narzędzie, które wywołuje, ma etykietę, której domena usługi nie może uruchomić, albo zapisuje do katalogu, którego etykieta tego zabrania.

Przeczytaj rekord AVC obok błędu hooka

Odmowa AVC nazywa pola, które rozstrzygają sprawę: kontekst źródłowy procesu, kontekst docelowy obiektu, klasę obiektu i konkretne uprawnienie, które zostało odrzucone. Przeczytaj wszystkie cztery, zanim stworzysz teorię, ponieważ odmowa wykonania i odmowa zapisu wymagają zupełnie innych napraw.

ausearch -m AVC,USER_AVC -ts recent
ls -Z /usr/local/sbin/vpn-up.sh
ps -eZ | grep openvpn

Kontekst źródłowy powinien odpowiadać domenie, w której usługa faktycznie działa, a kontekst docelowy etykiecie pliku lub katalogu, którego dotknęła operacja. Jeśli któryś z nich nie pasuje do błędu, którego szukasz, czytasz inne zdarzenie.

Zanotuj obok rekordu wersję polityki i dokładną ścieżkę pliku wykonywalnego. Nazwa domeny pojawiająca się w polityce jednej dystrybucji jest dowodem dotyczącym tej instalacji, a nie gwarancją, że inna kompilacja dostarcza te same reguły. To właśnie ten kontekst pozwala komuś innemu odtworzyć twój wniosek na własnym hoście. Bez niego rekord czyta się jak anegdota, a nie jak dowód.

Etykieta, konfiguracja czy polityka: trzy naprawy

Pierwszą naprawą jest etykieta, która nie pasuje do zainstalowanej lokalizacji pliku. Skrypt skopiowany na miejsce za pomocą cp lub napisany w edytorze może nosić domyślną etykietę, której domena usługi nie może użyć, a przywrócenie oczekiwanego kontekstu naprawia to bez dotykania polityki.

Druga to konfiguracja. Dystrybucja może oferować obsługiwany sposób uruchamiania operacji, udokumentowany katalog dla pomocnika lub zaktualizowany pakiet polityki, który już to umożliwia. Zmiana układu na obsługiwany jest tańsza niż pisanie polityki i przetrwa aktualizacje.

Trzecia to naprawdę brakująca reguła i powinna być ostatecznością. Wygeneruj kandydata narzędziami audytu, przeczytaj, czego naprawdę dotyczy zgoda, zawęź go do zaobserwowanej operacji i domeny, i pozwól komuś innemu go przejrzeć, zanim zbliży się do produkcji.

Dlaczego stary moduł allow nie jest odpowiedzią

Wyniki wyszukiwania dla tej usterki są pełne gotowych modułów, często dla narzędzia, którego hook już nie wywołuje. Zainstalowanie jednego daje uprawnienia, które mogą nie mieć nic wspólnego z twoją odmową, i pozostawia prawdziwą niezgodność na miejscu, dodając trwałą dziurę.

Ukrywa też następną awarię. Moduł, który zezwala na szeroką klasę operacji, sprawi, że ten błąd zniknie, i zamieni następny w coś znacznie trudniejszego do przypisania. Usunięcie modułu później też jest zmianą, której nikt nie chce planować, więc skrót ma tendencję do utrwalania się.

Zdyscyplinowane porównanie dotyczy odmowy, którą możesz przeczytać, i zmiany, którą proponujesz. Podręcznik Red Hata do rozwiązywania problemów z SELinuxem stawia kontrole etykiet i konfiguracji przed wygenerowaną polityką właśnie z tego powodu. Jeśli w rekordzie nie ma odpowiedniej odmowy, SELinux prawdopodobnie nie jest twoim problemem, a problemy ze ścieżką, sandboxem lub uprawnieniami pozostają otwarte.

Powiązane artykuły