iptables 규칙에서 패킷을 기록하고 삭제할 수 있습니까?

iptables 규칙에서 패킷을 기록하고 삭제할 수 있습니까?

나는 현재 다음을 가지고 있습니다꼭두각시 방화벽설정:

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

결과적으로 다음과 같은 규칙이 발생합니다.

$ 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

패킷 로깅에 대한 일반적인 솔루션은 각 소스 체인에 대해 별도의 로그 체인을 생성하고 해당 체인으로 점프하는 것 같지만, 이는 최소한 규칙 세트의 복잡성을 두 배로 늘리고 논리를 따르기가 더 어렵게 만듭니다. 그러므로:패킷을 삭제한 동일한 규칙으로 패킷을 기록할 수 있습니까?

답변1

iptables "LOG" 확장자를 사용하는 해결 방법이 있습니다. 에서 man 8 iptables-extensions:

이는 "비종료 대상"입니다. 즉, 규칙 순회는 다음 규칙에서 계속됩니다. 따라서 거부한 패킷을 기록하려면 동일한 일치 기준을 가진 두 개의 별도 규칙을 사용하십시오. 먼저 대상 LOG와 DROP(또는 REJECT)을 사용하십시오.

꼭두각시에서:

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,
}

아니면 간단하게 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

매우 깨끗하지는 않지만 최소한 단순합니다.

관련 정보