<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF130%3ASELinuix</id>
		<title>LXF130:SELinuix - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF130%3ASELinuix"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF130:SELinuix&amp;action=history"/>
		<updated>2026-05-13T03:53:24Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF130:SELinuix&amp;diff=11829&amp;oldid=prev</id>
		<title>Crazy Rebel: викификация, оформление, иллюстрация</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF130:SELinuix&amp;diff=11829&amp;oldid=prev"/>
				<updated>2011-04-15T06:51:22Z</updated>
		
		<summary type="html">&lt;p&gt;викификация, оформление, иллюстрация&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;: '''''SELinux''''' Настроить безопасность машины без отрыва от производства&lt;br /&gt;
&lt;br /&gt;
==''SELinux'': Страж вашей системы==&lt;br /&gt;
&lt;br /&gt;
: '''Боб Мосс''' научит, как прикрыть вашу Linuxсистему, не добавляя мер безопасности, препятствующих выполнению повседневных задач.&lt;br /&gt;
&lt;br /&gt;
Спешу успокоить тех, кто ранее не слышал о ''SELinux'' [Security Enhanced Linux – Linux с повышенной безопасностью]: вы не одиноки. ''SELinux'' идет в составе большинства ведущих дистрибутивов, но по умолчанию выключен (а есть и пользователи, отключающие его намеренно); в итоге этот мощный инструмент безопасности слабо востребован и полузабыт.&lt;br /&gt;
&lt;br /&gt;
Любопытствуете, почему так случилось? Начнем с самого начала: когда US National Security Agency [Агентство национальной безопасности США] открыло его под свободной лицензией, ''SELinux'' влился в основной код ядра. Однако он загораживал дорогу людям, занятым в своих системах Red Hat выполнением ежедневных заданий, и был слишком сложен и громоздок для настройки пользователями среднего уровня, так что они обычно просто сдавались и отключали его.&lt;br /&gt;
&lt;br /&gt;
Тем не менее с тех пор многое изменилось, и у него даже возникли конкуренты (например, ''AppArmor''), предоставляющие такой же высокий уровень безопасности для стандартного настольного компьютера с Linux.&lt;br /&gt;
&lt;br /&gt;
Так в чем же идея ''SELinux''? По сути, он присваивает всем пользователям, процессам и файлам категории, а затем предоставляет этим «объектам» самый минимум прав, которые им нужны для выполнения своих функций. Если объект пытается выйти за эти рамки или вторгается в действия другого объекта, его останавливают и сообщают вам об этом в соответствии с заданной политикой безопасности.&lt;br /&gt;
&lt;br /&gt;
''SELinux'', однако, поставляется с набором правил, покрывающих только типовые сценарии работы, и в один прекрасный день, приступая к очередной важной задаче, вы можете обнаружить, что ''SELinux'' взбрыкнул и остановил вас.&lt;br /&gt;
&lt;br /&gt;
Но прежде чем в ярости швырять свой компьютер за окно или немедленно вырубать ''SELinux'', просто выдайте себе права, позволяющие делать то, что вам надо, и там, где надо – это не слишком трудно. Со временем ваше терпение окупится: ведь укрепится безопасность вашей машины. На данном уроке мы разберемся, как работают политики безопасности ''SELinux'', как изменить текущий режим ''SELinux'' для конкретных сценариев и как проверить выданные вам права, когда вы приспособите ''SELinux'' для своих личных компьютерных нужд.&lt;br /&gt;
&lt;br /&gt;
===Первый шаг===&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF130_72_1.jpg|300px]] Ваши политики не ограничены файлами: они влияют и на запущенные процессы, и на пользователей.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
Первым делом надо убедиться, установлен ли ''SELinux'' в вашей системе. Пользователи Fedora скорее всего заметят, что он присутствует по умолчанию, благодаря родству с Red Hat – просто наберите следующие строки в стандартном терминале пользователя, чтобы увидеть, в каком состоянии ''SELinux'' находится сейчас:&lt;br /&gt;
&lt;br /&gt;
 getenforce&lt;br /&gt;
&lt;br /&gt;
Вы можете получить один из трех результатов: '''enforcing, permissive''' или '''disabled'''. Первое говорит, что ''SELinux'' принуждает к выполнению всех заданных политик безопасности и сообщает обо всех нарушениях. Permissive показывает, что ''SELinux'' сообщает обо всех нарушениях, но насильно заданные правила безопасности не применяет; а последний вариант – ''SELinux'' отключен.&lt;br /&gt;
&lt;br /&gt;
Пользователи Ubuntu нуждаются в нескольких добавочных шагах для установки ''SELinux'', поскольку по умолчанию обычно установлен ''AppArmor''. Прочитайте раздел «Альтернатива – ''AppArmor''», и если все же решите держаться ''SELinux'', установите его через ваш менеджер пакетов. Покончив с этим, наберите в терминале следующую команду, для его запуска:&lt;br /&gt;
&lt;br /&gt;
 sudo sed i ‘s/SELINUX=.*/SELINUX=enforcing/’ /etc/selinux/config&lt;br /&gt;
&lt;br /&gt;
Она изменит состояние ''SELinux'' прямо через его конфигурационный файл. Вы также можете изменить '''enforcing''' на '''permissive''' или '''disabled''', в соответствии с текущим режимом вашей деятельности.&lt;br /&gt;
&lt;br /&gt;
У пользователей Fedora маршрут для включения ''SELinux'' и изменения режима работы много проще. Одна из возможностей – применение инструмента с графическим интерфейсом из '''System &amp;gt; Administration''' [Система &amp;gt; Администрирование] рабочего стола Gnome: изменения вносятся через выпадающее меню, после чего остается только кликнуть '''Apply''' [Применить]. Если вам больше нравится командная строка – то же самое действие выполнится при наборе &lt;br /&gt;
&lt;br /&gt;
 echo 0 &amp;gt; /selinux/enforce&lt;br /&gt;
&lt;br /&gt;
Оператор '''0''' велит ''SELinux'' выключить режим '''Enforce''' до окончания текущей сессии и перейти в режим '''Permissive'''. Если вы захотите вернуть режим  '''Enforce''', просто запустите эту же команду снова, но установив '''1''' вместо''' 0'''.&lt;br /&gt;
&lt;br /&gt;
При желании изменить режим насовсем, откройте от имени root файл '''/etc/selinux/config''' в вашем текстовом редакторе и исправьте соответствующую строку '''SELINUX''':&lt;br /&gt;
&lt;br /&gt;
 SELINUX=enforcing&lt;br /&gt;
&lt;br /&gt;
Опять же, можете изменить '''enforcing''' на '''permissive''' или '''disabled''', как вам удобнее.&lt;br /&gt;
&lt;br /&gt;
Тут вас, видимо, посетит вопрос: а зачем вообще менять режимы работы ''SELinux''? Суть в том, что при выполнении любой администраторской задачи или решении проблемы может оказаться, что политики ''SELinux'' (рассчитанные на повседневное использование на настольных компьютерах) мешают вам работать. То есть в данном случае отключение полезно; но когда вы снова будете использовать ваш компьютер как обычно, вы должны иметь возможность заставить настроенную конфигурацию ''SELinux'' тихо работать в фоновом режиме, не досаждая вам.&lt;br /&gt;
&lt;br /&gt;
===Позвольте вам не позволить===&lt;br /&gt;
&lt;br /&gt;
При запущенном ''SELinux'' иногда обнаруживается, что вещи, работавшие ранее, перестали это делать (или вы видите диалоговое окно, угрожающее сообщить обо всем вам же). В этом случае можно попробовать полезный инструмент ''Audit2allow'': он соберет данные о недавних действиях, которые предотвратил ''SELinux'', и позволит вам разрешить их. Перед его использованием проверьте, что у вас запущен демон ''auditd'', посредством команды&lt;br /&gt;
&lt;br /&gt;
 ps ef | grep auditd&lt;br /&gt;
&lt;br /&gt;
Если вы видите '''auditd''' в списке, и перед ним нет слова '''grep''', значит, демон запущен. Не паникуйте, если он не появился, потому что единственное различие нижеприведенной команды будет в замене '''a''' на '''d''':&lt;br /&gt;
&lt;br /&gt;
 audit2allow l a M local&lt;br /&gt;
&lt;br /&gt;
Параметр '''-l''' читает запреты с момента последней перезагрузки политик (в большинстве случаев – с момента вашего входа в систему), а '''-m''' перемещает запреты в модуль, который вы можете употребить для составления правил. Учтите, что если вы хотите использовать эту строку более одного раза, имя '''local''' нужно будет изменить, во избежание конфликтов. Удовлетворившись правилом, соберите его – для этого достаточно набрать ''semodule -i local.pp''.&lt;br /&gt;
&lt;br /&gt;
===Альтернатива – ''AppArmor''===&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF130_73_1.jpg|300px]] |Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
Пользователи Ubuntu или OpenSUSE могут обнаружить, что ''AppArmor'' уже установлен по умолчанию, хотя последние должны включать его вручную (как показано на экранном снимке). Те, кто знаком с ''SELinux'', могут найти некоторые аспекты ''AppArmor'' очень похожими. Например, ''AppArmor'' имеет режимы '''Enforce, Complain''' и ''Disabled'' – полная аналогия с ''SELinux''. Его также чуть легче запустить и остановить: пользователи Ubuntu могут просто набрать&lt;br /&gt;
&lt;br /&gt;
 rcapparmor start&lt;br /&gt;
&lt;br /&gt;
Замена '''start''' на '''stop''' даст обратный эффект. Вы можете также использовать '''reload''' для перезагрузки всех текущих профилей ''AppArmor'' (эквивалента правил ''SELinux''), или '''status''' для отображения количества загруженных профилей в режимах '''Complain''' и '''Enforce'''. Регистрацией событий в журнале также легко манипулировать:&lt;br /&gt;
&lt;br /&gt;
 rcaaeventd start&lt;br /&gt;
&lt;br /&gt;
Как и ранее, для обратного эффекта можно просто использовать '''stop''' вместо '''start'''.&lt;br /&gt;
&lt;br /&gt;
Преимуществом ''AppArmor'' является его режим '''Learning''', который наблюдает, как ваша машина используется в заданный вами промежуток времени, и затем применяет эту информацию для выяснения того, что разрешать делать, а что нет.&lt;br /&gt;
&lt;br /&gt;
====Трещины в броне====&lt;br /&gt;
&lt;br /&gt;
Это чрезвычайно полезно для настройки webсерверов, где локальный доступ в идеале должен быть ограничен, а webстраницы должны быть доступны только особым людям по определенным путям.&lt;br /&gt;
&lt;br /&gt;
Звучит такая идея замечательно, но на практике имеет препятствие. В режиме '''Learning''' ''AppArmor'' легко перенимает дурные привычки, то есть видит события, которые вы бы сочли нарушениями, но не предоставляет доклада об этом, считая такое поведение нормальным. Это может быть смягчено осторожностью поведения и в некоторых сценариях особенно не повредит, но всетаки должно считаться недостатком. У ''SELinux'' такой проблемы нет, потому что он распространяется с набором политик безопасности для основных востребованных сценариев, и затем позволяет пользователю при необходимости задать более точные политики. Конечно, потребуется больше усилий и некоторый уровень понимания, но зато вы узнаете о всех нежелательных событиях на вашей машине сразу при их появлении.&lt;br /&gt;
&lt;br /&gt;
Оба решения имеют свои «за» и «против», но после нашего урока вы сможете сделать более обоснованный выбор, что именно ставить на ваш любимый дистрибутив.&lt;br /&gt;
&lt;br /&gt;
==''SELinux'': Свои правила лучше==&lt;br /&gt;
&lt;br /&gt;
: Научившись применять ''SELinux'', почему бы не создать правила самим?&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF130_74_1.jpg|300px]] Тем, кто побаивается командной строки, управлять ''SELinux'' поможет графический интерфейс.&lt;br /&gt;
[[Изображение:LXF130_74_2.jpg|300px]] Fedora содержит мастер, позволяющий создать ваши политики безопасности быстро и просто.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
{{Врезка|left|Заголовок=Скорая помощь|Содержание=Еще более подробную информацию о ''SELinux'' вы получите на http://selinuxproject.org.|Ширина=200px}}&lt;br /&gt;
&lt;br /&gt;
Теперь вы можете настроить ''SELinu''x и знаете, как создать новое правило, если система безопасности начнет мешать выполнению повседневных задач на вашей Linux-машине. Однако в вашей системе бывают такие файлы и зоны, которые желательно уберечь от чужих глаз или защитить дополнительно. Тогда нужно создать собственные правила. &lt;br /&gt;
&lt;br /&gt;
Опять же, от правил мало проку, если нет возможности проверить политики ''SELinux'', применяемые в той или иной ситуации, и этот вопрос мы также рассмотрим.&lt;br /&gt;
&lt;br /&gt;
Итак, вы убедились, что ''SELinux'' присутствует и запущен в правильном режиме работы, и изучили, как обойти его блокировки для допустимых действий; следующим шагом приступайте к применению ваших собственноручно заданных правил. При желании можно просто использовать встроенный в Fedora мастер правил, но уж если вы зашли так далеко, то, скорее всего, захотите знать больше о том, что происходит за кулисами безопасности.&lt;br /&gt;
&lt;br /&gt;
Сперва рассмотрим, что ''SELinux'' понимает под ‘user’ [пользователь]. Это не то же самое, что обычный пользователь системы, который может повысить привилегии до root с помощью ''sudo'' или ''su''. На самом деле, многие системные пользователи имеют «двойников» в ''SELinux'', поэтому удобнее считать пользователей ''SELinux'' подвидом «группы пользователей», каждая из которых может содержать любое количество пользователей системы с одинаковыми ролями и разрешениями. Когда пользователь ''SELinux'' упоминается в правиле или системной политике, к его имени обычно приписывается окончание '''_u''' (к примеру, '''bob_u''').&lt;br /&gt;
&lt;br /&gt;
Ну, а что такое роль пользователя? Пользователь ''SELinux'' может иметь их столько, сколько вы для него зададите, и каждая роль определяется политикой ''SELinux''. Примерами ролей могут быть «посетитель» или «администратор сайта». Пользователи объектов, ассоциированных с ролями, по соглашению обычно имеют в конце имени '''_r''', поэтому при просмотре политики их можно относительно быстро засечь.&lt;br /&gt;
&lt;br /&gt;
Каждое правило должно также ссылаться на ‘type’ [тип] (в Интернете его иногда называют «домен»), определяя, какие ресурсы разрешены к доступу, а какие нет. Опять же согласно правилам, имя типа оканчивается на '''_t'''.&lt;br /&gt;
&lt;br /&gt;
Следующим шагом будет создать ‘context’ [контекст] для правила, вооружившись этими тремя понятиями. Это по сути означает помещение пользователя, роли и типа вместе в первой половине правила; но можно использовать их и по отдельности.&lt;br /&gt;
&lt;br /&gt;
===Сохраним это в контексте===&lt;br /&gt;
&lt;br /&gt;
По желанию вы можете добавить в этот контекст ‘range’ [диапазон], но это не является строго необходимым, пока вы не применяете правила для множества различных типов. Ваш контекст может иметь следующую форму:&lt;br /&gt;
&lt;br /&gt;
 user:role:type:range&lt;br /&gt;
&lt;br /&gt;
А контекст без диапазона был бы&lt;br /&gt;
&lt;br /&gt;
 system_u:system_r:xserver_t&lt;br /&gt;
&lt;br /&gt;
В данном контексте вы ссылаетесь на пользователя '''system''' с ролью '''system''' и привилегиями доступа типа '''xserver''' (вполне конкретная вещь). Если бы здесь не было двоеточий, вы бы задали правила для всех пользователей '''system''', всех пользователей с ролью '''system''' и всех пользователей с привилегиями доступа как у '''xserver_t'''; этим условиям, конечно, удовлетворяет гораздо больше пользователей.&lt;br /&gt;
&lt;br /&gt;
Теперь, получив представления о том, что такое ‘context’, вы можете применить свой контекст к любому классу объектов и дать им подходящие права. ''SELinux'' предоставляет мириады классов объектов (лучше сказать, категорий объектов) для пользователей, процессов и файлов. Примерами классов объектов будут '''dir''' для директорий и '''file''' для файлов.&lt;br /&gt;
&lt;br /&gt;
Далее, каждый из этих объектов имеет набор прав, которые вы можете выдавать или отбирать. Например, '''file''' может иметь права на создание, разлинковку (удаление), чтение и запись, а объект '''network''' – на подключение и передачу данных. Исчерпывающий список всех доступных классов объектов и их ассоциированных прав имеется на сайте проекта ''SELinux'': http://selinuxproject.org/page/ObjectClassesPerms.&lt;br /&gt;
&lt;br /&gt;
===Применяем правила===&lt;br /&gt;
&lt;br /&gt;
{{Врезка|Содержание=[[Изображение:LXF130_75_1.jpg|300px]] Можно применить защитные политики SELinux ко всем своим файлам или создать собственное правило, которое будет работать в конкретных случаях.|Ширина=300px}}&lt;br /&gt;
&lt;br /&gt;
К примеру, выдача ваших прав классов объектов двум различным типам пользователей будет выглядеть так&lt;br /&gt;
&lt;br /&gt;
 allow user_t user_home_t:file { create read write unlink };&lt;br /&gt;
&lt;br /&gt;
Как видите, allow используется для разрешения данным конкретным типам пользователей выполнять перечисленные действия над файлами (а для запрещения команда будет '''deny''').&lt;br /&gt;
&lt;br /&gt;
Вы можете применять похожие правила к типам, именам или комбинациям всех трех, о чем мы говорили выше, в зависимости от того, что вы хотите позволить или запретить в вашей системе для определенных объектов; так у вас будет максимальный контроль над тем, как работает ваша машина.&lt;br /&gt;
&lt;br /&gt;
Теперь, когда вы разбираетесь в правилах, должно быть ясно, что глобально насаждаемые системные настройки могут в некоторых ситуациях не работать. К примеру, вам может понадобиться временно изменить часть вашей системы с последующим возвратом умолчаний ''SELinux''.&lt;br /&gt;
&lt;br /&gt;
Вместо глобального изменения режима работы ''SELinux'', что влияет на всю систему, можно просто сменить режим работы отдельного правила, используя ''semanage'':&lt;br /&gt;
&lt;br /&gt;
 semanage permissive -a myapp_t&lt;br /&gt;
&lt;br /&gt;
Попробуйте заменить '''myapp_t''' на любой другой объект или контекст. Затем просто замените '''a''' на '''d''', чтобы вернуть данный объект назад к системным умолчаниям.&lt;br /&gt;
&lt;br /&gt;
Покончив с манипуляциями над ''SELinux'', заставляющими его работать как вам хочется, вы можете обнаружить, что нужно излечить какую-то проблему или вам просто интересно узнать, что делает каждая политика ''SELinux'' в том или ином случае. Это особенно удобно, если вы пытаетесь передать файл или установить «нехороший» пакет, от которых ''SELinux'' вас защищает. Есть две строки, применяемые в терминале, и в обеих фигурирует магическое и регистрозависимое '''-Z''', о чем упомянуто на множестве сайтов в Интернете:&lt;br /&gt;
&lt;br /&gt;
 ls -alZ *&lt;br /&gt;
&lt;br /&gt;
Эта строка выведет список всех файлов в текущей директории с их ассоциированным владельцем, правами и правилами ''SELinux'' (просто замените '''*''' на имя файла или нужный путь). Похожее действие для процессов, в настоящий момент работающих в системе, выполняет следующая строка:&lt;br /&gt;
&lt;br /&gt;
 ps -eZ &amp;gt; example.txt&lt;br /&gt;
&lt;br /&gt;
Она выведет список всех запущенных процессов вместе с их ассоциированными правилами ''SELinux'' и затем вставит эту информацию в текстовый файл, чтобы вы его проанализировали. Отобразить все эти данные в окне терминала тоже можно, но это менее удобно: результат будет некрасивый и более сложный для последующей интерпретации.&lt;br /&gt;
&lt;br /&gt;
И, наконец, если нужно проверить, какие активные пользователи системы имеют ассоциированные политики ''SELinux'', просто наберите ''id -Z'' в вашем терминале.&lt;br /&gt;
&lt;br /&gt;
Итак, вооружившись чуточкой терпения и этими инструкциями, можете приступать к своим повседневным задачам, в полнойуверенности, что ваш компьютер хорошо защищен.&lt;br /&gt;
&lt;br /&gt;
===Любителям приключений===&lt;br /&gt;
&lt;br /&gt;
Тем, кто хочет добраться до реальной начинки работающего механизма ''SELinux'' или писать и собирать собственные политики безопасности без помощи графического интерфейса или инструментов командной строки, будет полезно узнать, как ''SELinux'' размещается в корневом разделе.&lt;br /&gt;
&lt;br /&gt;
Все основные файлы конфигурации, используемые и модифицируемые сопутствующими приложениями и утилитами, доступны в '''/etc/selinux'''. Файлы, относящиеся к политикам, находятся в том же каталоге, имеют соответственные имена и снабжены поддиректорией '''modules''', где расположены дополнительные настройки политик. Вы также можете найти имена политик в файле '''/etc/selinux/config''', начиная со строки '''SELINUXTYPE='''.&lt;br /&gt;
&lt;br /&gt;
Модули и файлы ''SELinux'', зависящие от ядра системы, расположены в директории '''/selinux''' и содержат текущую конфигурацию и активные политики безопасности. Если вы не абсолютно уверены в своих действиях, лучше держаться подальше от этой директории, потому что последствия ошибок будут катастрофическими – вы можете поломать систему или, чего доброго, заблокировать доступ себе же!&lt;br /&gt;
&lt;br /&gt;
Написание и компиляция своих собственных политик ''SELinux'' без инструментов выходит за рамки данного учебника, но на сайте Red Hat опубликован учебник, охватывающий этот высший пилотаж. Но, повторюсь, это для продвинутых пользователей, о чем четко указано по адресу http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/index.html.&lt;/div&gt;</summary>
		<author><name>Crazy Rebel</name></author>	</entry>

	</feed>