За съжаление, дори след предприемане на важни мерки за сигурност, уязвимостите в сигурността все още намират път в сигурни системи. Един от начините за управление и защита на вашата система е чрез ограничаване на възможните щети след настъпване на атака.
В този урок ще обсъдим процеса на използване на chroot jail за управление на системни повреди в случай на атака. Ще разгледаме как да изолираме процеси и подпроцеси в определена среда с фалшиви root права. Това ще ограничи процеса до определена директория и ще откаже достъп до други системни области.
Кратко въведение за chroot затвора
Chroot jail е метод за изолиране на процеси и техния подпроцес от основната система, използвайки фалшиви root права.
Както споменахме, изолирането на определен процес с помощта на фалшиви root права ограничава щетите в случай на злонамерена атака. Chrooted услугите са ограничени до директориите и файловете в техните директории и не са постоянни при рестартиране на услугата.
Защо да използвам chroot jail
Основната цел на chroot jail е като мярка за сигурност. Chroot е полезен и при възстановяване на загубени пароли чрез монтиране на устройства от медии на живо.
Има различни предимства и недостатъци при настройването на затвора за chroot. Те включват:
Предимства
- Ограничава достъпа: В случай на компрометиране на сигурността, единствените повредени директории са само тези в chroot jail.
- Командни ограничения: Потребителите или процесите се ограничават до команди, разрешени в затвора.
Недостатъци
- Може да бъде предизвикателство за настройка.
- Изисква много работа - Ако имате нужда от допълнителна команда от разрешените по подразбиране, трябва да я включите ръчно.
Как да създадете основен затвор Chroot
В този процес ще създадем основен chroot затвор с 3 команди, ограничени до тази папка. Това ще ви помогне да илюстрирате как да създадете затвор и да задавате различни команди.
Започнете със създаване на основна папка. Можете да мислите за тази папка като / папката в основната система. Името на папката може да бъде всяко. В нашия случай го наричаме / chrootjail
sudo mkdir / chrootjailЩе използваме тази директория като фалшив корен, съдържащ командите, които ще й присвоим. С командите, които ще използваме, ще ни е необходима директория bin (съдържа изпълнимите команди) и и т.н., директория (съдържаща конфигурационни файлове за командите).
В папката / chrootjail създайте тези две папки:
sudo mkdir / chrootjail / и т.н., bin
Следващата стъпка е да създадем директории за динамично свързани библиотеки за командите, които искаме да включим в затвора. За този пример ще използваме команди bash, ls и grep.
Използвайте командата ldd, за да изброите зависимостите на тези команди, както е показано по-долу:
sudo ldd / bin / bash / bin / ls / bin / grep
Ако не сте в папката bin, трябва да предадете пълния път за командите, които искате да използвате. Например ldd / bin / bash или ldd / bin / grep
От изхода ldd по-горе ни трябват директориите lib64 и / lib / x86_64-linux-gnu. Вътре в директорията на затвора създайте тези папки.
sudo mkdir -p / chrootjail lib / x86_64-linux-gnu, lib64След като създадем динамичните библиотечни директории, можем да ги изброим с помощта на дърво, както е показано по-долу:
С напредването ви ще започнете да получавате ясна представа за това какво означава затвор chroot.
Ние създаваме среда, подобна на нормална коренна директория на Linux система. Разликата е, че в тази среда са разрешени само специфични команди и достъпът е ограничен.
Сега, когато създадохме кошчето. и т.н., lib и lib64, можем да добавим необходимите файлове в съответните им директории.
Нека започнем с двоичните файлове.
sudo cp / bin / bash / chrootjail / bin && sudo cp / bin / ls / chrootjail / bin && sudo cp / bin / grep / chrootjail / bin
След като копирахме двоичните файлове за командите, от които се нуждаем, ние изискваме библиотеките за всяка команда. Можете да използвате командата ldd, за да видите файловете за копиране.
Нека започнем с bash. За bash изискваме следните библиотеки:
/ lib / x86_64-linux-gnu / libtinfo.така.6/ lib / x86_64-linux-gnu / libdl.така.2
/ lib / x86_64-linux-gnu / libc.така.6
/ lib64 / ld-linux-x86-64.така.2
Вместо да копираме всички тези файлове един по един, можем да използваме обикновен цикъл for, за да копираме всяка библиотека във всички библиотеки в / chrootjail / lib / x86_64-linux-gnu
Нека повторим този процес както за ls, така и за командата grep:
За ls команда:
За командата grep:
След това, в директорията lib64, имаме една споделена библиотека във всички двоични файлове. Можем просто да го копираме с помощта на проста cp команда:
След това нека редактираме основния файл за вход в bash (намиращ се в / etc / bash.bashrc в Debian), за да можем да променим подканата на bash по наш вкус. Използване на прости команди за ехо и тройник, както е показано:
sudo echo 'PS1 = "CHROOTJAIL #"' | sudo tee / chrootjail / etc / bash.bashrcСлед като изпълним всички стъпки по-горе, можем да влезем в затвора, използвайки командата chroot, както е показано.
sudo chroot / chrootjail / bin / bashЩе получите root права с подканата, подобна на създадената в командата echo and tee по-горе.
След като влезете, ще видите, че имате достъп само до командите, които сте включили, когато сте създали затвора. Ако се нуждаете от повече команди, трябва да ги добавите ръчно.
ЗАБЕЛЕЖКА: Тъй като сте включили черупката на bash, ще имате достъп до всички вградени команди на bash. Това ви позволява да излезете от затвора с помощта на командата за излизане.
Заключение
Този урок разгледа какво е chroot jail и как можем да го използваме, за да създадем изолирана среда от основната система. Можете да използвате техниките, разгледани в ръководството, за да създадете изолирана среда за критични услуги.
За да практикувате наученото, опитайте се да създадете затвор на apache2.
УКАЗАНИЕ: Започнете със създаване на коренна директория, добавете конфигурационните файлове (etc / apache2), добавете корен на документа (/ var / www / html), добавете двоичен файл (/ usr / sbin / apache2) и накрая добавете необходимите библиотеки (ldd / usr / sbin / apache2)