NOPASSWD
nemá zásadní vliv na bezpečnost. Jeho nejviditelnějším účinkem je poskytnout ochranu, když uživatel nechá svou pracovní stanici bez dozoru:útočník s fyzickým přístupem ke své pracovní stanici pak může extrahovat data, provádět akce a zavádět malware s oprávněními uživatele, ale nezvýšit svůj přístup k rootovi. Tato ochrana má omezené použití, protože útočník může zavést program typu keylogger, který zaznamená heslo uživatele, až ho příště zadá v příkazovém řádku sudo nebo do spořiče obrazovky.
Nicméně vyžadování hesla zvyšuje laťku pro útočníka. V mnoha případech je ochrana proti nedůmyslným útočníkům užitečná, zejména ve scénářích bezobslužných pracovních stanic, kde je útok často příležitostí a útočník nemusí vědět, jak v krátké době najít a nakonfigurovat diskrétní malware. Navíc je těžší skrýt malware, když nemáte oprávnění root – nemůžete se skrýt před rootem, pokud nemáte root.
Existuje několik realistických scénářů, kdy chybějící heslo chrání i před sofistikovanými útočníky. Například ukradený notebook:je ukraden notebook uživatele, včetně soukromých klíčů SSH; buď se zloději podaří uhodnout heslo k souboru klíčů (třeba hrubou silou), nebo k nim získá přístup z paměti klíčového agenta. Pokud je krádež zjištěna, je to signál k prošetření nedávné aktivity na účtu daného uživatele, což znamená, že by měl být detekován nasazený malware. Pokud měl útočník pouze přístup na úrovni uživatele, vše, co udělal, zanechá stopy v protokolech; pokud útočník získal heslo uživatele a spustil sudo, všechny protokoly jsou nyní kompromitovány.
Nevím, zda jsou nevýhody NOPASSWD
vyvažte výhody pro váš případ použití. Musíte to vyvážit se všemi ostatními faktory vaší situace. Například se zdá, že povolujete, ale nevynucujete různá hesla. Můžete místo toho použít centralizovanou databázi účtů? Jak velké omezení mezi svými systémy potřebujete? Zvažujete alternativy k Ansible, které by podporovaly různá sudo hesla? Uvažovali jste o jiných ověřovacích mechanismech?
Existují dva konkrétní případy, proč nechcete sudo bez hesla:
- Jedná se o obranný mechanismus proti uživatelům se zlými úmysly, kteří získají přístup k účtu správce. To může být způsobeno zneužitím nebo tím, že administrátor nechá svou pracovní stanici bez dozoru, aniž by uzamkl svou relaci.
- Nyní znovu zadat heslo při používání sudo dává impulzivním uživatelům čas na rozmyšlenou, než akci skutečně provedou.
O automatizaci:
Souhlasím, že to můžete udělat bez hesla, ale nevyžadováním hesla sudo ve skutečnosti dáváte VŠECHNY přístup k vašemu automatizačnímu nástroji. Nyní přemýšlejte, k čemu je tento nástroj vlastně zapotřebí? Opravdu potřebuje všechny tyto přístupy? Pravděpodobně ne.
Sudo přichází s příjemnou funkcí, která vám umožňuje konfigurovat konkrétní příkazy pomocí NOPASSWD
příznak v souboru sudoers:
username myhost = (root) NOPASSWD: /sbin/shutdown
username myhost = (root) NOPASSWD: /sbin/reboot
Jedna věc, která nevypadá, že by na to někdo z nějakého důvodu poukázal (opravte mě, pokud se mýlím), je to, že umožňuje libovolnému spuštěnému programu povýšit na root přístup, aniž byste to věděli. Normálně, pokud omylem spustíte škodlivý program nebo skript jako uživatel bez oprávnění uživatele sudo, pak i když může být stále schopen napáchat mnoho škod, stále (s výjimkou samostatného exploitu) nebude mít práva root. Takže se alespoň nebudete muset starat o rootkit nebo tak něco. Ale s režimem NOPASSWD takovou ochranu nemáte. Jakýkoli program, který běží pod vaším uživatelem, bude schopen eskalovat do rootu opětovným vyvoláním pomocí sudo. Malware k tomu stále musí být speciálně naprogramován a jinak nebude mít přístup root, ale co pak se škodlivým kódem, který to dělá?