Я хочу создать правило с использованием firewalld, которое использует критерии имени пользователя или идентификатора пользователя и, возможно, еще один критерий модуля.
В iptables, я думаю, вы можете делать такие вещи, как
iptables -A OUTPUT -m owner --uid-owner <UID> -j ACCEPT
(и вы можете добавить другие -m модули или -p протоколы к той же команде)
Но я читал firewall-cmd
справочная страница и я не могу найти, как составить такое же правило. Даже «богатые правила», похоже, не имеют такой поддержки. Обязательно ли использовать «прямую» функцию? Я не совсем понимаю его синтаксис. Особенно меня беспокоит, что эти ничего не возвращают!
firewall-cmd --direct --get-chains ipv4 filter
firewall-cmd --direct --get-rules ipv4 filter OUTPUT
firewall-cmd --direct --get-rules ipv4 filter INPUT
Конечно iptables -L
показывает, что у меня есть эти таблицы, цепочки и правила.
Итак, как мне добавить постоянный правило с владельцем и, может быть, еще один критерий с использованием firewalld?
Вам не нужно добавлять или даже иметь собственные прямые цепочки (хотя вы можете, если хотите получить действительно сложно. Просто добавьте напрямую в существующие цепочки.
После версии IP, таблицы, цепочки и приоритета вы просто указываете соответствующие параметры iptables:
firewall-cmd --permanent --direct --add-rule ipv4 filter OUTPUT 0 \
-m owner --uid-owner $UID -j ACCEPT
Ниже, в iptables, это будет фактически добавлено в управляемую firewalld цепочку с именем OUTPUT_direct, которая вызывается из цепочки OUTPUT.