na kompleksowy przewodnik do opanowania plików użytkowników do korzystania sudo?.

Харша Кушика

z obserwacji

Kwi 18, 2020 · 10 min czytania

co to jest plikami sudoers?

z plikami sudoers jak każdy inny plik na systemie operacyjnym Linux., Ale odgrywa istotną rolę w zarządzaniu tym, co” użytkownik „lub” użytkownicy w grupie ” mogą zrobić w systemie.

skąd nazwa Sudoers?

słowo Sudo jest skrótem terminu „Super User Do”. Jak to wyraźnie sugeruje — to tak, jakby powiedzieć Kernel / OS „nie masz wyboru, po prostu to zrób!”. Tak więc użytkownicy z uprawnieniami Sudo są nazywani użytkownikami Sudo. Zarządzanie wszystkich tych użytkowników sudo odbywa się za pomocą pliku o nazwie jako plik Sudoers. Ten plik również znajduje się w katalogu / etc, tak jak każdy inny plik konfiguracyjny.,

Image-1. Plik Sudoers w katalogu / etc. System operacyjny: Kali Linux 2019.4

dlaczego plik Sudoers?

normalny użytkownik na Linuksie będzie miał wiele ograniczeń w systemie. Na przykład — użytkownik domyślnie nie będzie mógł uruchomić usługi, zmienić pliku konfiguracyjnego lub wykonać skryptu w systemie. Z punktu widzenia bezpieczeństwa wygląda to idealnie.,

ale weźmy przykład — Ty jako administrator systemu musisz zarządzać wszystkimi użytkownikami i ich kontrolami. Masz stronę internetową hostowaną na Apache na jednym z serwerów. Masz już Web-admina do zarządzania nim. Użytkownik powinien być stworzony dla niego na serwerze WWW. Ten użytkownik powinien mieć możliwość zrobienia dwóch rzeczy, których zwykły użytkownik nie może:

  • Uruchom / zrestartuj usługę Apache na wypadek, gdyby się zatrzymała.
  • Edytuj plik konfiguracyjny Apache.

masz domyślnie dwie opcje użytkownika:

  1. użytkownik Root, który ma wszystkie uprawnienia w systemie, w tym Apache.,
  2. zwykły użytkownik, który domyślnie nie będzie mógł uruchomić usługi ani edytować żadnych plików konfiguracyjnych w systemie.

wtedy plik sudoers będzie Ci przydatny. W pliku Sudoers możemy dokładnie zdefiniować:

  • Web-Admin użytkownik może uruchomić tylko usługę Apache &
  • może edytować tylko Plik konfiguracyjny Apache.

Zabawa z plikiem Sudoers

wystarczy teorii, zaczniemy teraz robić prawdziwe rzeczy. Wyjaśnię każdą sekcję w pliku Sudoers kilkoma przykładami., Domyślnie plik Sudoers wygląda tak:

div>

image —2. Nieedytowany Plik Sudoers. System operacyjny: Kali Linux 2019.4

przede wszystkim możemy zobaczyć pięć sekcji w pliku — pierwsze trzy sekcje w pliku są związane z aliasem hosta, użytkownika i Cmnd., Porozmawiamy o ALIAS później, najpierw porozmawiajmy o sekcji rdzenia :

#user Privilege Specification

root ALL = (ALL:ALL) ALL

Uwaga: '#' wskazuje komentarz w pliku, SYSTEM OPERACYJNY zignoruje tę linię podczas wykonywania.,

składnia : User <spacja> OnHost = (Runas-User:Group) <spacja> polecenia

przykład: root all = (all:All) All

read it as — użytkownik root może uruchomić dowolne polecenie jako każdy użytkownik z dowolnej grupy na dowolnym komputerze.

→ pierwsze wszystko jest używane do definiowania hostów. Możemy zdefiniować nazwę hosta/adres Ip zamiast wszystkich. / Align = „left” /

→ Po drugie wszystko: po trzecie wszystko to User: Group., Zamiast wszystkich możemy zdefiniować User lub User z grupą jak User: Group. ALL: ALL oznacza wszystkich użytkowników i wszystkie grupy.

→ Last ALL is the Command. Zamiast wszystkich możemy zdefiniować polecenie lub zestaw komend. Wszystko oznacza wszystkie polecenia.

mówiąc bardzo prosto, jest to „who where = (as_whom) what”.

Uwaga: większość ludzi rozumie hosty jako zdalne. Jest to lokalna nazwa hosta/adres IP., Pole HOSTS będzie rzadko używane, jeśli chcesz dowiedzieć się więcej o hostach w Sudoers, zapoznaj się z → https://www.sudo.ws/man/1.7.10/sudoers.man.html

zasadniczo możemy zezwolić użytkownikowi na wykonanie czegoś tylko na dwa sposoby —

  1. bezpośrednio dać mu pozwolenie na wykonanie polecenia poprzez modyfikację uprawnień pliku.
  2. pozwól mu wykonać polecenie jako inny użytkownik, który ma już uprawnienia do wykonania tego polecenia.

w pliku Sudoers będziemy implementować ten drugi.,

użyjemy innego przykładu, aby jasno zrozumieć pola w składni:

przykład : sysadmin ALL = (root) /usr/bin/cat /etc/shadow

przeczytaj to jako użytkownik „sysadmin” może uruchomić polecenie „/usr/bin/cat /etc/shadow” jako użytkownik ROOT na wszystkich hostach.

tutaj w powyższym przykładzie, w sekcji polecenia — dodałem coś więcej niż polecenie, ma to na celu pokazanie elastyczności pliku Sudoers. Część „/ usr / bin / cat ” jest binarnym programem wykonywalnym lub poleceniem używanym do przeglądania zawartości pliku., Część „/etc / shadow „jest poufnym plikiem, który przechowuje hasła, więc oznacza to, że użytkownik „sysadmin” może uruchomić tylko „/usr/bin/cat” na pliku „/etc/shadow”, jeśli ten użytkownik spróbuje wyświetlić zawartość innego pliku, na którym nie ma uprawnień do odczytu, nie będzie w stanie.,

składnia polecenia Sudo: sudo <polecenie>

przykład: sudo cat /etc/shadow

teraz jeśli użytkownik „sysadmin” używa sudo przed jakimkolwiek poleceniem, system operacyjny najpierw zapyta go o hasło użytkownika, zweryfikuje hasło, a następnie przejdzie do pliku sudoers i sprawdzi, czy może wydać to polecenie jako dowolny użytkownik. Jeśli jest dozwolony-sukces, w przeciwnym razie zgłosi jedną z tych dwóch rzeczy —

→ Użytkownik nie jest w pliku Sudoers. Ten incydent zostanie zgłoszony.,

Note : You can see this reported incident in /var/log/auth.log

Image-3. Incident Report — Sudoers. Operating System: Kali Linux 2019.,4

→Sorry, user <username> is not allowed to execute <command> as <User> on <hostname>

Image-4. Cannot Execute Command in Sudoers. Operating System: Kali Linux 2019.,4

tutaj użytkownik webadmin może uruchomić tylko „cat / etc / shadow”. Ale próbował uruchomić polecenie ' cat ' NA „/ etc / gshadow”, co nie jest dozwolone.

ponieważ mamy wystarczająco dużo opanowania pól w składni pliku Sudoers, przejdźmy do przodu i zrozumiemy inne sekcje w pliku. Wszystkie pozostałe sekcje będą zależeć od sekcji podstawowej, którą już omówiliśmy.,

następna sekcja to sekcja grupy, która jest

#pozwala członkom grupy sudo wykonać dowolne polecenie

%sudo ALL = (ALL:ALL) ALL

percentyl symbol '%' jest używany do reprezentowania grupy w pliku Sudoers. Wszystkie pola i ich funkcjonalności w tej sekcji są dokładnie takie same, jak omówione w poprzedniej sekcji-sekcji użytkownika. Możemy przypisać te same uprawnienia Sudo grupie zamiast użytkownikowi, podając nazwę grupy- % <nazwa grupy>., Tak więc wszyscy członkowie grupy odziedziczą te same przywileje nadane grupie.

domyślnie istnieje grupa SUDO zdefiniowana w pliku Sudoers. Widzimy, że te uprawnienia są dokładnie takie same jak uprawnienia użytkowników ROOT w pliku. Więc jeśli użytkownik jest członkiem tej grupy SUDO, może wykonać wszystkie polecenia, które użytkownik ROOT może wykonać.

zdefiniujmy grupę niestandardową i lepiej zrozummy składnię. Weźmy w tym celu ten sam stary przykład administratora systemu. Załóżmy, że nie. pracowników jest teraz więcej, więc administratorzy systemu są teraz 3., Każdy z nich wymaga dokładnie tych samych uprawnień, które daliśmy pierwszemu administratorowi systemu. Jedną rzeczą, którą możemy zrobić, aby to osiągnąć, jest posiadanie trzech wpisów dla wszystkich trzech administratorów systemu w pliku Sudoers. Jeśli podejdziemy do tego podejścia, obrażamy możliwości pliku Sudoers.

najlepiej jest zgrupować wszystkich trzech administratorów systemu w grupę o nazwie 'SystemAdminGroup'., Zdefiniujemy wymagane uprawnienia dla tej grupy za pomocą —

%SystemAdminGroup ALL = (root) /usr/bin/cat /etc/shadow

teraz wszyscy trzej administratorzy mogą wykonać polecenie uprzywilejowane. Zrobiliśmy to za jednym razem, używając definicji grupy.

plik Sudoers jest w stanie uczynić cały proces bardziej wydajnym za pomocą różnych funkcjonalności. Do tego celu służą pierwsze trzy sekcje-aliasy., Jak już sugeruje słowo, używamy aliasu do czegoś, czego możemy użyć w całym pliku, jest to tak jak zmienna globalna w skrypcie. Jak to ma sprawić, że całość będzie bardziej efektywna? Możemy zdefiniować zestaw komend, hostów i użytkowników w jednej linii, przypisujemy tę linię do nazwy aliasu, alias ten będzie używany zawsze i wszędzie, bez definiowania wszystkich komend / hostów/użytkowników na nowo.

chcę dodać jeszcze jeden ALIAS, który domyślnie nie jest wymieniony w pliku Sudoers, czyli „Run_as ALIAS”., Teraz mamy cztery aliasy —

  1. Alias użytkownika jako User_Alias
  2. Run-jako ALIAS Runas_Alias
  3. Alias hosta jako Host_Alias
  4. Alias Komendy jako Cmnd_Alias

Uwaga : Nazwa aliasu powinna być zdefiniowana wielkimi literami i może zawierać liczbę, alfabet i podkreślenie (_). Nazwa aliasu musi zaczynać się od alfabetu.,3e”>nazwa aliasu> = <nazwa użytkownika>,<nazwa użytkownika>, <nazwa użytkownika>…

przykład: user_alias sysadmins = John,Tim,Tom

użycie: sysadmins all = (root) /usr/bin/cat /etc/shadow

Jeśli chcę mieć jakiś zestaw uprawnień sudo zdefiniowanych dla użytkowników — John, Tim i Tom, nie muszę go definiować trzy razy, zamiast tego mogę zdefiniować Alias i używać tej nazwy aliasu podczas delegowania do nich dostępu sudo.,

Image-5. User Alias in Sudoers File. Operating System: Kali Linux 2019.,figcaption>

Run As ALIAS Syntax —

Runas_Alias <ALIAS Name> =<username>,<username>,<username>…

Example: Runas_Alias MGRS = root,sradmin

Usage: systemadmin ALL = (MGRS) /usr/bin/cat /etc/shadow

If i want to define the set of users a user can run a command as, i can use Runas_Alias., Nie daj się pogubić, pamiętaj tylko o mantrze mistrza-who where = (as_whom) what. Używamy tutaj aliasu, aby uwzględnić nie. użytkowników w polu „as_whom”.

Image-6. Runas Alias w pliku Sudoers. System Operacyjny: Kali Linux 2019.,4

składnia aliasów hostów —

użycie: systemadmin HOSTS = (root)/usr/bin /cat/etc/shadow

Jeśli muszę zdefiniować zestaw nazw hostów, adresów ip lub zakresu adresów ip, na których użytkownik może wydawać polecenia uprzywilejowane / Sudo, mogę to osiągnąć używając aliasów hostów. Ponownie, Ta część należy do pola „gdzie” w frazie głównej.

Obraz-7. Alias hosta w pliku Sudoers., System Operacyjny: Kali Linux 2019.,iv id=”1ffdf0e914″>

Cmnd_Alias <ALIAS Name> = <cmd1>,<cmd2>, <cmd3>…

Example: Cmnd_Alias SYSADMIN = /usr/sbin/apache2, /usr/bin/cat

Usage: systemadmin ALL = (root) SYSADMIN

If i need to permit a user to execute a set of commands as SUDO, i can define them under a Cmnd_Alias Section and use this ALIAS name while delegating the access., Ta część należy do pola ” co ” w frazie głównej.

Image-8. Alias Cmnd w pliku Sudoers. System operacyjny: Kali Linux 2019.4

tryb NOPASSWD:

jest to jeszcze jedna specjalna funkcja w Sudoers, która pozwoli użytkownikowi w pliku Sudoers wykonać uprzywilejowaną komendę bez wprowadzania hasła., Jest to bardzo przydatne podczas uruchamiania automatycznych skryptów w systemie jako zwykły użytkownik, skrypt może być zmuszony do wykonania polecenia uprzywilejowanego. Ale już wiemy, co się stanie, jeśli jakikolwiek użytkownik użyje SUDO, będzie musiał wprowadzić swoje hasło!

pamiętaj, że nawet jeśli jest to skrypt lub proces, powinien działać jako użytkownik, nie może działać samodzielnie.

wszystkie automatyczne skrypty nie są wystarczająco inteligentne, aby wprowadzić hasło po wyświetleniu monitu. Ale możliwe jest automatyczne wprowadzenie hasła. Na razie nie myślmy o inteligentnych scenariuszach., Podsumowując, użytkownik może użyć polecenia uprzywilejowanego bez wprowadzania hasła.

przykład skryptu wymagającego NOPASSWD: Supervisor w Linuksie.Omówimy o przełożonym w innym artykule.

składnia : sysadmin ALL = (root) NOPASSWD:/usr/sbin/apache2

wykluczenie parametrów w aliasach

możemy również dodać parametry, które powinny być wykluczone w aliasach. Na przykład –

User_Alias EXCEPT_ROOT = ALL, !,w związku z tym, że nie jesteśmy w stanie zrealizować tego zadania, nie jesteśmy w stanie zrealizować tego zadania, ponieważ nie jesteśmy w stanie zrealizować tego zadania.

tego rodzaju wykluczenia można dokonać we wszystkich aliasach, nie tylko User_Alias. W każdym aliasie składnia wykluczeń pozostaje taka sama.

dbanie o plik Sudoers

musisz już wiedzieć, co może zrobić plik Sudoers i jak ważne jest ostrożne obchodzenie się z plikiem. Linux implementuje już mechanizm, aby upewnić się, że plik Sudoers jest obsługiwany poprawnie.,

zawsze zaleca się nie edytować bezpośrednio pliku /etc/sudoers. Jest narzędzie zwane „visudo”. Służy to do bezpiecznego wprowadzania zmian w pliku sudoers. Podczas edycji pliku sudoers za pomocą visudo, visudo ma wbudowaną funkcjonalność, aby sprawdzić składnię przed zapisaniem pliku, jeśli popełnisz błąd, natychmiast wskaże linię, gdzie składnia nie jest prawidłowa. Ta funkcjonalność visudo zapobiega przypadkowemu uszkodzeniu pliku i systemu.

wniosek:

plik Sudoers zawsze odgrywa główną rolę w zarządzaniu kontrolą użytkowników., Chociaż istnieje wiele sposobów zarządzania i kontroli tego, co użytkownik może i nie może zrobić w systemie, metoda Sudoers zawsze będzie wystarczająco wydajna i solidna, aby zarządzać i kontrolować wszelkie Nie. użytkowników. Jeszcze jedna metoda podobna do tej, o której warto wspomnieć, to SUID i SGID. Porozmawiamy o SUID i SGID w innym artykule.