iptables를 통해 삭제된 트래픽에 대한 측정항목을 어떻게 얻을 수 있나요?

iptables를 통해 삭제된 트래픽에 대한 측정항목을 어떻게 얻을 수 있나요?

우리는 iptables 방화벽을 사용하고 있습니다. 정의된 규칙에 따라 다양한 패키지를 기록하고 삭제합니다. Iptables 로그 파일 항목은 다음과 같습니다.

2017-08-08T19:42:38.237311-07:00 compute-nodeXXXXX kernel: [1291564.163235] drop-message : IN=vlanXXXX OUT=cali95ada065ccc MAC=24:6e:96:37:b9:f0:44:4c:XX:XX:XX:XX:XX:XX SRC=10.50.188.98 DST=10.49.165.68 LEN=60 TOS=0x00 PREC=0x00 TTL=57 ID=14005 DF PROTO=TCP SPT=52862 DPT=50000 WINDOW=29200 RES=0x00 SYN URGP=0

삭제된 패킷 수를 얻을 수 있는 방법이 있습니까? 마지막 순간, 시간 동안 삭제된 패킷 수와 같은 측정항목을 계산하고 싶습니다. 곧.

주요 목적은 구성 오류 및 보안 취약점을 모니터링하는 것입니다. 방화벽 규칙에 오류가 있으면 갑자기 많은 패킷이 삭제되기 시작합니다. 마찬가지로 공격이 발생하면 거부된 패킷 수가 변경될 것으로 예상됩니다.

답변1

iptables의 각 규칙에는 옵션을 통해 표시할 수 있는 카운터가 있습니다 -v. -x카운터가 매우 큰 경우(예: 1104K) 카운터가 축약되는 것을 방지하기 위해 추가되었습니다 . 예를 들어,

$ sudo iptables -L -n -v -x
Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target prot opt in out source    destination 
   39 22221 ACCEPT udp  --  *  *   0.0.0.0/0  0.0.0.0/0 udp spts:67:68 dpts:67:68
 ...
  182 43862 LOG    all  --  *  *   0.0.0.0/0  0.0.0.0/0 LOG flags 0 level 4 prefix "input_drop: "
  182 43862 REJECT all  --  *  *   0.0.0.0/0  0.0.0.0/0 reject-with icmp-host-prohibited

내 로컬 네트워크에는 삭제된 패킷이 표시되지 않지만 나열된 것과 같은 로그 메시지와 함께 icmp에 의해 182가 거부됩니다. DROP 정책이 포함된 구성의 마지막 두 규칙은 다음과 같습니다.

  -A INPUT -j LOG --log-prefix "input_drop: "
  -A INPUT -j REJECT --reject-with icmp-host-prohibited

모든 체인의 카운터를 0으로 재설정하는 데 사용할 수 있습니다 iptables -Z.


이 수는 iptables 자체에 의해 삭제된 패킷에 적용됩니다. 그러나 정체 등으로 인해 패킷을 삭제하는 다른 필터링 소프트웨어가 있을 수도 있습니다. 그들이 제공하는 통계를 이해하려면 각각을 살펴봐야 합니다. (오래된) netstat프로그램은 iptables에 전달되기 전에도 정체로 인해 이더넷 인터페이스에서 삭제된 패킷 수를 쉽게 표시할 수 있습니다.

$ netstat -i 
Iface      MTU    RX-OK RX-ERR RX-DRP RX-OVR    TX-OK TX-ERR TX-DRP TX-OVR 
enp5s0    1500  1097107      0     38 0       2049166      0      0      0 

다양한 이유로 커널이 다른 곳에서 삭제한 패킷에 대한 일부 통계를 얻을 수도 있습니다.

$ netstat -s | grep -i drop
27 outgoing packets dropped
16 dropped because of missing route
2 ICMP packets dropped because socket was locked

관련 정보