tag:blogger.com,1999:blog-121192332024-03-14T00:16:05.492+03:00...про fedora linux, безопасность и selinuxsapunidzehttp://www.blogger.com/profile/05372234049438624977noreply@blogger.comBlogger51125tag:blogger.com,1999:blog-12119233.post-6444790989820833032009-07-20T09:55:00.003+04:002009-07-20T10:27:35.128+04:00russian fedora summit<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_0yMSfSBLLUA/SmQIzeYT2-I/AAAAAAAAAAY/t3PBJl9e1NI/s1600-h/00001.small.jpg"><img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://3.bp.blogspot.com/_0yMSfSBLLUA/SmQIzeYT2-I/AAAAAAAAAAY/t3PBJl9e1NI/s320/00001.small.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5360419136899111906" /></a><br />...иными словами своеобразный конгресс русских общин<br /><br />в пятницу 17.07.09 в неформальной обстановке состоялась московская встреча активистов продвижения Fedora в русскоязычном мире. публичные заявления по итогам встречи и её последствия как я понимаю в скором времени будут заметны на <a href="http://www.russianfedora.ru">сайте проекта</a>.<br /><br />фотоаппарата как водится в таких случаях ни у кого не оказалось, но не запечатлить момент для истории было нельзя. на фото слева направо (если я ничего не напутал) - Alexander Tiurin, Peter Lemenkov, Alexey Torkhov, Alexey Vasyukov, Inna Kabanova, Viacheslav Kaloshin. я - с другой стороны телефона (этим и определяется качество и размер)zhttp://www.blogger.com/profile/18005095334754970946noreply@blogger.com1tag:blogger.com,1999:blog-12119233.post-16421648820398058352009-07-14T17:06:00.005+04:002009-07-14T18:30:55.217+04:00SELinux Lockdown, 10: Заключение<span style="font-style:italic;">оригинал - <a href="http://selinux-mac.blogspot.com/2009/06/selinux-lockdown-part-10-conclusion.html">SELinux Lockdown Part Ten: Conclusion</a><br /><br />Завершение цикла статей по использованию SELinux. Оригинал на английском языке опубликован в <a href="http://selinux-mac.blogspot.com/">блоге Доминика Грифта</a> (Dominick Grift).</span><br /><br />В предыдущих девяти частях было обсуждено много чего. Это последняя статья в серии, в которой вкратце повторно перечисляются шаги, позволяющие увеличить безопасность, обеспечиваемую SELinux. Подробности по данным шагам доступны в предыдущих статьях.<br /><br /><span style="font-weight:bold;">1.</span> Пользователь SELinux.<br /><br />По умолчанию сопоставляйте пользователей Linux ограниченному пользователю SELinux. Помните про принцип минимума полномочий. Например, используйте пользователя <span style="font-style:italic;">guest_u</span>: <code>sudo semanage login -m -s guest_u -r s0-s0 __default__</code><br /><br />Если необходимо переопределить для новых Linux пользователей пользователя SELinux по умолчанию можно воспользоваться командой <code>useradd</code> и опцией <code>-Z</code>.<br /><br />Не сопоставляйте пользователей Linux пользователю SELinux <span style="font-style:italic;">unconfined_u</span>. Исключением из этого правила может быть пользователь <span style="font-style:italic;">root</span>. Пользователю <span style="font-style:italic;">root</span> должно разрешаться входить в систему только в экстренных случаях и только через TTY.<br /><br /><span style="font-weight:bold;">2.</span> PAM SEPermit.<br /><br />Добавьте соответствующие записи для всех ваших ограниченных SELinux пользователях в <code>/etc/security/sepermit.conf</code>, чтобы при работе SELinux в разрешающем (permissive) режиме блокировать их попытки входа в систему .<br /><br />Вы можете принять решение о создании уникального SELinux пользователя для себя, освобожденного от ограничения SEPermit.<br /><br /><span style="font-weight:bold;">3.</span> Permissive mode против Permissive Domains.<br /><br />Всегда отдавайте предпочтение использованию разрешающих доменов (Permissive Domains) вместо разрешающего режима (Permissive Mode).<br /><br /><span style="font-weight:bold;">4.</span> Не изменяйте предустановленных по умолчанию пользователей SELinux. Если вам требуется особенный пользователь SELinux и/или пользовательский домен SELinux создайте новый, взяв за основу существующий.<br /><br /><span style="font-weight:bold;">5.</span> Используйте управление доступом на основе ролей (Role based Access control) для ограничения привилегий пользователей, в том числе пользователя <span style="font-style:italic;">root</span>.<br /><br /><span style="font-weight:bold;">6.</span> Не изменяйте существующие роли / домены пользователей.<br /><br />Если требуется специальная роль, создайте на основе существующей новую и сопоставьте её новому пользователю SELinux. Вместе с тем вы можете сопоставлять существующим ролям новых пользователей SELinux.<br /><br /><span style="font-weight:bold;">7.</span> Используйте команду <code>sudo</code>, вместо <code>su</code> и <code>newrole</code>.<br /><br /><span style="font-weight:bold;">8.</span> Удалите домен(ы) <span style="font-style:italic;">unconfined</span> (неограниченный).<br /><br />Обязательно сделайте <code>sudo semodule -r unconfined</code>, чтобы отключить системные службы, не имеющие определенных политик. Используйте команду <code>sudo semodule -r unconfineduser</code>, чтобы полностью отключить неограниченную среду пользователя (не рекомендуется). Если вы решили удалить <span style="font-style:italic;">unconfineduser</span>, не забудьте соответствующим образом перенастроить сопоставления пользователей SELinux, чтобы учесть это изменение. Используйте вместо <span style="font-style:italic;">unconfined</span> домен <span style="font-style:italic;">sysadm</span>. <br /><br />однако, автор отдаёт предпочтение домену <span style="font-style:italic;">unconfined</span> против домена <span style="font-style:italic;">sysadm</span> в качестве дополнительного на все случаи привилегированного пользовательского домена, потому что:<br /><br />a. для запрета входа неограниченным (unconfined) пользователям можно установить переключатель <span style="font-style:italic;">unconfined_login</span>.<br />b. не работают переключатели <span style="font-style:italic;">ssh_sysadm_login</span> и <span style="font-style:italic;">xdm_sysadm_login</span>.<br />c. <span style="font-style:italic;">sysadm</span> - это напившийся (кривой) <span style="font-style:italic;">unconfined</span>.<br />d. вход пользователю <span style="font-style:italic;">root</span> отключен.<br />e. домен <span style="font-style:italic;">unconfined</span> используется только как дополнительный привилегированный домен, доступный только при использовании <code>sudo</code><br />e.1. за исключением пользователя <span style="font-style:italic;">root</span>, который может входить только в экстренном случае через TTY.<br /><br /><span style="font-weight:bold;">9.</span> Удалите как можно больше политик включением и выключением соответствующих переключателей.<br /><br />установите <span style="font-style:italic;">unconfined_login</span> в значение <span style="font-style:italic;">off</span><br />установите <span style="font-style:italic;">xserver_object_manager</span> в значение <span style="font-style:italic;">on</span><br />установите <span style="font-style:italic;">*_exec_content</span> в значение <span style="font-style:italic;">off</span><br />рассмотрите применение переключателей <span style="font-style:italic;">secure_mode_*</span>zhttp://www.blogger.com/profile/18005095334754970946noreply@blogger.com0tag:blogger.com,1999:blog-12119233.post-53432159256294641172009-07-14T15:45:00.006+04:002009-07-14T18:31:14.325+04:00SELinux Lockdown, 9: Переключатели<span style="font-style:italic;">оригинал - <a href="http://selinux-mac.blogspot.com/2009/06/selinux-lockdown-part-nine-booleans.html">SELinux Lockdown Part Nine: Booleans</a><br /><br />Продолжаю выкладывать перевод цикла статей по использованию SELinux. Оригинал на английском языке опубликован в <a href="http://selinux-mac.blogspot.com/">блоге Доминика Грифта</a> (Dominick Grift).</span><br /><br />Переключатели (booleans) это блоки политики, которые можно добавлять или удалять на лету, переключая их значение. Старая примерная политика АНБ (NSA) основывалась на модели минимальных привилегий. Это значит, что разрешалось насколько возможно мало для успешного совершения задания. Почти каждое правило, добавляемое в политику SELinux, добавляет новые привилегии. Для максимального повышения безопасности, обеспечиваемой SELinux, число активных правил следует минимизировать.<br /><br />В Fedora версии 11 переключателями включены некоторые политики, которые возможно в вашем случае не нужны. Рекомендуется удалять такие политики и добавлять их только при необходимости.<br /><br />Какие-то переключатели во включенном состоянии добавляют политики, другие добавляют политики в выключенном состоянии. Простое описание функциональности переключателя можно просмотреть командой: <code>sudo semanage boolean -l</code>. Этих описаний обычно достаточно для понимания назначения переключателя, хотя описания короткие. Если пропустить сообщение <span style="font-style:italic;">AVC: denied</span> (Access Vector Cache) через команду <span style="font-style:italic;">audit2why</span>, можно узнать, какой переключатель позволяет устранить эту проблему (если данная проблема может быть решена установкой значения переключателя).<br /><br />Иногда для понимания того, что разрешает переключатель, лучше посмотреть его описание в исходном тексте политики, в которой он определен. Вам необходимо иметь доступ к исходному тексту политики, а также знать, как найти блоки политики, содержащие описание переключателя.<br /><br />Существует три относительно старые утилиты, позволяющие просмотреть, установить и переключить значение SELinux-переключателей: <span style="font-style:italic;">getsebool</span>, <span style="font-style:italic;">setsebool</span> и <span style="font-style:italic;">togglesebool</span>. В Fedora 11 функциональность этих утилит была встроена в команду <span style="font-style:italic;">semanage</span>: <code>semanage boolean</code>. <br /><br />Имена переключателей должны указывать на модули с исходными текстами, в которых определяются переключатели. К сожалению, часто бывает не так просто найти определение переключателя в исходном тексте политики. В лучшем случае название переключателя начинается с модуля, в котором он определен. <br /><br /><span style="font-style:italic;">Пример:</span><br />Как найти объявление и содержимое переключателя <span style="font-style:italic;">gpg_agent_env_file</span> boolean<br /><br /><code># semanage boolean -l | grep gpg<br />gpg_agent_env_file -> off Allow usage of the gpg-agent --write-env-file option. This also allows gpg-agent to manage user files</code><br /><br />Как следует из названия переключателя, он определяется где-то в модуле <a href="http://oss.tresys.com/projects/refpolicy/browser/trunk/policy/modules/apps/gpg.te">gpg.te</a> (в данном случае это строки с 196 по 203).<br /><br />Данный переключатель, будучи включенным, позволяет программам, работающим в SELinux-домене <span style="font-style:italic;">gpg_agent_t</span>, записывать файлы в домашней директории пользователя с обычным типом <span style="font-style:italic;">user_home_t</span>.<br /><br />Автор предполагает, что в блоке политики имеется ошибка, так как <span style="font-style:italic;">gpg_agent_t</span> может осуществить переход типа (type transition) только для файлов <span style="font-style:italic;">user_home_t</span> и не может для директорий.<br /><br />Объявление этого переключателя, содержащее краткое описание функциональности, можно найти на строках с 9 по 15. <br /><br />Описать в рамках данной статьи все переключатели не представляется возможным, поэтому было показано, как в общем случае найти объявление и актуальное описание переключателя. При необходимости ограничения переключателей, можно посмотреть добавляет он или удаляет политику при включении и что фактически он делает. Кроме того, можно включить или выключить переключатель, чтобы определить, нужна ли вам, реализованная им политика. Также при необходимости можно «скормить» имеющиеся сообщения <span style="font-style:italic;">AVC: denie</span>d утилите <span style="font-style:italic;">audit2why</span> и посмотреть существуют ли переключатели, позволяющие решить существующую проблему.<br /><br />Далее рассматриваются некоторые переключатели.<br /><br /><span style="font-weight:bold;">unconfined_login</span><br /><br /><code>unconfined_login -> off Allow a user to login as an unconfined domain</code><br /><br />Переключатель обсуждался в <a href="http://sapunidze.blogspot.com/2009/07/selinux-8-unconfined.html">восьмой части</a> этой серии. Если он установлен в положение on (включен), тогда пользователи могут входить в систему в домене <span style="font-style:italic;">unconfined_t</span>. Можно сильно повысить безопасность установкой его в значение off (выключено). Содержимое переключателя доступно в исходном файле политики unconfineduser.te.<br /><br /><span style="font-weight:bold;">ssh_sysadm_login и xdm_sysadm_login</span><br /><br /><code>ssh_sysadm_login -> off Allow ssh logins as sysadm_r:sysadm_t<br />xdm_sysadm_login -> off Allow xdm logins as sysadm</code><br /><br />Переключатель похож на <span style="font-style:italic;">unconfined_login</span>, только имеет дело с доменом <span style="font-style:italic;">sysadm_t</span>. В настоящее время он НЕ работает. Поэтому пока не рекомендуется сопоставлять любых пользователей SELinux роли <span style="font-style:italic;">sysadm_r</span>. Пользователи, имеющие доступ к этой роли, могут сразу входить в систему в привилегированный домен.<br /><br /><span style="font-weight:bold;">*_allow_exec_content_t</span><br /><br /><code>allow_sysadm_exec_content -> off allow_sysadm_exec_content<br />allow_xguest_exec_content -> off allow_xguest_exec_content<br />allow_user_exec_content -> off allow_user_exec_content<br />allow_staff_exec_content -> off allow_staff_exec_content<br />allow_guest_exec_content -> off allow_guest_exec_content</code><br /><br />Как видно описание этого переключателя не сильно полезно. Когда переключатель включен пользователям, в соответствующем домене, разрешается запускать их пользовательское содержимое в их собственном окружении. Имеются в виду файлы с типами <span style="font-style:italic;">user_home_t</span>, <span style="font-style:italic;">user_tmp_t</span> или если включены домашние директории nfs или samba типы <span style="font-style:italic;">nfs_t</span> и <span style="font-style:italic;">cifs_t</span>, соответственно. Данные переключатели являются особенностью Fedora, их содержимое можно найти в файле <span style="font-style:italic;">userdomain.if</span>. <br /><br /><span style="font-weight:bold;">secure_module</span><br /><br /><code>secure_mode -> off Enabling secure mode disallows programs,<br />such as newrole, from transitioning to administrative user domains</code><br /><br />Переключатель <span style="font-style:italic;">secure_mode</span> можно включить для запрета переходов пользовательских доменов в привилегированные домены. Переключатель определяется в файле <a href="http://oss.tresys.com/projects/refpolicy/browser/trunk/policy/modules/system/selinuxutil.te">selinuxutil.te</a> (строки с 289 по 295). <br /><br />Пока переключатель работает только для команды <span style="font-style:italic;">newrole</span> и НЕ работает для команды <span style="font-style:italic;">sudo</span>. Поэтому не поощряется рассчитывать на данный переключатель.<br /><br /><span style="font-weight:bold;">secure_mode_insmod</span><br /><br /><code>secure_mode_insmod -> off Disable transitions to insmod</code><br /><br />При включении данного переключателя для замкнутых (confined) пользователей не разрешается осуществлять доменный переход к домену <span style="font-style:italic;">insmod</span>. Ограниченным пользовательским доменам будет запрещено загружать модули ядра Linux. Переключатель определен в исходном файле <a href="http://oss.tresys.com/projects/refpolicy/browser/trunk/policy/modules/system/modutils.te">modutils.te</a> (политика – строки 120-122, объявление переключателя – строки 4-6).<br /><br /><span style="font-weight:bold;">secure_mode_policyload</span><br /><br /><code>secure_mode_policyload -> off boolean to determine whether the system<br />permits loading policy, setting enforcing mode, and changing boolean values.<br />Set this to true and you have to reboot to set it back</code><br /><br />Описание в принципе понятно. При включении переключателя исключается политика, разрешающая загрузку других политик, изменять режим работы SELinux и изменять значения переключателей. Политика описывается в исходном файле <a href="http://oss.tresys.com/projects/refpolicy/browser/trunk/policy/modules/kernel/selinux.te">selinux.te</a> (строки с 44 по 52).<br /><br /><span style="font-weight:bold;">xserver_object_manager</span><br /><br /><code>xserver_object_manager -> off Support X userspace object manager</code><br /><br />Данный переключатель оказывает достаточно сильный эффект. При его включении становится доступным контроль доступа на уровне X сервера. XACE (X Access Control Extension) позволяет оператору настраивать взаимодействие процессов с X сервером. Политика по умолчанию всё ещё имеет определенные шероховатости. XACE реализован для политики безопасности SELinux, реализующей модель Multi Level Security, ориентированной на обеспечение конфиденциальности. В целевой политике (SELinux Targeted Policy) по умолчанию он выключен. Если вам хватает смелости, включите его и опробуйте силу XACE.<br />После включения переключателя необходимо перезапустить X сервер.<br /><br />Переключатель описан в файле с исходным текстом политики <a href="http://oss.tresys.com/projects/refpolicy/browser/trunk/policy/modules/services/xserver.te">xserver.te</a> (строки с 749 по 766).<br /><br />К сожалению, не всегда бывает легко найти, где определяются переключатели. Есть куда стремиться в части именования переключателей.<br /><br /><span style="font-style:italic;">Вывод:</span><br />Для большей безопасности минимизируйте объем политики.<br />Иногда включением переключателя политика добавляется, иногда политика добавляется выключением переключателя.<br />Описание переключателя можно просмотреть в исходном тексте политики.<br /><br /><span style="font-style:italic;">Справка: man getsebool, man setsebool, man togglesebool, man audit2why, man semanage</span>zhttp://www.blogger.com/profile/18005095334754970946noreply@blogger.com0tag:blogger.com,1999:blog-12119233.post-85401586197386304492009-07-08T23:23:00.004+04:002009-07-14T18:31:31.673+04:00SELinux Lockdown, 8: Unconfined<span style="font-style: italic;">оригинал - <a href="http://selinux-mac.blogspot.com/2009/06/selinux-lockdown-part-eight-unconfined.html">SELinux Lockdown Part Eight: Unconfined</a><br><br>Продолжаю выкладывать перевод цикла статей по использованию SELinux. Оригинал на английском языке опубликован в <a href="http://selinux-mac.blogspot.com/">блоге Доминика Грифта</a> (Dominick Grift).</span><br /><br />Незакрытая (unconfined) область для процессов, которым требуется практически неограниченный (unrestricted) доступ. Почти, потому что не разрешается исполнение (execution) в перезаписываемых областях памяти (writable memory). Для процессов, выполняющихся в незакрытой области, если обратное не определено, ограничены следующие полномочия: <span style="font-style:italic;">Execmem Execstack Execheap Execmod</span>.<br /><br /><span style="font-style:italic;">прим. перев.:</span> в предыдущих частях термин «<span style="font-style:italic;">unconfined</span>» переводился как «<span style="font-style:italic;">неограниченный</span>», тогда это было не столь принципиально, в этой части близкие термины «<span style="font-style:italic;">(un)confined</span>» и «<span style="font-style:italic;">(un)restricted</span>» встречаются чаще, дабы не превратить всё в масло масленое, для первого термина здесь использую дословное значение.<br /><br />В установленной по умолчанию Fedora 11 в незакрытом домене (Unconfined Domain) выполняются следующие процессы: ядро Linux, RPM (пакетный менеджер), init scripts (скрипты инициализации) и незакрытые пользователи (unconfined users).<br />Если иное не определено, незакрытые процессы обычно запускают также незакрытые программы. Предполагается, что незакрытые процессы неограниченны и что потомки наследует это незакрытое окружение. Исключения из этого правила, как было сказано, должны быть определены путём создания политики, определяющей переходы из незакрытого домена в ограниченные области при запуске программ незакрытым процессом.<br /><br />Можно существенно повысить безопасность, удалив незакрытую область. В результате все процессы будут ограниченны SELinux. В Fedora 11 незакрытую область разделили на две части. Первая часть – незакрытая область для программ, вторая часть – незакрытая область для пользователей. Вторую часть переименовали в «<span style="font-style:italic;">unconfineduser domain</span>». <br /><br />Результат этого разделения позволяет удалить одно из двух или оба окружения сразу. При удалении домена <span style="font-style:italic;">unconfined</span>, являющегося доменом для незакрытых программ, будут ограничены init-скрипты. В итоге системные службы, для которых не определена политика SELinux, будут запускаться в ограниченном окружении init-скрипта и не будут работать неограниченными. Это отличный способ обеспечить отсутствие в системе неограниченных системных служб. Процессы ядра и RPM останутся незакрытыми (unconfined), потому что этим процессам для нормальной работы требуется слишком много полномочий.<br /><br />Для обеспечения работы всех операторов в ограниченном окружении можно удалить домен <span style="font-style:italic;">unconfineduser</span>. В случае принятия решения об удалении домена <span style="font-style:italic;">unconfineduser</span> необходимо соответствующим образом изменить конфигурацию сопоставлений SELinux (SELinux mappings).<br /><br />Если оператор уверенно владеет SELinux (feels comfortable with) не должно быть причин, чтобы не удалить домен <span style="font-style:italic;">unconfined</span>. При необходимости он сможет реализовать политику SELinux для любого системного процесса, не имеющего пока ещё своей политики.<br /><br />Домен <span style="font-style:italic;">unconfineduser</span> обычно удобнее сохранить, так как оператор имеет возможность вручную определить, каким конкретно пользователям Linux сопоставить этот домен. Настройками SELinux можно не разрешать незакрытые входы в систему через OpenSSH или графический интерфейс пользователя. Это означает, что пользователи имеющие доступ к домену <span style="font-style:italic;">unconfineduser</span> могут входить, используя это окружение, только на TTY (терминал) или получать доступ к незакрытой области посредством команд <code>sudo</code> или <code>su</code> вместе с <code>newrole</code>.<br /><br />Использование незакрытого пользовательского домена в качестве дополнительного домена повышает безопасность, только если не допускается незакрытый вход в систему.<br /><br /><span style="font-style:italic;">Пример:</span><br />Удалим домен <span style="font-style:italic;">unconfined</span>, запретим вход незакрытых пользователей, сопоставим роль <span style="font-style:italic;">unconfined_r</span> существующему пользователю SELinux <span style="font-style:italic;">staff_u</span>, удалим пользователю SELinux <span style="font-style:italic;">staff_u</span> роль <span style="font-style:italic;">sysadm_r</span>. Добавим Linux-пользователя John, сопоставим его SELinux-пользователю <span style="font-style:italic;">staff_u</span> и добавим для него запись в файл <code>/etc/sudoers</code>.<br /><br /><code>sudo setsebool -P unconfined_login off<br />sudo semanage user -m -L s0 -r s0-s0:c0.c1023 -R "staff_r system_r unconfined_r" -P user staff_u<br />sudo semodule -r unconfined<br />sudo useradd -Z staff_u john<br />sudo visudo (john ALL=(ALL) TYPE=unconfined_t ROLE=unconfined_r ALL)</code><br /><br />John входит в систему как ограниченный SELinux-пользователь <span style="font-style:italic;">staff_u</span>. Когда John хочет получить привилегии пользователя <span style="font-style:italic;">root</span> он просто выполняет команду <code>sudo</code>. John может открыть оболочку пользователя <span style="font-style:italic;">root</span> (root shell) в незакрытой области, запустив команду <code>sudo</code> с опцией <code>-s</code>.<br /><br />Такая конфигурация не должна сильно изменить ваши привычки (ways of doing things), потому что не поощряется вход от имени пользователя <span style="font-style:italic;">root</span>, а ограниченный домен <span style="font-style:italic;">staff_t</span> имеет все необходимые полномочия, требуемые непривилегированному пользователю. Также можно создать собственный домен пользователя, специально под ваши персональные требования и сопоставить его роль специально созданным пользователям SELinux вместе с ролями <span style="font-style:italic;">system_r</span> и <span style="font-style:italic;">unconfined_r</span>. Так вы сможете сохранить в оригинальном виде SELinux-пользователя <span style="font-style:italic;">staff_u</span> и изменять под ваши требования созданные домен и пользователя SELinux.<br /><br /><span style="font-style:italic;">Вывод:</span><br />Обдумайте удаление доменов Unconfined и Unconfineduser для повышения безопасности.<br /><br /><span style="font-style:italic;">Справка: man semanage, man semodule, man visudo, man setsebool, man sudo</span>zhttp://www.blogger.com/profile/18005095334754970946noreply@blogger.com0tag:blogger.com,1999:blog-12119233.post-2824711695826432422009-07-08T16:31:00.005+04:002009-07-14T18:31:55.456+04:00SELinux Lockdown, 7: su, newrole, sudo и run_init<span style="font-style:italic;">оригинал - <a href="http://selinux-mac.blogspot.com/2009/06/selinux-lockdown-part-seven-su-newrole.html">SELinux Lockdown Part Seven: su, newrole, sudo and run_init</a><br /><br />Продолжаю выкладывать перевод цикла статей по использованию SELinux. Оригинал на английском языке опубликован в <a href="http://selinux-mac.blogspot.com/">блоге Доминика Грифта</a> (Dominick Grift).</span><br /><br />До выхода Fedora версии 9 пользователям, имеющим доступ к ролям, для смены домена (Domain Transition) нужно было использовать команду <code>newrole</code>. Команду можно установить с пакетом <span style="font-style:italic;">policycoreutils-newrole</span>. Например, пользователь запускал: <code>newrole -r</code>, и получал приглашение на ввод его пароля. После чего команда <code>newrole</code> проверяла, что у пользователя имеются все необходимые права доступа для осуществления запрашиваемого доменного перехода, и разрешала или запрещала его.<br /><br />При переходе в привилегированный пользовательский домен и желании выполнить какое-то привилегированное задание пользователь выполнял команду <code>su</code>, чтобы выполнить требования дискреционного контроля доступа (Discretionary Access Control). Команда <code>su</code> запрашивает пароль пользователя <span style="font-style:italic;">root</span>.<br /><br />В строгом окружении, чтобы получить права привилегированного пользователя, придется запустить две программы и ввести два разных пароля. При таком подходе для запуска любого привилегированного задания пользователю потребуется доступ к паролю пользователя <span style="font-style:italic;">root</span>.<br /><br />Такому пользователю для запуска системной службы имеется другая команда. Команда <code>run_init</code> осуществляет переход к домену сценариев инициализации (Init Script), в котором, в свою очередь, в соответствующем ей домене запускается системная служба. Эта программа также запрашивает пароль.<br /><br />Таким образом получается много команд и паролей всего лишь, например, для перезапуска Apache.<br /><br />В Fedora версии 9 для поддержки доменных переходов модифицировали команду <code>sudo</code>. Рекомендуется вместо команд <code>su</code> и <code>newrole</code> использовать <code>sudo</code>.<br />Два основных преимущества команды <code>sudo</code> заключаются в том, что данная команда позволяет за одно действие сменить идентификатор (uid) пользователя Linux и сменить домен SElinux, а также не требуется вводить пароль пользователя <span style="font-style:italic;">root</span> при условии, что ваш пользователь добавлен в конфигурационный файл <code>/etc/sudoers</code>.<br /><br />Целевой домен может быть указан опцией <code>-t</code>, целевая роль может быт указана опцией <code>-r</code>. Также в файле конфигурации <code>/etc/sudoers</code> можно настроить автоматическое переключение на определенные роль и домен по умолчанию.<br /><br />Пример:<br />Linux пользователь <span style="font-style:italic;">joe</span> входит в систему как SELinux пользователь <span style="font-style:italic;">joe_u</span>. SELinux пользователь <span style="font-style:italic;">joe_u</span> имеет доступ к роли <span style="font-style:italic;">joe_r</span>, а также к ролям <span style="font-style:italic;">webadm_r</span> и <span style="font-style:italic;">system_r</span>. Роль <span style="font-style:italic;">joe_r</span> сопоставлена домену <span style="font-style:italic;">joe_t</span>, который обладает всеми необходимыми полномочиями для входа в систему ограниченного пользователя. Пользовательский домен <span style="font-style:italic;">joe_t</span> в соответствии с политикой имеет доступ к ролям <span style="font-style:italic;">system_r</span> и <span style="font-style:italic;">webadm_r</span>. В файле <code>/etc/sudoers</code> о пользователе <span style="font-style:italic;">joe</span> имеется следующая запись:<br /><br /><code>joe ALL=(ALL) TYPE=webadm_t ROLE=webadm_r ALL</code><br /><br />Эта запись разрешает при запуске команды <code>sudo</code> пользователем <span style="font-style:italic;">joe</span> осуществлять автоматическую смену значений параметров его контекста SELinux, соответственно роли на <span style="font-style:italic;">webadm_r</span> и типа на <span style="font-style:italic;">webadm_t</span>.<br /><br />При входе пользователя <span style="font-style:italic;">joe</span> в систему он оказывается в домене <span style="font-style:italic;">joe_t</span>. Когда у Джо появляется необходимость запустить службу Apache он просто запускает команду:<br /><br /><code>sudo service httpd start</code><br /><br />Команда <code>sudo</code> изменяет идентификатор (uid) Джо на 0 и автоматически осуществляет смену домена и роли Джо на определенные роль и домен - <span style="font-style:italic;">webadm_r</span> и <span style="font-style:italic;">webadm_t</span>.<br /><br />Джо также имеет доступ к роли <span style="font-style:italic;">system_r</span>, необходимой для смены пользовательского домена на домен сценария инициализации (Init Script), который запускает <span style="font-style:italic;">httpd</span> в правильном домене. Команда <code>run_init</code> больше не требуется.<br /><br />Если Джо доступно несколько ролей, он может переопределить роль и домен, указанные в конфигурационном файле <code>sudo</code>, указав опции <code>-r</code> и <code>-t</code> с требуемыми значениями роли и домена в качестве параметров.<br /><br /><span style="font-style:italic;">Вывод:</span><br />Отдавайте предпочтение использованию команды <code>sudo</code> вместо команд <code>su</code> и <code>newrole</code>.<br />Отдавайте предпочтение предоставлению доступа к роли <span style="font-style:italic;">system_r</span> вместо использования команды <code>run_init</code>.<br /><br /><span style="font-style:italic;">Справка: man su, man sudo, man newrole, man run_init</span>zhttp://www.blogger.com/profile/18005095334754970946noreply@blogger.com0tag:blogger.com,1999:blog-12119233.post-81901504370361674222009-07-07T16:52:00.004+04:002009-07-14T18:40:02.680+04:00SELinux Lockdown, 6: Создание ролей SELinux<span style="font-style:italic;">оригинал - <a href="http://selinux-mac.blogspot.com/2009/06/selinux-lockdown-part-six-customized.html">SELinux Lockdown Part Six: Customized SELinux Roles<br /></a><br />Продолжаю выкладывать перевод цикла статей по использованию SELinux. Оригинал на английском языке опубликован в <a href="http://selinux-mac.blogspot.com/">блоге Доминика Грифта</a> (Dominick Grift).</span><br /><br />В <a href="http://sapunidze.blogspot.com/2009/07/selinux-4-selinux.html">четвёртой части</a> серии описывался процесс создания пользовательских доменов SELinux. Создание ролей осуществляется очень похожим способом. Как уже отмечалось в предыдущей статье про RBAC: роли это сопоставления к пользовательским доменам (<span style="font-style:italic;">прим. перев.:</span> в оригинале - Roles are mappings to User Domains, в отличии от автора я не живу в Голландии, поэтому более удачного перевода пока не предумал). Какие-то домены пользователей могут использоваться пользователями для входа в систему, потому что эти домены, например, имеют полномочия по доступу к домашней директории пользователя. Такие домены в предыдущей части назывались основными (primary) пользовательскими доменами. Другие домены созданы в качестве дополнительных. Пользователи, используя команды <code>sudo</code> или <code>su</code> вместе с <code>newrole</code>, могут осуществить доменный переход (Domain Transition) к этим дополнительным доменам. Дополнительные домены не могут использоваться для входа в систему.<br /><br />В этой части будет продемонстрировано как создается такой дополнительный пользовательский домен. Целью является реализовать привилегированную роль SELinux, которой предоставлены полномочия по управлению DNS службой Bind. За основу будет взят пользовательский домен <span style="font-style:italic;">webadm_t</span>, обсуждавшийся ранее. Также будет пересмотрен некоторый материал четвёртой части: Создание пользовательского домена SELinux - чтобы разрешить доступ к новой роли <span style="font-style:italic;">bindadm_r</span>, потребуется изменить основной домен пользователя.<br /><br />Начнём с создания нового дополнительного домена пользователя с названием <span style="font-style:italic;">bindadm</span>, основанного на предустановленном домене SELinux <span style="font-style:italic;">webadm_t</span>. Новый домен пользователя основан на двух файлах с исходным текстом политики SELinux (SELinux Source Policy): <a href="http://oss.tresys.com/projects/refpolicy/browser/trunk/policy/modules/roles/webadm.te">webadm.te</a> и <a href="http://oss.tresys.com/projects/refpolicy/browser/trunk/policy/modules/roles/webadm.if">webadm.if</a><br /><br />Файлы исходных текстов политики SELinux с расширением "<span style="font-style:italic;">.te</span>" называются Type Enforcement файлы. Файлы с расширением "<span style="font-style:italic;">.if</span>" называются интерфейсными (Interface files). Файлы Type Enforcement содержат описания (Declarations) и политику (Policy), персональные или локальные для данного домена (Domain). Интерфейсные файлы содержат описания и политики, общие для этого домена и других доменов, желающими взаимодействовать с данным доменом.<br /><br /><code>mkdir ~/bindadm; cd ~/bindadm;<br />echo "policy_module(bindadm, 0.0.1)" > bindadm.te;<br />echo "role bindadm_r;" >> bindadm.te;<br />echo "userdom_base_user_template(bindadm)" >> bindadm.te;<br />echo "allow bindadm_t self:capability { dac_override dac_read_search kill sys_ptrace sys_nice };" >> bindadm.te;<br />echo "files_dontaudit_search_all_dirs(bindadm_t)" >> bindadm.te;<br />echo "files_manage_generic_locks(bindadm_t) >> bindadm.te;<br />echo "files_list_var(bindadm_t)" >> bindadm.te;<br />echo "selinux_get_enforce_mode(bindadm_t)" >> bindadm.te;<br />echo "seutil_domtrans_setfiles(bindadm_t)" >> bindadm.te;<br />echo "logging_send_syslog_msg(bindadm_t)" >> bindadm.te;<br />echo "userdom_dontaudit_search_user_home_dirs(bindadm_t)" >> bindadm.te;</code><br /><br />Это основное содержимое для привилегированного дополнительного домена пользователя. Исключена политика, специфичная для управления службой Apache.<br />Теперь добавим политику, специфичную для управления службой Bind. Можно позаимствовать эту политику из исходных текстов политики для Bind. Как уже отмечалось, общая политика располагается в интерфейсных файлах. Это значит, что если мы хотим включить общую политику, относящуюся к Bind, можно посмотреть в соответствующем файле политики <a href="http://oss.tresys.com/projects/refpolicy/browser/trunk/policy/modules/services/bind.if">bind.if</a> если он доступен:<br /><br />Начиная со строки 252 в bind.if и заканчивая строкой 305 описывается общая политика, разделяемая модулем Bind для управления службой bind. Для включения этой политики в наш Type Enforcement файл требуется всего лишь добавить вызов этого интерфейса:<br /><br /><code>echo "bind_admin(bindadm_t, bindadm_r)" >> bindadm.te;</code><br /><br />На этом Type Enforcement файл bindadm заканчивается. Далее необходимо обеспечить другим доменам возможность взаимодействия с нашим доменом <span style="font-style:italic;">bindadm_t</span>. Реализуем эту часть политики, взяв за основу файл <span style="font-style:italic;">webadm.if</span>.<br /><br /><code>echo "## Bind administrator role" > bindadm.if;<br /><br />echo "########################################" >> bindadm.if;<br />echo "## " >> bindadm.if;<br />echo "## Change to the bind administrator role." >> bindadm.if;<br />echo "## " >> bindadm.if;<br />echo '## ' >> bindadm.if;<br />echo "## " >> bindadm.if;<br />echo "## Role allowed access." >> bindadm.if;<br />echo "## " >> bindadm.if;<br />echo "## " >> bindadm.if;<br />echo "## " >> bindadm.if;<br />echo "#" >> bindadm.if;<br />echo "interface(\`bindadm_role_change',\`" >> bindadm.if;<br />echo " gen_require(\`" >> bindadm.if;<br />echo " role bindadm_r;" >> bindadm.if;<br />echo " ')" >> bindadm.if;<br />echo " allow \$1 bindadm_r;" >> bindadm.if;<br />echo "')" >> bindadm.if;</code><br /><br />Позже общая политика администратора Bind (Bind Administrator Shared policy) будет использоваться в нашем основном специально созданном пользовательском домене SELinux.<br /><br />Следующим шагом будет создание специализированного пользовательского домена SELinux для обслуживания Bind, разрешающего данному домену осуществлять переход к роли <span style="font-style:italic;">bindadm_r</span> вызовом интерфейса <span style="font-style:italic;">bindadm_role_change</span>. Создаваемый домен SELinux будет основан на пользовательском домене <span style="font-style:italic;">staff_t</span>, описание политики смотрим в файле <a href="http://oss.tresys.com/projects/refpolicy/browser/trunk/policy/modules/roles/staff.te">staff.te</a><br /><br /><code>echo "policy_module(bindguy, 0.0.1)" > bindguy.te;<br />echo "role bindguy_r;" >> bindguy.te;<br />echo "userdom_unpriv_user_template(bindguy)" >> bindguy.te;<br />echo "sudo_role_template(bindguy, bindguy_r, bindguy_t)" >> bindguy.te;<br />echo "ssh_role_template(bindguy, bindguy_r, bindguy_t)" >> bindguy.te;<br />echo "kernel_read_ring_buffer(bindguy_t)" >> bindguy.te;<br />echo "kernel_getattr_core_if(bindguy_t)" >> bindguy.te;<br />echo "kernel_getattr_message_if(bindguy_t)" >> bindguy.te;<br />echo "kernel_read_software_raid_state(bindguy_t)" >> bindguy.te;<br />echo "auth_domtrans_pam_console(bindguy_t)" >> bindguy.te;<br />echo "libs_manage_shared_libs(bindguy_t)" >> bindguy.te;<br />echo "seutil_run_newrole(bindguy_t, bindguy_r)" >> bindguy.te;<br />echo "netutils_run_ping(bindguy_t, bindguy_r)" >> bindguy.te;<br />echo "domain_read_all_domains_state(bindguy_t)" >> bindguy.te;<br />echo "domain_getattr_all_domains(bindguy_t)" >> bindguy.te;<br />echo "domain_obj_id_change_exemption(bindguy_t)" >> bindguy.te;<br />echo "files_read_kernel_modules(bindguy_t)" >> bindguy.te;<br />echo "kernel_read_fs_sysctls(bindguy_t)" >> bindguy.te;<br />echo "modutils_read_module_config(bindguy_t)" >> bindguy.te;<br />echo "modutils_read_module_deps(bindguy_t)" >> bindguy.te;<br />echo "miscfiles_read_hwdata(bindguy_t)" >> bindguy.te;<br />echo "term_use_unallocated_ttys(bindguy_t)" >> bindguy.te;</code><br /><br />Чтобы разрешенить домену <span style="font-style:italic;">bindguy_t</span> осуществлять переход в ограниченное окружение SELinux <span style="font-style:italic;">bindadm_t</span>, добавим вызов интерфейса <span style="font-style:italic;">bindadm_role_change</span>, определенного в нашем интерфейсном файле <span style="font-style:italic;">bindadm.if</span>:<br /><br /><code>echo "bindadm_role_change(bindguy_r)" >> bindguy.te;</code><br /><br />Можно также автоматически создать сопоставление пользователя SELinux с именем <span style="font-style:italic;">bindguy_u</span> ролям <span style="font-style:italic;">bindguy_r</span>, <span style="font-style:italic;">bindadm_r</span> и <span style="font-style:italic;">system_r</span>. Роль <span style="font-style:italic;">system_r</span> включается, чтобы <span style="font-style:italic;">bindadm_t</span> мог останавить, запустить и перезапустить системную службу bind.<br /><br /><code>echo "gen_user(bindguy_u, user, bindguy_r system_r bindadm_r, s0, s0 - mls_systemhigh, mcs_allcats)" >> bindguy.te;</code><br /><br />Чтобы программы входа знали, что <span style="font-style:italic;">bindguy</span> допустимый пользователь, добавим контексты по умолчанию для этого пользователя, взяв за основу контексты по умолчанию пользователя <span style="font-style:italic;">staff_u</span>:<br /><br /><code>cp /etc/selinux/targeted/contexts/users/staff_u /etc/selinux/targeted/contexts/users/bindguy_u<br />sed -i 's/staff/bindguy/g' /etc/selinux/targeted/contexts/users/bindguy_u</code><br /><br />Теперь можно собрать и установить обе политики <span style="font-style:italic;">bindguy</span> и <span style="font-style:italic;">bindadm</span>:<br /><br /><code>make -f /usr/share/selinux/devel/Makefile<br />sudo semodule -i bindguy.pp bindadm.pp</code><br /><br />Далее командой <code>useradd</code>, опцией <code>-Z</code> и параметром <span style="font-style:italic;">bindguy_u</span> можно создать нового пользователя Linux:<br /><br /><code>sudo useradd -Z bindguy_u bindguy</code><br /><br />Для того, чтобы разрешить пользователю <span style="font-style:italic;">bindguy</span> использовать команду <code>sudo</code> для автоматического перехода к Linux пользователю <span style="font-style:italic;">root</span> и SELinux домену <span style="font-style:italic;">bindadm_t</span>, добавим в <code>/etc/sudoers</code>:<br /><br /><code>echo "bindguy ALL=(ALL) ROLE=bindadm_r TYPE=bindadm_t ALL" >> /etc/sudoers;</code><br /><br />При входе пользователя <span style="font-style:italic;">bindguy</span> в систему он оказывается в пользовательском домене <span style="font-style:italic;">bindguy_t</span>, основанном на домене <span style="font-style:italic;">staff_t</span>. Домен <span style="font-style:italic;">bindguy_t</span> может осуществлять переход в домен <span style="font-style:italic;">bindadm_t</span>, используемый с правами <span style="font-style:italic;">root</span> и позволяющий управлять службой Bind.<br /><br />Например, выполнив следующую команду, пользователь <span style="font-style:italic;">bindguy</span> сможет перезапустить службу bind:<br /><br /><code>sudo service named restart</code><br /><br />Также пользователю <span style="font-style:italic;">bindguy</span> разрешается редактировать различные конфигурационные и файлы информационного наполнения Bind. При этом, например, пользователь <span style="font-style:italic;">bindguy</span> не имеет прав изменить пароль пользователя <span style="font-style:italic;">root</span>.<br /><br /><span style="font-style:italic;">Примечание: Если вы нашли какие-то ошибки в этом упражнении или у вас есть какие-то вопросы или комментарии, пожалуйста свяжитесь с автором. Спасибо!</span><br /><br /><span style="font-style:italic;">Справка: man bind, man semodule, man sudo, man useradd</span>zhttp://www.blogger.com/profile/18005095334754970946noreply@blogger.com0tag:blogger.com,1999:blog-12119233.post-59086053073109227222009-07-07T10:35:00.005+04:002009-07-14T18:48:30.134+04:00SELinux Lockdown, 5: SELinux RBAC<span style="font-style:italic;">оригинал - <a href="http://selinux-mac.blogspot.com/2009/06/selinux-lockdown-part-five-selinux-rbac.html">SELinux Lockdown Part Five: SELinux RBAC</a><br /><br />Продолжаю выкладывать перевод цикла статей по использованию SELinux. Оригинал на английском языке опубликован в <a href="http://selinux-mac.blogspot.com/">блоге Доминика Грифта</a> (Dominick Grift).</span><br /><br />В <a href="http://sapunidze.blogspot.com/2009/06/selinux-1-selinux.html">первой главе</a> этой серии рассказывалось, что пользователи SELinux сопоставляются пользовательским доменам и компонентам мультикатегорийной безопасности (Multi Category Security - MCS). Эти сопоставления могут настраиваться запуском команды <code>semanage</code> с опцией <code>user</code>. Также сопоставления пользователя SELinux могут автоматически настраиваться вызовом интерфейса <span style="font-style:italic;">gen_user()</span> в файле с исходным текстом модуля Type Enforcement (Type Enforcement Source Module) для вашего домена пользователя.<br /><br />SELinux RBAC используется для обеспечения возможности назначения нескольких ограниченных окружений SELinux одному SELinux пользователю.<br /><br />В SELinux роли пользователя (User Roles) - это домены пользователя или пользовательские домены (User Domains). Когда упоминаются роли часто имеется в виду дополнительный (secondary) пользовательский домен пользователя SELinux. Часто роли, предназначенные для использования в качестве дополнительных доменов пользователя, отличаются от основных (primary) доменов. Это объясняется тем, что пользователи Linux фактически не используют для входа в систему роли, созданные как дополнительные домены пользователя, .<br /><br />Вместо этого пользователи Linux, используя команду <code>sudo</code> или комбинацию команд <code>su</code> и <code>newrole</code>, осуществляют переключение домена или доменный переход (Domain Transition) к их дополнительной роли.<br /><br />Имейте в виду, что некоторые роли разрабатывались как основные домены пользователей, тогда как другие поддерживают только функциональность дополнительного домена пользователя. Первичные пользовательские домены позволяют пользователю войти в систему, второстепенные домены пользователей могут быть использованы только с командами <code>sudo</code> и <code>su</code> вместе с <code>newrole</code>.<br /><br /><span style="font-weight:bold;">Роль Sysadm</span><br /><span style="font-style:italic;">Пример роли, предназначенной для использования в качестве основного домена пользователя</span><br /><br />SELinux пользователь <span style="font-style:italic;">sysadm_u</span> сопоставлен роли <span style="font-style:italic;">sysadm_r</span>. Это сопоставление можно увидеть, выполнив команду:<br /><br /><code>sudo semanage user -l | grep sysadm_u</code><br /><br />По умолчанию пользователи Linux, сопоставленные пользователю SELinux <span style="font-style:italic;">sysadm_u</span>, работают с ролью <span style="font-style:italic;">sysadm_r</span>. В этом случае <span style="font-style:italic;">sysadm_r</span> - это основной домен пользователя.<br /><br />SELinux пользователь <span style="font-style:italic;">staff_u</span> также сопоставлен роли <span style="font-style:italic;">sysadm_r</span>. Основным пользовательским доменом пользователя SELinux <span style="font-style:italic;">staff_u</span> является (роль) <span style="font-style:italic;">staff_r</span>. Контексты по умолчанию, определенные в <code>/etc/selinux/targeted/contexts/users/staff_u</code>, определяют с какими пользовательскими доменами пользователи будут подключаться по умолчанию и с какими пользовательскими доменами пользователи могут войти, указав домен пользователя при входе.<br /><br />По умолчанию SELinux пользователь <span style="font-style:italic;">staff_u</span> входит в систему в домен пользователя <span style="font-style:italic;">staff_t</span>. Роль <span style="font-style:italic;">sysadm_r</span>, предназначенная для использования в качестве основного домена пользователя, может быть использована при входе, например, следующим образом:<br /><br /><code>ssh joe/sysadm_r@localhost.localdomain.tld</code><br /><br />Также роль <span style="font-style:italic;">sysadm_r</span> может быть использована при переходе домена выполнением команд <code>sudo</code> и <code>su</code> вместе с <code>newrole</code>, как это предусмотрено для дополнительных доменов пользователей.<br /><br />Пользовательский домен <span style="font-style:italic;">sysadm_t</span> является окружением по умолчанию для SELinux пользователя <span style="font-style:italic;">sysadm_u</span> и предназначен для использования в качестве дополнительного окружения для SELinux пользователя <span style="font-style:italic;">staff_u</span>, хотя даже SElinux пользователь <span style="font-style:italic;">staff_u</span> может настроить подключаемый модуль аутентификации (Pluggable Authentication Module) <span style="font-style:italic;">pam_selinux</span> для использования <span style="font-style:italic;">sysadm_t</span> в качестве его основного домена пользователя.<br /><br /><span style="font-weight:bold;">Роль Webadm</span><br /><span style="font-style:italic;">Пример роли, предназначенной для использования в качестве дополнительного домена</span><br /><br />В отличии от роли <span style="font-style:italic;">sysadm_r</span>, пользовательский домен <span style="font-style:italic;">webadm_t</span> не может быть использован для непосредственного входа в систему. Вместо этого его необходимо использовать из другого домена пользователя через команды <code>sudo</code> или <code>su</code> вместе с <code>newrole</code>. Пользовательский домен <span style="font-style:italic;">webadm_t</span> не имеет разрешений, необходимых для запуск полноценного окружения пользователя.<br /><br />Для использования роли <span style="font-style:italic;">webadm_r</span>, её следует сопоставить, например, SELinux пользователю <span style="font-style:italic;">staff_u</span>:<br /><br /><code>sudo semanage user -m -L s0 -r s0-s0:c0-c1023 -R "staff_r system_r webadm_r" -P user staff_u</code><br /><br />Пожалуйста имейте в виду, что модификация существующих SELinux пользователей не поощряется. Предпочтительно оставлять предустановленных по умолчанию SELinux пользователей в их неизменном виде. Вместо этого добавляйте новых созданных и настроенных под ваши потребности SELinux пользователей:<br /><br /><code>sudo semanage user -a -L s0 -r s0-s0:c0-c1023 -R "staff_r system_r webadm_r" -P user webadm_u<br />cp /etc/selinux/targeted/contexts/users/staff_u /etc/selinux/targeted/contexts/users/webadm_u</code><br /><br />В этом примере роль <span style="font-style:italic;">webadm_r</span> может быть использована только как дополнительный пользовательский домен по двум причинам. Во-первых, пользовательский домен <span style="font-style:italic;">webadm_t</span> не имеет достаточных полномочий для поддержки полноценного окружения входа в систему. Во-вторых, для нашего пользователя <span style="font-style:italic;">webadm_u</span> за основу файла контекста по умолчанию в <code>/etc/selinux/targeted/contexts/users</code> мы взяли файл контекста по умолчанию пользователя <span style="font-style:italic;">staff_u</span>. В этом файле пользовательский домен <span style="font-style:italic;">webadm_t</span> не является допустимым контекстом, используемым для входа в систему.<br /><br /><span style="font-weight:bold;">Использование ролей для ограничения пользователя Root</span><br /><br />Управление доступом на основе ролей (Role Based Access Control) может использоваться для создания разных доменов пользователей с разными правами и назначения этих ролей пользователям SELinux. Хотя RBAC может использоваться как для непривилегированных так и для привилегированных пользователей, чаще его используют для ограничения привилегированного пользователя <span style="font-style:italic;">root</span>.<br /><br />Например, SElinux пользователь <span style="font-style:italic;">webadm_u</span>, созданный выше, может быть использован для ограничения Linux пользователя <span style="font-style:italic;">root</span> до возможности только управлять окружением Apache. Домен пользователя <span style="font-style:italic;">staff_t</span> - непривилегированный. Это означает, что при работе пользователя <span style="font-style:italic;">root</span> в пользовательском домене <span style="font-style:italic;">staff_t</span> ему не доступны все полномочия <span style="font-style:italic;">root</span>. Пользовательский домен <span style="font-style:italic;">webadm_t</span> - ограниченно привилегированный. При работе пользователя <span style="font-style:italic;">root</span> в пользовательском домене <span style="font-style:italic;">webadm_t</span> ему доступны некоторые ресурсы <span style="font-style:italic;">root</span>, доступ к которым разрешен ограниченным окружением <span style="font-style:italic;">webadm_t</span>.<br /><br />Например, некоторый пользователь сопоставлен SELinux пользователю <span style="font-style:italic;">webadm_u</span>. Ему также разрешены все полномочия пользователя <span style="font-style:italic;">root</span> в конфигурационном файле <code>/etc/sudoers</code>. При входе этого пользователя в систему по умолчанию ему будет определен пользовательский домен <span style="font-style:italic;">staff_t</span>. Если он выполнит команду <code>sudo</code> как <span style="font-style:italic;">staff_t</span>, то ему, например, не будет разрешено перезапустить службу Apache.<br /><br />Если он до перезапуска службы, используя команду <code>sudo</code>, совершит переход в домен <span style="font-style:italic;">webadm_t</span>, то у него всё получится:<br /><br /><code>sudo -r webadm_r -t webadm_t service httpd restart</code><br /><br />Если же он попытается, используя команду <code>sudo</code>, изменить пароль пользователя <span style="font-style:italic;">root</span>, то он получит отказ, потому что ни <span style="font-style:italic;">staff_t</span>, ни <span style="font-style:italic;">webam_t</span> не имеют таких привилегий.<br /><br />Это мощная возможность, означающая, что теперь можно делегировать ограниченные явно заданные привилегии без необходимости раздавать пароль пользователя <span style="font-style:italic;">root</span>.<br />(<span style="font-style:italic;">прим. перев.:</span> в оригинале у автора написано - It means that it is not possible ("<span style="font-style:italic;">не возможно</span>") to delegate limited specified root privileges without having to share roots password - считаю, что тут явно опечатка, комментарий оставлю до получения ответа автора)<br /><br />Далее рассказывается о некоторых предустановленных ролях.<br /><br /><span style="font-weight:bold;">Роль guest_r</span><br />Пользовательский домен, используемый только в качестве основного. Описание пользователя SELinux <span style="font-style:italic;">guest_u</span> приводится в первой части.<br /><br /><span style="font-weight:bold;">Роль xguest_r</span><br />Пользовательский домен, используемый только в качестве основного. Описание пользователя SELinux <span style="font-style:italic;">xguest_u</span> приводится в первой части.<br /><br /><span style="font-weight:bold;">Роль user_r</span><br />Пользовательский домен, используемый только в качестве основного. Описание пользователя SELinux <span style="font-style:italic;">user_u</span> приводится в первой части.<br /><br /><span style="font-weight:bold;">Роль staff_r</span><br />Пользовательский домен, используемый только в качестве основного. Описание пользователя SELinux <span style="font-style:italic;">staff_u</span> приводится в первой части.<br /><br /><span style="font-weight:bold;">Роль sysadm_r</span><br />Этот домен пользователя может быть использован и как основной, и как дополнительный домен. Пользователь SELinux <span style="font-style:italic;">sysadm_u</span> использует <span style="font-style:italic;">sysadm_r</span> в качестве роли по умолчанию, а SELinux пользователь <span style="font-style:italic;">staff_u</span> использует <span style="font-style:italic;">sysadm_r</span> как дополнительную роль. Роль <span style="font-style:italic;">sysadm_r</span> обладает достаточными правами для обеспечения входа пользователей в систему. Пользователь <span style="font-style:italic;">sysadm_u</span> описывается в первой части.<br /><br /><span style="font-weight:bold;">Роль system_r</span><br />Эта роль используется системой в качестве основной. Пользователи могут использовать роль <span style="font-style:italic;">system_r</span> как дополнительную для перезапуска системных служб в их надлежащем контексте.<br /><br /><span style="font-weight:bold;">Роль unconfined_r</span><br />Этот пользовательский домен может быть использован и как основной, и как дополнительный домен. Пользователь <span style="font-style:italic;">unconfined_u</span> описывается в первой части.<br /><br /><span style="font-weight:bold;">Роль webadm_r</span><br />Этот пользовательский домен может быть использован только в качестве дополнительного домена. Эта роль не имеет доступа к домашним директориям пользователей и многие другие привилегии, необходимые для обеспечения входа пользователей в систему. Данный домен пользователя обладает необходимыми правами для управления окружением Apache.<br /><br /><span style="font-weight:bold;">Роль logadm_r</span><br />Этот пользовательский домен может быть использован только в качестве дополнительного домена. Эта роль не имеет доступа к домашним директориям пользователей и многие другие привилегии, необходимые для обеспечения входа пользователей в систему. Данный домен пользователя обладает необходимыми правами для управления окружением регистрации событий (logging).<br /><br /><span style="font-style:italic;">Справка: man newrole, man su, man sudo, man semanage</span>zhttp://www.blogger.com/profile/18005095334754970946noreply@blogger.com0tag:blogger.com,1999:blog-12119233.post-86267332873180103892009-07-06T12:55:00.008+04:002009-11-05T22:31:55.395+03:00SELinux Lockdown, 4: Создание домена пользователя SELinux<span style="font-style:italic;">оригинал - <a href="http://selinux-mac.blogspot.com/2009/06/selinux-lockdown-part-four-customized.html">SELinux Lockdown Part Four: Customized SELinux User Domain </a><br /><br />Продолжаю выкладывать перевод цикла статей по использованию SELinux. Оригинал на английском языке опубликован в <a href="http://selinux-mac.blogspot.com/">блоге Доминика Грифта</a> (Dominick Grift).<br /></span><br />В <a href="http://sapunidze.blogspot.com/2009/06/selinux-1-selinux.html">первой главе</a> этой серии рассматривались пользователи SELinux и объяснялись некоторые свойства предопределенных пользователей SELinux. В большинстве сценариев должно хватать возможностей данных профилей. В случае если ни один из предопределенных SELinux пользователей не подходит профилю пользователя Linux можно реализовать новую ограниченную среду под свои определенные требования.<br /><br />Самый простой способ - взять за основу для нового пользовательского домена SELinux (SELinux User Domain) существующий, а не создавать новый с чистого листа. В этой статье будет показано как создать свой пользовательский домен SELinux на основе ограниченного профиля <span style="font-style:italic;">user_t</span>. Также рассматриваются варианты сопоставления данного пользовательского домена с заданным пользователем SELinux, чтобы данному окружению сопоставить пользователей Linux, как это было описано в главе SELinux Users.<br /><br />Требуется: добавить ограниченного пользователя в систему с требованиями, которые почти идентичны пользователю SELinux <span style="font-style:italic;">user_u</span>. Особенность заключается в том, что этот пользователь должен иметь возможность просматривать содержимое точки монтирования <code>/var</code>.<br /><br />Чтобы совершить задуманное необходимо создать новое окружение пользователя SELinux на основе пользовательского домена <span style="font-style:italic;">user_t</span> и установить его в модуль политики SELinux (SELinux Policy Module). Мы можем расширить данный модуль политики, позволив просматривать содержимое директории <code>/var</code>, и мы можем создать сопоставление нового пользовательского домена и нового пользователя SELinux. Чтобы вручную сопоставить новый домен и нового пользователя SELinux, вместо добавления сопоставления непосредственно в сам модуль политики, мы можем использовать команду <code>semanage</code>.<br /><br />Нам потребуется доступ к исходным текстам политики SELinux (SELinux Source Policy) для использования их в качестве подсказки. В этом примере будут использоваться исходные тексты политики SELinux, свободно доступные по адресу <a href="http://oss.tresys.com/projects/refpolicy/browser/trunk/">http://oss.tresys.com/projects/refpolicy/browser/trunk/</a>. Хотя в нашем случае использование upstream-версии эталонной политики от Tresys (Tresys Reference Policy) будет достаточным, следует отметить, что в большинстве случаев нужно использовать специфичные для своего дистрибутива исходные тексты политики SELinux.<br /><br />Сначала посмотрим исходный текст пользовательского домена <span style="font-style:italic;">user_t</span> в тексте политики от Tresys: <a href="http://oss.tresys.com/projects/refpolicy/browser/trunk/policy/modules/roles/unprivuser.te">unprivuser.te</a><br /><br />Наш новый пользовательский домен (User Domain) с названием <span style="font-style:italic;">myuser_t</span> будет основан на модуле политики <span style="font-style:italic;">user_t</span>. Для соответствия специфики политики дистрибутива Fedora нужно внести несколько незначительных изменений:<br /><br /><code>mkdir ~/myuser; cd ~/myuser;<br />echo "policy_module(myuser, 0.0.1)" > myuser.te;<br />echo "role myuser_r;" >> myuser.te;<br />echo "userdom_unpriv_user_template(myuser)" >> myuser.te;</code><br /><br />Приведенной выше политикой создается новый ограниченный пользовательский домен SELinux, почти идентичный <span style="font-style:italic;">user_t</span>, сопоставленный по умолчанию пользователю SELinux <span style="font-style:italic;">user_u</span>.<br /><br />Добавим политику, разрешающую просматривать содержимое точки монтирования <code>/var</code>:<br /><br /><code>echo "files_list_var(myuser_t)" >> myuser.te;</code><br /><br />Сопоставим программно наш пользовательский домен SELinux <span style="font-style:italic;">myuser_t</span> новому пользователю SELinux с названием <span style="font-style:italic;">myuser_u</span>:<br /><br /><code>echo "gen_user(myuser_u, user, myuser_r, s0, s0)" >> myuser.te;</code><br /><br />Заметим, что политика выше аналогична выполнению вручную следующей команды <code>semanage</code>:<br /><br /><code>sudo semanage user -a -L s0 -r s0-s0 -R myuser_r -P user myuser_u</code><br /><br />Политика для созданного пользовательского домена готова. Теперь необходимо из исходной политики собрать бинарный модуль политики SELinux:<br /><br /><code>make -f /usr/share/selinux/devel/Makefile</code><br /><br />В качестве альтернативы можно использовать следующие команды, чтобы собрать бинарный модуль политики:<br /><br /><code>checkmodule -M -m -o myuser.mod myuser.te<br />semodule_package -o myuser.pp -m myuser.mod</code><br /><br />Установите вновь созданный бинарный модуль политики:<br /><br /><code>sudo semodule -i myuser.pp</code><br /><br />В завершении следует определить для нашего нового SElinux пользователя контекст безопасности SELinux (SELinux Security Contexts) по умолчанию, чтобы программы входа знали какой домен пользователя использовать:<br /><br /><code>cp /etc/selinux/targeted/contexts/users/user_u /etc/selinux/targeted/contexts/users/myuser_u<br />sed -i 's/user/myuser/g' /etc/selinux/targeted/contexts/users/myuser_u</code><br /><br />Теперь мы можем просто добавить нового Linux пользователя и сопоставить его нашему свежему SELinux пользователю <span style="font-style:italic;">myuser_u</span> командой <code>useradd</code> и опцией <code>-Z</code> или командой <code>semanage</code> и опцией <code>-m</code>.<br /><br /><span style="font-style:italic;">Вывод:</span><br />Вместо редактирования существующих по умолчанию создавайте новых SELinux пользователей и домены пользователей SELinux.<br /><br /><span style="font-style:italic;">Справка: man semodule, man semanage, man checkmodule, man semodule_package</span>zhttp://www.blogger.com/profile/18005095334754970946noreply@blogger.com0tag:blogger.com,1999:blog-12119233.post-8725027527428908402009-06-29T10:15:00.007+04:002009-07-14T18:57:44.750+04:00SELinux Lockdown, 3: Permissive Mode Vs. Permissive Domains<span style="font-style:italic;">оригинал - <a href="http://selinux-mac.blogspot.com/2009/06/selinux-lockdown-part-three-permissive.html">SELinux Lockdown Part Three: Permissive Mode Vs. Permissive Domains</a></span><br /><br /><span style="font-style:italic;">Продолжаю выкладывать перевод цикла статей по использованию SELinux. Оригинал на английском языке опубликован в <a href="http://selinux-mac.blogspot.com/">блоге Доминика Грифта</a> (Dominick Grift).</span><br /><br />Разрешающий режим SELinux (SELinux Permissive Mode) это состояние, в котором SELinux разрешает нарушения политики SELinux на уровне всей системы. В этом состоянии нарушения политики только регистрируются. Разрешающий режим может быть использован для устранения неполадок и тестирования проблем, связанных с SELinux. Трудности с разрешающим состоянием на уровне всей системы связаны с разумной необходимостью перевода системы в безопасную среду и вывода её из эксплуатации. В некоторых редких случаях можно с целью минимизации рисков, вызванных разрешающим режимом, рассмотреть подключаемый модуль аутентификации (Pluggable Authentication Module) SEPermit, но часто данной меры недостаточно, потому что он только запрещает вход Linux пользователям. Системные службы остаются уязвимы к нарушениям политик.<br /><br />Недавно с целью устранения данных проблем были представлены разрешающие домены SELinux (SELinux Permissive Domains). С разрешающими доменами можно перевести отдельный домен безопасности SELinux в разрешающее состояние. Используя разрешающие домены можно оставить систему в эксплуатации и, например, запретить доступ к данному домену при помощи IPTables, TCP Wrappers, PAM или используя другие методы.<br /><br />Для добавления и удаления разрешающих доменов SELinux используется команда <code>semanage</code>. Вам не нужно знать в каком домене безопасности работает процесс, чтобы сделать этот домен безопасности разрешающим доменом. Команда <code>ps</code> с опцией <code>-Z</code> поможет узнать эту информацию.<br /><br />Пример того как сделать разрешающим домен безопасности с названием <span style="font-style:italic;">httpd_t</span> для Apache:<br /><br /><code>sudo semanage permissive -a httpd_t</code><br /><br />Пример того как сделать домен безопасности с названием <span style="font-style:italic;">httpd_t</span> для Apache снова принудительным:<br /><br /><code>sudo semanage permissive -d httpd_t</code><br /><br />Пример того как используя команду <code>semanage</code> просмотреть разрешающие домены SELinux:<br /><br /><code>sudo semanage permissive -l</code><br /><br /><span style="font-style:italic;">Вывод:</span><br />Отдавайте предпочтение разрешающим доменам SELinux, а не разрешающему режиму.<br />Добавляйте, просматривайте и удаляйте разрешающие домены с использованием команды <code>semanage</code>.<br /><br /><span style="font-style:italic;">Справка: man semanage, man tcpd, man pam_sepermit, man iptables</span>zhttp://www.blogger.com/profile/18005095334754970946noreply@blogger.com0tag:blogger.com,1999:blog-12119233.post-69842125414450397762009-06-27T00:20:00.004+04:002009-07-14T19:00:29.036+04:00SELinux Lockdown, 2: PAM SEPermit<span style="font-style:italic;">оригинал - <a href="http://selinux-mac.blogspot.com/2009/06/selinux-lockdown-part-two-pam-sepermit.html">SELinux Lockdown Part Two: PAM SEPermit</a><br /><br />Продолжаю выкладывать перевод цикла статей по использованию SELinux. Оригинал на английском языке опубликован в <a href="http://selinux-mac.blogspot.com/">блоге Доминика Грифта</a> (Dominick Grift). </span><br /><br />В <a href="http://sapunidze.blogspot.com/2009/06/selinux-1-selinux.html">предыдущей статье</a> я обсуждал преимущества сопоставления Linux-пользователей ограниченным SELinux-пользователям. Возможно Вам когда-нибудь понадобится устранить проблемы в системе или решить какие-то вопросы, которые требуют работы SELinux в разрешающем режиме (Permissive Mode).<br /><br />Разрешающий режим SELinux это состояние, в котором ограничения SELinux не осуществляются. Однако, SELinux регистрирует нарушения политики SELinux, которые бы в нормальном состоянии предотвращались. Воспринимайте разрешающий режим как систему обнаружения вторжений (Intrusion Detection System), тогда как принудительный режим (Enforcing Mode) можно рассматривать как систему предотвращения вторжений (Intrusion Prevention System).<br /><br />В большинстве случаев система на время работы в разрешающем режиме будет выведена из эксплуатации. В некоторых ситуациях это может быть не так просто сделать.<br /><br />Существуют способы минимизировать риски, связанные с разрешающим режимом. Предпочтительным способом является недавно представленная возможность с названием разрешающие домены SELinux (SELinux Permissive Domains). Разрешающие домены будут обсуждаться позже.<br /><br />Подключаемый модуль аутентификации (Pluggable Authentication Module) с названием SEPermit может также помочь минимизировать незащищенность разрешающего режима.<br /><br />PAM SEPermit может заблокировать вход Linux-пользователю, когда система работает в разрешающем режиме. Рассмотрим систему, в которой Linux-пользователи ограничены SELinux. Разрешающий режим фактически снимает эти ограничения. Linux-пользователи могут воспользоваться этими преимуществами и получить доступ к ресурсам, которые в ином случае были бы для них не доступны.<br /><br />PAM SEPermit включен по умолчанию в Fedora 11 в различных файлах в <code>/etc/pam.d/</code>, например, в <code>/etc/pam.d/sshd</code>. Чтобы заблокировать возможность входа Linux-пользователя в разрешающем режиме достаточно в конфигурацию SEPermit, расположенную в <code>/etc/security/sepermit.conf</code>, добавить Linux- или SELinux- пользователей.<br /><br />Например, при добавлении <span style="font-style:italic;">%user_u</span> в файл <code>sepermit.conf</code> в <code>/etc/security</code>, блокируется вход SELinux-пользователю <span style="font-style:italic;">user_u</span>, при работе системы в разрешающем режиме.<br /><br />Имейте в виду, что разрешающий режим работы SELinux также снимает ограничения SELinux и для не пользовательских процессов, таких как системные службы.<br /><br />В большинстве случаев рекомендуется перенести вашу систему из демилитаризованной зоны на время работ по устранению проблем в разрешающем режиме. Хотя PAM SEPermit может быть полезен в некоторых случаях.<br /><br /><span style="font-weight:bold;">Побробуйте!</span><br /><br /><span style="font-style:italic;">Вывод:</span><br />Отдавайте предпочтение разрешающим доменам (Permissive Domains) SELinux, а не разрешающему режиму работы SELinux (Permissive Mode).<br />Если разрешающий режим требуется в промышленной среде на системе с Linux-пользователями, ограниченными с использованием SELinux, поощряется блокировка входа Linux-пользователей с использованием подключаемого модуля аутентификации SEPermit.<br />Учитывайте, что это окажет влияние только на Linux-пользователей, системные службы не будут защищаться SELinux в разрешающем режиме.<br /><br /><span style="font-style:italic;">Справка: man pam_sepermit, man setenforce, man getenforce</span>zhttp://www.blogger.com/profile/18005095334754970946noreply@blogger.com0tag:blogger.com,1999:blog-12119233.post-79575218832296603182009-06-26T18:36:00.010+04:002009-07-14T19:11:02.570+04:00SELinux Lockdown, 1: пользователи SELinux<span style="font-style:italic;">оригинал - <a href="http://selinux-mac.blogspot.com/2009/06/selinux-lockdown-part-one-confined.html">SELinux Lockdown Part One: SELinux Users</a><br /><br />Начинаю выкладывать перевод цикла статей по использованию SELinux. Оригинал на английском языке опубликован в <a href="http://selinux-mac.blogspot.com/">блоге Доминика Грифта</a> (Dominick Grift). </span><br /><br />Это первая статья в серии о затягивании конфигурации SELinux для Fedora 11.<br /><br />В Fedora 11 Linux-пользователи по умолчанию сопоставляются SELinux-пользователю <span style="font-style:italic;">unconfined_u</span>. SELinux-пользователь <span style="font-style:italic;">unconfined_u</span>, в свою очередь, сопоставлен ролям <span style="font-style:italic;">unconfined_r</span> и <span style="font-style:italic;">system_r</span> и всем доступным категориям (compartments) Multi Category Security.<br /><br />Обе роли <span style="font-style:italic;">unconfined_r</span> и <span style="font-style:italic;">system_r</span> сопоставляются доменам безопасности SELinux. Домены безопасности SELinux - это определенные окружения безопасности для процессов в системе Linux.<br /><br />Неограниченный домен безопасности - <span style="font-style:italic;">unconfined_t</span> - зарезервированное окружение для процессов, которые в значительной степени освобождены от ограничений SELinux. Роль <span style="font-style:italic;">system_r</span> сопоставляется доменам безопасности для системных процессов.<br /><br />SELinux-пользователь <span style="font-style:italic;">unconfined_u</span> имеет доступ к роли <span style="font-style:italic;">system_r</span>, чтобы иметь возможность запускать системные процессы в своих доменах безопасности. SELinux-пользователь <span style="font-style:italic;">unconfined_u</span> работает в домене безопасности <span style="font-style:italic;">unconfined_t</span> через роль <span style="font-style:italic;">unconfined_r</span>, которой он сопоставлен.<br /><br />Команда <code>semanage</code> позволяет добавлять, изменять и удалять сопоставления между Linux- и SELinux-пользователями, так же как и другие настройки, касающиеся управления SELinux. В качестве альтернативы для изменения этих настроек можно использовать <code>system-config-selinux</code>, графический интерфейс к <code>semanage</code>.<br /><br />Чтобы с помощью команды <code>semanage</code> посмотреть какому SELinux-пользователю по умолчанию сопоставлены Linux-пользователи наберите:<br /><br /><code>sudo semanage login -l | grep default</code><br /><br />результат команды будет каким-то таким:<br /><br /><code>__default__ unconfined_u SystemLow-SystemHigh</code><br /><br />В примере выше Linux-пользователи по умолчанию сопоставлены SELinux-пользователю <span style="font-style:italic;">unconfined_u</span>.<br /><br />Чтобы изменить это и сопоставить Linux-пользователей по умолчанию ограниченному SELinux-пользователю с именем <span style="font-style:italic;">user_u</span> просто наберите:<br /><br /><code>sudo semanage login -m -s user_u "__default__"</code><br /><br />В результате все новые Linux-пользователи будут по умолчанию сопоставляться ограниченному SELinux-пользователю <span style="font-style:italic;">user_u</span>.<br /><br />Вы можете переопределить данное сопоставление при добавлении Linux-пользователей командой <code>useradd</code> используя опцию <code>-Z</code>. Эта опция определяет какому SELinux-пользователю должен быть сопоставлен Linux-пользователь.<br />Например наберите:<br /><br /><code>sudo useradd -Z guest_u joe</code><br /><br />В результате будет создан новый Linux-пользователь с именем <span style="font-style:italic;">joe</span>, который будет сопоставлен SELinux-пользователю <span style="font-style:italic;">guest_u</span>, вместо определенного по умолчанию SELinux-пользователя.<br /><br />Также для изменения сопоставления между Linux-пользователем и SELinux-пользователем может быть использована команда <code>usermod</code> с опцией <code>-Z</code>.<br /><br />Существует несколько предопределенных профилей SELinux-пользователей. Список данных профилей можно вывести командой semanage, наберите:<br /><br /><code>sudo semanage user -l</code><br /><br />Далее я рассмотрю некоторые свойства этих предопределенных SELinux-пользователей.<br /><br /><span style="font-weight: bold;">SELinux-пользователь guest_u:</span><br />Этот профиль используется для пользователей, которых необходимо усиленно контролировать. SELinux-пользователь <span style="font-style:italic;">guest_u</span> может только войти в систему используя OpenSSH. Гостевые пользователи не имеют доступа к сетевым ресурсам и программам с установленными битами <span style="font-style:italic;">setuid</span> и <span style="font-style:italic;">setgid</span>.<br /><br /><span style="font-weight: bold;">SELinux-пользователь xguest_u:</span><br />Данный профиль аналогичен <span style="font-style:italic;">guest_u</span> за исключением того, что <span style="font-style:italic;">xguest</span> пользователи могут входить в Xwindow и не могут входить используя OpenSSH. Другим исключением является то, что данный пользователь может получить доступ к HTTP порту, используя контролируемый SELinux экземпляр Mozilla Firefox.<br /><br /><span style="font-weight: bold;">SELinux-пользователь user_u:</span><br />SELinux-пользователь <span style="font-style:italic;">user_u</span> напоминает обычного непривилегированного ограниченного (confined) SELinux-пользователя. Такой пользователь может войти в систему используя Xwindow и OpenSSH, имеет доступ к сетевым ресурсам, но не может использовать программы с установленными битами <span style="font-style:italic;">setuid</span> и <span style="font-style:italic;">setgid</span>.<br /><br /><span style="font-weight: bold;">SELinux-пользователь staff_u:</span><br />Этот SELinux-пользователь идентичен <span style="font-style:italic;">user_u</span>, за исключением того, что <span style="font-style:italic;">staff_u</span> может использовать программы с флагами <span style="font-style:italic;">setuid</span> и <span style="font-style:italic;">setgid</span>. Кроме того пользователь <span style="font-style:italic;">staff_u</span> может также просмотреть информацию обо всех процессах в системе и имеет некоторые другие несущественные привилегии по сравнению с пользователем <span style="font-style:italic;">user_u</span>.<br /><br /><span style="font-weight: bold;">SELinux-пользователь sysadm_u:</span><br />Данный пользователь придуман, чтобы ограничить используя SELinux учетную запись <span style="font-style:italic;">root</span>, что обычно делать не рекомендуется. Он используется в Multi Level Security окружении, где нет пользователя <span style="font-style:italic;">unconfined_</span>u.<br /><br /><span style="font-weight: bold;">SELinux-пользователь unconfined_u:</span><br />SELinux-пользователь <span style="font-style:italic;">unconfined_u</span> это среда, в которой по умолчанию работают все Linux-пользователи в соответствии с целевой политикой Fedora (Fedora Targeted policy). Этот пользователь в значительной степени освобожден от ограничений, накладываемых SELinux. Исключением является механизм Memory Execution Protections (ограничение на исполнение определенных операций в памяти).<br /><br />Если Вы хотите повысить безопасность вашей системы, тогда не следует сопоставлять реальных Linux-пользователей, не пользователя <span style="font-style:italic;">root</span>, SELinux-пользователю <span style="font-style:italic;">unconfined_u</span>. Во многих сценариях существование неограниченных пользователей создает зияющую дыру в безопасности.<br /><br />Вход пользователя <span style="font-style:italic;">root</span> должен быть запрещен. <span style="font-style:italic;">root</span> должен иметь возможность войти с терминала только в случае крайней необходимости. В Fedora, Linux-пользователь <span style="font-style:italic;">root</span> сопоставлен <span style="font-style:italic;">unconfined_u</span>. Это означает, что <span style="font-style:italic;">root</span> практически не защищается SELinux.<br /><br />Чтобы повысить безопасность использования <span style="font-style:italic;">root</span> можно сопоставить пользователя root SELinux-пользователю <span style="font-style:italic;">sysadm_u</span>. Хотя это не сильно увеличивает безопасность по сравнению с <span style="font-style:italic;">unconfined_u</span> и <span style="font-style:italic;">root</span> будет иметь возможность обойти ограничения SELinux.<br /><br />Итог - вход от имени пользователя root должен быть запрещен, за исключением входа с терминала в крайних случаях.<br /><br /><span style="font-weight: bold;">SELinux-пользователь system_u:</span><br />Этот пользователь зарезервирован для нужд системы. Обычные Linux-пользователи не должы сопоставляться с SELinux-пользователем <span style="font-style:italic;">system_u</span>.<br /><br />Как определить SELinux-пользователя по умолчанию для новых Linux-пользователей объяснили, как переопределить сопоставление по умолчанию с использованием команды <code>useradd</code> и опции <code>-Z</code> тоже объяснили.<br /><br />Выше было рассказано о доступных предопределенных SELinux пользователях. Осталось показать как можно изменить сопоставление SELinux-пользователя Linux-пользователям.<br /><br />Вывести список всех сопоставлений между Linux- и SELinux- пользователями:<br /><br /><code>sudo semanage login -l</code><br /><br />Сопоставить Linux-пользователя SELinux-пользователю:<br /><br /><code>sudo semanage login -a (...)</code><br /><br />Изменить сопоставление межд Linux-пользователем и SELinux-пользователем:<br /><br /><code>sudo semanage -m (...)</code><br /><br />Удалить сопоставление между Linux-пользователм и SELinux-пользователем:<br /><br /><code>sudo semanage -d (...)</code><br /><br /><span style="font-style:italic;">Вывод:</span><br />Для повышения безопасности системы настройте SELinux, чтобы по умолчанию Linux-пользователи сопоставлялись ограниченным SELinux-пользователям.<br />Запретите вход пользователю root в систему с использованием OpenSSH и Xwindow. Разрешите пользователю root входить только в крайних случаях, используя терминал. Либо оставьте <span style="font-style:italic;">root</span> сопоставленным SELinux-пользователю <span style="font-style:italic;">unconfined_u</span> или сопоставьте его пользователю <span style="font-style:italic;">sysadm_u</span> (например, если вы решите деинсталлировать модуль SELinux unconfineduser).<br />Сопоставьте ваших Linux-пользователей наиболее подходящим ограниченным профилям SELinux-пользователей.<br />Используйте команду <code>useradd</code> и опцию <code>-Z</code>, чтобы добавлять Linux-пользователей, переопределяя сопоставление, определенное по умолчанию, передавая имя SELinux-пользователя в качестве аргумента.<br /><br /><span style="font-style: italic;" >Справка: man semanage, man useradd, man usermod</span>zhttp://www.blogger.com/profile/18005095334754970946noreply@blogger.com1tag:blogger.com,1999:blog-12119233.post-11201508120863467072009-06-23T14:48:00.006+04:002009-07-14T19:12:47.104+04:00rezlooks-pastelblue<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_0yMSfSBLLUA/SkC04uz3QlI/AAAAAAAAAAM/AzghDtBm1RQ/s1600-h/rezlooks-pastelblue.png"><img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 320px; height: 240px;" src="http://4.bp.blogspot.com/_0yMSfSBLLUA/SkC04uz3QlI/AAAAAAAAAAM/AzghDtBm1RQ/s320/rezlooks-pastelblue.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5350475244047385170" /></a><br />как-то <a href="http://sapunidze.blogspot.com/2009/06/blog-post.html">наметил</a> себе посмотреть gtk-тему.<br /><br />собственно я это сделал.<br /><br />взяв за основу gtk-тему <a href="http://www.gnome-look.org/content/show.php/Rezlooks-pastelgreen?content=40990">rezlooks-pastelgreen</a>, сотворил себе тему с созвучным названием rezlook-pastelblue.<br />как и следует из названия в теме основной тон с зеленного сменил на голубой.<br /><br /><a href="http://narod.ru/disk/10184658000/Rezlooks-pastelblue.tar.gz.html">скачать тему</a><br /><br />тему для metacity пока не совсем осилил, на снимке тема (слегка уже измененная) GiloucheIM<br /><br />update: за сутки файл с яндекса скачали 15 раз, для интереса опубликовал тему на <a href="http://gnome-look.org/content/show.php/rezlooks-pastelblue?content=107486">gnome-look.org</a>zhttp://www.blogger.com/profile/18005095334754970946noreply@blogger.com2tag:blogger.com,1999:blog-12119233.post-61977142653630713022009-06-15T16:11:00.004+04:002009-06-15T16:32:41.047+04:00про приватность...навеяло новой возможностью, предлагаемой в firefox 3.5 - <a href="http://support.mozilla.com/en-US/kb/Private+Browsing">Private Browsing</a> (а).<br /><br />почитал политику конфиденциальности относительно google chrome... и рядом... (б)<br /><br />что-то как-то не проникся я идеей сокрытия данных от сожителей по квартире (а) с одновременным выкладыванием своего "сетевого портрета" на гугле (б)... прямо как в помутнении у Ф. Дика<br /><br />решил вопрос для себя установкой отдельного браузера исключительно под сервисы гугла, которыми пользуюсь - почта, читатель и писатель.<br /><br />поддержал бы "отечественного производителя", но не удобен мне интерфейс яндекса (хотя почтовый ящик основной на нём) <br /><br />з.ы. к сожалению не имею технической возможности всегда пользоваться так называемыми "оффлайновыми" клиентами потому варианты с тем же тандербирдом отпадают.zhttp://www.blogger.com/profile/18005095334754970946noreply@blogger.com2tag:blogger.com,1999:blog-12119233.post-71763753125582522282009-06-15T16:06:00.005+04:002009-07-14T19:13:07.475+04:00план непутина1. <del>поковырять gtk-тему</del> см. <a href="http://sapunidze.blogspot.com/2009/06/rezlooks-pastelblue.html">результат</a><br />2. научить decibel читать cue-файлы<br />3. узнать почему он же не умеет читать файлы с '#' в имени<br /><br />з.ы. куда-нить надо было повесить... забуду.zhttp://www.blogger.com/profile/18005095334754970946noreply@blogger.com0tag:blogger.com,1999:blog-12119233.post-16613293499010916732009-06-09T09:39:00.004+04:002009-07-14T19:13:37.487+04:00How PulseAudio worksкак говорится лучше один раз <a href="http://rudd-o.com/en/linux-and-free-software/how-pulseaudio-works">увидеть</a>, чем много раз услышать... <br /><br />з.ы. согласно комментариям <a href="http://pulseaudio.org/wiki/AboutPulseAudio#Details">тут</a> это не есть полная архитектура системы... тем не менее... очень наглядно.zhttp://www.blogger.com/profile/18005095334754970946noreply@blogger.com0tag:blogger.com,1999:blog-12119233.post-15355025716344306032009-06-08T19:32:00.004+04:002009-07-14T19:14:11.923+04:00Decibel & Monkeysна сегодняшний день основным плеером в Linux у меня является <a href="http://decibel.silent-blade.org/">Decibel Audio Player</a>. плюсы, по которым я его выбирал - он играет музыку и делает это хорошо (по большому счету, больше ничего особенного он делать не умеет, да и не собирается - смотрим сайт проекта).<br />понятие "хорошо" для меня включает - проиграть музыку, показать кто поет, показать обложку (при необходимости поискать её в сети), рассказать об этом <a href="http://www.lastfm.ru/user/sapunidze">last.fm</a>.<br /><br />комбайны разнообразных коллекций в формате а-ля айТюнс - <a href="http://www.gnome.org/projects/rhythmbox/">rhythmbox</a>, <a href="http://amarok.kde.org/">amarok</a>, <a href="http://www.getsongbird.com/">songbird</a> меня не устраивают просто потому, что я не считаю, что это самый дружественный способ показать мою коллекцию музыки. в этом плане меня больше устраивает подход, реализованный в windows media player.<br />их основной недостаток - напрягает, когда плеер считает, что он лучше меня знает как организована моя коллекция, не даёт объяснить ему, что он всё таки не прав и главное считает своей главной задачей изменять мои файлы и создавать кучу служебных файлов там где это не нужно.<br />отдельно не нравится, что плеер, претендующий на роль помощника в навигации по музыкальному массиву, реально усложняет это делать. особенно когда музыки много, а плеер сваливает в кучу файлы с неразпознанными тегами. про магию с кодировками (linux vs unicode vs windows) не говорю. <br /><br />как-то пользовался <a href="http://code.google.com/p/quodlibet/">quodlibet</a> у него был один косяк со съёмным диском, обходимый, но сильно раздражающий...<br /><br />так или иначе я перешел на decibel. к чему я всё это настучал?<br /><br />столкнулся я тут недавно с неудобством - decibel делает вид, что не умеет проигрывать файлы формата <a href="http://www.monkeysaudio.com/">MonkeysAudio</a> (те, что с расширением APE).<br />именно делает, так как за проигрывание отвечает <a href="http://www.gstreamer.net/">gstreamer</a>, а он это делать умеет. метаданные файлов разбирает библиотека <a href="http://code.google.com/p/quodlibet/wiki/Mutagen">mutagen</a>, которая данный тип также понимает.<br />а посему открываем <a href="http://decibel.silent-blade.org/index.php?n=Main.Download">исходники</a>, далее:<br /><br />1. по аналогии, например, с файлом ../src/media/flac.py создаем файл ../src/media/monkeysaudio.py следующего содержания:<br /><pre>from mutagen.monkeysaudio import MonkeysAudio<br />from media.track.fileTrack import FileTrack<br /><br />def getTrack(file):<br /> """ Return a Track created from a MonkeysAudio APE file """<br /> track = FileTrack(file)<br /> monkeysAudioFile = MonkeysAudio(file)<br /> <br /> track.setLength(int(round(monkeysAudioFile.info.length)))<br /> <br /> try: track.setTitle(str(monkeysAudioFile['title'][0]))<br /> except: pass<br /><br /> #и далее по тексту .../flac.py<br /><br /> return track</pre><br /><br />2. открываем файл ../src/media/__init__.py и в нем:<br />- в конце 21 строки <code>from format import asf...</code> дописывем <code>..., monkeysaudio</code><br />- в конце 28 строки в словарь добавляем пару <code>'.ape': monkeysaudio</code>, строка должна выглядеть как-то так (одной строкой): <br /><code>mFormats = {'.flac': flac, '.m4a': mp4, '.mp3': mp3, '.mp4': mp4, '.mpc': mpc,'.ogg': ogg, '.wma': asf, '.ape': monkeysaudio}</code><br /><br />3. сохраняем, запускаем, слушаем.<br /><br />дополнительное неудобство - decibel не разбирает файлы формата <a href="http://ru.wikipedia.org/wiki/Cue_sheet">CUE Sheet</a>, что бывает неудобно в случаях когда в наличии flac- или ape-файл без тегов и cue-файлом вместо них. подумаю об этом завтра.zhttp://www.blogger.com/profile/18005095334754970946noreply@blogger.com3tag:blogger.com,1999:blog-12119233.post-20440308385176961102008-09-11T09:00:00.004+04:002008-09-11T10:05:18.328+04:00обновления fedora 8 и fedora 9 (уже!)собственно это <a href="https://www.redhat.com/archives/fedora-announce-list/2008-September/msg00007.html">случилось</a>.<br /><br />по зеркалам разошлись обновления, призванные решить задачу беспроблемного перехода на использование нового ключа подписи.<br /><br />для подавляющего большинства пользователей последовательность действий состоит из двух шагов:<br /><br />1) если вы ничего не меняли в настройках yum, то вам должны быть доступны несколько пакетов среди, которых - fedora-release, PackageKit, gnome-packagekit и unique - вместо последнего у меня был виден PackageKit-libs (для Fedora 8 предлагается только fedora-release). если все остальные репозитории находились в таком же ожидании разрешения проблем, то tigro продолжал собирать пакеты, так что если вы используете и его, вам будет видно больше, чем отмечено выше - в частности меня насторожил yum - что там tigro с ним делал не знаю. настоятельно рекомендуется оперативно обновить указанные пакеты.<br /><br />2) после обновления yum, PackageKit, pirut (и т.д.) узнают о существовании нового репозитория, в котором лежит побольше обновлений, подписанных новым ключом. собственно это теперь стандартное расположение обновлений для fedora 8 и fedora 9.<br /><br />в дальнейшем предполагается проделать такую же операцию с репозиторием пакетов из релизов (release package repo) дабы полностью разделаться со старыми ключами.<br /><br />подробности и faq <a href="https://fedoraproject.org/w/index.php?title=Enabling_new_signing_key">тут</a> (на английском)<br /><br />из возможных проблем:<br /><br />= PackageKit - не увидит нового репозитория и новых обновлений - так как апплет делает это периодически (в моем случае сразу после обновления 4-х пакетов он полез проверить список доступных пакетов и увидел 57) - либо Система->Обновить систему (запустите процесс самостоятельно), либо перезагрузите компьютер, ну и никто не отменял командной строки - yum update (тут можно порулить доступными репозиториями). да, кстати, новый называется - updates-newkey (по умолчанию - /etc/yum.repos.d/fedora-updates-newkey.repo)<br /><br />= PackageKit может не смочь импортировать новый ключ (не должно быть такого, но мало ли...) - все в ваших руках, в командной строке rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-8-and-9 (для пущей уверенности предварительно сравнив его с <a href="https://fedoraproject.org/keys">https://fedoraproject.org/keys</a>). в моем случае все прошло хорошо - PackageKit спросил доверяю ли я новому ключу и запросил пароль root для его импорта.sapunidzehttp://www.blogger.com/profile/05372234049438624977noreply@blogger.com0tag:blogger.com,1999:blog-12119233.post-84369251893910215112008-09-10T18:40:00.002+04:002008-09-10T18:48:23.690+04:00великий и могучий русский языкпрошел простой тест на знание русского языка.<br /><br /><table style="text-align: justify; width: 510px; background:#FFE493 none repeat scroll 0%; font-size: 11pt;"><tr><td>Я проверил свои знания русского языка и получил четверку.<br><br><img align="center" width="500" height="164" src="http://www.rb.ru/poll/7/img/4.gif"> <br><br><b><a href="http://www.rb.ru/poll/7/">Сходи, проверься?</a></b></td></tr></table><br /><br />получил следующий комментарий - Вы ответили на 6 из 8 простых вопросов. Не самый плохой результат на общем фоне. Скорее всего, вы неплохо знали русский язык в школе, просто было это давно, и теперь учебник Розенталя для вас заменяет грамматическая автопроверка в "Ворде". Гордиться вам особенно нечем, но для выживания в среде носителей русского языка этого вполне хватит. Таких, как вы, в стране, согласно опросу ВЦИОМа, - 21%.*sapunidzehttp://www.blogger.com/profile/05372234049438624977noreply@blogger.com6tag:blogger.com,1999:blog-12119233.post-25299549217264184442008-09-09T12:42:00.005+04:002008-09-09T14:26:43.365+04:00обновления fedora 8 и fedora 9в <a href="https://www.redhat.com/archives/fedora-announce-list/2008-August/msg00012.html">описании</a> ранее выявленного инцидента с инфраструктурными серверами проекта Fedora говорилось о принятом решении заменить ключ, которым подписываются все пакеты.<br />о том как собственно это будут делать обещали рассказать дополнительно.<br />вчера прочитал пятничную <a href="http://lwn.net/Articles/297459/">новость</a> о предлагаемых решениях.<br />вкратце:<br />- все существующие обновления переподписаны новым ключом, созданы новые разделы (директории) репозитория (repo) и завершается процесс синхронизации зеркал;<br />- существующие разделы обновлений очищаются, туда кладутся четыре пакета, подписанные старыми ключами (fedora-release, PackageKit, gnome-packagekit и unique, последние три не нужны если у вас не используется PackageKit);<br />- при последующих обновлениях будут использоваться уже новые источники (repo location) и ключи, в процессе будет запрошено подтверждение на импорт нового ключа;<br />- в последствии будет создан пакет, принудительно удаляющий старые ключи из системной базы данных пакетов (rpmdb)<br /><br />на сайте проекта создана <a href="https://fedoraproject.org/wiki/Enabling_new_signing_key">страница</a> wiki по теме.<br /><br />в ближайшее время ожидается завершение необходимых подготовительных работ, после чего будет сделан более формальный анонс с ссылками на все необходимые ресурсы, в том числе, на специальный faqsapunidzehttp://www.blogger.com/profile/05372234049438624977noreply@blogger.com0tag:blogger.com,1999:blog-12119233.post-50575429357959891962008-09-05T15:26:00.004+04:002008-09-05T17:28:28.443+04:00хит-парады на тему безопасностисегодня послеполуночным утром на сон грядущий читал блоги разных дядек по теме вездесущей информационной безопасности... наткнулся на череду хит-парадов по теме n глупейших/умнейших глупостей/умностей в безопасности...<br />далее представлены ссылки и некоторые выдержки в беглом переводе в порядке посещения блогов.<br /><br /><a href="http://techbuddha.wordpress.com/2008/08/22/the-11-worst-ideas-in-security/">11 худших идей в безопасности</a><br /><blockquote>11. <i><b>Индустрия безопастности и аналитики рынка</b> (Я становится аналитиком, разрушителем рынков)<br />Бастионы знаний, защитники объективной веры, создатели 2-страничных углубленных отчетов по анализу рынка. В действительности они анализируют не безопасность, а рынок безопасности...</i></blockquote><br /><blockquote>1. <i><b>Торговцы безопасностью и венчурные капиталы, которые их любят</b> (корень всех зол безопасности)<br />Цель индустрии безопасности не защищать, цель индустрии - зарабатывать деньги... ...мы должны понимать, что компании мотивируются прибылью. Это необязательно плохо, но данный момент должен помочь развеять миф о том, что специализированные компании умнее, чем хакеры, не умнее, они просто умнее, чем покупатели...</i></blockquote><br /><br /><a href="http://www.ranum.com/security/computer_security/editorials/dumb/">Шесть тупейших идей в компьютерной безопасности</a><br />содержание хит-парада:<br />1. все что не запрещено по умолчанию разрешено.<br />2. перечисление вредностей<br />3. найти дырку и залатать<br />4. хакинг это круто<br />5. обучение пользователей<br />6. действие лучше, чем бездействие<br /><br /><a href="http://techbuddha.wordpress.com/2008/09/02/the-7-greatest-ideas-in-security/">7 лучших идей в безопасности</a> от автора 11 глупейших...<br /><br />з.ы. интересные мнения, достойные внимания...sapunidzehttp://www.blogger.com/profile/05372234049438624977noreply@blogger.com1tag:blogger.com,1999:blog-12119233.post-7414206088060043572008-08-29T14:49:00.004+04:002009-07-14T19:14:33.063+04:00о медленной работе usb-2.0-дисковпериодически сталкиваюсь с проблемой медленного копирования больших объемов информации на внешние диски или флэшки. как я понял из описанного <a href="https://bugs.launchpad.net/ubuntu/+bug/177235">тут</a> я не первый кто с этим столкнулся и суть примерно в том, что почему-то вместо модуля ehci_hcd, реализующего интерфейс usb контроллера в спецификации 2.0, используется uhci_hcd - интерфейс usb 1.0.<br /><br />решение описанное по ссылке:<br /><br />1. отмонтировать раздел<br />2. отсоединить устройство<br />2. выгрузить модуль ehci_hdc (/sbin/rmmode ehci_hdc)<br />3. подсоединить устройство<br />4. загрузить модуль ehci_hdc (/sbin/modprobe ehci_hdc)<br />5. смонтировать раздел, если это не произошло автоматически<br /><br />в моем случае (fedora 9) скорость передачи информации на внешний диск с файловой системой ntfs изменилась с ~1 МБ/с на ~6-7 МБ/сsapunidzehttp://www.blogger.com/profile/05372234049438624977noreply@blogger.com3tag:blogger.com,1999:blog-12119233.post-63892592440198606332008-08-26T10:55:00.002+04:002008-08-26T11:13:15.985+04:0011 почему и еще 7 вопросов на тему безопасных криптоалгоритмов и рядомчитал <a href="http://www.linux.org.ru/view-message.jsp?msgid=3043955">обсуждение</a> аналитиков лора об "<a href="http://www.heise-online.co.uk/security/European-cryptologists-attack-hash-functions--/news/111370">атаках</a>" на алгоритм вычисления хэш-функций <a href="http://ru.wikipedia.org/wiki/%D0%93%D0%9E%D0%A1%D0%A2_%D0%A0_34.11-94">ГОСТ-34.11-94</a>. по ссылкам дошел до <a href="http://www.enrupt.com/">сайта</a>, на котором почитал интересный <a href="http://www.enrupt.com/index.php/2008/07/01/what_is_secure">пост</a>.sapunidzehttp://www.blogger.com/profile/05372234049438624977noreply@blogger.com1tag:blogger.com,1999:blog-12119233.post-13249559003802719622008-08-11T12:34:00.002+04:002008-08-11T12:56:51.376+04:00sectoolна днях был <a href="https://www.redhat.com/archives/fedora-test-list/2008-August/msg00072.html">анонсирован</a> выпуск альфа релиза Fedora 10, среди прочего в новой версии будет добавлен инструмент проведения контроля состояния безопасности системы - <a href="http://fedoraproject.org/wiki/Features/SecurityAudit">sectool</a>.<br /><br />в порыве переводильного запала, пока знакомился с описанием возможностей настучал перевод <a href="https://fedorahosted.org/sectool/wiki/UserDocumentation">руководства пользователя</a>.<br /><br /><b>использование sectool в командной строке</b><br /><br />Сначала почитайте справку.<br /><pre><br /> # sectool --help<br /></pre><br />Получения списка тестов и уровней безопасности, на которых они выполняются по умолчанию.<br /><pre><br /> # sectool --list<br /></pre><br />Детализированное описание теста.<br /><pre><br /> # sectool --info home_dirs<br /></pre><br />Тесты разделяются на 5 уровней безопасности. Краткое описание каждой категории:<br />1. Naive - очень простой и маленький набор тестов,<br />2. Desktop - набор тестов, подготовленный для запуска на компьютерах, не подключенных к сети интернет,<br />3. Network - стандартная клиентская машина, подключенная к сети интернет,<br />4. Server - сетевой сервер,<br />5. Paranoid - пачка тестов для администраторов-параноиков.<br /><br />Имейте в виду, что каждый тест может быть включен в более чем один из уровней безопасности и их строгость может варьироваться.<br /><br />Для запуска тестов, выбранных, например, для уровня 1, наберите:<br /><pre><br /> # sectool --level 1<br /></pre><br />Тесты можно дополнительно включить или исключить в/из определенного уровня. Тесты, которые не принадлежат уровню будут запущены с параметрами по умолчанию. Следующий пример запустит все тесты для уровня 1 за исключением home_files и path, кроме того не определенный для уровня 1 дополнительный тест netserv.<br /><pre><br /> # sectool --level 1 --include netserv --exclude home_files path<br /></pre><br />Можно запускать некоторые специфические тесты с определенными для них уровнями безопасности по умолчанию.<br /><pre><br /> # sectool --run firewall home_files<br /></pre><br />Если объединить опции "--run" и "--level", то будут выполнены только выбранные тесты с указанным уровнем безопасности.<br /><pre><br /> # sectool --level 3 --run disc_usage<br /></pre><br />Результаты аудита можно отправить по электронной почте.<br /><pre><br /> # sectool --level 1 --mail some.body@redhat.com<br /></pre><br />Если ранее Вы уже запускали некоторые тесты и Вас интересуют только изменения результатов, то можно использовать опцию "-diff".<br /><pre><br /> # sectool --run selinux --diff<br /></pre><br />Если Вам надо, чтобы sectool забыл результаты прошлых тестов, просто выполните<br /><pre><br /> # sectool --clean<br /></pre><br />Некоторые тесты включают подсказки для определенных ошибок и предупреждений, выявленных ими.<br /><pre><br /> # sectool --run home_dirs --hint<br /></pre><br />При регулярном (cron) использовании sectool, Вы можете настроить его в /etc/sectool.conf и запускать только<br /><pre><br /> # sectool --auto<br /></pre><br /><br /><b>описание файла sectool.conf</b><br /><br />В конфигурационном файле sectool четыре секции: action (действия), paths (пути), results (результаты) и mail (почта).<br /><br /> ==== ACTION ====<br /><br />В этой секции определяется какие тесты проводить при запуске sectool с параметром --auto.<br /><pre><br /> LEVEL="number of the security level"<br /></pre><br /> ==== PATHS ====<br /><br />Определяются пути по умолчанию к тестам и расположению их постоянных и временных данных.<br /><pre><br /> TESTS_DIRS=/usr/share/sectool/tests "какая-то_другая_директория"<br /> TDATA_DIR=/var/lib/sectool<br /> TEMP_DIR=/tmp<br /></pre><br /> ==== RESULTS ====<br /><br />Имя xml файла, в котором хранятся результаты. Этот файл обычно используется для генерации diffs (разницы) относительно предыдущих запусков.<br /><pre><br /> RESULT_FILE=results.xml<br /></pre><br /> ==== MAIL ====<br /><br />Параметры поддержки электронной почты. Что писать в теле письма, что включать во вложение, параметры smtp.<br /><pre><br /> # SEND_BODY=(full | diff | none) #тело письма (полный | разница | ничего)<br /> SEND_BODY=diff<br /> # SEND_ATTACHMENT = (full | diff | none) #вложение (полный | разница | ничего)<br /> SEND_ATTACHMENT = full<br /> # TARGET=(local | smtp) #куда (локально | smtp)<br /> TARGET=local<br /> # username or None for no authentication # имя_пользователя или None для отправки без аутентификации<br /> # SMTP_USER = (username | None)<br /> # password or None for no authentication # пароль или None для отправки без аутентификации<br /> # SMTP_PASSWD = ( password | None )<br /> # smtp server to send emails via # имя smtp сервера, через который необходимо отправлять сообщение<br /> # SMTP_SERVER = localhost<br /></pre>sapunidzehttp://www.blogger.com/profile/05372234049438624977noreply@blogger.com0tag:blogger.com,1999:blog-12119233.post-37808955146219629112008-08-10T23:50:00.004+04:002008-08-11T00:21:18.166+04:00Руководство по Openbox. Часть 2.<em>Продолжаю выкладывать руководство по использованию оконного менеджера Openbox. Оригинал на английском языке <a href="http://urukrama.wordpress.com/openbox-guide/">An Openbox Guide</a> опубликован в блоге <a href="http://urukrama.wordpress.com/">urukrama</a>. Оригинал и, соответственно, перевод доступны на условиях <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</em><br /><br /><a href="http://sapunidze.blogspot.com/2008/08/openbox-1.html">Руководство по Openbox. Часть 1.</a><br /><br /><h2>4. Настройка Openbox</h2><br /><h3>4.1 Меню</h3><br />Когда Вы зайдете первый раз в Openbox, почти сразу Вас встретит пустой экран. Это Openbox. Нажмите правую кнопку мыши и Вы увидите Ваше <i>root-menu</i> (корневое меню). Нажмите среднюю клавишу и будет показано <i>client-list–combined-menu</i>,<br /><br />отображающее все запущенные приложения на всех рабочих столах. Для выхода из Openbox используйте пункт корневого меню ‘Exit’ (будьте внимательны, подтверждение не запрашивается и работа всех приложений будет автоматически завершена). При выборе ‘Reconfigure’ Openbox перечитывает свою конфигурацию, используется для применения сделанных изменений в конфигурационных файлах.<br /><br />По умолчанию меню Openbox пустое, но его достаточно просто отредактировать, так что не падайте духом!<br /><br />[<em>прим. перев.: в Fedora 9 предустановленная конфигурация Openbox импортируют настройки, сделанные в Gnome, KDE или XFCE, в частности, темы и настройки шрифтов приложений GTK/QT, обои рабочего стола, настройки раскладок клавиатуры и т.д., кроме того, в рамках поддержки стандартов freedesktop.org, обеспечивается (авто)запуск приложений, например, агентов NetworkManager, PulseAudio, а также строится меню.</em>]<br /><br />Для начала скопируйте файл menu.xml (настройки меню по умолчанию) из директории <i>/etc/xdg/openbox/</i>, в Вашу домашнюю директорию, в папку с персональной конфигурацией Openbox <i>/home/ИМЯ_ПОЛЬЗОВАТЕЛЯ/.config/openbox/</i>. В этой папке хранятся все Ваши конфигурационные файлы Openbox, поэтому запомните её расположение! Скопировать файл можно используя Ваш любимый файловый менеджер или выполнив следующую команду в терминале:<br /><pre> cp /etc/xdg/openbox/menu.xml ~/.config/openbox/menu.xml</pre><br />Теперь можно открыть файл меню (например, набрав в терминале команду <i>ваш_любимый_текстовый_редактор ~/.config/openbox/menu.xml</i>) и начать его редактирование <i>à volonté</i>.<br /><br />[<em>прим. перев: тут автор блеснул знанием французкого языка, а я минут пять упрашивал яндекс с гуглем помочь мне узнать, что это значит «вволю»</em>].<br /><br />Редактировать корневое меню достаточно просто, непосредственно изменяя один файл.<br /><br />Для еще большей простоты можно использовать Obmenu, графическое приложение для редактирования меню Openbox. Obmenu есть в репозиториях Hardy и Gutsy-backports. Для его установки используйте следующую команду:<br /><pre> sudo aptitude install obmenu</pre><br />[<em>прим. перев.: Obmenu есть в репозитории Fedora 9, для его использования установите пакет obmenu, например, командой yum install obmenu (команду необходимо выполнять с правами пользователя root).</em>]<br /><br />К сожалению в репозиториях для других версий Ubuntu нет Obmenu. Если Вы используете версия старее Gutsy, Вам придется скомпилировать Obmenu из исходных кодов. Сначала установите необходимые пакеты:<br /><pre> sudo aptitude install python2.5 python-glade2 python-gtk2</pre><br />Теперь загрузите исходные коды с <a href="http://obmenu.sourceforge.net/download.html">сайта Obmenu</a>. Извлеките содержимое и перейдите в терминале директорию с исходным кодом, для чего выполните команды:<br /><pre> tar xzvf ~/obmenu-1.0.tar.gz<br /> cd obmenu-1.0</pre><br />Следующей командой установите приложение:<br /><pre> sudo python setup.py install</pre><br />После установки, Вы можете запустить Obmenu командой ‘obmenu’. Теперь нажимая кнопки и редактирую поля Вы можете изменять меню по вашему усмотрению. Проще некуда!<br /><br />Вот как выглядит <a href="http://urukrama.files.wordpress.com/2008/05/obmenu.jpg" title="obmenu">экран Obmenu</a>.<br /><br />Если Вы хотите, чтобы в меню появились все приложения, установленные на Вашем компьютере, можно использовать <a href="http://menumaker.sourceforge.net/">Menumaker</a>. Загрузите его <a href="http://sourceforge.net/projects/menumaker">здесь</a>, распакуйте и перейдите в директорию с исходным кодом, выполнив команду:<br /><pre> tar xzvf ~/menumaker-0.99.7.tar.gz<br /> cd ~/menumaker*</pre><br />Запустите Menumaker следующей командой (при этом Menumaker <i>не</i> будет установлен, а только запуститься):<br /><pre> ./mmaker OpenBox3</pre><br />Вы должны получить полное меню. Обратите внимание, что Menumaker не перезапишет существующий файл menu.xml. Если Вы вносили какие-то изменения в файл menu.xml, сохраните резервную копию, удалите и затем отредактируйте новый файл menu.xml, созданный Menumaker.<br /><br />Для использования меню Debian в Openbox следуйте инструкциям, описанным <a href="http://icculus.org/openbox/index.php/Help:Menus#The_Debian_menu">здесь</a>.<br /><br />Не ограничивайте себя, создайте меню, облегчающее Вашу жизнь! В качестве команды (command) можно написать практически любую команду. Если приложение требует административных привилегий (например, Synaptic) добавьте ‘gksudo’ перед командой и при запуске приложения у Вас будет запрошен пароль. Вы можете создать подменю для управления обоями, используя Feh (об этом будет далее); добавьте пункты для редактирования конфигурационных файлов (<i>ВАШ_ЛЮБИМЫЙ_ТЕКСТОВЫЙ_РЕДАКТОР “/путь/к/файлу”</i>) или для открытия определенных папок (<i>ВАШ_ФАЙЛОВЫЙ_МЕНЕДЖЕР “/папка/на/выбор”</i>); Вы можете создавать пункты для создания резервных копий документов (<i>cp -a /директория/источник /директория/получатель</i>) и т.д. Если Вы хотите, чтобы отдельные пункты завершали работу приложений, например, panels или conky, можно создать пункт с командой вида: <i>killall название_приложения</i>.<br /><br />Вы можете также использовать ‘<b>pipe menus</b>‘ (pipe-меню, механизм динамических меню), которые автоматически генерируются каждый раз при их выборе. Существуют pipe-меню для Places из Gnome, Gmail, rss feeds, mpd-плееров, изменения тем, установки обоев рабочего стола и многого другого. Вы можете найти некоторые pipe-меню и инструкции по установке <a href="http://icculus.org/openbox/index.php/Openbox:pipe%20menus">здесь</a>.<br /><br />[<em>прим. перев.: ранее упоминавшаяся генерация меню в Fedora 9, также реализована в виде pipe-меню (см. файлы /etc/xdg/openbox/menus.xml и /usr/share/openbox/xdg-menu).</em>]<br /><br />Не забывайте после изменения файла menu.xml нажимать ‘Reconfigure’ в корневом меню, чтобы увидеть результат внесенных изменений. Obmenu должно делать это автоматически после сохранения проделанной работы. Если в файл меню содержит ошибки в коде xml, Obmenu не будет запускаться. При запуске из командной строки будет выводиться сообщение об ошибке, завершающееся примерно таким текстом: <i>xml.parsers.expat.ExpatError: not well-formed (invalid token)</i>, после которого будет следовать строка menu.xml, в которой обнаружена ошибка. К счастью Openbox версии 3.4.7 предупреждает Вас при запуске или обновлении конфигурации когда Ваши файлы меню и конфигурации содержат ошибки.<br /><br />Также Вы можете создавать особые меню (custom menus), которые будут запускаться из корневого меню. Более подробная информация представлена в <a href="http://icculus.org/openbox/index.php/Help:Menus#Static_menus">документации Openbox</a>.<br /><br />В отличии от Fluxbox или Icewm, Openbox не поддерживает значки в меню.<br /><br /><h3>4.2 Obconf</h3><br />Когда Openbox установлен и меню выглядит как Вам нравится, Вы можете дальше настраивать Openbox. Все настройки Openbox определяются в файле rc.xml, который находится в папке <i>/home/ИМЯ_ПОЛЬЗОВАТЕЛЯ/.config/openbox</i>. Этот файл можно редактировать вручную или с использованием <a href="http://icculus.org/openbox/index.php/ObConf:About">Obconf</a>.<br /><br />Последняя версия Obconf есть в репозиториях Hardy и Gutsy-backports, но Вы не сможете использовать её, потому что она была скомпилирована для более старой версии Openbox. Вам придется собрать её самостоятельно из исходного кода. В том числе, если Obconf уже было установлено ранее, Вам необходимо скомпилировать его заново, чтобы использовать с последней версией Openbox.<br /><br />[<em>прим. перев.: в репозитории Fedora 9 доступны актуальные совместимые версии Openbox и Obconf.</em>]<br /><br />Загрузите <a href="http://icculus.org/openbox/index.php/Openbox:Download#ObConf_-_Openbox_configuration_tool">исходный код</a>, распакуйте архив и перейдите в извлеченную директорию, чтобы проделать это из командной строки наберите:<br /><pre> wget http://icculus.org/openbox/obconf/obconf-2.0.3.tar.gz<br /> tar xzvf obconf-2.0.3.tar.gz<br /> cd obconf-2.0.3</pre><br />Скомпилируйте Obconf:<br /><pre> PKG_CONFIG_PATH=/usr/local/lib/pkgconfig ./configure –prefix=/usr<br /> make<br /> sudo checkinstall</pre><br />После того как Вы установили Obconf, выполните следующие команды в терминале, чтобы проассоциировать файлы .obt (содержащие темы для Openbox) с Obconf:<br /><pre> update-mime-database /usr/share/mime<br /> update-desktop-database /usr/share/applications</pre><br />После чего командой ‘obconf’ можно запустить Obconf. Вот как это <a href="http://urukrama.files.wordpress.com/2008/05/obconf.png">выглядит</a>:<br /><br />Многие опции в Obconf должны быть очевидны. В самой правой вкладке есть место (dock), в котором Вы можете загружать специальные приложения - ‘dock apps’, такие как system trays (области уведомлений), launchers (панели запуска), pagers (пейджеры), clocks (часы), etc. (об этом будет далее).<br /><br />[<em>прим. перев.: не уверен особенности ли это самой версии или сборки, но в Fedora 9 в Obconf версии 2.0.3 вкладки упорядочены по вертикали, а не по горизонтали как это видно на скриншоте.</em>]<br /><br /><h3>4.3 Привязки клавиатуры, мыши и параметры приложений</h3><br />Не все настройки в файле rc.xml можно (в настоящее время) изменить в Obconf. Для некоторых настроек Вам придется редактировать rc.xml в ручную.<br /><br /><b>Привязки клавиатуры</b><br /><br />Openbox позволяет легко назначить определенной комбинации клавиш (keyboard bindings) некоторую команду (например, запуск приложения, показать меню или переключиться на определенный рабочий стол). Привязки можно добавить и изменить в секции “keyboard” файла rc.xml file. Вот некоторые примеры:<br /><br />1.Запуск приложения или выполнения какой-то команды, например, для запуска Thunar:<br /><pre><keybind key="A-F4"><br /> <action name=”Execute”><br /> <execute>thunar</execute><br /> </action><br /> </keybind></pre><br />2. Для показа меню, например, корневого меню:<br /><pre><keybind key="A-F1"><br /> <action name=”ShowMenu”><br /> <menu>root-menu</menu><br /> </action><br /> </keybind></pre><br />3. Для переключения на определенный рабочий стол:<br /><pre><keybind key="A-1"><br /> <action name=”Desktop”><br /> <desktop>1</desktop><br /> </action><br /> </keybind></pre><br />A= Alt, C= Control, W= Windows key. Escape= escape key, Delete= Delete key. Если Вам хочется использовать определенную клавишу, но не уверены в её названии используйте <a href="http://packages.ubuntu.com/hardy/x11-utils">xev</a>: наберите xev в терминале и потом нажимайте нужную Вам клавишу. Появится много информации, Вам нужно то, что будет написано после слова ‘keycode’.<br /><br />Дополнительная информация есть в <a href="http://icculus.org/openbox/index.php/Help:Bindings">документации Openbox</a>.<br /><br /><b>Привязка мыши</b><br /><br />Следующая секция в файле rc.xml касается мыши, в ней определяется, что делать, когда Вы щелкаете, перетаскиваете или нажимаете определенные кнопки мыши в определенных областях. Дополнительную информацию смотрите в <a href="http://icculus.org/openbox/index.php/Help:Bindings">документации Openbox</a>. Некоторые примеры того, как можно настроить привязки клавиатуры и мыши смотрите <a href="http://urukrama.wordpress.com/2008/01/05/using-some-pekwm-settings-in-openbox/">здесь</a>.<br /><br /><b>Приложения</b><br /><br />В конце файла Вы найдете настройки, определяющие порядок запуска приложений. Например, если Вы хотите, чтобы окно терминала открывалось только на рабочем столе номер 2, или хотите, чтобы xclock скрывало элементы декорации окна, или чтобы orage пропускал панель задач, или объединить все эти действия для одного приложения, то всё это определяется здесь. Вот пример:<br /><pre><application name="xfce4-terminal"><br /> <desktop>3</desktop><br /> <layer>below</layer><br /> <decor>no</decor><br /> <maximized>yes</maximized><br /> </application></pre><br />Каждый раз при запуске xfce4-terminal он будет открываться на рабочем столе 3, развернутым на весь экран, без рамки окна, но под всеми другими приложениями.<br /><br />Если Вы хотите удалить все оконные декорации, используйте следующие настройки:<br /><pre><application class=”*”><br /> <decor>no</decor><br /> </application></pre><br />Подробная информация представлена <a href="http://icculus.org/openbox/index.php/Help:Applications">здесь</a><br /><br />После изменений файла rc.xml, чтобы увидеть результат, не забывайте нажимать ‘Reconfigure’ в корневом меню Openbox. Изменения вносимые в Obconf видны сразу.sapunidzehttp://www.blogger.com/profile/05372234049438624977noreply@blogger.com1tag:blogger.com,1999:blog-12119233.post-15330138184366511672008-08-07T23:18:00.005+04:002008-08-08T01:17:38.716+04:00Руководство по Openbox. Часть 1.<em>Начинаю выкладывать руководство по использованию оконного менеджера Openbox. Оригинал на английском языке <a href="http://urukrama.wordpress.com/openbox-guide/">An Openbox Guide</a> опубликован в блоге <a href="http://urukrama.wordpress.com/">urukrama</a>. Оригинал и, соответственно, перевод доступны на условиях <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License</a>.</em><br /><br /><h2>1. Введение</h2><br />Добро пожаловать. Это руководство написано, чтобы помочь Вам установить и настроить оконный менеджер <a href="http://icculus.org/openbox/index.php/Main_Page">Openbox</a> в <a href="http://www.ubuntu.com/">Ubuntu</a> (хотя многое из написанного будет полезным пользователям других дистрибутивов Linux).<br /><br />[<em>прим. перев.: автор перевода использует Openbox в <a ref="http://www.fedoraproject.org">Fedora</a>, далее по тексту будут комментарии относительно известных ему особенностей использования Openbox в Fedora 9.<br />з.ы. здесь и далее в квадратных скобках текст автора перевода.</em>]<br /><br />В руководстве <i>не</i> описывается процесс создания минимальной инсталляции Ubuntu с применением Openbox, хотя, возможно, информация будет полезна для тех, кто пытается это проделать. Далее отражены только вопросы установки, настройки и использования Openbox. Предполагается, что у Вас уже установлена и нормально работает Ubuntu. (Если Вам необходима помощь с минимальной инсталляцией Ubuntu, посмотрите <a href="http://psychocats.net/ubuntu/minimal">здесь</a> и <a href="https://help.ubuntu.com/community/Installation/LowMemorySystems">здесь</a>)<br /><br />Openbox может работать самостоятельно или как оконный менеджер в Gnome, KDE или Xfce. Это руководство рассматривает автономное использование Openbox. За помощью по использованию Openbox в одной из этих сред обращайтесь на <a title="Openbox Documentation" href="http://icculus.org/openbox/index.php/Help:Contents">сайт Openbox</a>. Вы можете использовать как Gtk (Gnome), так и Qt (KDE) приложения в Openbox, и я постарался уделить одинаковое внимание обоим вариантам, хотя, про Gtk примеров и больше.<br /><br />Openbox минималистичен и делает мало чего кроме непосредственно управления окнами, но делает это очень хорошо! Это часто отпугивает новых пользователей, которым кажется, что Openbox слишком спартанский или упрощенный. Но минимализм Openbox не недостаток, а действительно сила. К нему не прилагаются панели или средства настройки рабочего стола, но, как Вы увидите далее, существует множество доступных приложений, которые справляются с этими задачами. У Вас есть возможность выбирать то, которое больше подходит именно для Вас. Делая меньше Openbox тем самым дает Вам больше контроля и возможность сделать окружение рабочего стола в точности таким как это нужно Вам (ну или очень близко к этому).<br /><br />В тексте упоминается много приложений и часто приводятся какие-то конфигурационные опции. Рекомендуется читать соответствующие страницы руководств заинтересовавших Вас приложений (откройте терминал и наберите команду ‘<i>man названиеприложения</i>‘; для выхода нажмите ‘q’), в которых Вы найдете описание всех опций для дальнейших экспериментов. Также на сайтах приложений часто приводятся полезные руководства по их использованию. В случае если у приложения имеется свой сайт в тексте приводится ссылка. Многие приложения позволяют настраивать гораздо больше, чем это может показаться с первого раза! Исследуйте и выбирайте конфигурацию, которая устраивает Вас больше всего.<br /><br />Я старался описывать предлагаемые решения с использованием командной строки и графического интерфейса (с использованием файловых менеджеров, тестовых редакторов и т.д.). Выбор за Вами, результат будет одинаковый.<br /><br />Если это может Вас заинтересовать, я загрузил свои конфигурационные файлы. Файл rc.xml доступен <a href="http://urukrama.pastebin.com/f221730d2">здесь</a>, а файл menu.xml <a href="http://urukrama.pastebin.com/f49e38e95">здесь</a>. Ничего особенного в них нет (кроме того, что они устраивают меня), но я многое узнал и почерпнул много идей, просматривая конфигурационные файлы других пользователей; возможно и для Вас это будет полезно.<br /><br />Для тех, кто до этого ни разу не использовал Openbox и не представляет как это может выглядеть, <a href="http://urukrama.wordpress.com/screenshots/">здесь</a> приведены мои скриншоты.<br /><h2>2. Источники</h2><br />Большая часть информации, представленной здесь, получена из других источников. В частности, я признателен:<br /><ul><li><a href="http://icculus.org/openbox/index.php/Help:Contents">The Openbox documentation</a></li><br /><li><a href="http://kmandla.wordpress.com/">K.Mandla’s blog</a></li><br /><li><a href="http://ubuntuforums.org/showthread.php?t=190476">The “random openbox chatter” thread on the Ubuntuforums</a></li><br /><li><a href="http://ubuntuforums.org/showthread.php?t=192106">Raublekick’s How-to on the Ubuntuforums (устарело)</a></li><br /><li><a href="http://ubuntuforums.org/">The Ubuntuforums</a></li><br /><li><a href="http://gentoo-wiki.com/Main_Page">The Gentoo Wiki</a></li><br /><li><a href="http://forums.debian.net/">The Debian forums</a></li><br /><li><a href="http://wiki.archlinux.org/index.php/Main_Page">The Arch Wiki</a></li></ul><br />Отдельное спасибо тем, кто помог мне открыть Openbox и помогал в решении возникших проблем: fuscia, K.Mandla, moore.bryan, bonzodog, ynnhoj и raublekick (все с Ubuntuforums), а также людям с <a href="http://icculus.org/openbox/index.php/Openbox:Community_portal#IRC">IRC канала #openbox</a>. Многие из их инструкций, указаний и идей объедены в этом руководстве.<br /><h2>3. Установка Openbox</h2><br />Самой свежей версии Openbox (3.4.7) нет в репозитариях Ubuntu. Хотя проще установить имеющуюся в репозитарии версию (3.4.6 для Hardy), в последней версии Openbox появилось множество <a href="http://icculus.org/openbox/index.php/Openbox:Changelog#3.4.7.2">возможностей</a>, которые стоят того, чтобы пойти путем (немного) сложнее.<br /><br />[<em>прим. перев.: для Fedora 9 в репозитории update имеется rpm пакет openbox версии 3.4.7.2.</em>]<br /><br />Скомпилировать исходные коды не так сложно, как может показаться. Сначала необходимо убедиться в том, что у Вас установлены все необходимые для сборки и запуска Openbox пакеты. Для этого откройте окно терминала и введите следующие команды:<br /><br /><pre> sudo aptitude install build-essential pkg-config checkinstall<br /> sudo apt-get build-dep openbox</pre><br />Первая команда установит пакеты, необходимые для компиляции и установки приложений из исходных кодов. Я добавил пакет checkinstall, так как это удобное средство в Ubuntu для установки пакетов, скомпилированных из исходных кодов. Checkinstall создает пакет .deb и устанавливает его. Это позволит Вам в последствии легко удалить приложение с использованием apt или Synaptic. Если Вы предпочитаете не использовать ее, не устанавливайте её и замените далее в примерах ‘<i>sudo checkinstall</i>‘ на ‘<i>sudo make install</i>‘.<br /><br />[<em>прим. перев.: существует возможность заставить работать checkinstall и в Fedora для создания и установки rpm пакета, но это сопряжено с рядом сложностей, например, см. <a href="http://forums.fedoraforum.org/showthread.php?t=189170">здесь</a>. более правильным в Fedora будет использовать утилиту rpmbuild.</em>]<br /><br />Вторая команда указывает apt, пакетному менеджеру Ubuntu, установить все необходимые пакеты для сборки Openbox.<br /><br />Затем скачайте исходные коды Openbox с <a href="http://icculus.org/openbox/index.php/Openbox:Download">сайта Openbox</a>, распакуйте архив, откройте окно терминала и перейдите в каталог, извлеченный из архива. Чтобы проделать все это в командной строке выполните следующие команды:<br /><br /><pre> wget http://icculus.org/openbox/releases/openbox-3.4.7.2.tar.gz<br /> tar xzvf openbox-3.4.7.2.tar.gz<br /> cd openbox-3.4.7.2/</pre><br />Теперь Вы можете собрать и установить пакет:<br /><br /><pre> ./configure --prefix=/usr --sysconfdir=/etc<br /> make<br /> sudo checkinstall</pre><br />В результате выполнения этих команд в терминал будет выведено много текста. Большую часть можно проигнорировать, за исключением сообщений об ошибках, в этом случае значение имеет только первая ошибка.<br /><br />[<em>прим. перев.: подразумевается, что первая ошибка возникла в результате объективно существующей проблемы, все последующие ошибки, являются обычно следствием.</em>]<br /><br />Что же делают эти команды? Первая команда проверяют все ли требуемые приложения у Вас установлены и собирает так называемый make-файл, учитывающий особенности Вашей системы. Команда ‘make’ собирает исходный код с использованием полученного make-файла (это может занять некоторое время, так что наберитесь терпения). Ну и checkinstall устанавливает приложение используя применяемый в Вашей системе менеджер пакетов (apt/dpkg в случае Ubuntu).<br /><br />На некоторых компьютерах, на которых я пытался установить Openbox таким образом, работа checkinstall прерывалась (с ошибкой <i>‘chmod: changing permissions of `/usr/lib/libobparser.a’: No such file or directory</i>). Если Вы столкнетесь с этим, попробуйте использовать <i>sudo make install</i> (вместо <i>sudo checkinstall</i>), у Вас должно получиться. Если Вам все еще нужен .deb пакет (чтобы иметь возможность нормально удалить Openbox из системы с использованием apt или Synaptic), у Вас должно получиться переустановить его с использованием checkinstall после установки командой ‘make install’.<br /><br />Если все прошло нормально, то Openbox теперь установлен. Если Вы используете GDM или KDM, то в параметрах сессии можно выбрать Openbox (F10 > Sessions). Если у Вас установлен KDE или Gnome, то Вы должны видеть опции использования Openbox в качестве оконного менеджера в составе среды (’KDE/Openbox’ и ‘Gnome/Openbox’). Выбирайте Openbox и входите. Пора переходить к настройке.<br /><br />[<em>продолжение следует...</em>]sapunidzehttp://www.blogger.com/profile/05372234049438624977noreply@blogger.com2