Bohužel i po přijetí zásadních bezpečnostních opatření si bezpečnostní zranitelnosti stále nacházejí cestu do zabezpečených systémů. Jedním ze způsobů, jak spravovat a chránit váš systém, je omezení možného poškození, jakmile dojde k útoku.
V tomto tutoriálu probereme postup používání chroot vězení ke správě poškození systému v případě útoku. Podíváme se na to, jak izolovat procesy a podprocesy do konkrétního prostředí s falešnými oprávněními root. Tímto způsobem omezíte proces na konkrétní adresář a odepřete přístup k dalším oblastem systému.
Stručný úvod do chroot vězení
Chroot vězení je metoda izolace procesů a jejich podprocesů z hlavního systému pomocí falešných oprávnění root.
Jak již bylo zmíněno, izolace konkrétního procesu pomocí falešných oprávnění root omezuje škody v případě škodlivého útoku. Chrootované služby jsou omezeny na adresáře a soubory v jejich adresářích a po restartu služby nejsou trvalé.
Proč používat chroot vězení
Hlavním účelem chroot vězení je jako bezpečnostní opatření. Chroot je také užitečný při obnově ztracených hesel připojením zařízení ze živých médií.
Nastavení chroot vězení má různé výhody a nevýhody. Tyto zahrnují:
Výhody
- Omezuje přístup: V případě kompromisu zabezpečení jsou poškozené pouze adresáře v chroot vězení.
- Limity příkazů: Uživatelé nebo procesy jsou omezeni na příkazy povolené ve vězení.
Nevýhody
- Nastavení může být náročné.
- Vyžaduje hodně práce - Pokud potřebujete další příkaz, než který je ve výchozím nastavení povolen, musíte jej zahrnout ručně.
Jak vytvořit základní chroot vězení
V tomto procesu vytvoříme základní chroot vězení se 3 příkazy omezenými na tuto složku. To pomůže ilustrovat, jak vytvořit vězení a přiřadit různé příkazy.
Začněte vytvořením hlavní složky. Tuto složku si můžete představit jako složku / v hlavním systému. Název složky může být jakýkoli. V našem případě tomu říkáme / chrootjail
sudo mkdir / chrootjailTento adresář použijeme jako falešný kořen obsahující příkazy, které mu přiřadíme. S příkazy, které použijeme, budeme vyžadovat adresář bin (obsahuje spustitelné soubory příkazu) a atd., adresář (obsahující konfigurační soubory příkazů).
Ve složce / chrootjail vytvořte tyto dvě složky:
sudo mkdir / chrootjail / etc, bin
Dalším krokem je vytvoření adresářů pro dynamicky propojené knihovny pro příkazy, které chceme zahrnout do vězení. V tomto příkladu použijeme příkazy bash, ls a grep.
Pomocí příkazu ldd zobrazte seznam závislostí těchto příkazů, jak je znázorněno níže:
sudo ldd / bin / bash / bin / ls / bin / grep
Pokud nejste ve složce bin, musíte předat úplnou cestu k příkazům, které chcete použít. Například ldd / bin / bash nebo ldd / bin / grep
Z výše uvedeného výstupu ldd potřebujeme adresáře lib64 a / lib / x86_64-linux-gnu. V adresáři vězení vytvořte tyto složky.
sudo mkdir -p / chrootjail lib / x86_64-linux-gnu, lib64Jakmile máme vytvořené adresáře dynamické knihovny, můžeme je vypsat pomocí stromu, jak je znázorněno níže:
Jak budeme postupovat, začnete mít jasnou představu o tom, co chroot vězení znamená.
Vytváříme prostředí podobné běžnému kořenovému adresáři systému Linux. Rozdíl je v tom, že v tomto prostředí jsou povoleny pouze konkrétní příkazy a přístup je omezen.
Teď, když jsme vytvořili koš. atd., lib a lib64, můžeme přidat požadované soubory do příslušných adresářů.
Začněme s binárními soubory.
sudo cp / bin / bash / chrootjail / bin && sudo cp / bin / ls / chrootjail / bin && sudo cp / bin / grep / chrootjail / bin
Po zkopírování binárních souborů pro příkazy, které potřebujeme, vyžadujeme knihovny pro každý příkaz. K zobrazení souborů, které chcete zkopírovat, můžete použít příkaz ldd.
Začněme s bash. Pro bash vyžadujeme následující knihovny:
/ lib / x86_64-linux-gnu / libtinfo.tak.6/ lib / x86_64-linux-gnu / libdl.tak.2
/ lib / x86_64-linux-gnu / libc.tak.6
/ lib64 / ld-linux-x86-64.tak.2
Místo toho, abychom kopírovali všechny tyto soubory jeden po druhém, můžeme použít jednoduchou smyčku for ke zkopírování každé knihovny ve všech knihovnách do / chrootjail / lib / x86_64-linux-gnu
Zopakujme tento proces pro příkaz ls i grep:
Pro příkaz ls:
Pro příkaz grep:
Dále v adresáři lib64 máme jednu sdílenou knihovnu napříč všemi binárními soubory. Můžeme jej jednoduše zkopírovat pomocí jednoduchého příkazu cp:
Dále upravme hlavní přihlašovací soubor bash (umístěný v / etc / bash.bashrc v Debianu), abychom mohli vyladit výzvu bash podle našich představ. Pomocí jednoduchých echo a tee příkazů, jak je znázorněno:
sudo echo 'PS1 = "CHROOTJAIL #"' | sudo tee / chrootjail / etc / bash.bashrcPo dokončení všech výše uvedených kroků se můžeme přihlásit do prostředí vězení pomocí příkazu chroot, jak je znázorněno.
sudo chroot / chrootjail / bin / bashS výzvou získáte oprávnění root, podobná těm, která byla vytvořena ve výše uvedeném příkazu echo and tee.
Jakmile se přihlásíte, uvidíte, že máte přístup pouze k příkazům, které jste zadali při vytváření vězení. Pokud požadujete více příkazů, musíte je přidat ručně.
POZNÁMKA: Jelikož jste zahrnuli bash shell, budete mít přístup ke všem bash integrovaným příkazům. To vám umožní opustit vězení pomocí příkazu exit.
Závěr
Tento výukový program se zabýval tím, co je chroot vězení a jak jej můžeme použít k vytvoření izolovaného prostředí z hlavního systému. Techniky popsané v příručce můžete použít k vytvoření izolovaných prostředí pro kritické služby.
Chcete-li procvičit, co jste se naučili, zkuste vytvořit vězení apache2.
NÁZNAK: Začněte vytvořením kořenového adresáře, přidejte konfigurační soubory (etc / apache2), přidejte kořen dokumentu (/ var / www / html), přidejte binární soubor (/ usr / sbin / apache2) a nakonec přidejte požadované knihovny (ldd / usr / sbin / apache2)