Em muitos exemplos de configuração de firewalld, vejo menção à INPUT
cadeia iptables normal, bem como uma chamada INPUT_direct
.
por exemplo
$ sudo firewall-cmd --direct --add-rule ipv4 filter INPUT_direct 0 \
# etc...
$ sudo firewall-cmd --direct --add-rule ipv4 filter INPUT_direct 1 \
# etc...
Qual é o significado de INPUT_direct
? Devo usá-lo em vez de INPUT
?
E qual é a diferença entre INPUT_direct 0
, INPUT_direct 1
, etc.?
TL;DR:
se regras diretas forem realmente necessárias, use sempre
INPUT
em vez deINPUT_direct
: sempre funcionará.se você não souber qual valor de prioridade usar, apenas aumente o valor de prioridade em um para cada nova regra direta a ser adicionada.
Essa cadeia é (às vezes) usada pela interface de regras diretas do firewalld . Esta interface/recurso permite armazenar regras iptables personalizadas (e sempre iptables mesmo quando o back-end do firewalld é nftables ) usando firewalld e garantir que essas regras sejam as primeiras vistas por qualquer pacote (aqui na
filter
tabela eINPUT
cadeia). Normalmente, você deve usá-lo apenas se algo não puder ser tratado pelo firewalld , incluindo a linguagem avançada do firewalld .E este é um recurso obsoleto :
De qualquer forma, não tenho certeza se foi substituído por políticas para todos os seus usos ...
Igualmente obsoleto é o back-end do iptables . Uma instalação típica em um sistema recente também inclui
/etc/firewalld/firewalld.conf
:firewalld pode usar iptables ou nftables como back-end, mas as regras diretas estão sempre usando iptables . Não há conceito de regra direta nftables , mesmo quando o back-end é nftables : essa é provavelmente uma das razões que tornaram as regras diretas obsoletas.
quando o back-end é iptables
firewalld cria a
INPUT_direct
cadeia e adiciona como primeira regra emINPUT
um saltoINPUT_direct
para que seja sempre a primeira cadeia a ver os pacotes (noINPUT
caminho).qualquer referência a
INPUT
uma regra direta é alterada para uma referência aINPUT_direct
quando o back-end é nftables
Portanto,
INPUT
ele se conecta à prioridade 10 em vez de 0. Isso garante novamente que qualquer coisa que o iptables fizer, o fará primeiroINPUT
é usado.Essa peculiaridade pode ser vista no código python
fw_direct.py
:Em ambos os casos, qualquer coisa criada usando
firewall-cmd --direct --add-rule ipv4 filter INPUT 0
(seguida pela mesma sintaxe que seria fornecida a umiptables
comando sem incluir a tabela e a cadeia) será vista por um pacote antes que o próprio firewalld o veja.Para o valor de prioridade: isso afeta a ordem das regras que você deseja usar caso a ordem seja importante. Se, pela forma como as regras foram escolhidas pelo administrador, uma regra não depende de regras anteriores, então sua prioridade não importa e pode até permanecer a mesma. Para garantir que uma regra seja adicionada após outras regras, aumente sua prioridade: