Со мной произошла одна версия этого, во всяком случае, достаточно похожая для поиска в Интернете. Я не изменял контекст MLS, но у меня были странные ошибки, например, где это было недействительным, как в исходном вопросе здесь:
libsemanage.validate_handler: MLS range s0-s0:c0.c1023 for Unix user elflord exceeds allowed range s0 for SELinux user sysadm_u (No such file or directory).
libsemanage.validate_handler: seuser mapping [elflord -> (sysadm_u, s0-s0:c0.c1023)] is invalid (No such file or directory).
libsemanage.dbase_llist_iterate: could not iterate over records (No such file or directory).
Это было из-за запуска semodule [-i|-B
и особенно сбивало с толку с -i
, когда модуль не упоминал sysadm_u
.
Причиной была ранее (и несвязанная -ly )попытка добавить роль к sysadmn_u
вот так:
semanage user -m -R webadm_r sysadm_u
Страница руководства неоднозначно описывает функциональность -R
с -m
, но, очевидно, она не изменяет в смысле добавления роли, а заменяет их:
> seinfo -u sysadm_u -x
Users: 1
user sysadm_u roles webadm_r level s0 range s0;
Упс, sysadm_r
пропал. Это также означало, что elflord
не мог войти в систему, по крайней мере, через ssh:Unable to get valid context for elflord
отправляется по сети.
Более того, хотя я и не оговаривал -r
, для него установлено минимальное значение level s0 range 0
, что больше всего беспокоит текст ошибки.
Исправление заключалось в повторной модификации пользователя, включая исходную роль (s )и диапазон :
.semanage user -m -R { sysadm_r webadm_r } sysadm_u -r s0-s0:c0.c1023
Вот три способа «без использования IPTables или firewalld». Я также работал с IPv6, когда это было легко.
Traffic Control:tc
:возможно, любая версия CentOS, даже EOL
Требуется заранее знать имя исходящего интерфейса (и, следовательно, способ маршрутизации ). Допустим, интерфейс, который будет использоваться для исходящего трафика, называется eth0
. Вы можете использовать команду tc
, чтобы добавить фильтр на интерфейс. Фильтры могут быть добавлены только к классовым дисциплинам, поэтому для этой цели добавляется «фиктивный» классовый qdisc, чьи собственные свойства здесь не будут использоваться:prio .
tc qdisc add dev eth0 root handle 1: prio
tc filter add dev eth0 parent 1: pref 1 protocol ip basic match '
(cmp (u8 at 9 layer network eq 6) or cmp (u8 at 9 layer network eq 17)) and
cmp(u16 at 2 layer transport eq 53)' action drop
'
tc filter add dev eth0 parent 1: pref 2 protocol ipv6 basic match '
(cmp (u8 at 6 layer network eq 6) or cmp (u8 at 6 layer network eq 17)) and
cmp(u16 at 2 layer transport eq 53)' action drop
'
примечания:
Это не будет обнаружено локальным приложением.
nftables:nft
. CentOS 7 или 8
Даже ядро CentOS 7 3.10 получило портированную версию nftables . Просто добавьте эквивалент iptables с nftables . Таблица семейства inet обрабатывает одновременно IPv4 и IPv6.
nft add table inet t
nft add chain inet t output '{ type filter hook output priority 0; policy accept; }'
nft add rule inet t output udp dport 53 drop
nft add rule inet t output tcp dport 53 drop
Неясно, будет ли локальное приложение обнаруживать ошибку из-за этих правил.
Также повлияет на локальные соединения локальной системы с самой собой, если не будет добавлено исключение.
политика маршрутизации:ip rule
. CentOS 8 только потому, что для этого требуется ядро >= 4.17
Более новые ядра также могут использовать порты для соответствия правилам маршрутизации. Так что просто используйте правила, которые отбрасывают что-либо на udp-порт 53 и tcp-порт 53 вместо маршрутизации.
ip rule add ipproto udp dport 53 blackhole
ip rule add ipproto tcp dport 53 blackhole
ip -6 rule add ipproto udp dport 53 blackhole
ip -6 rule add ipproto udp dport 53 blackhole
Это будет перехвачено локальным приложением с EINVAL (, как описано в...ip route(8)
). Изменение типа «отключения» сети может изменить ошибку и, следовательно, поведение (, например, :с черная дыра на запрет).
Не повлияет на локальные соединения от системы к самой себе (, чья локальная оценка маршрута происходит раньше, с приоритетом 0 ).