Como obter métricas sobre queda de tráfego via iptables?

1

Estamos usando o firewall iptables. Está registrando e soltando vários pacotes dependendo de suas regras definidas. As entradas do arquivo de log do Iptables se parecem com:

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

Existe alguma maneira de obter a contagem dos pacotes descartados? Eu quero calcular métricas como o número de pacotes descartados no último minuto, hora…. em breve.

O objetivo principal é monitorar erros de configuração e violações de segurança. Se as regras do firewall tiverem um erro, um grupo abrupto de pacotes começa a ser descartado. Da mesma forma, se um ataque está acontecendo, esperamos variação no número de pacotes negados.

    
por Hakan Baba 09.08.2017 / 08:00

1 resposta

2

Existem contadores para cada regra no iptables, que podem ser mostrados com a opção -v . Adicione -x para evitar que os contadores sejam abreviados quando forem muito grandes (por exemplo, 1104K). Por exemplo,

$ 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

não mostra pacotes descartados em minha rede local, mas 182 rejeitados com icmp e uma mensagem de log como a que você listou. As duas últimas regras na configuração com uma política de DROP foram

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

Você pode zerar os contadores de todas as cadeias com iptables -Z .

Estas contagens são para os pacotes que o iptables caiu. Contudo, pode haver outro software de filtragem que também esteja descartando pacotes congestionamento, por exemplo. Você precisa olhar para cada um por qualquer estatísticas que eles fornecem. O programa (obsoleto) netstat pode mostrar facilmente as contagens de pacotes que foram descartados na interface ethernet devido ao congestionamento antes mesmo de serem entregues ao 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 

e você também pode obter algumas estatísticas em pacotes descartados em outro lugar pelo kernel por várias razões:

$ netstat -s | grep -i drop
27 outgoing packets dropped
16 dropped because of missing route
2 ICMP packets dropped because socket was locked
    
por 09.08.2017 / 10:07