Selinux что это такое
Перейти к содержимому

Selinux что это такое

  • автор:

SELinux как правильно отключить!! Для начинающих

SELinux (англ. Security-Enhanced Linux — Linux с улучшенной безопасностью) — реализация системы принудительного контроля доступа, которая может работать параллельно с классической дискреционной системой контроля доступа. Входит в стандартное ядро Linux.

В SELinux права доступа определяются самой системой при помощи специально определенных политик. Политики работают на уровне системных вызовов и применяются самим ядром (но можно реализовать и на уровне приложения). SELinux действует после классической модели безопасности Linux. Иными словами, через SELinux нельзя разрешить то, что запрещено через права доступа пользователей/групп.

В первую очередь, что нужно занять о SELinux? Да да, только одно как его отключить!! Давайте разберемся как это сделать и что бы нам за это ничего не было

Слишком строгая политика безопасности может (и обязательно это сделает. ) препятствовать выполнению некоторых повседневных задач. Вот почему иногда необходимо отключить отдельные функции безопасности. В этой публикации мы, покажем как отключить SELinux в CentOS.

На скриншоте показано как работает SELinux:

На скриншоте показано как работает SELinux.

Как проверить статус и режим работы SELinux

Проверить статус SELinux с помощью следующей команды sestatus:

sestatus В выводе команды видим, что SELinux включён — работает в режиме enforcing. SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 31

В настоящее время SELinux имеет три режима работы:

Режим Enforcing запрещает любой несанкционированный доступ. Это дефолтный режим, который означает, что SELinux включён.

В режиме Permissive SELinux записывает предупреждения о нарушениях в журнал. В отличие от предыдущего, этот режим не блокирует несанкционированный доступ, а просто показывает предупреждения.

Режим Disable в SELinux означает, что функция отключена, любой доступ разрешён без предупреждений.

Как отключить SELinux временно

Чтобы временно отключить SELinux, запустите от пользователя root следующую команду:

setenforce 0

И снова проверьте состояние SELinux, в строке Current mode должен быть режим permissive.

Как отключить SELinux навсегда

Для отключения SELinux нужно открыть файл /etc/sysconfig/selinux и установить параметр SELINUX=disabled. Компьютер нужно перегрузить.

# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. #SELINUX=enforcing SELINUX=disabled # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
shutdown -r now

Заключение

В принципе, раз SELinux придумали и до сих пор используют, является отличным инструмент безопасности для CentOS. Однако, я не знаю ни одного факта, кому он помог. Если вы знаете, напишите мне и я дополню статью.

Инглекс (Englex) — онлайн школа английского языка.

11 Самых Популярных Статей

  1. ulimit (limits.conf) управление ограничениями ресурсов ОС Linux
  2. 7 способов сравнения файлов по содержимому в Windows или Linux
  3. Что такое страны tier 1,2,3 и как правильно выбрать ГЕО для рекламной кампании
  4. Настройка, использование GitLab CI/CD
  5. Что означает «> /dev/null 2>&1» или перенаправление STDIN, STDOUT и STDERR?
  6. Настройка и использование сервера OpenVPN в Linux
  7. PostgreSQL: создать БД, пользователя, таблицу, установить права
  8. Виды кодировок символов
  9. Использование rsync в примерах
  10. my.cnf примеры конфигурации MySQL, MariaDB
  11. dig проверка DNS сервера

11 Самых Популярных Обзоров

  1. ТОП 4 лучших антидетект браузеров в 2023 (Бесплатные & Платные)
  2. Обзор и отзывы о Namecheap в 2023 году
  3. Хостинг Zomro (Зомро)
  4. Обзор браузера Dolphin
  5. ТОП 3 Проверенных VPN, Прокси, Хостинг VPS Турция в 2023
  6. Что такое абузоустойчивый хостинг (bulletproof)?
  7. Обзор и отзывы о 4VPS (FourServer) в 2023 году
  8. Обзор и отзывы AstroProxy в 2023 году
  9. Обзор и отзывы о PQ Hosting в 2023 году
  10. Обзор и отзывы о Hostinger в 2023 году: преимущества и недостатки
  11. Проверенные VPS / VDS хостинг провайдеры

SELinux — теория

Поэтому я и предпринял попытку кратко и доступно описать что такое SELinux. Доступно для тех, кто еще не сталкивался с системами безопасности. В силу стремления к краткости некоторые аспекты я пропустил, для того чтобы не перегружать — в этой статье только самая суть. В частности я не буду тут описывать что из себя представляет «старая» система безопасности Linux — DAC (discretionary access control, избирательное управление доступом). Или в чем отличия между DAC, MAC и RBAC. Желающие, могут об этом почитать например в википедии.

Что такое SELinux?

SELinux (Security Enhanced Linux) это система безопасности основанная на моделях мандатного и ролевого доступа. Была разработана в начале нулевых (2000-х) годов для того, чтобы исправить недостатки традиционной системы безопасности UNIX (DAC). SELinux реализована как компонент ядра Linux начиная с версии ядра 2.6. То есть SELinux можно использовать в любом дистрибутиве Linux с ядром 2.6 или более поздним. Конечно не во всех дистрибутивах использование SELinux облегчено до максимума, но в принципе можно установить почти в любом.

В нескольких дистрибутивах SELinux устанавливается «из коробки» — это RHEL, CentOS, Fedora. Так, что для реального использования нужно только перевести SELinux в режим enforced. Еще в нескольких дистрибутивах SELinux включен в репозитарий, так что его установка дело нескольких минут — например Debian, Ubuntu. В этих дистрибутивах SELinux устанавливается одной командой «sudo apt-get install selinux» с последующей перезагрузкой.

SELinux и DAC

SELinux работает «после» DAC. То есть операции, запрещенные в DAC не могут быть разрешены в SELinux.
Иными словами SELinux дополняет и конкретизирует действия разрешенные через DAC. При этом SELinux работает независимо от DAC.

Субъекты и объекты

Когда говорят о SELinux всегда упоминаются субъекты и объекты. То есть SELinux это разрешения и запреты которые применяются в действиях между субъектами и объектами.

Субъекты — строго говоря это пользователи, которые выполняют какие-либо операции на компьютере. Однако пользователи всегда действуют через те или иные прикладные программы. То есть человек-пользователь не может сам залезть внутрь компьютера и «своими руками» выполнить например запись в файл. Если ему нужно выполнить запись в файл, он запускает какую-либо программу. Поэтому, под субъектами чаще всего подразумеваются именно программы (процессы). Иначе говоря субъекты это те кто выполняет некие действия.

Объекты это то, над чем действия выполняются. Чаще всего под объектами подразумеваются файлы данных. Но это могут быть и устройства и даже программы. Пример:
cat /var/log/syslog | grep SELinux
в этой команде программа grep объект для программы cat. И соответственно программа cat субъект по отношению к программе grep.

Как включить или выключить SELinux

Включение или выключение SELinux выполняется командой selinuxenabled с параметром 1 (включить SELinux) или 0 (выключить SELinux). Если нужно чтобы SELinux был включен/выключен при запуске системы, тогда редактировать файл /etc/selinux/config (параметр SELinux=disable).

Режимы работы SELinux

Permissive — разрешается нарушение политики безопасности. Такие нарушения только регистрируются в системном журнале. То есть по сути SELinux не работает, а только лишь фиксирует нарушения политики безопасности.

Enforced — нарушения политики безопасности блокируются. SELinux работает полностью.

Переключение режимов работы выполняется командой setenforce с параметром 1 (включить enforced) или 0 (включить permissive). Но если нужно чтобы режим работы устанавливался сразу при загрузке системы, тогда редактировать файл /etc/selinux/config (параметр SELinux=) который может принимать одно из трех значений — permissive, enforced, disable (SELinux отключен).

Команда sestatus позволяется узнать текущий режим работы SELinux.

Журналирование SELinux (аудит)

  • настройка auditallow — журналировать события.
  • настройка dontaudit — не журналировать события.
  • если операция allow, то она журналируется лишь в случае auditallow;
  • если операция disallow, то она НЕ журналируется лишь в случае dontaudit.

Контекст безопасности (метка, label) SELinux

Это набор данных состоящий из:

  1. типа пользователя
  2. роли
  3. типа данных или домена процесса
  4. уровней и категорий (используется только в специальных политиках MLS/MCS, в общих политиках эти значения установлены в полный доступ)

Контекст безопасности записывается в атрибуты файла (в файловой системе) и создается при установке SELinux (операция labeling). Уже присвоенный контекст безопасности может быть впоследствии изменен — операция transition.

Если файловая система не поддерживает запись меток SELinux (как например NFS), тогда метки записываются отдельно от файлов, при этом связь между файлами и метками происходит по путям файлов. Это может привести к «разрыву» между файлом и его меткой в том случае если файл будет перемещен по другому пути (например каталог с такими файлами будет перемонтирован в другую точку монтирования).

Метка файла может оказаться неверной даже в случае если файловая система поддерживает запись таких меток, но к файлу были неправильно применены операции копирования или перемещения внутри файловой системы. Например при копировании в другую папку файл может получить метку установленную для этой папки (наследование меток), вместо той метки, которая у него была раньше. Поэтому важно правильно выполнять операции копирования и перемещения файлов при использовании SELinux.

Узнать контексты SELinux можно используя стандартные команды с ключом -Z:

  • ps -eZ [| gerp имя_программы] : контекст SELinux для работающих программ (или для конкретной программы).
  • ls -Z : контекст SELinux для файлов.
  • id -Z : контекст SELinux для текущего пользователя.

Пользователь SELinux

Это описательный тип пользователя, а не какой-то конкретный пользователь с логином и паролем. Принципиально это то же самое что и группа пользователей в «старой» системе безопасности DAC. При добавлении, в систему, каждого нового пользователя он по умолчанию (или явным образом) сопоставляется с каким-либо типом пользователя SELinux и в дальнейшем будет иметь те разрешения или запреты, которые указаны для его типа пользователя.

Роль

Перечень разрешенных действий. Возможен переход из одной роли в другую, для изменения полномочий. При этом идентичность пользователя не изменяется (в отличии от команд su/sudo). Роли не совмещаются, они заменяют одна другую.

Политика безопасности определяет допустимые переходы из одной роли в другую. То есть невозможно перейти из любой роли в любую роль. Поскольку роли всегда связаны с типами (доменами), то часто говорят не о смене ролей, а о смене домена (Domain Transition).

Типы (домены) SELinux

Также известны как SELinux sandbox. Объединяют субъекты и объекты в группы, внутри этих групп определяют разрешенные действия субъектов над объектами. Для субъектов вместо термина тип используется термин домен.
Упрощенно можно сказать так:
тип SELinux — для данных;
домен SELinux — для процессов.
В SELinux, в общих политиках, используется механизм принудительного присвоения типов — Type Enforcement. То есть каждый объект и субъект должен быть обязательно приведен к какому-либо типу (или домену).

Политика SELinux (SELinux Policy)

Совокупность всех описанных в системе соотношений пользователь — роль — тип (домен) — уровень и категория. Все типы пользователей, все роли, все типы/домены. Используется два типа политик:

  • Type Enforcment (TE) — Roles Based Access Control (RBAC). Targeted и strict — наиболее широко используемые TE — RBAC политики SELinux.
  • Bell-La Padula Model Multi-Level Security (MLS) — Multi-Category Security (MCS).

Политика targeted — все процессы не внесенные в специальные ограниченные домены, работают в неограниченном домене unconfined_t. Таким образом осуществляется возможность выполнения процессов которые еще не описаны в политике. Но такие процессы фактически выполняются почти с административными правами. В этом слабое место политики targeted.

Политика strict — все процессы работают в специальных ограниченных доменах, в неограниченном домене unconfined_t никто не работает. Политика strict используется узкоспециально, поскольку требуется ее ручная настройка для каждого конкретного случая. Ведь процессы не описанные в этой политике просто не будут работать. Но зато эта политика обеспечивает полную защиту в рамках тех возможностей которые есть в SELinux.

Политика MLS/MCS

Специальная политика основанная на механизме мандатного доступа. Всем субъектам и объектам присваиваются уровни доступа. В дальнейшем разрешение или запрет на операцию выдается по соотношению уровней доступа у субъекта и объекта. Предмет разрешения только две операции — чтение из файла и запись в файл. Важное отличие этой схемы заключается в том, что разрешения выдаются не на файлы, а на потоки данных связанных с этими файлами.

Правило такое — поток данных не может проходить в направлении понижения уровня доступа. То есть от более высокого уровня к более низкому уровню. Это приводит, на первый взгляд, к нелогичному запрету чтения или доступа в случае если субъект и объект имеют разные уровни доступа. Например субъект с уровнем доступа «секретно» не может писать в файл с уровнем «несекретно». И этот же субъект с правом доступа «секретно» не может читать из файла с уровнем «совершенно секретно», но может писать в этот файл.

Однако, логика тут есть, просто она другая. Если субъект, имеющий уровень «секретно», запишет данные в файл с уровнем «несекретно» то этот файл станет (потенциально) содержать данные уровня «секретно», но при этом будет доступен субъектам уровня «несекретно». То есть станет возможна утечка информации. Поэтому в MLS запись в файлы разрешена только с нижних уровней на верхние.

Эту особенность нужно понимать при присвоении меток уровней доступа.

Помимо уровней, доступ дополнительно регулируется категориями. Субъект не имеющий права доступа к категории «ВМС», не может получить доступ к данным которые имеют метку этой категории. Даже если этот субъект имеет самый высокий уровень доступа.
В контексте SELinux запись об уровнях и категориях выглядит так: «s0-s0:c0.c1023» где «s0-s0» допустимые уровни, а «c0.c1023» допустимые категории. Конкретно такая запись — «s0-s0:c0.c1023» означает высший уровень доступа к любой категории объектов.

Эта часть контекста используется только в специальных политиках MLS/MCS. В общих политиках типа targeted или strict эта часть контекста просто установлена в максимальный уровень разрешений и таким образом не влияет на доступ.

Резюме

Максимальную защиту SELinux дает когда переключен в режим enforced и при этом используется политика strict или политика MLS/MCS.

Если SELinux работает в режиме permissive, то фактически никакой защиты нет — только лишь фиксируются нарушения текущей политики.

Если SELinux переключен в режим enforced, но используется политика targeted, то защита осуществляется только применительно к «известным» программам, для которых в политике определены разрешения и запреты. «Неизвестная» программа фактически имеет административные привилегии.

Если вы живете в г. Краснодар, для вас есть простой способ установить SELinux и научиться им пользоваться. Подробнее.

Иван Сухов, 2012 г.

Поделитесь этим сайтом с друзьями!

Если вам оказалась полезна или просто понравилась эта статья, тогда не стесняйтесь — поддержите материально автора. Это легко сделать закинув денежек на Yoomoney № 410011416229354.

Или на телефон +7(928)274-0281.

Даже небольшая сумма может помочь написанию новых статей 🙂

Или поделитесь ссылкой на эту статью со своими друзьями.

Что такое selinux

Обновлено

Обновлено: 03.12.2021 Опубликовано: 28.12.2016

дополнительная система безопасности для систем на базе Linux. По умолчанию, включена на Red Hat, CentOS, Fedora, Android и др.; на большинство других систем ее можно установить. Использует дополнительные политики для предоставления доступа пользователям и процессам к каталогам и сетевым портам.

Очень часто, администраторы находят данную систему избыточной, поэтому отключают ее. Одной из причин является не самый очевидный процесс ее настройки. Однако, Selinux может существенно увеличить уровень безопасности системы.

Проверить состояние Selinux можно командой getenforce. Возможны следующие варианты:

  • Enforcing — включен.
  • Permissive — включены только предупреждения.
  • Disabled — отключен.

Прочитайте подробнее о Selinux на Википедии

Встречается в статьях

Инструкции:

  1. Как установить и настроить связку Asterisk + FreePBX на CentOS 8
  2. Установка Bareos на Rocky Linux и настройка резервного копирования
  3. Настройка веб-сервера на CentOS 7 со всем необходимым для правильной работы
  4. Настройка веб-сервера на CentOS 8 со всем необходимым для правильной работы
  5. Настройка кластера Ceph на Linux CentOS 7
  6. Использование связки Elasticsearch + Kibana + Logstash на Linux
  7. Инструкция по установке и использованию GLPI на Linux CentOS
  8. Установка, настройка и использование системы по сбору логов Grafana Loki на Linux
  9. Сервер радиовещания на базе Icecast под Windows и Linux
  10. Настройка L2TP VPN-сервера на CentOS 8 для возможности подкючения стандартными средствами Windows
  11. Как настроить почту для корпоративной среды на CentOS 8
  12. Трансляция видео с веб-сервера с помощью NGINX + rtmp
  13. Установка XMPP-сервера Openfire на CentOS для мгновенного обмена сообщениями
  14. Инструкция по установке и настройке сервера OpenVPN на Linux CentOS 7
  15. Как установить и использовать OpenVZ на CentOS
  16. Как настроить почту на базе Postfix для корпоративной среды (CentOS 7)
  17. Установка и настройка сервера ProFTPd на Linux CentOS 7
  18. Установка и настройка системы мониторинга Prometheus на Linux
  19. Установка и настройка файлового сервера Samba на CentOS 8
  20. Установка и запуск менеджера управления проектами Taiga на Rocky Linux
  21. Настройка портала TeamPass для совместного хранения паролей
  22. Как установить и настроить панель управления виртуальными машинами VMmanager
  23. Установка и настройка FTP-сервера vsFTPd на CentOS 7
  24. Установка и настройка почтового сервера Zimbra на Linux

Мини-инструкции:

  1. Отключение Selinux в системе Linux
  2. Как настроить систему безопасности с SELinux в CentOS
  3. Шпаргалка по настройке SELinux для различных программ
  4. Способы отключения использования IP версии 6 в Linux CentOS
  5. Настройка защиты DNS ответов от BIND при помощи DNSSEC
  6. Установка и настройка OwnCloud на CentOS 7 или 8
  7. Инструкция по установке и настройке phplist
  8. Настройка проксирования почты с NGINX для IMAP, POP3 и SMTP
  9. Настройка сервера мониторинга Zabbix на Linux CentOS 7
  10. Как настроить мониторинг репликации MySQL/MariaDB с помощью Zabbix
  11. Настройка потоковой репликации СУБД PostgreSQL
  12. Как наблюдать за репликацией в PostgreSQL с помощью Zabbix
  13. Установка и настройка своего локального репозитория CentOS
  14. Установка панели управления ISPmanager на Ubuntu или CentOS
  15. Как создать свой собственный образ для Docker
  16. Отправка логов на удаленный сервер с помощью journald
  17. Настройка rsyslog для хранения логов на удаленном сервере Linux
  18. Установка и настройка LDAP сервера FreeIPA на Linux CentOS
  19. Установка и настройка CRM Битрикс24 на Linux CentOS
  20. Настройка мониторинга RAID LSI MegaRaid на Linux с помощью Zabbix
  21. Как установить и настроить сервер OpenVPN на Rocky Linux / CentOS 8
  22. Установка и использование сервера Freeradius на Linux CentOS 8
  23. Настройка сервера видеоконференцсвязи OpenMeetings на Linux CentOS 8
  24. Как установить и настроить telegraf + InfluxDB для хранения метрик
  25. Установка и настройка сервера NextCloud на Rocky Linux
  26. Установка и использование почтового клиента WebMail Lite на Linux CentOS
  27. Настройка сервера мониторинга Zabbix 5 на Linux CentOS 8
  28. Организация сервиса календаря и адресной книги на базе Baikal
  29. Установка и настройка STUN/TURN сервера на базе coturn под Linux CentOS
  30. Как установить Jenkins на операционную систему Linux CentOS
  31. Установка и запуск в качестве сервера на Linux CentOS приложения Jupyter Notebook
  32. Примеры настройки сервисов и их установки с помощью ролей в Ansible
  33. Настройка Runner в GitLab CI/CD для загрузки изменений проекта на веб-серверы после коммита
  34. Как настроить прозрачную аутентификацию в NGINX через LDAP
  35. Установка и настройка сервера Freeradius для проверки подлинности через сервер FreeIPA
  36. Шпаргалка по работе с системой управления конфигурациями Ansible
  37. Шпаргалка по работе с Dnsmasq — установка и примеры настройки
  38. Установка второго сервера FreeIPA с настройкой репликации
  39. Как включить и проанализировать подробный лог в СУБД PostgreSQL
  40. Как установить Zookeeper на Rocky Linux и настроить кластер из нескольких нод
  41. Как создать политику SELinux для приложения или процесса
  42. Установка, настройка и создание кластера с помощью keepalived
  43. Как настроить кластер PostgreSQL с логической репликацией
  44. Как установить и настроить веб-версию pgAdmin на OS Linux

Вопросы и ответы:

Руководство для начинающих по SELinux

SELinux или Security Enhanced Linux — это улучшенный механизм управления доступом, разработанный Агентством национальной безопасности США (АНБ США) для предотвращения злонамеренных вторжений. Он реализует принудительную (или мандатную) модель управления доступом (англ. Mandatory Access Control, MAC) поверх существующей дискреционной (или избирательной) модели (англ. Discretionary Access Control, DAC), то есть разрешений на чтение, запись, выполнение.

У SELinux есть три режима:

  1. Enforcing — запрет доступа на основании правил политики.
  2. Permissive — ведение лога действий, нарушающих политику, которые в режиме enforcing были бы запрещены.
  3. Disabled — полное отключение SELinux.

По умолчанию настройки находятся в /etc/selinux/config

Изменение режимов SELinux

Чтобы узнать текущий режим запустите

$ getenforce

Для изменения режима на permissive запустите следующую команду

$ setenforce 0

или, для изменения режима с permissive на enforcing, выполните

$ setenforce 1

Если вам нужно полностью отключить SELinux, то это можно сделать только через файл конфигурации

$ vi /etc/selinux/config

Для отключения измените параметр SELINUX следующим образом:

SELINUX=disabled

Настройка SELinux

Каждый файл и процесс помечается контекстом SELinux, в котором содержится дополнительная информация, такая как пользователь, роль, тип и т.д. Если вы впервые включаете SELinux, то сначала нужно настроить контекст и метки. Процесс назначения меток и контекста известен как маркировка. Чтобы начать маркировку, в файле конфигурации изменим режим на permissive.

$ vi /etc/selinux/config SELINUX=permissive

После установки режима permissive, создадим в корне пустой скрытый файл с именем autorelabel

$ touch /.autorelabel

и перезагрузим компьютер

$ init 6

Примечание: мы используем режим permissive для маркировки, поскольку использование режима enforcing может привести к краху системы во время перезагрузки.

Не беспокойтесь, если загрузка застрянет на каком-то файле, маркировка занимает некоторое время. После завершения маркировки и загрузки вашей системы вы можете перейти к файлу конфигурации и установить режим enforcing, а также запустить:

$ setenforce 1

Теперь вы успешно включили SELinux на своем компьютере.

Мониторим логи

Возможно, у вас возникли какие-то ошибки во время маркировки или во время работы системы. Чтобы проверить, работает ли ваш SELinux правильно и не блокирует ли он доступ к какому-либо порту, приложению и т. д. нужно посмотреть логи. Лог SELinux находится в /var/log/audit/audit.log , но вам не нужно читать его целиком, чтобы найти ошибки. Можно использовать утилиту audit2why для поиска ошибок. Запустите следующую команду:

$ audit2why < /var/log/audit/audit.log

В результате вы получите список ошибок. Если ошибок в логе не было, то никаких сообщений отображаться не будет.

Настройка политики SELinux

Политика SELinux — это набор правил, которыми руководствуется механизм безопасности SELinux. Политика определяет набор правил для конкретного окружения. Сейчас мы изучим как настраивать политики, чтобы разрешить доступ к запрещенным сервисам.

1. Логические значения (переключатели)

Переключатели (booleans) позволяют изменять части политики во время работы, без необходимости создания новых политик. Они позволяют вносить изменения без перезагрузки или перекомпиляции политик SELinux.

Пример
Предположим, мы хотим предоставить общий доступ к домашнему каталогу пользователя по FTP на чтение и запись, и мы уже расшарили его, но при попытке доступа мы ничего не видим. Это связано с тем, что политика SELinux запрещает FTP-серверу читать и писать в домашнем каталоге пользователя. Нам нужно изменить политику, чтобы FTP-сервер мог обращаться к домашним каталогам. Посмотрим, есть ли для этого какие-либо переключатели, выполнив

$ semanage boolean -l

Эта команда выдаст список доступных переключателей с их текущим состоянием (включено/on или выключено/off) и описанием. Вы можете уточнить поиск, добавив grep, чтобы найти результаты, относящиеся только с ftp:

$ semanage boolean -l | grep ftp

и найдете следующее

ftp_home_dir -> off Allow ftp to read & write file in user home directory

Этот переключатель выключен, поэтому мы включим его с помощью setsebool $ setsebool ftp_home_dir on

Теперь наш ftp-демон сможет получить доступ к домашнему каталогу пользователя.
Примечание: вы также можете получить список доступных переключателей без описания, выполнив getsebool -a

2. Метки и контекст

Это наиболее распространенный способ реализации политики SELinux. Каждый файл, папка, процесс и порт помечаются контекстом SELinux:

    Для файлов и папок метки хранятся как расширенные атрибуты в файловой системе и могут быть просмотрены следующей командой:

$ ls -Z /etc/httpd
$ ps –auxZ | grep httpd
$ netstat -anpZ | grep httpd

Пример
Теперь давайте рассмотрим пример, чтобы лучше понять метки и контекст. Допустим, у нас есть веб-сервер, который вместо каталога /var/www/html/ использует /home/dan/html/ . SELinux сочтет это нарушением политики, и вы не сможете просматривать ваши веб-страницы. Это потому, что мы не установили контекст безопасности, связанный с HTML-файлами. Для просмотра контекста безопасности по умолчанию используйте следующую команду:

$ ls –lz /var/www/html -rw-r—r—. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/

Здесь мы получили httpd_sys_content_t в качестве контекста для html-файлов. Нам нужно установить этот контекст безопасности для нашего текущего каталога, который сейчас имеет следующий контекст:

-rw-r—r—. dan dan system_u:object_r:user_home_t:s0 /home/dan/html/

Альтернативная команда для проверки контекста безопасности файла или каталога:

$ semanage fcontext -l | grep '/var/www'

Мы также будем использовать semanage для изменения контекста, после того как найдем правильный контекст безопасности. Чтобы изменить контекст /home/dan/html, выполните следующие команды:

$ semanage fcontext -a -t httpd_sys_content_t ‘/home/dan/html(/.*)?’ $ semanage fcontext -l | grep ‘/home/dan/html’ /home/dan/html(/.*)? all files system_u:object_r:httpd_sys_content_t:s0 $ restorecon -Rv /home/dan/html

После того, как контекст изменен с помощью semanage, команда restorecon загрузит контекст по умолчанию для файлов и каталогов. Наш веб-сервер теперь сможет читать файлы из папки /home/dan/html , поскольку контекст безопасности для этой папки был изменен на httpd_sys_content_t .

3. Создание локальных политик

Могут возникнуть ситуации, когда вышеуказанные методы бесполезны для вас, и вы получаете ошибки (avc/denial) в audit.log. Когда такое происходит, то нужно создать локальную политику (Local policy). Все ошибки вы можете найти с помощью audit2why, как было описано выше.

Для устранения ошибок можно создать локальную политику. Например, мы получаем ошибку, связанную с httpd (apache) или smbd (samba), мы grep’аем ошибки и создаем для них политику:

apache $ grep httpd_t /var/log/audit/audit.log | audit2allow -M http_policy samba $ grep smbd_t /var/log/audit/audit.log | audit2allow -M smb_policy

Здесь http_policy и smb_policy — это названия локальных политик, которые мы создали. Теперь нам нужно загрузить эти созданные локальные политики в текущую политику SELinux. Это можно сделать следующим образом:

$ semodule –I http_policy.pp $ semodule –I smb_policy.pp

Наши локальные политики были загружены, и мы не должны больше получать никаких avc или denail в audit.log.

Это была моя попытка помочь вам понять SELinux. Я надеюсь, что после прочтения этой статьи вы будете чувствовать себя с SELinux более комфортно.

  • selinux
  • безопасность linux
  • Enforcing
  • Permissive
  • Disabled
  • Mandatory Access Control
  • Discretionary Access Control
  • Security Enhanced Linux
  • otus
  • otus.ru
  • Блог компании OTUS
  • Настройка Linux
  • Информационная безопасность

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *