UNIXOIDПроекты LIDS, GRSecurity и RSBACКроме проектов, описанных в статье, в настоящее время развиваютсяи другие, позволяющие повысить защиту Linux-систем— LIDS (Linux Intrusion Detection System, lids.org), GRSecurity(grsecurity.org) и RSBAC (Rule Set Based Access Control, www.rsbac.org). Кратко о них.Проект LIDS реализует MAC, админ может четко указать разрешениядля файлов и каталогов. Помимо этого механизмы TPE (TrustedPath Execution) и TDE (Trusted Domain Enforcement) позволяютубедиться, что программа работает так, как предназначено. Сайтпроекта некоторое время был заброшен, хотя инструменты развиваются.Управление производится при помощи утилит и чем-то напоминаетнастройку правил файера.# lidsconf -A -o /sbin -j READONLYGRSecurity — разработка, охватывающая несколько технологийукрепления безопасности — MAC/ACL, улучшенный chroot,рандомизация TCP ISN и PID, ролевая система контроля доступаRBAC, функции аудита, защита адресного пространства и стекаPaX (доступен и отдельно). Большинство параметров указываетсяна этапе сборки ядра, затем при помощи утилиты gradm настраиваютсяACL.Проект RSBAC, реализующий мандатный и ролевой механизмыдоступа, уже в 2000 году вовсю использовался в защищенных дистрибутивах.По сути, это среда, позволяющая создать различныемодели доступа. Идея основана на публикации Маршала Абрамсаи Ла Падула «Обобщенная среда для управления доступом» (GFAC,Generalized Framework for Access Control). Кроме root в ОС появляетсяучетка администратора безопасности, который и управляетдоступом к информации.Реализовано много интересных функций: отключение LinuxDAC, сокрытие процессов, JAIL, поддержка PaX, антивирусныйинтерфейс Dazuko, контроль ресурсов Linux и многое другое.Например, можно организовать доступ к файлу в определенныечасы.Смотрим активные профили и параметры AppArmor# ps aux | grep syslogdroot 2729 0.0 0.0 5908 624 ? Ss 07:30 0:00 syslogd -m 0# cat /proc/2729/attr/currentsystem_u:system_r:syslogd_t:s0Предусмотрена работа SELinux в трех режимах — disable (отключен),enforcing (политики выполняются, все, что не соответствует — блокируется),permissive (политики анализируются, все нарушения заносятсяв журнал «avc: denied», но блокировки не производятся). Узнать текущийрежим просто, как, впрочем, и некоторые другие настройки, достаточнопрочитать данные из псевдофайловой системы /selinux:$ cat /selinux/enforceЕсли получим 1, значит, SELinux активирован. Чтобы изменить режимработы на лету, просто записываем в этот файл 0 или 1:# echo 0 > /selinux/enforcesu не меняет идентификатора SELinux. То есть root здесь не всевластен.Проверить это легко:$ id –Zuser_u:user_t:unconfined_tПолучаем привилегии суперпользователя и проверяем снова:Также можно воспользоваться утилитой «setenforce [ Enforcing |Permissive | 1 | 0 ]».Собственно настройки производятся в конфигурационных файлах, размещенныхв каталоге /etc. В дистрибутивах, базирующихся на RedHat,доступен графический SELinux Administration Tool (system-configselinux,пакет policycoreutils-gui). Так, режим работы устанавливается вфайле /etc/sysconfig/selinux (на самом деле это ссылка на /etc/selinux/config). В частности, режим работы определяет параметр SELINUX:$ su# id –Zuser_u:user_t:unconfined_tЕсли зайти сразу под рутом, то роль другая:# id -Zroot:system_r:unconfined_t:SystemLow-SystemHighИзменить роль можно при помощи команды newrole. При использованииSELinux штатные команды выводят и контекст. Чтобы просмотретьконтекст файлов и процессов, набираем:SELINUX=enforcing|permissive|disabledПо умолчанию в большинстве дистрибутивов SELinux защищает не вседемоны, а только строго определенные: dhcpd, httpd, named, nscd, ntpd,portmap, snmpd, squid и syslogd. Для остальных политика не определена— unconfined_t. Чтобы защитить всю систему, необходимо изменитьзначение SELINUXTYPE на strict:SELINUXTYPE=targeted|strictВ каталоге /etc/selinux/targeted/contexts находим описание контекстов.Например, для root контекст описывается так:# ls -l –context /# ps -ax -Z# cat /etc/selinux/targeted/contexts/users/rootsystem_r:unconfined_t:s0 system_r:unconfined_t:s0Кроме того, контекст можно считать прямо из /proc:090system_r:initrc_t:s0 system_r:unconfined_t:s0XÀÊÅÐ 08 /139/ 10
Все вспомогательные утилиты SELinux собраны в нескольких пакетах:setools или policycoreutils, policycoreutils-newrole. Первый, какправило, уже установлен в системе, остальных нет. Например, newrole,дающая возможность пользователю сменить роль, доступна именно вpolicycoreutils. После установки в системе присутствуют только наборыполитик для targened, остальные наборы политик скачиваются впакетах selinux-policy*. Сорцы политик для их самостоятельной сборкивынесены в selinux-policy-devel.Разобраться в более чем 200 файлах, имеющих несколько тысяч строк,врукопашную очень трудно. Автоматизировать эту задачу призванпитоновый скрипт audit2allow (в policycoreutils), он генерирует новыеполитики на основе анализа журналов и блокировок SELinux.Типичная политика AppArmorСбиваем спесь со SkypeНаверное, больше всего претензий с точки зрения безопасности упользователя вызывает Skype. Куда только не лезет эта прога (см. статьюКриса «Skype: скрытая угроза», www.xakep.ru/post/38543/default.asp). Описываемые технологии как раз и позволяют обезопасить себя.Забегая вперед, скажу, что пользователи уже давно нагенерировалипрофили для большинства популярных прог, и скайп здесь не исключение.Смотри, например, здесь: www.cynapses.org/tmp/apparmor/usr.bin.skype. Некоторые профили собраны в отдельном пакете —apparmor-profiles.Но профиль легко создать и самому. Для этого в комплекте идет утилитаaa-genprof (или просто genprof). Запускаем ее с указанием исполняемогофайла в качестве параметра:$ sudo aa-genprof /usr/bin/skypeДалее работаем как обычно: звоним, отсылаем сообщения, принимаемфайлы, добавляем и удаляем учетки. По окончании прерываемработу в каталоге /etc/apparmor.d/usr.bin.skype. Затем перезапускаемAppArmor или просто активируем профиль в enforce-режиме:$ sudo aa-enforce skypeВсе проблемы и замечания по работе профилей AppArmor ищи в логах.Чтобы просмотреть все контексты, связанные с httpd, введи такуюкоманду:# grep -iR httpd /etc/selinux/targeted/contextsAPPARMORТехнология Application Armor изначально разработана Immunix Inc.После того, как софтверный гигант Novell приобрел эту компанию,код открыли под лицензией GNU GPL, а затем включили в составopenSUSE. Позднее AppArmor стал доступен и в других дистрибутивах.Но когда команда Immunix покинула Novell, дальнейшее развитиепроекта остановилось. И хотя в том же openSUSE поддержка AppArmorбыла сохранена, в дистрибутив интегрировали SELinux. В итоге началиразноситься слухи а-ля «AppArmor is dead», что у одних вызвалорадость, так как теперь все усилия можно бросить на развитие однойсистемы защиты, у других критику — отсутствие конкуренции еще ник чему хорошему не приводило. Сегодня апологетом этой технологииявляется Canonical, разработчики которого не смотря ни на что продолжаютразвитие AppArmor. Так, в последних версиях добавлен механизмкэширования правил, что позволило ускорить их загрузку. Для этих жецелей, и чтобы защитить сетевые сервисы на раннем этапе загрузки,часть профилей вынесли в initramfs. И главное — в Ubuntu AppArmorприкрутили к LSM (Linux Security Modules), задействовав security_pathвместо vfs.Основная идея AppArmor состоит в том, что система защиты не должнабыть сложной и не должна мешать. В отличие от SELinux, AppArmor неиспользует расширенные атрибуты и не зависит от файловой системы.Доступ к ресурсам определяется на основе профилей (profiles), которыепривязаны к пути файла или каталога, причем самого файла может и небыть на момент активации профиля. Профиль разрабатывается индивидуальнопод каждое приложение. Хотя в этом есть и недостаток: припереносе файла в SELinux за ним полностью сохраняется контекст безопасности,в AppArmor — нет, но этого от него и не требовали. Хотя, еслифайл имеет два имени, и профиль блокирует доступ к одному из них,есть возможность работать с другим. Это следует учитывать. Также, еслисредствами SELinux можно предусмотреть несколько уровней доступа кобъекту для разных субъектов, то AppArmor этого не умеет.В настоящее время созданы профили для большинства популярныхсерверов и приложений, поэтому наличие активного AppArmor обычнонезаметно, он не создает проблем. Кроме того, в комплекте поставкиидут два скрипта aa-genprof и aa-logprof, которые помогут быстро создатьпрофиль для новой программы. Управление AppArmor производитсяпри помощи init-скрипта, который запускает модуль ядра, инициализируетпрофили и монтирует псевдофайловую систему securityfs.Ты увидишь, что для разных ситуаций контекст будет отличаться.Теперь получим список всех параметров SELinux: «getsebool -a». Дляустановки используй команду setsebool (с ключом '-P' для сохранениязначения после перезагрузки) или графическую утилиту system-configsecuritylevel.Вывод «sestatus -v» покажет все текущие установки. Не забываем и ожурналах:# dmesg | grep -i selinuxSELinux: Initializing.SELinux: Starting in permissive mode# grep -iR selinux /var/log/messages$ sudo /etc/init.d/apparmor startЧтобы просмотреть список загруженных профилей, достаточно считатьфайл /sys/kernel/security/apparmor/profiles (или запустить /etc/init.d/apparmor status); в зависимости от варианта дистрибутива Server/Desktop количество активных профилей будет различно. Сами профилихранятся в файлах (отдельно для каждого приложения) в каталоге /etc/apparmor.d и внутри содержат описание каталогов и отдельных файлов,с указанием прав доступа. Также указывается работа в сети и совместимостьс другими профилями. Для упрощения задачи используютсярегулярные выражения. По умолчанию профили AppArmor работают впринудительном enforce-режиме. Когда сервис не может выйти за рамкиустановок, все попытки блокируются и фиксируются в журнале. ПриXÀÊÅÐ 08 /139/ 10 091