iptables para monitoramento de tráfego

2

Eu tenho regras como esta no meu IPTABLES:

-A INPUT -s 166.100.102.50/32 -j LOG - nível de log 7

e eu escrevi um script que pega a saída dessas regras e gera os bytes do IP para o meu servidor.

Eu esperava receber sugestões sobre como criar regras que rastreiam o tráfego IP de sub-redes de dispersantes. O endereço IP não é fixo e nem as sub-redes são fixas. Por exemplo:

120.2.33.45 pode ser o endereço IP do dispositivo em um dia e 204.65.3.88 pode ser o endereço IP do mesmo dispositivo no dia seguinte.

Eu acho que se houvesse uma maneira de escrever a regra para que ela me desse o endereço IP de tudo, exceto um intervalo de endereço IP que fosse fixo, como 166.100.102.50, então eu estaria bem.

Algo como:

-A INPUT -s NÃO IGUAL 166.100.102.50/32 -j LOG - nível de log 7

Obrigado antecipadamente

    
por rahrahruby 09.01.2013 / 00:16

2 respostas

6

Você queria (ver o ! ):

iptables -A INPUT ! -s 166.100.102.50/32 -j LOG --log-level 7

Isso corresponderá a tudo com o endereço de origem NÃO 166.100.102.50.

De man iptables

   [!] -s, --source address[/mask][,...]
          Source specification. Address can be either a  network  name,  a
          hostname,  a  network  IP  address  (with  /mask), or a plain IP
          address. Hostnames will be resolved once only, before  the  rule
          is  submitted  to  the  kernel.  Please note that specifying any
          name to be resolved with a remote query such as DNS is a  really
          bad idea.  The mask can be either a network mask or a plain num‐
          ber, specifying the number of 1's at the left side of  the  net‐
          work  mask.   Thus, a mask of 24 is equivalent to 255.255.255.0.

Aqui começa a parte relevante:

          A "!" argument before  the  address  specification  inverts  the
          sense  of  the  address.  The  flag  --src  is an alias for this
          option.  Multiple addresses can  be  specified,  but  this  will
          expand  to  multiple  rules (when adding with -A), or will cause
          multiple rules to be deleted (with -D).
    
por 09.01.2013 / 00:25
4

Você pode descobrir que construir uma cadeia aqui tornará as coisas muito mais fáceis de trabalhar.

Uma cadeia é basicamente como uma sub-tabela. Você envia coisas para ele e pode retornar ou processar coisas dentro dessa cadeia.

-t INPUT -N LOGME
# return stuff, that we don't want to handle
-A LOGME -s 166.100.102.50/32 -j RETURN
-A LOGME -s 192.168.27.0/24 -j RETURN
# log everything that hasn't been returned
-A LOGME -j LOG --log-level 7

Outra opção é criar e usar um ipset , que basicamente permite criar um conjunto de endereços , que você pode referenciar em uma regra usando a opção --match-set .

    
por 09.01.2013 / 00:32

Tags