Posso logar e soltar um pacote em uma regra iptables?

1

Atualmente, tenho a seguinte configuração Firewall de marionetes :

firewall { '100 drop insecure outgoing HTTP traffic':
  chain  => 'OUTPUT',
  dport  => 80,
  proto  => tcp,
  action => reject,
}

resultando na seguinte regra:

$ sudo iptables --list-rules OUTPUT | grep ^-A
-A OUTPUT -p tcp -m multiport --dports 80 -m comment --comment "100 drop insecure outgoing HTTP traffic" -j REJECT --reject-with icmp-port-unreachable

Parece que uma solução comum para registrar pacotes é criar cadeias de log separadas para cada cadeia de origem e ir até elas, mas isso pelo menos dobraria a complexidade desse conjunto de regras e tornaria mais difícil seguir a lógica. Por isso: É possível registrar o pacote na mesma regra que o elimina?

    
por l0b0 04.03.2017 / 22:25

1 resposta

1

Existe uma solução alternativa usando a extensão iptables "LOG". De man 8 iptables-extensions :

This is a "non-terminating target", i.e. rule traversal continues at the next rule. So if you want to LOG the packets you refuse, use two separate rules with the same matching criteria, first using target LOG then DROP (or REJECT).

Em fantoches:

firewall { '100 log insecure outgoing HTTP traffic':
  chain => 'OUTPUT',
  dport => 80,
  proto => tcp,
  jump  => 'LOG',
} ->
firewall { '101 drop insecure outgoing HTTP traffic':
  chain  => 'OUTPUT',
  dport  => 80,
  proto  => tcp,
  action => reject,
}

Ou simples iptables :

$ sudo iptables --list-rules OUTPUT | grep ^-A
-A OUTPUT -p tcp -m multiport --dports 80 -m comment --comment "100 log insecure outgoing HTTP traffic" -j LOG
-A OUTPUT -p tcp -m multiport --dports 80 -m comment --comment "101 drop insecure outgoing HTTP traffic" -j REJECT --reject-with icmp-port-unreachable

Não super clean, mas pelo menos é simples.

    
por 04.03.2017 / 22:54