понедельник, июня 29, 2009

SELinux Lockdown, 3: Permissive Mode Vs. Permissive Domains

оригинал - SELinux Lockdown Part Three: Permissive Mode Vs. Permissive Domains

Продолжаю выкладывать перевод цикла статей по использованию SELinux. Оригинал на английском языке опубликован в блоге Доминика Грифта (Dominick Grift).

Разрешающий режим SELinux (SELinux Permissive Mode) это состояние, в котором SELinux разрешает нарушения политики SELinux на уровне всей системы. В этом состоянии нарушения политики только регистрируются. Разрешающий режим может быть использован для устранения неполадок и тестирования проблем, связанных с SELinux. Трудности с разрешающим состоянием на уровне всей системы связаны с разумной необходимостью перевода системы в безопасную среду и вывода её из эксплуатации. В некоторых редких случаях можно с целью минимизации рисков, вызванных разрешающим режимом, рассмотреть подключаемый модуль аутентификации (Pluggable Authentication Module) SEPermit, но часто данной меры недостаточно, потому что он только запрещает вход Linux пользователям. Системные службы остаются уязвимы к нарушениям политик.

Недавно с целью устранения данных проблем были представлены разрешающие домены SELinux (SELinux Permissive Domains). С разрешающими доменами можно перевести отдельный домен безопасности SELinux в разрешающее состояние. Используя разрешающие домены можно оставить систему в эксплуатации и, например, запретить доступ к данному домену при помощи IPTables, TCP Wrappers, PAM или используя другие методы.

Для добавления и удаления разрешающих доменов SELinux используется команда semanage. Вам не нужно знать в каком домене безопасности работает процесс, чтобы сделать этот домен безопасности разрешающим доменом. Команда ps с опцией -Z поможет узнать эту информацию.

Пример того как сделать разрешающим домен безопасности с названием httpd_t для Apache:

sudo semanage permissive -a httpd_t

Пример того как сделать домен безопасности с названием httpd_t для Apache снова принудительным:

sudo semanage permissive -d httpd_t

Пример того как используя команду semanage просмотреть разрешающие домены SELinux:

sudo semanage permissive -l

Вывод:
Отдавайте предпочтение разрешающим доменам SELinux, а не разрешающему режиму.
Добавляйте, просматривайте и удаляйте разрешающие домены с использованием команды semanage.

Справка: man semanage, man tcpd, man pam_sepermit, man iptables

суббота, июня 27, 2009

SELinux Lockdown, 2: PAM SEPermit

оригинал - SELinux Lockdown Part Two: PAM SEPermit

Продолжаю выкладывать перевод цикла статей по использованию SELinux. Оригинал на английском языке опубликован в блоге Доминика Грифта (Dominick Grift).


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

Разрешающий режим SELinux это состояние, в котором ограничения SELinux не осуществляются. Однако, SELinux регистрирует нарушения политики SELinux, которые бы в нормальном состоянии предотвращались. Воспринимайте разрешающий режим как систему обнаружения вторжений (Intrusion Detection System), тогда как принудительный режим (Enforcing Mode) можно рассматривать как систему предотвращения вторжений (Intrusion Prevention System).

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

Существуют способы минимизировать риски, связанные с разрешающим режимом. Предпочтительным способом является недавно представленная возможность с названием разрешающие домены SELinux (SELinux Permissive Domains). Разрешающие домены будут обсуждаться позже.

Подключаемый модуль аутентификации (Pluggable Authentication Module) с названием SEPermit может также помочь минимизировать незащищенность разрешающего режима.

PAM SEPermit может заблокировать вход Linux-пользователю, когда система работает в разрешающем режиме. Рассмотрим систему, в которой Linux-пользователи ограничены SELinux. Разрешающий режим фактически снимает эти ограничения. Linux-пользователи могут воспользоваться этими преимуществами и получить доступ к ресурсам, которые в ином случае были бы для них не доступны.

PAM SEPermit включен по умолчанию в Fedora 11 в различных файлах в /etc/pam.d/, например, в /etc/pam.d/sshd. Чтобы заблокировать возможность входа Linux-пользователя в разрешающем режиме достаточно в конфигурацию SEPermit, расположенную в /etc/security/sepermit.conf, добавить Linux- или SELinux- пользователей.

Например, при добавлении %user_u в файл sepermit.conf в /etc/security, блокируется вход SELinux-пользователю user_u, при работе системы в разрешающем режиме.

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

В большинстве случаев рекомендуется перенести вашу систему из демилитаризованной зоны на время работ по устранению проблем в разрешающем режиме. Хотя PAM SEPermit может быть полезен в некоторых случаях.

Побробуйте!

Вывод:
Отдавайте предпочтение разрешающим доменам (Permissive Domains) SELinux, а не разрешающему режиму работы SELinux (Permissive Mode).
Если разрешающий режим требуется в промышленной среде на системе с Linux-пользователями, ограниченными с использованием SELinux, поощряется блокировка входа Linux-пользователей с использованием подключаемого модуля аутентификации SEPermit.
Учитывайте, что это окажет влияние только на Linux-пользователей, системные службы не будут защищаться SELinux в разрешающем режиме.

Справка: man pam_sepermit, man setenforce, man getenforce

пятница, июня 26, 2009

SELinux Lockdown, 1: пользователи SELinux

оригинал - SELinux Lockdown Part One: SELinux Users

Начинаю выкладывать перевод цикла статей по использованию SELinux. Оригинал на английском языке опубликован в блоге Доминика Грифта (Dominick Grift).


Это первая статья в серии о затягивании конфигурации SELinux для Fedora 11.

В Fedora 11 Linux-пользователи по умолчанию сопоставляются SELinux-пользователю unconfined_u. SELinux-пользователь unconfined_u, в свою очередь, сопоставлен ролям unconfined_r и system_r и всем доступным категориям (compartments) Multi Category Security.

Обе роли unconfined_r и system_r сопоставляются доменам безопасности SELinux. Домены безопасности SELinux - это определенные окружения безопасности для процессов в системе Linux.

Неограниченный домен безопасности - unconfined_t - зарезервированное окружение для процессов, которые в значительной степени освобождены от ограничений SELinux. Роль system_r сопоставляется доменам безопасности для системных процессов.

SELinux-пользователь unconfined_u имеет доступ к роли system_r, чтобы иметь возможность запускать системные процессы в своих доменах безопасности. SELinux-пользователь unconfined_u работает в домене безопасности unconfined_t через роль unconfined_r, которой он сопоставлен.

Команда semanage позволяет добавлять, изменять и удалять сопоставления между Linux- и SELinux-пользователями, так же как и другие настройки, касающиеся управления SELinux. В качестве альтернативы для изменения этих настроек можно использовать system-config-selinux, графический интерфейс к semanage.

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

sudo semanage login -l | grep default

результат команды будет каким-то таким:

__default__ unconfined_u SystemLow-SystemHigh

В примере выше Linux-пользователи по умолчанию сопоставлены SELinux-пользователю unconfined_u.

Чтобы изменить это и сопоставить Linux-пользователей по умолчанию ограниченному SELinux-пользователю с именем user_u просто наберите:

sudo semanage login -m -s user_u "__default__"

В результате все новые Linux-пользователи будут по умолчанию сопоставляться ограниченному SELinux-пользователю user_u.

Вы можете переопределить данное сопоставление при добавлении Linux-пользователей командой useradd используя опцию -Z. Эта опция определяет какому SELinux-пользователю должен быть сопоставлен Linux-пользователь.
Например наберите:

sudo useradd -Z guest_u joe

В результате будет создан новый Linux-пользователь с именем joe, который будет сопоставлен SELinux-пользователю guest_u, вместо определенного по умолчанию SELinux-пользователя.

Также для изменения сопоставления между Linux-пользователем и SELinux-пользователем может быть использована команда usermod с опцией -Z.

Существует несколько предопределенных профилей SELinux-пользователей. Список данных профилей можно вывести командой semanage, наберите:

sudo semanage user -l

Далее я рассмотрю некоторые свойства этих предопределенных SELinux-пользователей.

SELinux-пользователь guest_u:
Этот профиль используется для пользователей, которых необходимо усиленно контролировать. SELinux-пользователь guest_u может только войти в систему используя OpenSSH. Гостевые пользователи не имеют доступа к сетевым ресурсам и программам с установленными битами setuid и setgid.

SELinux-пользователь xguest_u:
Данный профиль аналогичен guest_u за исключением того, что xguest пользователи могут входить в Xwindow и не могут входить используя OpenSSH. Другим исключением является то, что данный пользователь может получить доступ к HTTP порту, используя контролируемый SELinux экземпляр Mozilla Firefox.

SELinux-пользователь user_u:
SELinux-пользователь user_u напоминает обычного непривилегированного ограниченного (confined) SELinux-пользователя. Такой пользователь может войти в систему используя Xwindow и OpenSSH, имеет доступ к сетевым ресурсам, но не может использовать программы с установленными битами setuid и setgid.

SELinux-пользователь staff_u:
Этот SELinux-пользователь идентичен user_u, за исключением того, что staff_u может использовать программы с флагами setuid и setgid. Кроме того пользователь staff_u может также просмотреть информацию обо всех процессах в системе и имеет некоторые другие несущественные привилегии по сравнению с пользователем user_u.

SELinux-пользователь sysadm_u:
Данный пользователь придуман, чтобы ограничить используя SELinux учетную запись root, что обычно делать не рекомендуется. Он используется в Multi Level Security окружении, где нет пользователя unconfined_u.

SELinux-пользователь unconfined_u:
SELinux-пользователь unconfined_u это среда, в которой по умолчанию работают все Linux-пользователи в соответствии с целевой политикой Fedora (Fedora Targeted policy). Этот пользователь в значительной степени освобожден от ограничений, накладываемых SELinux. Исключением является механизм Memory Execution Protections (ограничение на исполнение определенных операций в памяти).

Если Вы хотите повысить безопасность вашей системы, тогда не следует сопоставлять реальных Linux-пользователей, не пользователя root, SELinux-пользователю unconfined_u. Во многих сценариях существование неограниченных пользователей создает зияющую дыру в безопасности.

Вход пользователя root должен быть запрещен. root должен иметь возможность войти с терминала только в случае крайней необходимости. В Fedora, Linux-пользователь root сопоставлен unconfined_u. Это означает, что root практически не защищается SELinux.

Чтобы повысить безопасность использования root можно сопоставить пользователя root SELinux-пользователю sysadm_u. Хотя это не сильно увеличивает безопасность по сравнению с unconfined_u и root будет иметь возможность обойти ограничения SELinux.

Итог - вход от имени пользователя root должен быть запрещен, за исключением входа с терминала в крайних случаях.

SELinux-пользователь system_u:
Этот пользователь зарезервирован для нужд системы. Обычные Linux-пользователи не должы сопоставляться с SELinux-пользователем system_u.

Как определить SELinux-пользователя по умолчанию для новых Linux-пользователей объяснили, как переопределить сопоставление по умолчанию с использованием команды useradd и опции -Z тоже объяснили.

Выше было рассказано о доступных предопределенных SELinux пользователях. Осталось показать как можно изменить сопоставление SELinux-пользователя Linux-пользователям.

Вывести список всех сопоставлений между Linux- и SELinux- пользователями:

sudo semanage login -l

Сопоставить Linux-пользователя SELinux-пользователю:

sudo semanage login -a (...)

Изменить сопоставление межд Linux-пользователем и SELinux-пользователем:

sudo semanage -m (...)

Удалить сопоставление между Linux-пользователм и SELinux-пользователем:

sudo semanage -d (...)

Вывод:
Для повышения безопасности системы настройте SELinux, чтобы по умолчанию Linux-пользователи сопоставлялись ограниченным SELinux-пользователям.
Запретите вход пользователю root в систему с использованием OpenSSH и Xwindow. Разрешите пользователю root входить только в крайних случаях, используя терминал. Либо оставьте root сопоставленным SELinux-пользователю unconfined_u или сопоставьте его пользователю sysadm_u (например, если вы решите деинсталлировать модуль SELinux unconfineduser).
Сопоставьте ваших Linux-пользователей наиболее подходящим ограниченным профилям SELinux-пользователей.
Используйте команду useradd и опцию -Z, чтобы добавлять Linux-пользователей, переопределяя сопоставление, определенное по умолчанию, передавая имя SELinux-пользователя в качестве аргумента.

Справка: man semanage, man useradd, man usermod

вторник, июня 23, 2009

rezlooks-pastelblue


как-то наметил себе посмотреть gtk-тему.

собственно я это сделал.

взяв за основу gtk-тему rezlooks-pastelgreen, сотворил себе тему с созвучным названием rezlook-pastelblue.
как и следует из названия в теме основной тон с зеленного сменил на голубой.

скачать тему

тему для metacity пока не совсем осилил, на снимке тема (слегка уже измененная) GiloucheIM

update: за сутки файл с яндекса скачали 15 раз, для интереса опубликовал тему на gnome-look.org

понедельник, июня 15, 2009

про приватность...

навеяло новой возможностью, предлагаемой в firefox 3.5 - Private Browsing (а).

почитал политику конфиденциальности относительно google chrome... и рядом... (б)

что-то как-то не проникся я идеей сокрытия данных от сожителей по квартире (а) с одновременным выкладыванием своего "сетевого портрета" на гугле (б)... прямо как в помутнении у Ф. Дика

решил вопрос для себя установкой отдельного браузера исключительно под сервисы гугла, которыми пользуюсь - почта, читатель и писатель.

поддержал бы "отечественного производителя", но не удобен мне интерфейс яндекса (хотя почтовый ящик основной на нём)

з.ы. к сожалению не имею технической возможности всегда пользоваться так называемыми "оффлайновыми" клиентами потому варианты с тем же тандербирдом отпадают.

план непутина

1. поковырять gtk-тему см. результат
2. научить decibel читать cue-файлы
3. узнать почему он же не умеет читать файлы с '#' в имени

з.ы. куда-нить надо было повесить... забуду.

вторник, июня 09, 2009

How PulseAudio works

как говорится лучше один раз увидеть, чем много раз услышать...

з.ы. согласно комментариям тут это не есть полная архитектура системы... тем не менее... очень наглядно.

понедельник, июня 08, 2009

Decibel & Monkeys

на сегодняшний день основным плеером в Linux у меня является Decibel Audio Player. плюсы, по которым я его выбирал - он играет музыку и делает это хорошо (по большому счету, больше ничего особенного он делать не умеет, да и не собирается - смотрим сайт проекта).
понятие "хорошо" для меня включает - проиграть музыку, показать кто поет, показать обложку (при необходимости поискать её в сети), рассказать об этом last.fm.

комбайны разнообразных коллекций в формате а-ля айТюнс - rhythmbox, amarok, songbird меня не устраивают просто потому, что я не считаю, что это самый дружественный способ показать мою коллекцию музыки. в этом плане меня больше устраивает подход, реализованный в windows media player.
их основной недостаток - напрягает, когда плеер считает, что он лучше меня знает как организована моя коллекция, не даёт объяснить ему, что он всё таки не прав и главное считает своей главной задачей изменять мои файлы и создавать кучу служебных файлов там где это не нужно.
отдельно не нравится, что плеер, претендующий на роль помощника в навигации по музыкальному массиву, реально усложняет это делать. особенно когда музыки много, а плеер сваливает в кучу файлы с неразпознанными тегами. про магию с кодировками (linux vs unicode vs windows) не говорю.

как-то пользовался quodlibet у него был один косяк со съёмным диском, обходимый, но сильно раздражающий...

так или иначе я перешел на decibel. к чему я всё это настучал?

столкнулся я тут недавно с неудобством - decibel делает вид, что не умеет проигрывать файлы формата MonkeysAudio (те, что с расширением APE).
именно делает, так как за проигрывание отвечает gstreamer, а он это делать умеет. метаданные файлов разбирает библиотека mutagen, которая данный тип также понимает.
а посему открываем исходники, далее:

1. по аналогии, например, с файлом ../src/media/flac.py создаем файл ../src/media/monkeysaudio.py следующего содержания:
from mutagen.monkeysaudio  import MonkeysAudio
from media.track.fileTrack import FileTrack

def getTrack(file):
""" Return a Track created from a MonkeysAudio APE file """
track = FileTrack(file)
monkeysAudioFile = MonkeysAudio(file)

track.setLength(int(round(monkeysAudioFile.info.length)))

try: track.setTitle(str(monkeysAudioFile['title'][0]))
except: pass

#и далее по тексту .../flac.py

return track


2. открываем файл ../src/media/__init__.py и в нем:
- в конце 21 строки from format import asf... дописывем ..., monkeysaudio
- в конце 28 строки в словарь добавляем пару '.ape': monkeysaudio, строка должна выглядеть как-то так (одной строкой):
mFormats = {'.flac': flac, '.m4a': mp4, '.mp3': mp3, '.mp4': mp4, '.mpc': mpc,'.ogg': ogg, '.wma': asf, '.ape': monkeysaudio}

3. сохраняем, запускаем, слушаем.

дополнительное неудобство - decibel не разбирает файлы формата CUE Sheet, что бывает неудобно в случаях когда в наличии flac- или ape-файл без тегов и cue-файлом вместо них. подумаю об этом завтра.