Научный руководитель – Д. В. ЕФАНОВ, к. т.н., доцент
Национальный исследовательский ядерный университет «МИФИ»
МНОГОУРОВНЕВОЕ УПРАВЛЕНИЕ ДОСТУПОМ WEB-СЕРВЕРА APACHE
Рассматривается проблема реализации модели Белла-ЛаПадула в web-сервере Apache для работы в режиме многоуровневой политики mls системы мандатного управления доступом SELinux.
Обязательным атрибутом современной ОС является механизм мандатного управления доступом, защищающий от атак «нулевого дня», но существует целый класс информационных систем (ИС), в которых обрабатывается т. н. многоуровневая информация. Как правило, политика безопасности таких ИС строится на основе модели Белла-ЛаПадула.
В общем виде проблему можно сформулировать так: какие шаги нужно предпринять, чтобы обработка данных web-сервером происходила в соответствии с моделью Белла-ЛаПадула [1].
Сегодня для осуществления мандатного управления доступом в ОС класса GNU/Linux широко применяется система SELinux [2], ставшая обязательным компонентом корпоративных информационных систем. Для обработки многоуровневой информации SELinux предлагает режим многоуровневой политики безопасности — mls, в котором контексты безопасности процессов и файлов расширяются дополнительными полями: иерархическими уровнями и не иерархическими категориями.
Несмотря на большую популярность web-сервера Apache, для его запуска в режиме mls требуется его существенная доработка.
Так, при построении «клиент-серверной» ИС, для использования политики mls необходимо решить следующие задачи:
· передача контекстов безопасности клиентов по сети серверу;
· обработка запросов клиентов в соответствии с контекстами безопасности на стороне сервера.
Первая задача может решаться на разных уровнях сетевой модели TCP/IP. Очевидно, что решая задачу на прикладном уровне, возможно получить очень интересные абстрактные объекты доступа (например, объект «html-документ»), но не получить универсального решения. Если передавать контексты на сетевом уровне, то решение становится универсальным, т. е. не привязанным к конкретному прикладному протоколу (http, ftp, и т. д.), но появляется зависимость от сети передачи пакетов — маршрутизаторы должны корректно обрабатывать соответствующие IP-заголовки. При таком подходе наиболее очевидным решением является использование подсистемы ядра Linux — NetLabel, реализующей стандарт CIPSO [3].
Решение второй задачи включает два этапа:
· организация работы сервера в режиме политики mls — этот шаг является общим и не зависит от конкретного сервера;
· организация обработки запросов клиентов в соответствии с контекстами безопасности.
Чтобы сервер мог создать сокет, принимающий соединения от клиентов с различными контекстами безопасности, SELinux должен это разрешить — т. е. политика безопасности сервера должна позволять создавать привилегированный сокет. Кроме того, политика должна позволять осуществлять переход со сменой контекста, что необходимо для порождения обработчиков с контекстами клиентов. При этом, дочерние процессы должны уметь использовать файловые дескрипторы, унаследованные от родительского процесса с другим контекстом, а также свои собственные дескрипторы после смены собственного контекста.
Порождение самих обработчиков запросов — это задача доработки конкретного сервера, исходя из его модели и программной реализации. Теоретически, модель может быть последовательной, многопоточной или асинхронной. В случае web-сервера Apache необходимо для каждого клиента порождать поток-обработчик с контекстом безопасности, полученным из сокета клиента.
Представленный метод был программно реализован для web-сервера Apache 2.4 и проверен в дистрибутиве CentOS 6.3.
Список литературы
1. D. E. Bell and L. J. La Padula. Secure Computer Systems: Mathematical Foundations and Model. Technical Report M74-244, The MITRE Corporation, Bedford, MA, May 1973.
2. SELinux by Example: Using Security Enhanced Linux, Frank Mayer, David Caplan, Prentice Hall, 2006 – 456p.
3. RFC 1108, "U. S. Department of Defense Security Options for the Internet Protocol", Stephen Kent, IAB, 1 March, 1991.


