Модули безопасности Linux
Модули безопасности Linux ( LSM ) — это структура, позволяющая ядру Linux беспристрастно поддерживать различные модели компьютерной безопасности . LSM лицензируется на условиях GNU General Public License и является стандартной частью ядра Linux, начиная с Linux 2.6. AppArmor , SELinux , Smack и TOMOYO Linux — это одобренные на данный момент модули безопасности в официальном ядре.
Дизайн
[ редактировать ]LSM был разработан для того, чтобы ответить всем требованиям для успешной реализации модуля обязательного контроля доступа , внося при этом как можно меньше изменений в ядро Linux. LSM избегает подхода интерпозиции системных вызовов, используемого Systrace, поскольку он не масштабируется для многопроцессорных ядер и подвержен атакам TOCTTOU (гонка). Вместо этого LSM вставляет « перехватчики » (вызовы к модулю) в каждой точке ядра, где системный вызов уровня пользователя должен привести к доступу к важному внутреннему объекту ядра, такому как индексные дескрипторы и блоки управления задачами.
LSM узконаправлен для решения проблемы контроля доступа , не внося при этом больших и сложных изменений в основное ядро. Он не предназначен для использования в качестве общего механизма « перехвата » или « ап-колла » и не поддерживает виртуализацию на уровне операционной системы .
Цель LSM по контролю доступа очень тесно связана с проблемой системного аудита , но несколько отличается от нее. Аудит требует, чтобы каждая попытка доступа фиксировалась. LSM не может этого обеспечить, потому что для обнаружения случаев, когда ядро « замыкает » неудачные системные вызовы и возвращает код ошибки, прежде чем приблизиться к важным объектам, потребуется гораздо больше перехватчиков.
Конструкция LSM описана в документе « Модули безопасности Linux: общая поддержка безопасности ядра Linux». [1] представлен на USENIX Security 2002. [2] На той же конференции был представлен доклад «Использование CQUAL для статического анализа размещения крючков авторизации». [3] который изучал автоматический статический анализ кода ядра, чтобы убедиться, что все необходимые перехватчики действительно были вставлены в ядро Linux.
Принятие
[ редактировать ]История
[ редактировать ]На Linux Kernel Summit 2001 года АНБ предложило SELinux в Linux 2.5. включить [5] Линус Торвальдс тогда отверг SELinux, поскольку заметил, что в разработке находится множество различных проектов безопасности, и, поскольку все они различаются, сообщество безопасности еще не сформировало консенсус относительно окончательной модели безопасности. Вместо этого Линус поручил сообществу безопасности «сделать его модулем».
В ответ Криспин Коуэн предложил [6] LSM: интерфейс для ядра Linux, который обеспечивает достаточные «перехватчики» (upcalls) изнутри ядра Linux к загружаемому модулю , чтобы позволить модулю обеспечивать обязательный контроль доступа. Разработка LSM в течение следующих двух лет велась сообществом LSM, включая существенный вклад со стороны Immunix Corporation , АНБ , McAfee , IBM , Silicon Graphics и многих независимых участников. В конечном итоге LSM был принят в основную часть ядра Linux и включен в качестве стандартной части Linux 2.6 в декабре 2003 года.
В 2006 году некоторые разработчики ядра заметили, что SELinux был единственным широко используемым модулем LSM, включенным в основное дерево исходного кода ядра Linux. Было решено, что если должен быть только один широко используемый модуль LSM, то в косвенном использовании LSM нет необходимости, и LSM следует удалить и заменить самим SELinux. Однако существуют и другие модули LSM, поддерживаемые вне основного дерева ядра ( AppArmor , Linux Intrusion Detection System , FireFlier , CIPSO , Multi ADM и т. д.), поэтому этот аргумент привел к двум результатам: 1. что разработчики этих модулей начали ставить усилия по внедрению соответствующих модулей, и 2. на саммите Kernel в 2006 году Линус еще раз заявил, что LSM останется, потому что он не хочет решать, какая модель безопасности является лучшей.
LSM, скорее всего, останется, поскольку дополнительные модули безопасности Smack (версия 2.6.25), TOMOYO Linux (версия 2.6.30, июнь 2009 г.) и AppArmor в основное ядро были приняты (версия 2.6.36).
Ссылки
[ редактировать ]- ^ «Модули безопасности Linux: общая поддержка безопасности ядра Linux» . 2002 . Проверено 3 февраля 2007 г.
- ^ «11-й симпозиум по безопасности USENIX» . 2002 . Проверено 3 февраля 2007 г.
- ^ «Использование CQUAL для статического анализа размещения крючка авторизации» . 2002 . Проверено 3 февраля 2007 г.
- ^ Выход к морю: непривилегированный контроль доступа
- ^ Стивен Смолли; Тимоти Фрейзер; Крис Вэнс. «Модули безопасности Linux: общие средства безопасности для Linux» . Проверено 26 октября 2015 г.
- ^ Криспин Коуэн (11 апреля 2001 г.). «Интерфейс модуля безопасности Linux» . Список рассылки Linux-ядра . Проверено 3 февраля 2007 г.
Внешние ссылки
[ редактировать ]- «Исходный код и статистика проекта» . Архивировано из оригинала 7 марта 2005 г. Проверено 8 февраля 2006 г.
- Статья в журнале SysAdmin об уровнях безопасности BSD
- Проекты безопасности на основе ядра Linux