Vyhledávání na webu

10 užitečných konfigurací Sudoers pro nastavení 'sudo' v Linuxu


V Linuxu a dalších unixových operačních systémech může pouze root uživatel spouštět všechny příkazy a provádět určité kritické operace v systému, jako je instalace a aktualizace, odebírání balíčků, vytváření uživatelů a skupin, úprava důležitých systémů. konfigurační soubory a tak dále.

Nicméně správce systému, který převezme roli uživatele root, může pomocí příkazu sudo a několika konfigurací povolit ostatním normálním uživatelům systému spouštět některé příkazy a také provádět řadu důležitých systémových operací, včetně těch výše uvedených.

Alternativně může správce systému sdílet heslo uživatele root (což není doporučená metoda), takže normální uživatelé systému mají přístup k účtu uživatele root pomocí příkazu su.

sudo umožňuje povolenému uživateli spustit příkaz jako root (nebo jiný uživatel), jak je uvedeno v zásadách zabezpečení:

  1. Čte a analyzuje /etc/sudoers, vyhledá volajícího uživatele a jeho oprávnění,
  2. poté vyzve volajícího uživatele k zadání hesla (obvykle heslo uživatele, ale může to být i heslo cílového uživatele. Nebo jej lze přeskočit pomocí značky NOPASSWD),
  3. poté sudo vytvoří podřízený proces, ve kterém zavolá setuid() pro přepnutí na cílového uživatele
  4. dále spustí shell nebo příkaz zadaný jako argumenty v podřízeném procesu výše.

Níže je deset konfigurací souborů /etc/sudoers pro úpravu chování příkazu sudo pomocí položek Výchozí.

sudo cat /etc/sudoers
#
This file MUST be edited with the 'visudo' command as root.
#
Please consider adding local content in /etc/sudoers.d/ instead of
directly modifying this file.
#
See the man page for details on how to write a sudoers file.
#
Defaults	env_reset
Defaults	mail_badpass
Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults	logfile="/var/log/sudo.log"
Defaults	lecture="always"
Defaults	badpass_message="Password is wrong, please try again"
Defaults	passwd_tries=5
Defaults	insults
Defaults	log_input,log_output

Typy výchozích položek

Defaults                parameter,   parameter_list     #affect all users on any host
Defaults@Host_List      parameter,   parameter_list     #affects all users on a specific host
Defaults:User_List      parameter,   parameter_list     #affects a specific user
Defaults!Cmnd_List      parameter,   parameter_list     #affects  a specific command 
Defaults>Runas_List     parameter,   parameter_list     #affects commands being run as a specific user

Pro rozsah tohoto průvodce se ve formulářích níže vynulujeme na první typ Výchozích. Parametry mohou být příznaky, celočíselné hodnoty, řetězce nebo seznamy.

Měli byste si uvědomit, že příznaky jsou implicitně booleovské a lze je vypnout pomocí operátoru '!' a seznamy mají dva další operátory přiřazení, += (přidat do seznamu) a -= (odstranit ze seznamu).

Defaults     parameter
OR
Defaults     parameter=value
OR
Defaults     parameter -=value   
Defaults     parameter +=value  
OR
Defaults     !parameter       

1. Nastavte zabezpečenou cestu

Toto je cesta používaná pro každý příkaz spuštěný pomocí sudo, má dvě důležitosti:

  1. Používá se, když správce systému nedůvěřuje uživatelům sudo, že mají zabezpečenou proměnnou prostředí PATH
  2. Chcete-li oddělit „kořenovou cestu“ a „cestu uživatele“, toto nastavení se netýká pouze uživatelů definovaných pomocí exempt_group.

Chcete-li jej nastavit, přidejte řádek:

Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"

2. Povolte sudo v relaci přihlášení uživatele TTY

Chcete-li povolit, aby bylo sudo vyvoláno ze skutečného tty, ale ne pomocí metod, jako jsou skripty cron nebo cgi-bin, přidejte řádek:

Defaults  requiretty   

3. Spusťte příkaz Sudo pomocí pty

Útočníci mohou několikrát spustit škodlivý program (například virus nebo malware) pomocí sudo, což by opět rozdělilo proces na pozadí, který zůstává na koncovém zařízení uživatele, i když hlavní program skončí.

Abyste se takovému scénáři vyhnuli, můžete nakonfigurovat sudo tak, aby spouštělo jiné příkazy pouze z psuedo-pty pomocí parametru use_pty, ať už je protokolování I/O zapnuto nebo ne jako následuje:

Defaults  use_pty

4. Vytvořte Sudo Log File

Ve výchozím nastavení se sudo přihlašuje přes syslog(3). Chcete-li však zadat vlastní soubor protokolu, použijte parametr logfile takto:

Defaults  logfile="/var/log/sudo.log"

Chcete-li zaznamenat název hostitele a čtyřmístný rok do vlastního souboru protokolu, použijte parametry log_host a log_year následovně:

Defaults  log_host, log_year, logfile="/var/log/sudo.log"

Níže je uveden příklad vlastního souboru protokolu sudo:

5. Log Sudo Command Input/Output

Parametry log_input a log_output umožňují sudo spustit příkaz v pseudo-tty a zaznamenat všechny uživatelské vstupy a všechny výstupy odeslané na obrazovku.

Výchozí adresář I/O protokolu je /var/log/sudo-io, a pokud existuje pořadové číslo relace, je uloženo v tomto adresáři. Pomocí parametru iolog_dir můžete zadat vlastní adresář.

Defaults   log_input, log_output

Jsou podporovány některé únikové sekvence, jako je %{seq}, které se rozšíří na monotónně se zvyšující sekvenční číslo 36, jako je 000001, kde se každé dvě číslice použijí k vytvoření nového adresáře, např. 00/00/01 jako v příkladu níže:

cd /var/log/sudo-io/
ls
cd  00/00/01
ls
cat log

Zbytek souborů v tomto adresáři můžete zobrazit pomocí příkazu cat.

6. Přednáška Sudo Users

Chcete-li poučit uživatele sudo o používání hesla v systému, použijte parametr lecture, jak je uvedeno níže.

Má 3 možné hodnoty:

  1. vždy – vždy poučit uživatele.
  2. jednou – pouze poučit uživatele při prvním spuštění příkazu sudo (používá se, pokud není zadána žádná hodnota)
  3. nikdy – nikdy nepoučujte uživatele.
 
Defaults  lecture="always"

Navíc můžete nastavit vlastní soubor přednášky pomocí parametru soubor_lekce, zadejte do souboru příslušnou zprávu:

Defaults  lecture_file="/path/to/file"

7. Zobrazit vlastní zprávu, když zadáte nesprávné heslo sudo

Když uživatel zadá špatné heslo, na příkazovém řádku se zobrazí určitá zpráva. Výchozí zpráva je „sorry, try again “, můžete zprávu upravit pomocí parametru badpass_message následovně:

Defaults  badpass_message="Password is wrong, please try again"

8. Zvyšte limit pokusů sudo hesla

Parametr passwd_tries se používá k určení, kolikrát se může uživatel pokusit zadat heslo.

Výchozí hodnota je 3:

Defaults   passwd_tries=5 

Chcete-li nastavit časový limit hesla (výchozí je 5 minut) pomocí parametru passwd_timeout, přidejte následující řádek:

Defaults   passwd_timeout=2

9. Nechte Sudo urazit vás, když zadáte špatné heslo

V případě, že uživatel zadá špatné heslo, sudo zobrazí na terminálu urážky s parametrem urážky. Tím se automaticky vypne parametr badpass_message.

Defaults  insults 

Přečtěte si více: Nechte sudo urazit vás, když zadáte nesprávné heslo

10. Další informace o konfiguraci sudo

Kromě toho se můžete dozvědět více o konfiguracích příkazů sudo v článku: Rozdíl mezi su a sudo a Jak nakonfigurovat sudo v Linuxu.

A je to! Další užitečné konfigurace příkazů sudo nebo triky a tipy můžete sdílet s uživateli Linuxu prostřednictvím sekce komentářů níže.