Безопасный Linux : Часть 4. TOMOYO Linux

Евгений Ивашко, Сотрудник Института РАН, Институт прикладных математических исследований Карельского научного центра РАН.

Описание: Из этой статьи вы узнаете о том, что такое TOMOYO Linux и какие преимущества эта система имеет перед своим «братом-близнецом», разработкой Novell, AppArmor.

1. Введение

Выпущенный весной 2009 г. первый кандидат в релизы ядра Linux 2.6.30, помимо прочих новшеств, ознаменовался внедрением в основной код дополнительной разработки из категории «безопасность» – TOMOYO Linux. Из этой статьи вы узнаете о том, что такое TOMOYO Linux и какие преимущества эта система имеет перед своим «братом-близнецом», разработкой Novell, AppArmor. Разумеется, мы приведем примеры правил. Однако более подробное описание работы с TOMOYO Linux ищите в следующих статьях цикла.

Материал, представленный здесь, основывается на предыдущих статьях. Если вы не знаете, что такое мандатный контроль доступа (Mandatory Access Control), дискреционный контроль доступа (Discretionary Access Control) и каковы различия между ними, прочтите первые три статьи серии «Безопасный Linux» (см. раздел «Ссылки»), посвященные системе обеспечения мандатного контроля доступа AppArmor.

2. Что такое TOMOYO Linux?

TOMOYO Linux – это система обеспечения мандатного контроля доступа в Linux. Политика безопасности этой системы (как и в AppArmor, в отличие от SELinux) основана на том, что программы различаются системой по абсолютному пути к исполняемому файлу (англоязычный термин «pathname-based»).

Разработка TOMOYO Linux началась в 2003 г. в качестве исследовательского проекта японской компании NTT DATA CORPORATION, а в 2005 г. исходный код системы был представлен всему миру под лицензией GPL.

На данный момент существуют две версии (ветки) системы. Первая из них – ветка TOMOYO Linux 1.x (текущая версия 1.6.8) – предоставляет богатую функциональность по реализации мандатного контроля доступа. Однако эта версия не использует модули безопасности Linux (Linux Security Modules – LSM), и для ее внедрения необходимо накладывать специальные исправления ядра (впрочем, бинарные модули доступны для многих дистрибутивов: см. раздел «Ссылки», п.2). Взамен вы получаете возможность использовать эту систему безопасности на ядре Linux как версий 2.6.x, так и версий 2.4.x.

Ветка TOMOYO Linux 2.x (текущая версия 2.2.0) на данный момент активно развивается. Ее основное преимущество – включение в ядро, этой привилегии система безопасности удостоилась в том числе благодаря переходу на LSM. Однако функциональность TOMOYO Linux 2.x ограничена лишь контролем доступа к файлам (нет ни контроля доступа к сети, ни не-POSIX возможностей), что является следствием недостатков все той же подсистемы LSM.

Сравнение возможностей, предоставляемых TOMOYO Linux в ветках 1.x и 2.x, дано в таблице 1.

Таблица 1. Сравнение возможностей TOMOYO Linux версий 1.x и 2.x

Как видно из таблицы, разница в функциональности двух версий TOMOYO Linux огромна. Причина заключается в том, что за свою шестилетнюю историю LSM так и не обзавелись необходимыми перехватчиками для работы с сокетами, не-POSIX возможностями и др.

3. TOMOYO Linux vs AppArmor

Зачем нам TOMOYO Linux, если уже есть AppArmor, в чем их отличия? Почему TOMOYO Linux включили в ядро, а AppArmor – нет? Вот два основных вопроса, касающихся связи между этими двумя системами обеспечения мандатного контроля доступа.

Прежде всего необходимо отметить, что наиболее заметное преимущество TOMOYO Linux, которое заключается в реализации большого количества возможностей, относится лишь к ветке 1.x. В то же время функциональность ветки TOMOYO Linux 2.x (той самой, что включена в ядро), как и функциональность AppArmor, ограничивается лишь контролем доступа к файлам (см. таблицу 1). Сходства между TOMOYO Linux и AppArmor значительно больше, чем различий: обе системы настолько просты, что довольствуются консольным режимом управления (создания и манипулирования политиками безопасности и т.д.), имеют простой для восприятия синтаксис правил, автоматический режим обучения, используют LSM...

Однако существует и ряд фундаментальных отличий, которые позволили TOMOYO Linux опередить своего конкурента в борьбе за место в ядре Linux.

3.1. История запуска процесса

Наиболее серьезное фундаментальное отличие AppArmor и TOMOYO Linux заключается в подходе, используемом для определения соответствия правил ограничиваемым программам. В политиках AppArmor при задании правил указывается путь к исполняемому файлу, для которого действуют указанные правила:/usr/bin/passwd {
...
}

В то же время TOMOYO Linux использует более общий подход, основанный на «истории запуска процесса» (Process Invocation History – PIH) и связанной с ней областью видимости. При задании политик безопасности для определенной программы можно указать различные правила, зависящие от того, как образом была запущена программа. Вот пример:<kernel> /usr/sbin/sshd /bin/bash
allow_execute /bin/ls
allow_read /home/takedakn/.bashrc
allow_read/write /home/takedakn/.bash_history
…..

Эта политика безопасности означает, что оболочке /bin/bash, запущенной сервисом /usr/sbin/sshd, позволяется:
выполнять команду /bin/ls;
читать файл /home/takedakn/.bashrc;
читать и записывать в файл /home/takedakn/.bash_history.

При этом в политике <kernel> /bin/bash

оболочке /bin/bash могут быть даны значительно бóльшие права (ведь локальный вход безопаснее, чем удаленный, верно?).

Программа, указанная в политике безопасности со всей своей историей запуска в терминах TOMOYO Linux называется «областью видимости» (domain).

3.2. Проверка параметров

Правила в TOMOYO Linux могут содержать проверку параметров. Это полезно, например, для задания различных ограничений при выполнении конкретных скриптов интерпретаторами (sh, java, perl и т.д.) или для ограничения функциональности программ:<kernel> /usr/sbin/httpd
allow_execute /bin/sh if exec.argc=3
exec.argv[1]=“-c”
exec.argv[2]=“/usr/sbin/sendmail”

В этом примере httpd запускается только в том случае, если имеет три аргумента, один из которых – sendmail.

3.3. Условные правила

TOMOYO Linux позволяет определять правила, содержащие условия. Например, следующая политика безопасности <kernel> /usr/sbin/sshd
allow_execute /bin/bash if task.uid!=0 task.euid!=0

не позволит запустить оболочку bash пользователю root, зашедшему в систему через ssh.

3.4. Обработчик исполнения

В различных случаях бывает необходимо заменить фактический вызов программы на модифицированный, например, для проверки файлов данных на вирусы или для предотвращения атак типа Denial of Service. Для этих целей TOMOYO Linux предоставляет специальный механизм обработчика исполнения (execution handler); для его задействования необходимо в интерфейсе /proc/ccs/domain_policy указать строчку типа execute_handler /usr/sbin/check-and-exec

Для запуска другой программы вместо запрещенной к исполнению (например, для вывода сообщения о запрете политикой безопасности запуска исполняемого файла) в том же интерфейсе нужно указать следующую команду: denied_execute_handler /bin/true

Таковы основные уникальные возможности TOMOYO Linux по управлению политиками безопасности. Однако на этом достоинства системы безопасности не заканчиваются. Для построения профиля всей системы в помощь пользователям разработан специальный обучающий режим. В этом обучающем режиме TOMOYO Linux проводит мониторинг и анализ запуска всех системных утилит. Цель – создать набор политик безопасности, подходящий для всей системы. При этом не только строится дерево запуска всех системных программ, но и создается список файлов-исключений, доступных глобально для всех процессов. Кроме того, по результатам работы в обучающем режиме можно получить сведения о поведении системы.

4. Заключение

Подведем итог. Начиная с версии ядра 2.6.30, Linux пополнился еще одной (помимо SELinux и SMACK) встроенной системой безопасности. Система обеспечения мандатного контроля доступа TOMOYO Linux ветки 1.2.x обладает более гибкими возможностями по настройке, чем описанная в предыдущих статьях система AppArmor. Однако если вам помимо файлового контроля доступа требуется контроль доступа к сети или не-POSIX возможностям, то без установки альтернативной версии TOMOYO Linux из ветки 1.6.x не обойтись.

В следующей статье будет рассказано о том, как установить, настроить и использовать систему обеспечения мандатного контроля доступа TOMOYO Linux наиболее функциональной ветки – 1.6.x.

http://www.ibm.com/developerworks/ru/library/l-apparmor-4/

Обновлено: 13.03.2015