Как использовать команду Semanage для политики SELinux |

Как использовать команду Semanage для политики SELinux

Мануал

Semanage – это инструмент, используемый для настройки определенных элементов политики SELinux без изменения или перекомпиляции источников политик.

Он включает в себя сопоставление имен пользователей Linux с пользовательскими идентификаторами SELinux и сопоставлениями контекста безопасности для таких объектов, как сетевые порты, интерфейсы и хосты.

По умолчанию SELinux позволяет только известным службам связываться с известными портами.

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

В этой статье мы рассмотрим команду semanage и узнаем, как перечислить, создать/добавить и удалить типы портов в RPM-дистрибутивах, таких как CentOS и RedHat.

Перечисление портов с помощью Semanage

Основная команда для перечисления всех портов

 # semanage port -l
SELinux Port Type Proto Port Number

afs3_callback_port_t tcp 7001
afs3_callback_port_t udp 7001
afs_bos_port_t udp 7007
afs_fs_port_t tcp 2040
afs_fs_port_t udp 7000, 7005
afs_ka_port_t udp 7004
afs_pt_port_t tcp 7002
afs_pt_port_t udp 7002
... 

Чтобы указать номера портов определенного порта, например http, используйте следующую команду:

 # semanage port -l | grep -w http_port_t

http_port_t tcp 80, 81, 443, 488, 8008, 8009, 8443, 9000 

Аналогично для mysqld

 # semanage port -l | grep -w mysqld_port_t

mysqld_port_t tcp 1186, 3306, 63132-63164 

Чтобы найти имена портов с определенным номером порта, используйте следующую команду:

# semanage port -l | grep 53

apertus_ldp_port_t tcp 539
apertus_ldp_port_t udp 539
dns_port_t tcp 53
dns_port_t udp 53

Создание или добавление портов с помощью Semanage

В этом примере мы создадим новый порт для http и назначим его на tcp-порт 2222.

Параметр -a заключается в добавлении нового порта, опция -t указывает тип SELinux, а параметр -p – указать протокол (в этом случае tcp).

 #  semanage port -a -t http_port_t -p tcp 2222 

для просмотра вновь созданного порта мы используем команду  list с параметром -C для отображения только настроек.

  # semanage port -lC 

Номер и тип порта SELinux

 http_port_t tcp 2222 

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

# semanage port -a -t http_port_t -p tcp 2223-2225 

Теперь мы видим диапазон портов:

 # semanage port -lC
SELinux Port Type Proto Port Number

http_port_t tcp 2223-2225

Если вы попытаетесь добавить еще одну запись с теми же значениями, что и раньше, вы получите ошибку:

ValueError: Port tcp/2222 already defined

Чтобы переопределить существующий порт, который уже был создан, используйте параметр -m для изменения:

# semanage port -m -t unreserved_port_t -p tcp 2222

Теперь, если мы перечислим все порты, мы увидим изменение:

 # semanage port -lC
SELinux Port Type Proto Port Number

unreserved_port_t tcp 2222

Удаление портов с помощью Semanage

Мы используем опцию -d для удаления записи порта. Чтобы удалить unreserved_port_t на tcp-порту 2222, мы используем команду:

 # semanage port -d -t unreserved_port_t -p tcp 2222 

Чтобы удалить диапазон портов, используйте команду:

 # semanage port -d -t http_port_t -p tcp 2223-2225

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

Использование Semanage-Permmissive

Эта способность Semanage используется для добавления или удаления разрешающих модулей политики SELinux.

Чтобы перечислить все разрешающие модули, используйте параметр -l:

 # semanage permissive -l

Customized Permissive Types

Builtin Permissive Types

sanlk_resetd_t
hsqldb_t
systemd_hwdb_t
blkmapd_t
ipmievd_t
targetd_t

Чтобы создать httpd_t разрешающий домен, используйте параметр -a:

 # semanage permissive -a httpd_t 

Теперь давайте проверим все разрешительные модули:

 # semanage permissive -l

Customized Permissive Types

httpd_t

Builtin Permissive Types

sanlk_resetd_t
hsqldb_t
systemd_hwdb_t
blkmapd_t
ipmievd_t

Чтобы удалить permissive , который мы только что создали, мы используем параметр -d.

 # semanage permissive -d httpd_t

libsemanage.semanage_direct_remove_key: Removing last permissive_httpd_t module (no other permissive_httpd_t module exists at another priority). 

В этой статье мы увидели, как перечислить, добавить и удалить порты, используя инструмент semanage для дистрибутивов Linux на основе RPM.

Если ваша система имеет графический интерфейс, вы можете установить пакет policycoreutils-gui через yum, а затем запустить команду system-config-selinux, чтобы открыть версию графического интерфейса пользователя и настроить типы портов SELinux в меню «Network port».

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий