Механизм управления доступом FreeBSD спроектирован для окружения с двумя видами пользователей: с административными привилегиями и без них. Часто желательно делегировать некоторые, но не все административные функции сторонам, не пользующимся доверием или пользующимся меньшим доверием, и в то же время установить обязательные для всей системы политики на взаимодействие и совместное использование процессов. Исторически попытки создания такого окружения были как трудными, так и дорогими. Главным механизмом для частичного делегирования административных полномочий является написание программы с устанавливаемым идентификатором пользователя, которая тщательно контролирует, какие из административных привилегий можно использовать. Эти программы с устанавливаемым идентификатором сложны для написания, трудны в сопровождении, ограничены в своей гибкости и подвержены ошибкам, которые позволяют получать нежелательные административные привилегии.
Многие операционные системы пытались снять эти ограничения, предоставляя управление системными ресурсами на более урезанном уровне. Эти усилия отличаются в степени успешности, но почти все они страдают от трех серьезных ограничений.
Повышение степени детализации управления безопасностью увеличивает сложность процесса администрирования, что в свою очередь повышает как возможности неправильного конфигурирования, так и требования к времени и ресурсам администрирования. Часто возрастание сложности ведет к значительной неудовлетворенности администратора, что может привести к двум видам пагубной политики: работе с отключенными возможностями безопасности и работе с конфигурацией по умолчанию в предположении, что она будет безопасной.
Возможности полезного разделения и приписывания их работающему коду и пользователям сложны. Многие привилегированные операции в FreeBSD выглядят независимыми, но на самом деле взаимосвязаны. Выдача одной привилегии может быть транзитивным по отношению ко многим другим. Например, возможность монтировать файловые системы создает возможность сделать доступными новые программы с устанавливаемым идентификатором пользователя, что в свою очередь может непреднамеренно предоставить другие возможности в плане безопасности.
Введение новых возможностей безопасности часто включает введение новых интерфейсов управления безопасностью. Когда для замещения механизма установки идентификатора пользователя в FreeBSD вводятся возможности более точного уровня модульности, приложения, которые раньше осуществляли перед своим выполнением проверку своей работы с правами суперпользователя, теперь должны быть изменены таким образом, чтобы не требовать для работы привилегий суперпользователя. Для приложений, работающих с привилегиями и выполняющих другие программы, теперь есть набор привилегий, от которых нужно добровольно отказаться перед выполнением другой программы. Такие изменения могут создать для существующих приложений значительную несовместимость и усложнить жизнь для разработчиков приложений, которые могут не знать о различной семантике безопасности на различных системах.
Этот абстрактный риск становится более ясным при использовании реального практического примера: многие провайдеры веб-служб используют FreeBSD для размещения веб-сайтов заказчиков. Эти провайдеры должны защитить целостность и конфиденциальность своих собственных файлов и служб от своих заказчиков. Они должны также защищать файлы и службы одного заказчика от (случайного или умышленного) доступа другим заказчиком. Провайдер хотел бы предоставить заказчикам значительную автономию, позволяя им устанавливать и поддерживать свое собственное программное обеспечение и управлять своими собственными службами, такими, как веб-серверы и другие программы-демоны, связанные с содержанием.
Это проблемное пространство решительно указывает в направлении решения разбиения на разделы. При помещении каждого заказчика в отдельный раздел они изолируются от случайной или умышленной модификации данных или раскрытия информации процессов заказчиками в других разделах. Делегирование функций управления внутри системы должно быть возможно без нарушения целостности и защиты конфиденциальности между разделами.
Управление доступом в стиле FreeBSD делает общеизвестно трудным возможности разделения на отсеки. Хотя такие механизмы, как chroot, предоставляют умеренный уровень обособления, у этого механизма есть серьезные недостатки как в масштабах его возможностей, так и предоставляемой эффективности. Системный вызов chroot впервые был добавлен для предоставления альтернативной среды построения для системы. Затем он был приспособлен для изолирования анонимного доступа ftp к системе.
Первоначальной целью chroot не было обеспечение безопасности. Даже при использовании для обеспечения безопасности для анонимного ftp набор допускаемых ftp операций тщательно контролировался, чтобы не допустить те из них, которые разрешали ускользать из среды chroot.
С годами были обнаружены три класса ухода за границы созданной chroot файловой системы.
- Рекурсивные уходы chroot. Уходы с использованием... Уходы с использованием fchdir.
Все эти уходы использовали отсутствие наблюдения за применением нового корневого каталога.
Для обнаружения и пресечения этих уходов были сделаны два изменения в chroot. Для предотвращения первых двух уходов записывался каталог первого уровня chroot, известный процессу. Любые попытки проходить назад через этот каталог запрещались. Третий уход с использованием fchdir предотвращается возвращением системным вызовом chroot ошибки, если у процесса были какие-либо открытые дескрипторы файлов, ссылающиеся на каталоги.
Даже с более строгой семантикой системного вызова chroot недостаточно для обеспечения полного разделения. Его обособление не простирается на пространства процессов или сетей. Следовательно, возможно как наблюдение, так и вмешательство в процессы за пределами своих отделений. Для предоставления окружения безопасной виртуальной машины FreeBSD добавило новое средство «тюрьма» (jail), построенное поверх chroot. Процессам в тюрьме предоставляется полный доступ к файлам, которыми они могут манипулировать, процессам, на которые они могут влиять, и сетевым службам за пределами их тюрьмы.
В отличие от других решений проблемы безопасности с точным уровнем модульности тюрьма не повышает в существенной степени требования к управлению политикой для системного администратора. Каждая тюрьма является виртуальной средой FreeBSD, которая допускает независимое управление локальной политикой. Среда внутри тюрьмы имеет те же свойства, как для центральной системы. Таким образом, среда тюрьмы знакома администратору и совместима с приложениями.
- 26/10/2010 00:17 - Отладка процессов
- 17/10/2010 19:25 - Управление заданиями
- 17/10/2010 12:22 - Сеансы
- 14/10/2010 16:15 - Группы процессов и сеансы
- 12/10/2010 02:42 - Доставка сигнала
- 11/10/2010 07:30 - Отправка сигнала