LINUX.ORG.RU

Как бороться с SELinux в Fedora

 , ,


3

1

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

Вопрос, отчасти риторический: как бороться с SELinux в Fedora 25?

http://ix.io/rS7

апр 26 20:19:59 caterpillar-laptop setroubleshoot[18024]: failed to retrieve rpm info for /var/log/journal/71b5325e2d2e4868a4de64757e1e1a93/user-1000.journal
апр 26 20:20:00 caterpillar-laptop setroubleshoot[18024]: SELinux is preventing /usr/lib/systemd/systemd-journald from 'read, write' accesses on the file /var/log/journal/71b5325e2d2e4868a4de64757e1e1a93/user-1000.journal. For complete SELinux messages. run sealert -l 67b2428e-ea3e-4bc4-871f-0ba3274923c8
апр 26 20:20:00 caterpillar-laptop python3[18024]: SELinux is preventing /usr/lib/systemd/systemd-journald from 'read, write' accesses on the file /var/log/journal/71b5325e2d2e4868a4de64757e1e1a93/user-1000.journal.

<...>

апр 26 20:20:11 caterpillar-laptop nm-openvpn[18168]: OpenVPN 2.4.1 x86_64-redhat-linux-gnu [SSL (OpenSSL)] [LZO] [LZ4] [EPOLL] [PKCS11] [MH/PKTINFO] [AEAD] built on Mar 28 2017
апр 26 20:20:11 caterpillar-laptop nm-openvpn[18168]: library versions: OpenSSL 1.0.2k-fips  26 Jan 2017, LZO 2.08
апр 26 20:20:11 caterpillar-laptop nm-openvpn[18168]: WARNING: No server certificate verification method has been enabled.  See http://openvpn.net/howto.html#mitm for more info.
апр 26 20:20:11 caterpillar-laptop audit[18168]: AVC avc:  denied  { open } for  pid=18168 comm="openvpn" path=2F686F6D652F636174657270696C6C61725F74726163746F722FD094D0BED0BAD183D0BCD0B5D0BDD182D18B2FD0BAD0BBD18ED187D0B82F636174657270696C6C61722D6C6170746F702E637274 dev="sda4" ino=266419 scontext=system_u:system_r:openvpn_t:s0 tcontext=unconfined_u:object_r:user_home_t:s0 tclass=file permissive=0
апр 26 20:20:11 caterpillar-laptop nm-openvpn[18168]: NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
апр 26 20:20:11 caterpillar-laptop nm-openvpn[18168]: OpenSSL: error:0200100D:system library:fopen:Permission denied
апр 26 20:20:11 caterpillar-laptop nm-openvpn[18168]: OpenSSL: error:2006D002:BIO routines:BIO_new_file:system lib
апр 26 20:20:11 caterpillar-laptop nm-openvpn[18168]: OpenSSL: error:140AD002:SSL routines:SSL_CTX_use_certificate_file:system lib
апр 26 20:20:11 caterpillar-laptop nm-openvpn[18168]: Cannot load certificate file /home/caterpillar_tractor/Документы/ключи/caterpillar-laptop.crt
апр 26 20:20:11 caterpillar-laptop nm-openvpn[18168]: Exiting due to fatal error
апр 26 20:20:11 caterpillar-laptop NetworkManager[779]: <info>  [1493227211.9228] vpn-connection[0x557936190510,386b3657-01c2-4e7d-be5d-98d5c495bca6,"VPN 1",0]: VPN service disappeared

Почему journald нельзя писать в логи и почему openvpn нельзя читать файлы ключей?

Федора 25, обновлённая штатным способом с 23 -> 24 -> 25. Догадываюсь, что первое исправляется релейбелом (хотя отдельный вопрос — почему вообще требуется ручное вмешательство в штатной ситуации), а второе?

★★★★★

почему openvpn нельзя читать файлы ключей?

Лежат не там, где надо?

Deleted ()
Ответ на: комментарий от sanwashere

Главное - после создания .cert restorecon на нём выполнить не забыть.

sanwashere ★★ ()

про journald надо смотреть, а про сертификаты - это да, известная фишка. Ключи надо хранить в правильных местах а не в Загрузки/New folder/tmp/

alpha ★★★★★ ()
Ответ на: комментарий от alpha

Ключи надо хранить в правильных местах а не в Загрузки/New folder/tmp/

А откуда пользователь должен об этом узнать? Я вот не знал. Человек с федорой — тем более.

intelfx ★★★★★ ()
Ответ на: комментарий от intelfx

Если прочитать сообщение об ошибке которое во всплывающем окошке вылезет или тот самый sealert, то там пишут.

alpha ★★★★★ ()
Ответ на: комментарий от intelfx

По-моему да. Там предлагают три варианта решения проблемы, один из них должен быть про ~/.certs, остальные про кастомные модули.

Но, по-честному, давно не проверяла.

alpha ★★★★★ ()

Почему journald нельзя писать в логи и почему openvpn нельзя читать файлы ключей?

бгг я как-то на федоре (более ранней, года 3 назад) цеплял всякие проги к LDAP. так вот, по мнению федориных policy-писателей почти никаким демонам никуда нельзя (в смысле обращаться, скажем цепляться к порту slapd). Вот такое она, федорина горе.
Да, еще они любят в рядовом официальном апдейте сломать полиси так, что ломается скажем... апдейт системы! и после починки пакета надо наколенными скриптами (апдейтнуться то ведь нельзя!) чинить всё это дело.
Короче, вот.

mos ★★☆☆☆ ()
Ответ на: комментарий от Deleted

Удалить к чертям религия не позволяет?

починил

anonymous ()
Ответ на: комментарий от alpha

Хорошо, если так. Но я в том логе вообще не увидел никакой реакции setroubleshoot'а и его GUI на проблему с сертификатами. Надо было подождать больше?

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

Она не в логе. Setroubleshoot это отдельное приложение и алерт он в гуи выдает.

Для логов там есть утилита audit2why которую надо отдельно запускать. Тогда она ту же инфу в консоль напишет.

alpha ★★★★★ ()
Ответ на: комментарий от intelfx

Селинукс штука немного специфичная и требует чуть больше дисциплины и порядка. :)
Почитать толковую литературу, которой в интернет сейчас уже навалом. https://wiki.centos.org/HowTos/SELinux например, но есть статьи где само устройство разобрано более подробно.
Сделать алиасы для ps и ls с ключём -Z. Поначалу непривычно, а потом даже нравится.
Забыть про mv, а пользоваться cp + rm, чтобы контекст файлам не попортить.
Забыть про копипасту из интернетовских хаутушек. Там обычно очень небрежно по части расположения файлов.
Потихоньку подружиться с getsebool, setsebool, audit2why, audit2allow, semanage, chcon.
К тому же есть пермиссив режим.
Часто для локализаии проблемы хватает ls -Z, getsebool -a | grep, да audit2why по логу аудита.

imul ★★★★★ ()
Ответ на: комментарий от smilessss

Если ты задаёшь этот вопрос, то тебе он точно не нужен. Иди в новости и там флуди «шерето».

imul ★★★★★ ()
Ответ на: комментарий от alpha

Ну посмотри в лог по ссылке. Там какое-то приложение дампит в лог варианты исправления для проблемы с journald. Ничего подобного для проблемы с сертификатами там нет. Человек тоже говорит, что никаких предупреждений, пояснений или вообще чего-либо насчёт SELinux не возникает, просто «ошибка соединения».

intelfx ★★★★★ ()
Ответ на: комментарий от intelfx

Ну начинается. Если ты домохозяйка то у тебя будет уведомление от sealert с красивым красненьким восклицательным знаком. Если ты админ, то у тебя есть fedora guide или гугл, в котором находится audit2why

А если ты гибрид, то только страдать :)

alpha ★★★★★ ()
Ответ на: комментарий от imul

Вопрос даже не в этом. Я бы, скорее всего, разобрался (хотя непрозрачность происходящего, честно говоря, меня существенно удивляет).

Вопрос в следующем: как об этом должна была узнать моя подруга, которой я без задней мысли скинул архив .key/.crt со словами «распакуй архив, создай OpenVPN-подключение в настройках сети и пропиши файлы, когда о них спросят»?

alpha

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от alpha

Стоковая федора, вообще никакого напильника не прикладывали. Но я проверю.

В любом случае, спасибо за хинты, будем разбираться, что не так конкретно у нас и репортить по результатам. Кстати, как там вызывается «универсальная команда починки SELinux» (которая «relabel всего вообще всего»)?

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 3)
Ответ на: комментарий от Deleted

Ну уведомление все равно должно быть

alpha ★★★★★ ()
Ответ на: комментарий от Deleted

А если, например, у юзера отсутствует пресловутый каталог ~/.cert, оно его тоже пересоздаст/восстановит? Или нужно делать cp -aT /etc/skel ~?

Кстати (вложенный вопрос), как скопировать файлы вместе с их имеющимися метками? Просто cp -a сработает?

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от intelfx

оно его тоже пересоздаст/восстановит?

Нет, оно только восстановит у существующих файлов/каталогов согласно политикам.

Просто cp -a сработает?

Если верить man'у cp, то да.

Deleted ()
Ответ на: комментарий от anonymous

С этого места поподробнее. Гуй NM'а умеет импортировать обычные *.ovpn (которые тупо конфиги OVPN) с inline-сертификатами и ключами, как клиент для iOS? Мы об одном и том же говорим?

intelfx ★★★★★ ()
Ответ на: комментарий от anonymous

Кто бы мог подумать. Спасибо, попробую.

intelfx ★★★★★ ()
Ответ на: комментарий от intelfx

Подруга наверное никак, особенно если с администрированием она никак не связана. Поэтому пусть переключает в пермиссив режим. В нём будет всё работать. Селинукс продолжит ругаться, но хотя бы не будет блокировать.
Не так уж там непрозрачно, как кажется невооружённым взглядом. Но, без чтения документации в селинуксе, увы, никак. Федору давно уже не видел в графическом режиме. Можно было надеяться конечно, что к траблшутеру прикрутят какие-нибудь кнопки типа «разрешить», «запретить», «создать правило» и т.д. аля файрволл в виндос. Тогда далёким от селинукса людям было бы удобнее. И ещё... В шапочных дистрибутивах хотя бы правила есть. В других дистрибутивах правил нет и для половины компонент системы, приходится самому генерировать недостающие и переделывать существующие.

imul ★★★★★ ()
Ответ на: комментарий от intelfx

А если, например, у юзера отсутствует пресловутый каталог ~/.cert, оно его тоже пересоздаст/восстановит?

Нет, restorecon чинит только контекст у того что есть.

как скопировать файлы вместе с их имеющимися метками?
Просто cp -a сработает?

Да. Без -a установится контекст по месту назначения. C -a останется текущий контекст. Но, лучше копировать без -a чтобы контекст был по месту назначения.
$ ls -Z .bash_history
system_u:object_r:user_home_t .bash_history
$ cp .bash_history /tmp
$ ls -Z /tmp/.bash_history
system_u:object_r:user_tmp_t /tmp/.bash_history
$ cp -a .bash_history /tmp
$ ls -Z /tmp/.bash_history
system_u:object_r:user_home_t /tmp/.bash_history

imul ★★★★★ ()
Ответ на: комментарий от imul

Понял, благодарю за ликбез :)

Можно было надеяться конечно, что к траблшутеру прикрутят какие-нибудь кнопки типа «разрешить», «запретить», «создать правило» и т.д. аля файрволл в виндос.

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

intelfx ★★★★★ ()
Последнее исправление: intelfx (всего исправлений: 1)
Ответ на: комментарий от Deleted

Ну, весь линукс - концлагерь, в таком случае

Deleted ()
Ответ на: комментарий от intelfx

А откуда пользователь должен об этом узнать? Я вот не знал. Человек с федорой — тем более.

Что ты этим хотел сказать? Выглядит так, как-будто человек с федорой это низшая каста мудаков, которая не читает документацию потому, что читать вообще не умеет.

Из разряда - почему мир крутится вокруг солнца а не вокруг меня.

anonymous ()
Ответ на: комментарий от anonymous

Человек с федорой в данном случае — это конкретный человек с федорой, который ни разу не админ и у которого ВНЕЗАПНО не заработал OVPN.

intelfx ★★★★★ ()
Ответ на: комментарий от intelfx

Я бы, скорее всего, разобрался (хотя непрозрачность происходящего, честно говоря, меня существенно удивляет).

Это ты ещё PAM (видимо) не пробовал отлаживать. Для всяких security framework это в порядке вещей запрятать диагностику так чтобы никто ничего не понял или не сделать её вообще, хоть самостоятельно printf в исходники добавляй. SELinux+auditd это ещё читабельно и понятно, относительно. У тебя отлично видно в логе что vpn полез в user_home_t и там получил по рукам на open(2), что абсолютно правильно, так как демон vpn работает из confined домена.

d_a ★★★★★ ()
Ответ на: комментарий от intelfx

А откуда пользователь должен об этом узнать? Я вот не знал. Человек с федорой — тем более ... который ни разу не админ

А на фига пользователю такая радость на десктопе?

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

fornlr ★★★★★ ()
Последнее исправление: fornlr (всего исправлений: 1)
Ответ на: комментарий от fornlr

На десктопе - не зачем.

То есть это нормально если процесс vpn или tor или любой другой которым я сижу в интернет может читать, писать, запускать, ... произвольные файлы на диске? То же самое насчёт процесса plugin-container в лисе, это же достаточно десктопно?

d_a ★★★★★ ()
Ответ на: комментарий от d_a

Ты не теорию, а практику.

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

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

fornlr ★★★★★ ()
Последнее исправление: fornlr (всего исправлений: 1)
Ответ на: комментарий от fornlr

Ты не теорию, а практику.

Вот недавно бабахнул гстример с превьюшками, ну и где этот селинукс был?

Тумбнайлеры из своих доменов запускаются http://danwalsh.livejournal.com/54092.html и работают в thumb_t который confined и также получат по рукам, как и ovpn.

А я повторяю вопрос -- это нормально если процесс vpn или tor или любой другой которым я сижу в интернет может читать, писать, запускать, ... произвольные файлы на диске? То же самое насчёт процесса plugin-container в лисе, это же достаточно десктопно?

d_a ★★★★★ ()
Ответ на: комментарий от imul

Из опыта использования selinux и написания политик могу сказать, что в selinux всё зависит от того что понаписали авторы дистрибутива. И если авторы косячат, вылезает множество проблем. Поэтому я бы или использовал только свои политики и не использовал дистрибутивные в enforced, или всегда гонял в permissive. audit2why и audit2allow в большинстве ситуаций или бесполезны или вредны (так как предлагают небезопасное или неработоспособное решение). Если есть желание заставить это нормально работать, нужно вникать в правила и писать свои. Дистрописатели вам хорошо не сделают. Иначе лучше просто сидеть в permissive. Однако самые частые проблемы - это доступ к файлам, диагностируется по ls -Z, исправляются через правку конфига и restorecon. Также невозможность переключения контекста с одного в другой, леится правкой конфигов. Не надо лезть с audit2why или audit2allow, надо понимать что значит ошибка. Это самое трудное если политику пишешь не сам. После этого вонсятся исправления и всё становится зашибись. Но selinux ради selinux, как это принято в Fedora и RHEL гонять не советую - без явной мотивации оно в итоге достанет настолько, что будет выключено. Лучше сразу время потратить и настроить так, чтобы оно не мешало, а делало полезное дело. Или сразу выкинуть.

slapin ★★★★★ ()
Ответ на: комментарий от fornlr

Что там написано мне непонятно абсолютно, а единственная ссылка https://scarybeastsecurity.blogspot.in/2016/11/0day-poc-risky-design-decision... у меня не грузится.

Tracker работает в unconfined, да. (То есть вообще без MAC.) В этом претензия?

d_a ★★★★★ ()
Последнее исправление: d_a (всего исправлений: 1)
Ответ на: комментарий от slapin

Хорошая копипаста. Но, прошлый пример «неправильной» работы audit2why показал, что с ней-то не всё настолько однозначно, как ты это заявляешь. Первым делом она сообщила про проблемы из-за неверного контекста. А дальше уже голова не только для того, чтобы в неё есть.

imul ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.