Praca z możliwościami Linuksa

Wprowadzenie

Możliwości systemu Linux to specjalne atrybuty w jądrze systemu Linux, które przyznają procesom i binarnym plikom wykonywalnym określone uprawnienia, które są zwykle zarezerwowane dla procesów, których efektywny identyfikator użytkownika to 0 (użytkownik root i tylko użytkownik root ma UID 0).

W tym artykule wyjaśniono niektóre z dostępnych funkcji, ich zastosowania oraz sposoby ich ustawiania i usuwania. Pamiętaj, że ustawianie możliwości plików wykonywalnych może zagrozić bezpieczeństwu twojego systemu. Jako taki, powinieneś rozważyć przetestowanie systemu nieprodukcyjnego przed wdrożeniem możliwości produkcyjnych.

Wymagania wstępne

  • System Linux, w którym masz dostęp do konta root (za pośrednictwem użytkownika root lub użytkownika z dostępem sudo).

Wyjaśnienie

Zasadniczo celem możliwości jest podzielenie siły „rootowania” na określone uprawnienia, tak aby w przypadku wykorzystania procesu lub pliku binarnego posiadającego jedną lub więcej możliwości potencjalne uszkodzenie było ograniczone w porównaniu z tym samym procesem uruchomionym jako root.

Możliwości można ustawić dla procesów i plików wykonywalnych. Proces wynikający z wykonania pliku może zyskać możliwości tego pliku.

Możliwości zaimplementowane w systemie Linux są liczne, a wiele z nich dodano od czasu ich pierwotnego wydania. Niektóre z nich są następujące:

  • CAP_CHOWN: Wprowadź zmiany w identyfikatorze użytkownika i identyfikatorze grupy plików
  • CAP_DAC_OVERRIDE: Zastąp DAC (dyskretna kontrola dostępu). Na przykład vto omija sprawdzanie uprawnień do odczytu / zapisu / wykonywania.
  • CAP_KILL: Pomiń sprawdzanie uprawnień do wysyłania sygnałów do procesów.
  • CAP_SYS_NICE: Podnieś uprzejmość procesów ( wyjaśnienie uprzejmości można znaleźć tutaj )
  • CAP_SYS_TIME: Ustaw zegar systemowy i sprzętowy w czasie rzeczywistym

Aby wyświetlić pełną listę, uruchom man 7 capabilities.

Możliwości są przypisywane w zestawach, mianowicie „dozwolone”, „dziedziczne”, „skuteczne” i „ambientowe” dla wątków oraz „dozwolone”, „dziedziczne” i „skuteczne” dla plików. Zestawy te definiują różne złożone zachowania, ich pełne wyjaśnienie wykracza poza zakres tego artykułu.

Podczas ustawiania możliwości pliku prawie zawsze będziemy używać na przykład „dozwolone” i „skuteczne” CAP_DAC_OVERRIDE+ep. Zwróć uwagę na +ep, co oznacza wyżej wymienione zestawy.

Praca z możliwościami plików

Wymagane pakiety

Istnieją dwa główne narzędzia, getcapa setcapktóre można przeglądać i odpowiednio ustawić te atrybuty.

  • W systemach Debian i Ubuntu narzędzia te są dostarczane przez libcap2-binpakiet, który można zainstalować z:apt install libcap2-bin
  • W CentOS i Fedorze libcappakiet jest potrzebny:yum install libcap
  • W Arch Linux są one również dostarczane przez libcap:pacman -S libcap

Możliwości czytania

Aby zobaczyć, czy plik ma jakieś ustawione możliwości, możesz po prostu uruchomić getcap /full/path/to/binary, na przykład:

 root@demo:~# getcap /usr/bin/ping
 /usr/bin/ping = cap_net_raw+ep
 root@demo:~# getcap /usr/bin/rcp
 /usr/bin/rcp = cap_net_bind_service+ep

Jeśli chcesz dowiedzieć się, które możliwości są już ustawione w systemie, możesz przeszukać rekursywnie cały system plików za pomocą następującego polecenia:

getcap -r /

Z uwagi na fakt, że wirtualne systemy plików (takie jak /proc) nie obsługują tych operacji, powyższe polecenie spowoduje tysiące błędów, dlatego w celu uzyskania czystszego wyniku użyj następujących poleceń:

getcap -r / 2>/dev/null 

Przypisywanie i usuwanie możliwości

Aby ustawić określone możliwości dla pliku, użyj setcap "capability_string" /path/to/file.

Aby usunąć wszystkie możliwości z pliku, użyj setcap -r /path/to/file.

Dla celów demonstracyjnych utworzymy pusty plik w bieżącym katalogu, damy mu możliwość i usuniemy go. Zacznij od następujących czynności:

root@demo:~# touch testfile
root@demo:~# getcap testfile

Drugie polecenie nie generuje danych wyjściowych, co oznacza, że ​​ten plik nie ma żadnych możliwości.

Następnie ustaw zdolność pliku:

root@demo:~# setcap "CAP_CHOWN+ep" testfile
root@demo:~# getcap testfile
testfile = cap_chown+ep

Jako przykład podano „CAP_CHOWN + ep”, ale dowolne inne można przypisać w ten sposób.

Teraz usuń wszystkie możliwości z testfile:

root@demo:~# setcap -r testfile
root@demo:~# getcap testfile

Ponownie nie będzie danych wyjściowych, ponieważ „CAP_CHOWN + ep” został usunięty.

Wniosek

Możliwości mają wiele potencjalnych zastosowań i mogą pomóc zwiększyć bezpieczeństwo twoich systemów. Jeśli używasz bitu SUID w plikach wykonywalnych, zastanów się nad zastąpieniem go odpowiednią potrzebną funkcją.



Leave a Comment

Funkcjonalności warstw architektury referencyjnej Big Data

Funkcjonalności warstw architektury referencyjnej Big Data

Przeczytaj blog, aby w najprostszy sposób poznać różne warstwy w architekturze Big Data i ich funkcjonalności.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Rewolucyjne wynalazki Google, które ułatwią Twoje życie.

Chcesz zobaczyć rewolucyjne wynalazki Google i jak te wynalazki zmieniły życie każdego człowieka dzisiaj? Następnie czytaj na blogu, aby zobaczyć wynalazki Google.

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

13 komercyjnych narzędzi do ekstrakcji danych z Big Data

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Pozostań w kontakcie dzięki aplikacji WhatsApp na komputer 24*7

Whatsapp w końcu uruchomił aplikację Desktop dla użytkowników komputerów Mac i Windows. Teraz możesz łatwo uzyskać dostęp do Whatsapp z systemu Windows lub Mac. Dostępne dla Windows 8+ i Mac OS 10.9+

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

5 przykładów, które dowodzą, że energetyka jądrowa nie zawsze jest zła

Energia jądrowa jest zawsze pogardzana, nigdy jej nie szanujemy z powodu przeszłych wydarzeń, ale nie zawsze jest zła. Przeczytaj post, aby dowiedzieć się więcej na ten temat.

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Friday Essential: Co się stało z samochodami sterowanymi przez sztuczną inteligencję?

Koncepcja autonomicznych samochodów, które wyjadą na drogi za pomocą sztucznej inteligencji, to marzenie, które mamy już od jakiegoś czasu. Ale pomimo kilku obietnic nigdzie ich nie widać. Przeczytaj ten blog, aby dowiedzieć się więcej…

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Czy AI może walczyć z rosnącą liczbą ataków ransomware?

Wzrasta liczba ataków ransomware, ale czy sztuczna inteligencja może pomóc w radzeniu sobie z najnowszym wirusem komputerowym? Czy AI jest odpowiedzią? Przeczytaj tutaj, wiedz, że sztuczna inteligencja jest zmorą lub zgubą

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

5 przydatnych narzędzi sztucznej inteligencji, które uproszczą Twoje życie

Sztuczna inteligencja nie jest dla ludzi nową nazwą. Ponieważ sztuczna inteligencja jest włączona do każdego strumienia, jednym z nich jest opracowywanie narzędzi zwiększających ludzką wydajność i dokładność. Skorzystaj z tych niesamowitych narzędzi uczenia maszynowego i uprość swoje codzienne zadania.

Wgląd w 26 technik analizy Big Data: część 2

Wgląd w 26 technik analizy Big Data: część 2

Zawsze potrzebujemy Big Data Analytics do efektywnego zarządzania danymi. W tym artykule omówiliśmy kilka technik analizy Big Data. Sprawdź ten artykuł.

Ataki DDOS: krótki przegląd

Ataki DDOS: krótki przegląd

Czy jesteś również ofiarą ataków DDOS i nie masz pewności co do metod zapobiegania? Przeczytaj ten artykuł, aby rozwiązać swoje pytania.