Что такое SELinux? Настройка, включение и отключение
SELinux, или Security Enhanced Linux, — это продвинутый механизм управления доступом, разработанный Агентством национальной безопасности (АНБ) США для предотвращения злонамеренных вторжений. Он реализует мандатную модель управления доступом (MAC — Mandatory Access control) в дополнение к уже существующей в Linux дискреционной модели (DAC — Discretionary Access Control), то есть разрешениям на чтение, запись, выполнение.
У SELinux есть три режима работы:
1. Enforcing — ограничение доступа в соответствии с политикой. Запрещено все, что не разрешено в явном виде. Режим по умолчанию.
2. Permissive — ведёт лог действий, нарушающих политику, которые в режиме enforcing были бы запрещены, но не запрещает сами действия.
3. Disabled — полное отключение SELinux.
Изменение режима SELinux
Файл конфигурации по умолчанию, где можно изменять режим работы — /etc/selinux/config.
Чтобы узнать текущий режим работы, нужно выполнить следующую команду (для работы с SELinux необходимы root-привилегии, поэтому здесь и далее приводятся команды для root-пользователя):
Изменение режима работы на permissive:
Полностью отключить SELinux можно только через файл конфигурации. Откройте его любым текстовым редактором
и измените параметр SELINUX на disabled:
После чего перезагрузите систему
Политики SELinux
В основе структуры безопасности SELinux лежат политики. Политика — это набор правил, определяющих ограничения и права доступа для всего, что есть в системе. Под “всем” в данном случае понимаются пользователи, роли, процессы и файлы. Политика определяет связь этих категорий друг с другом.
Для понимания политик необходимо понимание базовых терминов. Политика SELinux определяет доступ пользователей к ролям, доступ ролей к доменам и доступ доменов к типам. Разберём значение этих терминов.
Пользователи
В SELinux есть набор предварительно заданных пользователей. Каждая стандартная учётная запись пользователя Linux соответствует одному или нескольким пользователям SELinux.
В Linux пользователи запускают процессы. Это может быть пользователь ivan, открывший документ в редакторе vi (учётная запись ivan запускает процесс vi) или служебная учётная запись, запустившая демон httpd. В SELinux процесс (демон или запущенная программа) называется субъектом.
Роль определяет, какие пользователи могут осуществлять доступ к заданному процессу. Роли не тождественны группам, они больше похожи на фильтры: пользователь может принадлежать к роли в любое время, если роль это позволяет. Определение роли в политике безопасности SELinux задаёт пользователей, имеющих доступ к этой роли. Роли используются потому, что один из элементов SELinux реализует ролевую модель управления доступом (RBAC — Role Based Access Control).
Субъекты и объекты
Субъект — это процесс, который может потенциально влиять на объект.
Объектом в SELinux называется все, над чем можно выполнять какие-либо действия. Это может быть файл, директория, порт, tcp-сокет, курсор, X-сервер. Действия, которые субъект может выполнить над объектом, являются разрешениями субъекта.
Домен — это контекст, в котором может работать субъект SELinux (процесс). Этот контекст представляет собой как бы оболочку вокруг субъекта, которая сообщает процессу, что он может и не может делать. Например, домен определяет, какие файлы, директории, ссылки, устройства или порты доступны для субъекта.
Тип — это контекст для файла, который устанавливает предназначение файла. Например, контекст файла может указывать, что это веб-страница, или что файл находится в директории /etc, или что владелец этого файла — конкретный пользователь. В терминах SELinux контекст файла называется его типом.
Политика SELinux определяет доступ пользователей к ролям, доступ ролей к доменам и доступ доменов к типам. Сначала пользователь должен быть авторизован для получения роли, затем роль должна быть авторизована для доступа к доменам. Домен, в свою очередь, может осуществлять доступ только к определенным типам файлов.
Механизм, при котором процесс, запущенный в определенном домене, может осуществлять только определенные действия над определенными типами объектов, называется принудительным присвоением типов (Type Enforcement — TE).
Работа политики SELinux
Политика SELinux не заменяет традиционную дискреционную модель управления доступом (DAC). Если правило DAC запрещает пользователю доступ к файлу, правила политики SELinux не будут применяться, потому что первая линия обороны уже заблокировала доступ. SELinux начинает работать уже после DAC.
При запуске системы с SELinux политика загружается в память. Она имеет модульный формат, аналогично загружаемым модулям ядра. И точно так же как и модули ядра, модули политики можно динамически загружать и выгружать из памяти в ходе работы. SELinux ведёт список загруженных модулей (policy store), имя которого можно увидеть при помощи команды sestatus. Команда semodule -l выводит список модулей, загруженных память в данный момент:
Результат будет выглядеть примерно следующим образом:
Команду semodule можно использовать для множества других задач: установки, удаления, перезагрузки, обновления, включения и выключения модулей политики SELinux. Бинарные файлы модулей в большинстве случаев входят в состав пакетов SELinux. Они имеют расширение .pp. Просмотреть их список можно следующей командой:
ls -l /etc/selinux/targeted/modules/active/modules/
Можно заметить, что файлы связаны с различными приложениями:
. -rw-r--r--. 1 root root 10692 Aug 20 11:41 anaconda.pp -rw-r--r--. 1 root root 11680 Aug 20 11:41 antivirus.pp -rw-r--r--. 1 root root 24190 Aug 20 11:41 apache.pp -rw-r--r--. 1 root root 11043 Aug 20 11:41 apcupsd.pp .
Файлы .pp не читаемы для человека. При загрузке системы модули политик объединяются в так называемую активную политику, которая затем загружается в память. Бинарная версия этой загруженной политики находится в директории /etc/selinux/targeted/policy.
Следующая команда показывает активную политику:
ls -l /etc/selinux/targeted/policy/
Изменение переключателей SELinux
Несмотря на то, что прочитать файлы модулей политики невозможно, есть простой способ их настройки. Она осуществляется при помощи булевых переключателей SELinux (boolean).
Чтобы разобраться, как они работают, запустим команду semanage с опцией boolean:
-bash: semanage: команда не найдена
То нужно установить policycoreutils-python
yum install policycoreutils-python
Теперь запускаем semanage с опцией boolean
Будет выведен список различных переключателей, которые можно включить или выключить, краткое описание их функций и текущее состояние:
ftp_home_dir (off , off) Allow ftp to home dir smartmon_3ware (off , off) Allow smartmon to 3ware mpd_enable_homedirs (off , off) Allow mpd to enable homedirs xdm_sysadm_login (off , off) Allow xdm to sysadm login xen_use_nfs (off , off) Allow xen to use nfs mozilla_read_content (off , off) Allow mozilla to read content ssh_chroot_rw_homedirs (off , off) Allow ssh to chroot rw homedirs mount_anyfile (on , on) Allow mount to anyfile . .
Первый пункт в этом списке позволяет демону FTP осуществлять доступ к домашним директориям пользователей. В данный момент переключатель выключен (off), то есть доступ запрещен.
Для изменения значений используется команда setsebool. В качестве примера давайте разрешим анонимный доступ FTP на запись. Проверим состояние переключателя командой getsebool:
getsebool ftpd_anon_write
Она покажет, что в данный момент переключатель выключен:
Изменим значение переключателя и включим его:
setsebool ftpd_anon_write on
Снова проверим состояние переключателя, оно должно поменяться:
getsebool ftpd_anon_write ftpd_anon_write --> on
Изменение переключателей является временным, при перезагрузке они вернутся к старым значениям. Чтобы закрепить изменения, нужно запустить команду setsebool с опцией -P.
setsebool -P ftpd_anon_write on
Теперь после перезагрузки изменения не потеряются
Заключение
Мы рассмотрели базовые принципы работы SELinux, включение системы и режимы её работы, показали пример обеспечения безопасности системы. Также была разобрана работа политики безопасности и ее настройка при помощи булевых переключателей. Более подробную информацию о SELinux можно найти в соответствующих man-страницах.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
Похожие записи:
Смоленск 1.6 Как превратить астру в обычный Линух?
Собственно как отключить все кастыли, свисто-перделки и тыды?
Что бы было подобие =обычного= Дебиана, без мандатов, парсеков и прочей ереси.
SkvITy
New member
Тут такое возможно или рукожопы не догадались, что их патентованный инновационный прорыв может не уперецца нифдыру ни в красную звёздочку?
peb
New member
Тут такое возможно или рукожопы не догадались, что их патентованный инновационный прорыв может не уперецца нифдыру ни в красную звёздочку?
vasja
Guest
kostia
New member
Ну мандатка если все в нулевом работают то и не мешает особо. Вот целостность в 1.6 это да, вносит дополнительный геммор.
SkvITy
New member
OIvanov
New member
Собственно как отключить все кастыли, свисто-перделки и тыды?
Что бы было подобие =обычного= Дебиана, без мандатов, парсеков и прочей ереси.
Собственно, а для чего тогда ставить Астру, если все её ништяки выключать и юзать чисто Debian? Система и задумывалась для «Специального назначения», а если не нужно столько безопасности, то проще Орёл поставить.
SkvITy
New member
Собственно, а для чего тогда ставить Астру, если все её ништяки выключать и юзать чисто Debian? Система и задумывалась для «Специального назначения», а если не нужно столько безопасности, то проще Орёл поставить.
Только из-за печатей. Мне нужна сертифицированная связка ОС — Веб сервер — БД. Делать через МС-Оракл будет явно дороже.
Fd1501h
Moderator
Только из-за печатей. Мне нужна сертифицированная связка ОС — Веб сервер — БД. Делать через МС-Оракл будет явно дороже.
Вот в действии «бумажная безопасность».
Зачем нам инструменты безопасности, нам только «бумажка» нужна.
kostia
New member
Это говорит о том, что инструмент из коробки критически не удобен для основной массы пользователей. Разбираться как правильно настроить долго и нудно, документация откровенно слабая. Поэтому и возникают такие вопросы. Давно говорю, нужны пресеты/профили для основных сценариев применения.
Fd1501h
Moderator
Это говорит о том, что инструмент из коробки критически не удобен для основной массы пользователей. Разбираться как правильно настроить долго и нудно, документация откровенно слабая. Поэтому и возникают такие вопросы. Давно говорю, нужны пресеты/профили для основных сценариев применения.
Это в первую очередь говорит о том что человек даже не пытался разбираться.
Есть предложения по улучшению? Прошу на багтрекер.
kostia
New member
что дальше? Отработку привилегии игнорирования мандатных категорий на SMB шарах исправили уже? Больше года назад в саппорт писал.
А насчет не пытался, это вы огульно за всех говорите. Я в линухах с 98 года, но нюансы астры, не доработки, не соответствие документации иной раз откровенно в ступор вводят.
Чем хороша винда? Она, на мой взгляд, значительно сложнее линуха. Но благодаря отработанным ролям (сервер домена, сервер рабочих столов и т.д.) существенно ниже порог входа. А основной массе людей не с Астрой ковыряться нужно, а по быстрому настроить и дальше работать. Астра — инструмент! Но инструмент чертовски не простой на данный момент.
Fd1501h
Moderator
что дальше? Отработку привилегии игнорирования мандатных категорий на SMB шарах исправили уже? Больше года назад в саппорт писал.
А насчет не пытался, это вы огульно за всех говорите. Я в линухах с 98 года, но нюансы астры, не доработки, не соответствие документации иной раз откровенно в ступор вводят.
Чем хороша винда? Она, на мой взгляд, значительно сложнее линуха. Но благодаря отработанным ролям (сервер домена, сервер рабочих столов и т.д.) существенно ниже порог входа. А основной массе людей не с Астрой ковыряться нужно, а по быстрому настроить и дальше работать. Астра — инструмент! Но инструмент чертовски не простой на данный момент.
Я не про вас писал.
Я не знаю, что писалось в саппорт, а что нет. Я только вижу багтрекер,так как он публичный.
Я ещё раз всех призываю писать на багтекер, так как этим «инструментом» можно оперировать в разговоре с разработчиками.