Рейтинг:1

Как в Fedora настроить selinux, чтобы разрешить порт для нового неопределенного типа службы?

флаг br

У меня есть несколько вещей, которые я хотел бы использовать как серверы в Fedora. Я знаю, что могу запустить хотя бы некоторые из них в подман или же докер но я уже знаю, как это сделать. Я также уже знаю, как разрешить это для существующих служб, таких как ssh если все, что я хочу сделать, это использовать собственный порт через:

порт sudo semanage -a -t ssh_port_t -p tcp 2222

Но моя проблема в том, что selinux уже определяет ssh_port_t тип. Что делать, если у меня есть какое-то пользовательское приложение, которое я не могу или не хочу запускать в контейнере по какой-то причине, как я могу разрешить порт для чего-то, что делает НЕТ иметь уже предопределенный тип в semanage порт --list?

В этом примере предположим, что я пытаюсь запустить /path/myNiftyGameServer и хочу разрешить ему подключаться к порту udp 12345 (который в настоящее время не используется в моей системе). Как я могу это сделать?

Что касается фона, я не претендую на звание гуру, но я чувствую себя относительно опытным в bash и Linux в целом, но я все еще очень новичок, когда дело доходит до SELinux (я знаю о ярлыках, восстановитькон, и некоторые основные управлять команды, но я все еще учусь).

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

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

Редактировать 2: после некоторого времени, чтобы прочитать их полностью, ссылка на Starbound, похоже, не то, что мне нужно; единственная политика SELinux написана для отдельного сервера Apache (Apache уже определен), а не для игрового сервера. Солдат кажется очень близким к тому, что я ищу, но я думаю, что мне нужен учебник по написанию политики, чтобы добраться туда. В частности, меня действительно интересует только то, как открыть порт для пользовательского сервера/веб-сервиса. Настройка доступа к пути к файлу тоже звучит неплохо, но я могу управлять этим с помощью учетных записей пользователей, тогда как даже если я открою сетевой порт в firewall-cmd (firewalld), он все равно будет заблокирован SELinux, если я не ошибаюсь (я знаю, что у меня было это проблема в прошлом, но я полагаю, что могу перепроверить, чтобы быть уверенным).

Рейтинг:1
флаг jp

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

Так что ваши мойNiftyGameServer будет работать в неограниченном домене тем не мение по умолчанию — если вы хотите ужесточить его, вам нужно либо запустить его в контейнере, либо написать определенную политику.

Вот почему вы не можете найти простой способ просто добавить случайный тип порта... это было бы не очень полезно.

Существует достойное краткое руководство по созданию пользовательской политики для демона в RHEL 8 Документы

флаг br
Только что проверил это, и вы, конечно, правы. Спасибо за исправление моего заблуждения, а также за ссылку.

Ответить или комментировать

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