Jak nastavit Linux chroot vězení

termín chroot vězení byl poprvé použit v roce 1992, v článku o prominentní bezpečnostní výzkumník, Billa Cheswicka, (což je zajímavé, pokud jste do takové věci, můžete najít článek zde). Chroot jails se začal objevovat v roce 2003 s aplikacemi jako IRC a FTP. V roce 2005 společnost Sun představila svou technologii “kontejnerů” nazvanou zóny, která byla předchůdcem konceptu jmenných prostorů, což je základní technologie používaná s kontejnery.

Chroot základy

Chroot umožňuje správci řídit přístup ke službě nebo souborový systém při kontrole expozice podkladových prostředí serveru. Dva běžné příklady, se kterými se můžete setkat, jsou během zaváděcí sekvence a “nouzového shellu” na systémech Red Hat/CentOS/Fedora a na zabezpečeném FTP (SFTP).

příkaz vypadá takto:

chroot <newroot> ]

podobně jako příkaz sudo příkaz chroot mění prostředí následujícího příkazu. Jinými slovy, změní vás do adresáře newroot a také z tohoto adresáře udělá adresář” pracovní”. command se pak spustí v tomto umístění, což je užitečné pro věci, jako je záchrana systému, který se nespustí.

na rozdíl od sudo budete” v ” adresáři. Tato praxe je opět užitečná, pokud zavádíte z externího média, ale potřebujete přístup k “lokálnímu” souborovému systému nebo příkazu, abyste mohli pracovat.

další běžné použití chroot je omezit službu nebo uživatele pomocí obalu ke skrytí zbytku souborového systému, a proto omezit vzdálený pohled uživatele na data ostatních uživatelů. Populární implementace pomocí tohoto přístupu SFTP.

příklad

než začnete pracovat na tomto příkladu, měli byste se ujistit, že máte zálohy. V tomto případě, zálohovat /etc/ssh/sshd_config soubor, protože budete dělat změny, že jeden specificky:

# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Pro teď, budete omezit pouze SFTP, aby uživatelé své domovské adresáře na serveru. Tento požadavek znamená, že budete muset přidat uživatele a dát je do skupiny:

# useradd -g sftpusers -s /sbin/nologin -p nick nick

Všimněte si, že tím přiřadíte nick účet bez přihlašovacího shellu. Tato technika je praktická i dobrá bezpečnostní praxe: pokud právě používá SFTP, neměl by mít přihlašovací oprávnění. V dalším článku budu diskutovat o poskytování shellu vzdáleným uživatelům.

nyní musíte říct službě ssh, co dělat, když se uživatelé SFTP přihlásí. Otevřete soubor /etc/ssh/sshd_config a na konec přidejte následující:

Subsystem sftp internal-sftpMatch Group sftpusersForceCommand internal-sftpChrootDirectory /homeX11Forwarding noAllowTcpForwarding no

je důležité, že můžete přidat tato nastavení jako samostatný set položek, a že používáte Match syntaxe, naznačují, že tato část se vztahuje pouze na uživatele v této skupině. Pokud jste provedli změny stávajících položek, budou se vztahovat na všechny uživatele SSH, což by mohlo přerušit vzdálený přístup.

konfigurace linky rozebrat takto:

  • ForceCommand ssh vybrat jeho vestavěný-in zařízení poskytnout SFTP služby (které můžete ovládat nezávisle na sobě).
  • ChrootDirectory řekne sshd, kam má uživatel omezit.
  • Subsystem sftp internal-sftp řekne sshd načíst interní službu sftp a zpřístupnit ji.

možná Budete muset ujistěte se, že to Subsystem není definován již tím, že komentuje mimo tento řádek dříve v config souboru:

# override default of no subsystems# Subsystem sftp /usr/libexec/openssh/sftp-server

Jakmile jste provedli změny a zkontrolovat pravopis, jděte do toho a uložte změny. Poté restartujte sshd:

# systemctl restart sshd

Otestujte nového uživatele:

$ sftp nick@showmenick@showme's password:Connected to [email protected]> lsaccounting ansible fred jason kenny lisa nicksftp> pwdRemote working directory: /sftp> exit

Jejda, vydrž jen jednu minutu: vypadá to, že můžete vidět všechny adresáře ostatních uživatelů. Do těchto adresářů však nemůžete přejít:

sftp> cd fredsftp> lsremote readdir("/fred"): Permission denied

můžete nasměrovat chroot uživatele, aby jejich vlastní domácí adresář změnou ChrootDirectory v sshd_config souboru, jako je tento:

ChrootDirectory /

Tato rychlá změna je pohled na Nicka, jako by je ve svém vlastním domovském adresáři, a on nebude moci vidět žádné další uživatelské soubory:

sftp> pwdRemote working directory: /home/nicksftp>sftp> exit$ touch test.txt$ sftp nick@showmenick@showme's password:Connected to [email protected]> put test.txtUploading test.txt to /home/nick/test.txttest.txt 100% 0 0.0KB/s 00:00sftp> lstest.txtsftp>

tam, Kde to šlo? Podívejte se na tohle:

# ls /home/nicktest.txt

Všimněte si, že chroot jail není samo o sobě považováno za přiměřené bezpečnostní omezení. Zároveň to zabrání uživateli měnit z vyhrazeného adresáře, existují způsoby, jak kolem tohoto (obecná myšlenka je odkazoval se na v chroot(2) man stránky, které byste měli vzít podívat na to, pokud uvažujete o použití tohoto triku ve výrobě – nebo business-kritických souvislostech.)

zabalení (prozatím)

takže můžete vidět, že chroot může být docela užitečným nástrojem. V části 2 se podívám více na přiřazení konkrétních adresářů uživatelům a poskytnutí prostředí shellu vzdálenému uživateli bez vystavení zbytku serveru.

nové kontejnery? Stáhněte si základní nátěr kontejnerů a naučte se základy linuxových kontejnerů.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.