Назад | Перейти на главную страницу

Использование SELinux, чтобы заставить Linux разрешать программам связываться с номерами портов ниже 1024

Есть ли способ в SELinux заставить Linux разрешить программе связываться с номером порта ниже 1024?

Предполагая, что у вас есть соответствующий модуль политики для приложения (назовем ваше приложение «foo»), вы можете сделать одно из двух. Вы либо определяете foo_port_t введите политику, разрешите приложению доступ к ней, например:

allow foo_t foo_port_t:tcp_socket name_bind;

и используйте что-то подобное, чтобы обозначить фактический порт

semanage port -a -t foo_port_t -p tcp 803

Это потребует TCP-порт 803 для вашего приложения. Однако на большинстве портов ниже 1023 уже есть метки, и вы не можете пометить порт, файл и т.д. несколько раз.

Итак, вариант два: вы можете разрешить своему приложению связываться с портом с другой меткой, поместив такие строки в свой модуль политики:

require { 
    type http_port_t;
}

allow foo_t http_port_t:tcp_socket name_bind;

Это позволит вам привязать приложение к любому порту, у которого есть http_port_t (имеется в виду 80, 443, 488, 8008, 8009 и 8443). Вы можете узнать, какую метку имеет порт (803 в этом примере), который вы хотите использовать, с помощью этой команды:

semanage port -l | grep 803

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

Это не SELinux, который не позволяет вашей программе связываться с привилегированными портами, это ядро ​​Linux. Вы можете перенаправить порт с желаемого порта на непривилегированный порт и запустить приложение на непривилегированном порту. Это безопасно и разрешено SELinux.

В нашем магазине и по опыту мы обнаружили, что лучше всего отключить SELinux. Я знаю, что некоторые люди сочли это полезным, а мы - нет.

Мы отключаем все это в / etc / sysconfig / selinux (или / etc / selinux / config) с SELINUX = disabled

Проблемы, с которыми мы столкнулись с SELinux, были настолько многочисленными и вызвали столько лишних часов, что оно того не стоит.