Je jedním z mých úkolů, jako správce Linuxu, provádět nějaký druh úkolu, kterým je zrušit oprávnění uživatele root pro aplikace běžící na mých systémech?
Ano. Je to vaše práce, ujistěte se, že je hotovo. Pokud to aplikace nedělá, musíte si všimnout, že to aplikace nedělá, a udělat to sami.
Nebo se prostě spoléhám na vývojáře aplikací, aby se ujistili, že za tímto účelem napsali svůj kód?
Nespoléhejte na vývojářích aplikací, že něco udělali. Správce systému Linux má k dispozici spoustu nástrojů, jak získat fakta toho, co aplikace dělají za běhu.
Povinností programátora aplikace je zajistit, aby aplikace zrušila oprávnění root a fungovala s neprivilegovanými právy. Pokud to aplikace nedělá, nemůžete s tím nic dělat – kromě toho, že se zdržíte používání aplikace, odešlete hlášení o chybě vývojáři nebo sami implementujete potřebné změny v kódu.
Na druhou stranu jste to vy , jako admin, který volí jako který uživatel se aplikace spouští; zlatým pravidlem je nikdy neudělit procesu více oprávnění, než potřebuje ke spuštění. Můžete tedy vytvořit neprivilegovaného uživatele – podívejte se do /etc/passwd
abyste získali představu o systémových účtech – a spusťte aplikaci jako tento uživatel. (Zřídkakdy to musíte dělat ručně; obvykle se o to vše postará, když instalujete software prostřednictvím správce balíčků.) Pokud však aplikace vyžaduje ke spuštění oprávnění root a pak se tato oprávnění nepodaří zrušit uprostřed běh, pak je to mimo vaši kontrolu.
Například starší verze sendmail
nutné ke spuštění SUID root, což byla bezpečnostní díra, pokud se vzdálenému útočníkovi podařilo úspěšně zneužít zranitelnost programu. Pokud jste měli sendmail
běžící jedinečně jako přenos pošty, můžete jej spustit jako neprivilegovaný uživatel.
Řekl bych, že jako správci systému je naším úkolem poskytnout aplikacím a uživatelům co nejmenší privilegia (která jim umožňují dělat jejich práci).
Uživatel nasazující aplikace Tomcat/Java nebo webové stránky nebo nasazující aplikaci s přístupem k databázi má zřídkakdy málo legitimních potřeb pro přístup root.
Většina frameworků také dnes ve výchozím nastavení upustí root.
Například pro vývojáře, kteří zde používají frameworky Java, dáváme vývojářům přístup pouze nepřivilegovanému uživateli schopnému nasazení a některé příkazy sudo omezené na (re)spuštění a zastavení několika klíčových služeb.
Šel bych ještě dále, že úkolem vývojového týmu není zabývat se produkčními servery.
Podle mých životních zkušeností se vývojářský tým často jen obává, jak svou práci dokončí, a není schopen zajistit správné řízení zabezpečení a kapacity bez plánování, vedení a proaktivního zásahu ze strany týmu správce systému.