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
řeknesshd
, kam má uživatel omezit. -
Subsystem sftp internal-sftp
řeknesshd
načíst interní službusftp
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ů.