К сожалению, даже после принятия важнейших мер безопасности уязвимости системы безопасности все еще находят путь в защищенные системы. Один из способов управления и защиты вашей системы - это ограничение возможного ущерба при атаке.
В этом руководстве мы обсудим процесс использования chroot jail для управления повреждениями системы в случае атаки. Мы рассмотрим, как изолировать процессы и подпроцессы в конкретной среде с привилегиями ложного root. Это ограничит процесс определенным каталогом и запретит доступ к другим системным областям.
Краткое введение в chroot jail
Chroot jail - это метод изоляции процессов и их подпроцессов от основной системы с использованием ложных привилегий root.
Как уже упоминалось, изоляция определенного процесса с использованием поддельных привилегий root ограничивает ущерб в случае злонамеренной атаки. Chrooted-службы ограничены каталогами и файлами в своих каталогах и не сохраняются после перезапуска службы.
Зачем использовать chroot jail
Основное предназначение chroot jail - это мера безопасности. Chroot также полезен при восстановлении утерянных паролей путем подключения устройств с живых носителей.
Есть различные преимущества и недостатки установки chroot jail. Это включает:
Преимущества
- Ограничивает доступ: в случае нарушения безопасности единственными поврежденными каталогами являются те, которые находятся в chroot jail.
- Ограничения команд: пользователи или процессы ограничиваются командами, разрешенными в тюрьме.
Недостатки
- Может быть сложно настроить.
- Это требует много работы - если вам нужна дополнительная команда, чем те, которые разрешены по умолчанию, вы должны включить ее вручную.
Как создать простую Chroot-тюрьму
В этом процессе мы создадим простую клетку chroot с 3 командами, ограниченными этой папкой. Это поможет проиллюстрировать, как создать тюрьму и назначить различные команды.
Начните с создания основной папки. Вы можете думать об этой папке как о папке / в основной системе. Имя папки может быть любым. В нашем случае мы называем это / chrootjail
судо 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. Внутри каталога jail создайте эти папки.
sudo mkdir -p / chrootjail lib / x86_64-linux-gnu, lib64Создав каталоги динамической библиотеки, мы можем перечислить их в виде дерева, как показано ниже:
По мере нашего продвижения вы начнете получать четкое представление о том, что означает chroot jail.
Мы создаем среду, похожую на обычный корневой каталог системы Linux. Разница в том, что внутри этой среды разрешены только определенные команды, а доступ ограничен.
Теперь, когда мы создали корзину. так далее., lib и lib64, мы можем добавить необходимые файлы в соответствующие каталоги.
Начнем с двоичных файлов.
sudo cp / bin / bash / chrootjail / bin && sudo cp / bin / ls / chrootjail / bin && sudo cp / bin / grep / chrootjail / bin
Скопировав двоичные файлы для нужных нам команд, нам потребуются библиотеки для каждой команды. Вы можете использовать команду ldd для просмотра файлов для копирования.
Начнем с bash. Для bash нам потребуются следующие библиотеки:
/ библиотека / x86_64-Linux-GNU / libtinfo.так.6/ библиотека / x86_64-Linux-GNU / libdl.так.2
/ библиотека / 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 по своему вкусу. Используя простые команды echo и tee, как показано ниже:
sudo echo 'PS1 = "CHROOTJAIL #"' | Судо тройник / chrootjail / и т. д. / bash.bashrcПосле того, как мы выполнили все вышеперечисленные шаги, мы можем войти в среду тюрьмы, используя команду chroot, как показано.
sudo chroot / chrootjail / bin / bashВы получите привилегии root с запросом, аналогичным тем, которые были созданы в приведенных выше командах echo и tee.
После входа в систему вы увидите, что у вас есть доступ только к командам, которые вы включили при создании тюрьмы. Если вам нужно больше команд, вы должны добавить их вручную.
ПРИМЕЧАНИЕ: Поскольку вы включили оболочку bash, у вас будет доступ ко всем встроенным командам bash. Это позволяет вам выйти из тюрьмы с помощью команды exit.
Заключение
В этом руководстве рассказывается, что такое chroot jail и как мы можем использовать его для создания изолированной среды от основной системы. Вы можете использовать методы, описанные в руководстве, для создания изолированной среды для критически важных служб.
Чтобы попрактиковаться в том, что вы узнали, попробуйте создать тюрьму apache2.
НАМЕКАТЬ: Начните с создания корневого каталога, добавьте файлы конфигурации (etc / apache2), добавьте корень документа (/ var / www / html), добавьте двоичный файл (/ usr / sbin / apache2) и, наконец, добавьте необходимые библиотеки (ldd / usr / sbin / apache2)