Эксперты по безопасности Linux-систем сообщают о росте числа реальных ситуаций, в которых механизм безопасности SELinux, предложенный Агентством национальной безопасности США, не позволяет хакерам обратить себе на пользу изъяны, имеющиеся в программном обеспечении. Это означает, что механизм, который проектировался как в известной мере эзотерическая мера, начинает себя оправдывать.
В АНБ выступили с инициативой SELinux в 2000 году, а уже в 2002 году Линус Торвальдс использовал его в ядре своей операционной системы, однако до недавнего времени эта технология в основном представляла лишь академический интерес. Многие администраторы Linux-систем впервые узнавали о SELinux из длинного руководства, которое предварялось списком совершенно новых терминов, касающихся безопасности. А когда компоненты SELinux устанавливались на реальную систему, многочисленные сообщения об ошибках, вызванные некорректностями в конфигурации, только приводили в замешательство.
Однако целый ряд недавних сообщений свидетельствует о начале совершенно нового этапа. Включенный механизм SELinux в состоянии помешать хакеру в полной мере использовать деструктивный потенциал того или иного изъяна системы. К примеру, один из изъянов программного обеспечения HP Linux Imaging and Printing Project может позволить хакеру выполнять любые команды со статусом root. Однако, согласно рекомендациям по поводу этой ошибки, «Red Hat Enterprise Linux 5 SELinux предусматривает правила действия для hpssd, которые... блокируют возможность использовать этот дефект для выполнения произвольного кода».
Ден Уолш из компании Red Hat рассказывает о другом, более известном эффекте «смягчения отрицательных последствий». Samba — программное обеспечение, действующее как сервер файлов для систем с Microsoft Windows, — также имеет дефект, воспользовавшись которым хакер может выполнять команды со статусом root. Однако, пишет Уолш, несмотря на то что этот изъян позволяет хакеру создать ситуацию переполнения буфера, SELinux этот сценарий предотвращает.
«Системы с SELinux становятся значительно надежнее, — считает Чед Селлерс, программный архитектор компании Tresys Technology. — Они защищают от все большего количества угроз. Инструменты SELinux стали значительно совершеннее, поэтому, если возникают проблемы, их, как правило, достаточно легко решить».
В частности, SELinux способен компенсировать ошибки в системе безопасности таких программных продуктов, как Web-сервер Apache, система управления контентом Mambo и Sendmail MTA.
Селлерс считает, что ситуации, в которых SELinux в состоянии смягчить отрицательные последствия, возникают все чаще именно потому, что теперь SELinux интегрирован с большим числом программных компонентов.
«Политики защищают от все большего количества угроз, превращая функции защиты в нечто такое, без чего системные администраторы действительно не могут жить. Поэтому я советую тщательно их проверять. Если системный администратор обнаруживает проблему, не нужно отключать политику. Вероятно, проблему можно решить, обменявшись с коллегами всего несколькими письмами по электронной почте», — заметил Селлерс.
Традиционные функции обеспечения безопасности в Linux берут свое начало со времени становления Unix. Базовые механизмы Unix относительно легко объяснить начинающему системному администратору, однако они не в состоянии блокировать некоторые пути развития атаки, которые способна обнаружить более совершенная система. Так, любой процесс, выполняющийся со статусом root, может читать данные и записывать их в любой файл в системе. Хакер, который получает статус root взломанного почтового сервера, может изменить системный файл с паролями, даже если при нормальной работе почтовый сервер никогда не должен записывать данные в этот файл.
SELinux добавляет дополнительный уровень управления доступом. Почтовый сервер может по тем или иным причинам работать со статусом root, но система не допустит, чтобы он менял файл с паролями. SELinux действует в отношении программ со статусом root иначе, чем в отношении администратора, запускающего shell со статусом root. Если злоумышленник взломал почтовый сервер и запустил shell со статусом root, он тем не менее не сможет изменить программу или конфигурационные файлы так, как это мог бы сделать администратор.
Разработчик SELinux и сотрудник Red Hat Джеймс Моррис утверждает: цель компании состоит в том, чтобы автоматизировать функционирование SELinux с точки зрения администратора и выполнять большую часть работы по конфигурированию заранее, еще в составе дистрибутива.
«Модель, которой мы следуем в Fedora/RHEL, состоит в том, что политика поставляется вместе с операционной системой, и пользователь не должен ее менять», — пояснил он. Большая часть процедуры конфигурирования SELinux сейчас интегрирована со стандартными средствами управления, что, по словам Морриса, упрощает реализацию специфичных для пользователя политик, не требуя редактирования политик SELinux вручную. Например, администратор может использовать меню для конфигурирования FTP-сервера, для того чтобы разрешить или запретить доступ к домашним каталогам пользователей.
«Для сторонних пакетов теперь у нас есть инфраструктура, позволяющая реализовывать модульную политику обеспечения безопасности так, чтобы ее можно было распространять с пакетами», — заметил Моррис.
«Все больше независимых разработчиков поддерживают SELinux», — отметил менеджер Red Hat по маркетингу продуктов Эндрю Кетров. Наличие значительного арсенала инструментов SELinux для разработчиков расширяет возможности для администраторов.
«Мы хотели бы предложить абстракции более высокого уровня, чтобы обращаться к этому инструментарию пришлось лишь в крайних случаях», — заметил Моррис.
Несмотря на то что SELinux доказал свою состоятельность для серверных приложений, с настольными приложениями не все так просто. Пользователи не всегда разрешают доступ всех имеющихся у них программ для настольных систем ко всем своим данным, даже если в терминах традиционной модели выдачи разрешений в стиле Unix все файлы принадлежат одному и тому же пользователю.
В презентации, озаглавленной «К настольной системе с минимальными привилегиями», на симпозиуме SELinux Symposium Колин Уолтерс из Red Hat писал: «Защитить root — не самая главная задача, поскольку все ценные данные на настольной системе все равно принадлежат пользователю».
Так или иначе, SELinux превращается в исключительно серьезный механизм защиты для серверных приложений.