Vložte jej na CD nebo DVD. Jednou zapisovatelný druh, ne ty vymazatelné. Nebo nějaký jiný druh zařízení pouze pro čtení.
Dobře, předpokládám, že chcete softwarové řešení, takže zde je několik nápadů:Možná byste mohli vytvořit sadu pravidel SELinux, která zakáže systémové volání, které chattr
použití, a to i pro root. Další možností by bylo použití schopností:nastavení +i
vyžaduje CAP_LINUX_IMMUTABLE
schopnost, takže pokud dokážete uspořádat množinu ohraničující schopnosti všech procesů tak, aby to nezahrnovala, pak nikdo nemůže tyto příznaky změnit. Ale potřebovali byste podporu od init
aby to platilo pro všechny procesy. Systemd to umí, ale myslím, že by to bylo potřeba udělat pro každou službu zvlášť.
Pokud to však uděláte, pamatujte, že běžný root může upravit souborový systém z nezpracovaného zařízení (to je to, co debugfs
je pro), takže byste tomu také měli zabránit a také zabránit úpravám jádra (načítání modulů). Načítání modulů lze zabránit pomocí kernel.modules_disabled
sysctl, ale nejsem si jistý, zda zabránit přístupu k raw zařízením. A také zajistit neměnnost všech příslušných konfiguračních souborů.
Každopádně poté byste také museli zabránit změně způsobu bootování systému, jinak by někdo mohl restartovat systém s jádrem, které umožňuje potlačit výše uvedená omezení.
Neexistuje žádný způsob, jak to udělat. NĚKDO bude vždy schopen vrátit soubor do stavu zapisovatelného, pokud není na médiu pouze pro čtení, jako je CD-ROM. Můžete účinně zabránit root
z toho pomocí oprávnění SELinux (nevím, jak to udělat, nebo bych uvedl příklad), ale pak by uživatel, který má oprávnění, stále mohl věci vrátit zpět.
Co chcete, je povinná kontrola přístupu. Umožňuje vám zadat sadu oprávnění, která jádro nedovolí přepsat, a to ani rootem. SELinux je jedním z dobře známých takových systémů, Smack je dalším příkladem a AppArmor je třetím takovým systémem. V Linuxu jsou implementovány jako linuxové bezpečnostní moduly, což je univerzální zařízení pro řízení přístupu mimo tradiční bezpečnostní model podobný UNIXu. Kromě stávajících univerzálních systémů můžete samozřejmě vytvořit svůj vlastní pro speciální účel.
Root má samozřejmě možnost zapnout nebo vypnout celé zařízení nebo změnit oprávnění MAC souborů a některé z těchto systémů dokonce umožňují udělit tyto schopnosti uživatelům bez oprávnění root. V závislosti na systému je však také možné tuto schopnost zakázat. Vím, že SELinux a Smack to umožňují; Pochybuji, že to dělají všichni LSM. Po deaktivaci je jediným způsobem, jak tuto schopnost znovu získat, restartovat jádro. Poté budete chtít, aby proces spouštění deaktivoval tuto možnost před povolením přístupu uživatele. Pokud jsou vaše jádro a bootovací proces bezpečné, lze takovou konfiguraci (alespoň teoreticky) změnit pouze fyzickým odebráním úložného média za účelem její změny.
Jako příklad, pokud jste používali SMACK, můžete udělat:
chsmack -a _ <file>
To by nastavilo soubor tak, aby měl speciální štítek "_", který umožňuje pouze čtení nebo spouštění, ale nikdy zápis. Nyní ani root nemůže zapisovat tento soubor (jakmile byl aktivován SMACK a byla deaktivována možnost přepsání zabezpečení, jak je uvedeno výše).
Musíte se však také ujistit, že je vaše jádro bezpečné. Ve výchozím nastavení je pro roota snadné rozvrátit jádro, protože jádro důvěřuje uživateli root. Pokud root může pouze odstranit bezpečnostní modul, moc to nepomůže. Seznam takových metod je zde, ale mějte na paměti, že žádný takový seznam nemůže být za všech okolností skutečně úplný.
Nakonec, v závislosti na vašich okolnostech, možná budete muset zabezpečit proces spouštění. U počítače, kde máte jediný fyzický přístup, to nemusí být potřeba, ale pro maximální zabezpečení opravdu chcete šifrované souborové systémy a bezpečný způsob spouštění jádra, jako je UEFI Secure Boot.