GNU/Linux >> Znalost Linux >  >> Linux

Zabezpečte Linux pomocí souboru Sudoers

V systému Linux udělujete uživatelům zvýšená oprávnění v souboru sudoers. Ve výchozím nastavení má tato oprávnění pouze uživatel root. V některých případech však může být nutné, aby i běžní uživatelé měli zvýšená oprávnění.

Nejste čtenář? Podívejte se na tento související video tutoriál! Nevidíte video? Ujistěte se, že máte vypnutý blokovač reklam.

Soubor sudoers je určen především správcům systému a pro nováčky může být trochu skličující. Nenechte se tím odradit! S trpělivostí a smyslem pro detail se každý může naučit efektivně spravovat soubor sudoers.

Tato příručka vás naučí, jak upravovat sudoery a udělovat uživatelům bezpečně zvýšená oprávnění. Dozvíte se také některé osvědčené postupy, které je třeba mít na paměti při práci se sudoery. nikam nechoď; připravte se posunout správu uživatelských oprávnění Linuxu na další úroveň!

Předpoklady

Tento tutoriál bude praktickou ukázkou. Pokud chcete pokračovat, ujistěte se, že máte systém Linux s běžným uživatelským účtem, který můžete používat. Tato příručka používá systém Ubuntu 20.04, ale měla by fungovat i jakákoli jiná distribuce Linuxu.

Přehled souboru Linux Sudoers

Soubor sudoers se nachází v /etc/sudoers, což je prostý textový soubor obsahující zásady, jaká oprávnění uživatel získá při provádění příkazu sudo. Než půjdete dále, je nezbytné se seznámit s výchozím obsahem a sekcemi souboru sudoers.

Snímek obrazovky níže ukazuje výchozí obsah souboru sudoers na Ubuntu 20.04. Výchozí obsah souboru sudoers se může mezi distribucemi Linuxu lišit.

Následuje stručný přehled sekcí v souboru sudoers.

Výchozí sekce

  • Defaults env_reset - Executing commands with sudo creates a new environment with minimal or default environment variables. In most Linux distros, sudo will load the environment variable in the /etc/environment file.
  • Výchozí mail_badpass – Tento řádek spustí odeslání e-mailu do rootu, když uživatel zadá nesprávné heslo pomocí sudo.
  • Defaults secure_path - This line defines the PATH environment variable that sudo uses instead of the user’s PATH environment.

Uživatelská a skupinová oprávnění pro sudo

Tento řádek definuje práva sudo pro konkrétní uživatele nebo členy skupin.

Poznámka:% na začátku označuje, že zásady platí pro členy skupiny.

  • První pole definuje, že jeho zásady platí pro root uživatele a členy admin a sudo skupiny.
  • První ALL znamená, že pravidlo platí pro všechny hostitele.
  • Druhý ALL umožňuje root účet pro spouštění příkazů jako jakýkoli uživatel.
  • Třetí ALL umožňuje root účet pro spouštění příkazů jako jakákoli skupina.
  • Posledních ALL znamená, že tato zásada platí pro příkazy.

Zahrnout směrnice

Na konci souboru uvidíte řádek, který vypadá jako komentář, ale není. Řádky začínající na #include a #includedir se nazývají příkazy include.

#includedir /etc/sudoers.d – Tento řádek říká sudo, aby se podíval do souboru /etc/sudoers.d adresář pro jakékoli další konfigurační soubory.

Úprava souboru Sudoers pomocí správného nástroje

Soubor sudoers je prostý textový soubor, který můžete otevřít pomocí preferovaného textového editoru – ale nedoporučuje se to. Proč? Vzhledem k tomu, že obsah souboru sudoers se řídí specifickou syntaxí, běžný textový editor nemá žádné záruky, které by vám zabránily pokazit soubor sudoers.

Nesprávná konfigurace může vést k bezpečnostním problémům; nejhorší je, že každý uživatel může ztratit možnost zvýšit svá oprávnění.

Jaký je správný nástroj? — visudo . Tento nástroj otevře soubor sudoers ve výchozím textovém editoru. Navíc visudo zabraňuje souběžným úpravám a před ukončením provádí kontrolu chyb.

V Ubuntu 20.04 je výchozí editor vim , ale můžete nastavit alternativní editor, například nano , chcete-li.

1. Otevřete terminálovou relaci nebo SSH na vašem počítači se systémem Linux.

2. Spusťte níže uvedený příkaz pro zobrazení seznamu dostupných textových editorů na vašem počítači.

sudo update-alternatives --config editor

Jak vidíte, aktuální výchozí editor je výběr 5, což je vim. Předpokládejme, že chcete zachovat výchozí nastavení, stiskněte klávesu Enter. Pokud dáváte přednost jinému editoru, stiskněte odpovídající číslo výběru, například 0 pro nano, a stiskněte Enter.

3. Nyní spusťte níže uvedený příkaz a otevřete soubor sudoers ve výchozím editoru.

sudo visudo

Pokud je soubor sudoers otevřen v jiné relaci, zobrazí se níže uvedená chyba a visudo vám zabrání soubor otevřít. Tímto způsobem nemohou žádní dva uživatelé provádět konfliktní změny současně.

vizuo:/etc/sudoers zaneprázdněn, zkuste to znovu později

4. Jakmile je soubor sudoers otevřen, úmyslně způsobte chybu syntaxe smazáním poslední instance ALL, poté uložte a ukončete editor.

5. visudo will warn you that there’s a syntax error and asks, “What now?”. At this point, you have three options.

  • Zadejte e a stisknutím klávesy Enter soubor znovu upravte. Tato možnost vám umožní znovu opravit soubor sudoers v editoru.
  • Zadejte x a stiskněte Enter pro zrušení změn a ukončení visudo .
  • Zadejte Q, stiskněte Enter pro ignorování chyby, uložte soubor sudoers a ukončete visudo. Nevybírejte tuto možnost, pokud si nejste jisti důsledky.

V tomto příkladu stiskněte x pro zrušení změn a zachování obsahu starého souboru sudoers.

Jak vidíte, bylo by obtížné pokazit soubor sudoers s visudo trvale.

Udělování konkrétních oprávnění

Přímé provádění změn v souboru sudoers je proveditelné, ale může se stát neřiditelným, protože zásady a pravidla rostou. Lepší alternativou je místo toho použít direktivy include. Tímto způsobem můžete vytvořit více konfiguračních souborů obsahujících různé vlastní zásady a pravidla.

Předpokládejme, že chcete dát skupině uživatelů, aby spouštěli specifické síťové příkazy jako root. Chcete-li tak učinit, museli byste vytvořit soubor v adresáři /etc/sudoers.d obsahující vlastní pravidla pro danou skupinu.

1. Nejprve vytvořte skupinu, kterou chcete, která bude cílem vlastního pravidla. V tomto příkladu je název skupiny netadmin.

sudo addgroup netadmin

2. Dále vytvořte běžný uživatelský účet a udělejte jej členem skupiny netadmin.

sudo adduser ata
sudo usermod -aG netadmin ata
id ata

3. Nyní vytvořte nový soubor sudoers s názvem /etc/sudoers.d/networking a otevřete jej pomocí visudo.

sudo visudo -f /etc/sudoers.d/networking

4. Zkopírujte a vložte následující řádky do sítě soubor.

Cmnd_Alias     CAPTURE = /usr/sbin/tcpdump
Cmnd_Alias     SERVERS = /usr/sbin/apache2ctl, /usr/bin/htpasswd
Cmnd_Alias     NETALL = CAPTURE, SERVERS
%netadmin ALL=NETALL

Řádky Cmnd_Alias ​​vytvářejí aliasy pro příkazy. V tomto příkladu přiřadíte alias CAPTURE pro příkaz tcpdump a SERVERS pro příkazy apache2ctl a htpasswd. Představte si tyto řádky jako seskupení příkazů dohromady a přidělování jim společných jmen.

Poslední řádek určuje, že členové skupiny netadmin mohou spouštět jakýkoli příkaz v aliasu NETALL jako root. Tento řádek musí následovat za řádky Cmnd_Alias.

5. Chcete-li otestovat oprávnění sudo účtu ata, přepněte na uživatelský účet ata.

su - ata

6. Nyní spusťte jeden z příkazů, ke kterým má uživatel přístup sudo, například tcpdump.

sudo tcpdump -c 5

Jak můžete vidět níže, příkaz sudo by měl fungovat, protože účet má přístup k jeho spuštění.

7. Dále otestujte a potvrďte, že účet nemůže spouštět žádné další příkazy, které nejsou ve vlastním pravidle, jako je lshw.

sudo lshw

V důsledku toho se pokus o sudo nezdaří, protože váš účet nemá oprávnění spustit příkaz jako root.

8. Nakonec se přepněte zpět na svůj účet spuštěním níže uvedeného příkazu.

exit

Posílení zabezpečení pomocí možnosti passwd_tries

Nikomu nemůžete dovolit, aby se pokusil zadávat nesprávné heslo pomocí sudo tak často, jak chce – to by byla otevřená výzva k útokům hrubou silou nebo sprejováním hesla. Jako preventivní opatření musíte nastavit maximální počet opakování přidáním možnosti passwd_tries do souboru sudoers.

1. Nejprve otevřete vlastní soubor sudoers pomocí visudo.

sudo visudo -f /etc/sudoers.d/networking

2. Přidejte níže uvedený řádek na konec souboru sudoers. Tento řádek umožní až čtyři nesprávné pokusy o zadání hesla sudo, než zabrání dalším pokusům.

Defaults passwd_tries=4

Vlastní soubory sudoers by nyní měly vypadat stejně jako níže uvedený snímek obrazovky. Ujistěte se, že jste soubor uložili a ukončete editor.

3. Nyní se přepněte na uživatelský účet ata a znovu spusťte příkaz tcpdump jako uživatel root. Tentokrát však zadejte nesprávné heslo, dokud výzva k zadání hesla neskončí.

sudo tcpdump

Po čtvrtém pokusu se špatným heslem uvidíte, že vám sudo zabrání popáté zadat další heslo.

Závěr

V tomto tutoriálu jste se naučili základy výchozího souboru sudoers. Vytvořili jste vlastní pravidla v samostatném souboru sudoers pro udělování vlastních oprávnění. Vytváření a používání vlastních pravidel je bezpečnější než přidávání uživatelů do sudo skupina.

Také jste se naučili, jak použít volbu passwd_tries k určení, kolik nesprávných pokusů o heslo může uživatel provést, než sudo pokus o ověření ukončí. Můžete zvýšit podrobnou kontrolu toho, kteří uživatelé mají přístup k jakým příkazům.

Nezastavujte se zde! Se souborem sudoers můžete dělat mnohem více, například přidat soubor s přednáškou, abyste okořenili uživatelský zážitek sudo. Děkujeme vám za přečtení a bavte se při zabezpečení vašeho systému Linux!


Linux
  1. Zkopírujte soubory v terminálu Linux

  2. Přejmenujte soubor v terminálu Linux

  3. Přesunout soubory v terminálu Linux

  1. Najděte soubory a adresáře v Linuxu pomocí příkazu find

  2. Analyzujte linuxové jádro pomocí ftrace

  3. Zkopírujte a vložte na příkazový řádek Linuxu pomocí xclip

  1. Zkontrolujte stav souboru v systému Linux pomocí příkazu stat

  2. Začínáme s příkazem tac systému Linux

  3. Třídit příkaz v Linuxu s příklady