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í:
- Čte a analyzuje /etc/sudoers, vyhledá volajícího uživatele a jeho oprávnění,
- 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),
- poté sudo vytvoří podřízený proces, ve kterém zavolá setuid() pro přepnutí na cílového uživatele
- 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:
- Používá se, když správce systému nedůvěřuje uživatelům sudo, že mají zabezpečenou proměnnou prostředí PATH
- 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:
- vždy – vždy poučit uživatele.
- 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)
- 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.