2012-12-08

waqur: (Евро)
Операционная система FreeBSD содержит механизм jail(8), позволяющий создавать изолированные группы процессов, вроде легковесных виртуальных машин.

Джейлы эффективнее Xen-клеток, практически не потребляют ресурсов (т.к. используют общее с хостом ядро). Процессы из джейлов легко управляются с хоста (ps -A, kill, jls, jexec и т.п.). Каждый джейл видит только часть файловой системы и может быть ограничен в ресурсах (rctl, zfs set quota). На джейлах часто строится FreeBSD VPS-хостинг (например RootBSD.net), где каждый клиент имеет свою маленькую ОС и набор приложений с правами рута (извращенцы даже могут поставить GNU/kFreeBSD), однако в этой статье мы рассмотрим другую задачу — запуск web-сервера в минимальном джейле.

Зачем это нужно? В web-серверах, как и в другом софте, написанном на C, время от времени находят уязвимости к атакам типа "переполнение буфера", позволяющие удалённо захватить контроль над системой. Эти ошибки являются следствием технологии разработки софта, поэтому не могут быть исправлены окончательно. Каждая из них — предпоследняя.

Представьте себе: джейл, у которого в папке /bin нет шелла, только бинарные nginx и php-fpm. В папке /dev только null, urandom и ещё пара подобных устройств. В папке /etc только конфиги nginx'а, php.ini и файл master.passwd, в котором хэши паролей обоих пользователей root и www заменены звёздочками. Также в джейле есть /www, /logs и /tmp, где нет ничего интересного. Такой джейл может быть взломан через переполнение стека web-сервера или другого серверного процесса, но нагадить в основной системе или украсть пароль рута из него нельзя. Системный вызов mount(2) не работает, ICMP не работает, ноды устройств создавать нельзя, список внешних процессов недоступен, сигналы им отправить нельзя и так далее.

Пошаговая инструкция, как собрать статический nginx и php-fpm для использования в FreeBSD jail )

March 2024

S M T W T F S
     12
3456789
10111213141516
17181920212223
24252627282930
31      

Автор стиля

Развернуть

No cut tags
Page generated 2025-09-14 01:35 am
Powered by Dreamwidth Studios