Badam podstawowe zasady działania SELinuksa i przydałoby się wywołać odmowę. Na mojej maszynie testowej działa CentOS 7, jest to podstawowa instalacja serwera bez żadnych dodatkowych usług, a getenforce stwierdza „Egzekwowanie”. Byłem więc pewien, że uczynienie / root czytelnym dla świata i próba odczytania plików stamtąd jako nieuprzywilejowanego użytkownika załatwi sprawę. Ale bez powodzenia! Czy ktoś może zasugerować szybkie testy? Próba uzyskania dostępu do ścieżek lub otwarcia portów itp.
Idealnie szukam prostych poleceń powłoki, których DAC nie ograniczyłby, ale MAC zauważy i zaprzeczy. W związku z tym nie zamierzam kompilować programów na zamówienie ani instalować określonych usług (takich jak serwer WWW), aby to osiągnąć. Jest to cenne, ponieważ zapewnia ogólny i jasny sposób na sprawdzenie SELinuksa w działaniu.
Nie mam problemu ze zmodyfikowaniem DAC (tj. Uprawnień systemu plików), aby były mniej restrykcyjne niż byłyby domyślnie w ramach testu.
Odpowiedzi:
Aby zademonstrować użyteczność SELinuksa w wykrywaniu błędów w kodzie firm trzecich / twojego własnego dewelopera, oto test ochrony pamięci (modyfikacji pierwszego przykładu kod tutaj ):
Skompiluj i pokaż domyślnie (nie złapany)Zmień wartość logiczną, aby złapać problem:
źródło
Wyraźnie pokazuje to zasady MAC, w których równoważny przetwornik cyfrowo-analogowy mógłby zostać ominięty w podstawowej instalacji CentOS 7.
Domyślnie (w CentOS w momencie pisania) użytkownicy nieuprzywilejowani są zalogowani jako rola „unconfined_u”. Możemy jednak zmienić nasz system, aby nasz nieuprzywilejowany użytkownik „alicja” został zamiast tego umieszczony w roli „użytkownik_u”. Można wprowadzić domyślne zasady, aby wyraźnie ograniczyć tę rolę przy niewielkiej ilości dodatkowej konfiguracji.
Teraz wyłącz możliwość wykonywania przez tych użytkowników plików znajdujących się w ich katalogach domowych i / tmp. Po raz kolejny domyślnym jest zezwolenie na takie zachowanie. Wykonanie tego polecenia może chwilę potrwać .
Teraz (z naszym nieuprzywilejowanym użytkownikiem) możemy się zalogować i podjąć próbę wykonania czegoś na jednym z tych zakazanych obszarów. Jak widać, odmawia się nam.
Wreszcie możemy przeglądać dziennik AVC, aby zobaczyć naszą odmowę SELinux.
źródło
O ile nie zmieniłeś swoich polityk w zakładce Boolean systemu-config-selinux (lub w / etc / selinux / policy), wówczas domyślna powinna odpowiadać na poniższe (możesz też chcieć zainstalować setroubleshoot dla głębszego nurkowania) :
Następnie zrestartuj serwer WWW i spróbuj uzyskać dostęp do http: // localhost / ks za pomocą przeglądarki internetowej. Powinieneś zobaczyć komunikat „Zabronione”. Jeśli śledzisz
/var/log/audit/audit.log
lub biegnieszausearch -m avc -ts recent
, powinieneś zobaczyć komunikat:type=AVC msg=audit(1391277951.222:266): avc: denied { read } for pid=1731 comm="httpd" name="ks" dev=sda1 ino=22351 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined u:object r:default t:s0 tclass=dir
Następnie możesz zmienić kontekst SELinux,
chcon -Rv --reference /var/www/html /install/ks
jeśli nie chcesz wyłączać SELinux, ale możesz uzyskać dostęp do zasobu.EDYCJA: przepraszam, nie widziałem, że powiedziałeś „nie serwer sieciowy”. Spróbuj
chcon -u fake_u <filename>
użyć nieuprzywilejowanego konta w pliku systemowym.źródło
zainstaluj dwa małe pakiety - bez zależności
uruchom serwer FTP
utwórz plik w domu roota
przenieś z katalogu głównego root do katalogu FTP.
Uwaga: przenieś, nie kopiuj, inaczej zmieni się kontekst pliku
zaloguj się na serwerze FTP jako użytkownik klienta FTP i spróbuj uzyskać dostęp do nowego pliku.
Uwaga: automatyczne uzupełnianie kart nie działa tutaj
zobacz odmowę w surowych logach
lub jeśli masz
setroubleshoot*
zainstalowanyźródło