komplexní průvodce Master sudoers souboru.

Harsha Koushik

Sledovat

Apr 18, 2020 · 10 min číst

Co je v Souboru Sudoers?

soubor Sudoers je stejně jako jakýkoli jiný soubor v operačním systému Linux., Hraje však zásadní roli při správě toho, co může“ uživatel „nebo“ uživatelé ve skupině “ v systému dělat.

proč název Sudoers?

slovo Sudo je zkratka termínu „Super User Do“. Jak to jasně naznačuje — je to jako říkat jádru / OS „nemáte na výběr, prostě to udělejte!”. Uživatelé se svolením Sudo se tedy nazývají Uživatelé Sudo. Správa všech těchto uživatelů sudo se provádí prostřednictvím souboru nazvaného jako soubor Sudoers. Tento soubor také žije v adresáři / etc stejně jako jakýkoli jiný konfigurační soubor.,

Obrázek-1. Soubor Sudoers v adresáři / etc. Operační systém: Kali Linux 2019.4

proč soubor Sudoers?

běžný uživatel v systému Linux bude mít v systému mnoho omezení. Například-uživatel nebude moci spustit službu, změnit konfigurační soubor nebo spustit skript v systému ve výchozím nastavení. Z bezpečnostního hlediska to vypadá perfektně.,

ale vezměme si příklad – vy jako správce systému musíte spravovat všechny uživatele a jejich ovládací prvky. Máte webové stránky hostované na Apache V jednom ze svých serverů. Již máte Web-Admin ji spravovat. Uživatel by měl být vytvořen pro něj na webovém serveru. Tento uživatel by měl mít možnost dělat dvě věci, které běžný uživatel nemůže:

  • spustit/restartovat službu Apache v případě, že se zastaví.
  • upravte konfigurační soubor Apache.

ve výchozím nastavení máte dvě uživatelské možnosti:

  1. root uživatel, který má všechna oprávnění v systému včetně Apache.,
  2. běžný uživatel, který ve výchozím nastavení nebude moci spustit službu nebo upravovat konfigurační soubory v systému.

to je, když soubor sudoers přijde vhod pro vás. V souboru Sudoers můžeme přesně definovat :

  • Web-Admin uživatel může pouze spustit Službu Apache &
  • může upravovat pouze Apache Config.

hraní se souborem Sudoers

dost teorie, začneme dělat skutečné věci teď. Budu vysvětlovat každou sekci v souboru Sudoers s některými příklady., Ve výchozím souboru Sudoers vypadá jako toto,

Image-2. Neupravený Soubor Sudoers. Operační systém: Kali Linux 2019.4

v souboru vidíme především pět sekcí-první tři sekce v souboru souvisí s aliasem hostitele, uživatele a Cmnd., Budeme mluvit o ALIAS později, první pojďme mluvit o hlavní sekce :

#User Privilege Specification

root ALL = (ALL:ALL)

Poznámka: ‚#‘ označuje komentář v souboru, OS bude ignorovat tento řádek při provádění.,

Syntaxe : Uživatel <místo> OnHost = (Runas-User:Group) <místo> Příkazy

Příklad: root ALL = (ALL:ALL) VŠECHNY

Přečtěte si to jako Uživatel Root může Spustit libovolný Příkaz jako Jakýkoli Uživatele z Jakékoliv Skupiny na libovolného Hostitele.

→ první vše se používá k definování hostitelů. Můžeme definovat Hostname / Ip adresu místo všech. Vše znamená jakýkoli hostitel.

→ Second ALL: Third ALL is User: Group., Místo toho můžeme definovat uživatele nebo Uživatele se skupinou jako User: Group. Vše: vše znamená všechny uživatele a všechny skupiny.

→ Poslední vše je příkaz. Místo toho můžeme definovat příkaz nebo sadu příkazů. Vše znamená všechny příkazy.

to je velmi jednoduché, je to „kdo kde = (as_whom) co“.

Poznámka: většina lidí rozumí hostitelům jako vzdáleným hostitelům. Je to místní HOSTNAME / IP adresa., HOSTITELÉ pole bude jen zřídka, pokud chcete vědět více o HOSTITELÉ v Sudoers viz → https://www.sudo.ws/man/1.7.10/sudoers.man.html

v Podstatě můžeme umožnit uživateli, aby něco udělat pouze dvěma způsoby —

  1. Přímo dát mu svolení, aby se spustit příkaz změnou oprávnění k souboru.
  2. mu umožní provést příkaz jako jiný uživatel, který již má oprávnění k provedení tohoto příkazu.

v souboru Sudoers budeme implementovat ten druhý.,

použijeme jiný příklad, aby jasně pochopili pole v syntaxi:

Příklad : sysadmin ALL = (root) /usr/bin/cat /etc/shadow

Přečtěte si to jako Uživatel „administrátor“ může Spuštění příkazu „/usr/bin/cat /etc/shadow“ jako uživatel ROOT na všech HOSTITELŮ.

zde ve výše uvedeném příkladu, v příkazové části — přidal jsem něco víc než příkaz, to je ukázat flexibilitu souboru Sudoers. Část „/ usr / bin / cat “ je binární spustitelný soubor nebo příkaz používaný k zobrazení obsahu souboru., Část „/etc/shadow“ je důvěrný soubor, který ukládá hesla, tak to znamená, že uživatel „administrátor“ může spustit pouze „/usr/bin/kočka“ na „/etc/shadow“ soubor, pokud to uživatel pokusí zobrazit obsah jakýkoli jiný soubor, který nemá oprávnění ke čtení, nebude moci.,

Syntaxe Sudo příkaz: sudo <příkaz>

Příklad: sudo cat /etc/shadow

Nyní, pokud uživatel „administrátor“ používá sudo před příkaz, OS se nejprve zeptej se ho na Heslo Uživatele, ověřuje heslo a pak jde do Sudoers souboru a zkontroluje, zda je dovoleno vydat příkaz, jako každý uživatel. Pokud je povolen-úspěch, jinak nahlásí jednu z těchto dvou věcí —

→ uživatel není v souboru Sudoers. Tento incident bude hlášen.,

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

zde může uživatel webadmin spustit pouze „cat / etc / shadow“. Pokusil se však spustit příkaz “ cat “ na „/ etc / gshadow“, který není povolen.

Jako máme dostatek přilnavosti na polích v syntaxi souboru Sudoers, pojďme se přesunout dopředu a pochopit další sekce v souboru. Všechny ostatní sekce budou záviset na základní části, o které jsme již diskutovali.,

další sekci je SKUPINA Sekce, která je

#Umožnit členům skupiny sudo spustit libovolný příkaz,

%sudo ALL = (ALL:ALL)

Percentil symbol ‚%‘ se používá pro reprezentaci skupiny v Souboru Sudoers. Všechna pole a jejich funkce v této části jsou přesně stejná jako v předchozí části – uživatelská sekce. Stejná oprávnění Sudo můžeme přiřadit skupině namísto uživatele zadáním názvu skupiny – %<název skupiny>., Takže všichni členové skupiny zdědí stejná privilegia, která jsou skupině udělena.

ve výchozím nastavení existuje skupina SUDO definovaná v souboru Sudoers. Vidíme, že tato oprávnění jsou přesně stejná jako oprávnění uživatelů ROOT v souboru. Pokud je tedy uživatel členem této skupiny SUDO, může provést všechny příkazy, které může uživatel ROOT provést.

Definujme vlastní skupinu a pochopíme syntaxi jasněji. Vezměme si stejný starý příklad správce systému. Předpokládejme, že ne. zaměstnanců je nyní více, takže administrátoři systému jsou nyní 3., Každý z nich potřebuje stejná přesná oprávnění, která jsme dali prvnímu správci systému. Jedna věc, kterou můžeme udělat, abychom toho dosáhli, je mít tři položky pro všechny tři administrátory systému v souboru Sudoers. Pokud půjdeme s tímto přístupem, urážíme schopnosti souboru Sudoers.

nejlepší je seskupit všechny tři administrátory systému do skupiny nazvané „SystemAdminGroup“., Budeme definovat požadovaná oprávnění na tuto skupinu s —

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

Nyní jsou všechny tři administrátoři mohou spouštět Privilegované Příkaz. Udělali jsme to najednou pomocí definice skupiny.

soubor Sudoers je schopen zefektivnit celý tento proces pomocí různých funkcí. K dosažení tohoto cíle se používají první tři sekce — aliasy., Jak již slovo naznačuje, používáme ALIAS k něčemu, co můžeme použít v celém souboru, je to jako globální proměnná ve skriptu. Jak to celé zefektivní? Můžeme definovat sadu příkazů, hostitelů a uživatelů v jednom řádku, tento řádek přiřadíme jménu aliasu, tento alias bude použit kdykoli a kdekoli, aniž bychom znovu definovali všechny příkazy/hostitele/uživatele.

chci zahrnout ještě jeden ALIAS, který není ve výchozím nastavení uveden v souboru Sudoers, což je“Run_as ALIAS“., Teď máme čtyři JMÉNA,

  1. Uživatel ALIAS jako User_Alias
  2. Spustit-Jako ALIAS jako Runas_Alias
  3. Host ALIAS jako Host_Alias
  4. Příkaz ALIAS jako Cmnd_Alias

Poznámka : název Aliasu by měly být definovány v velká písmena a může obsahovat čísla, abecedy a podtržítko (_). Jméno aliasu musí začínat abecedou.,3e“>ALIAS> = <uživatelské jméno><uživatelské jméno>, <uživatelské jméno>…

Příklad: User_Alias ADMINISTRÁTOŘI = john,time,tome.

Použití: systémoví ADMINISTRÁTOŘI ALL = (root) /usr/bin/cat /etc/shadow

Pokud chci nějaký soubor sudo oprávnění definované pro uživatele — john, tim a tom, že nemusím definovat tři krát, místo toho můžete definovat Alias a použít tento Alias Jméno, zatímco delegování sudo přístup k nim.,

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., Nenechte se zmást, stačí si vzpomenout na hlavní mantru-kdo kde = (as_whom) co. Používáme zde alias, abychom zahrnuli ne. uživatelů v poli“ as_whom“.

Obrázek-6. Runas Alias v Sudoers souboru. Operační Systém: Kali Linux 2019.,4

Host ALIAS Syntaxe —

Použití: systemadmin HOSTÍ = (root) /usr/bin/cat /etc/shadow

Jestli bych třeba definovat soubor hostname, ip adresy nebo rozsahu ip adres, na který se uživatel může vydat Privilegované/Sudo příkazy, můžu dosáhnout pomocí Hostitele Alias. Opět platí, že tato část patří do pole „kde“ v hlavní frázi.

Image-7. Host Alias v Sudoers souboru., Operační Systém: 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., Tato část patří do pole “ co “ v hlavní frázi.

Obrázek-8. CMND Alias v souboru Sudoers. Operační Systém: Kali Linux 2019.4

NOPASSWD Mode:

Tohle je další speciální funkce v Sudoers, který umožní Uživateli v souboru Sudoers vykonávat privilegovaný příkaz bez zadání hesla., To je velmi užitečné při spuštění automatizovaných skriptů v systému jako běžného uživatele, skript může muset provést privilegovaný příkaz. Ale už víme, co se stane, pokud některý uživatel použije SUDO, bude muset zadat své heslo!

nezapomeňte, že i když se jedná o skript nebo proces, měl by běžet jako uživatel, nemůže běžet sám.

všechny automatizované skripty nejsou dostatečně inteligentní pro zadání hesla po výzvě. Je však možné automaticky zadat heslo. Prozatím nemysleme na inteligentní skripty., Závěrem lze říci, že uživatel může použít privilegovaný příkaz bez zadání hesla.

příklad skriptu potřebujícího NOPASSWD: Supervisor v Linuxu.O Supervizorovi budeme diskutovat v jiném článku.

Syntax : sysadmin ALL = (root) NOPASSWD : /usr/sbin/apache2

Parametr Vyloučení v ALIASY

můžeme také přidat parametry, které by měly být vyloučeny v ALIASY. Například –

User_Alias EXCEPT_ROOT = ALL, !,root

sysadmin ALL = (EXCEPT_ROOT) /usr/sbin/apache2

Tento User_Alias mohou být použity, aby se ujistil, že UŽIVATEL může spustit zadaný příkaz jako „všechny uživatele s výjimkou ROOT“.

tento druh vyloučení lze provést ve všech ALIASECH, nejen User_Alias. V každém aliasu zůstává syntaxe vyloučení stejná.

manipulace se souborem Sudoers opatrně

nyní musíte pochopit, co může soubor Sudoers udělat a jak důležité je zacházet se souborem opatrně. Linux již implementuje mechanismus, který zajistí správné zpracování souboru Sudoers.,

vždy se doporučuje neupravovat soubor /etc/sudoers přímo. Existuje nástroj zvaný „visudo“. To se používá k bezpečnému provedení změn v souboru sudoers. Při editaci souboru sudoers pomocí visudo, visudo má vestavěné funkce pro kontrolu syntaxe před uložením souboru, pokud uděláte chybu, bude to okamžitě bod, linie, kde syntaxe není správné. Tato funkce visudo zabrání náhodnému poškození souboru a systému.

závěr:

soubor Sudoers vždy hraje hlavní roli v řízení uživatelů., Zatímco existuje mnoho způsobů, jak řídit a kontrolovat, co uživatel může a nemůže dělat na systému, Sudoers metoda bude vždy být efektivní a dostatečně robustní, aby spravovat a ovládat veškeré žádné. uživatelů. Další podobnou metodou, která stojí za zmínku, jsou SUID a sgid. O SUID a sgid budeme hovořit v jiném článku.