Como alimentar regras iptables com uma lista de endereços IP em um arquivo de texto

1

Existe um módulo onde eu posso alimentar iptables regras com endereços IP de um arquivo de texto simples?

Exemplo: Eu criei um conjunto de regras personalizadas iptables-restore com a seguinte cadeia personalizada para permitir endereços IP relacionados ao WhatsApp:

    :_WHATSAPP_ - [0:0]
    -A _WHATSAPP_ -j ACCEPT
    -A FORWARD -s <src_host> -d 31.13.64.51/32 -j _WHATSAPP_
    -A FORWARD -s <src_host> -d 31.13.65.49/32 -j _WHATSAPP_
    -A FORWARD -s <src_host> -d 31.13.66.49/32 -j _WHATSAPP_
    -A FORWARD -s <src_host> -d 31.13.67.51/32 -j _WHATSAPP_
    -A FORWARD -s <src_host> -d 31.13.68.52/32 -j _WHATSAPP_
    -A FORWARD -s <src_host> -d 31.13.69.240/32 -j _WHATSAPP_
    ----snip-----

Todos os endereços IP usados pelo WhatsApp podem ser encontrados em este link .

Seria muito mais rápido de tempos em tempos baixar este arquivo, filtrar endereços ipv4 e usar um switch (se existir) que poderia alimentar o iptables com esta informação como:

    :_WHATSAPP_ - [0:0]
    -A _WHATSAPP_ -j ACCEPT
    -A FORWARD -s <src_host> --from-file-dst /etc/iptables/whatsapp_cidr.txt -j _WHATSAPP_

Esse recurso existe? Não foi possível encontrar nas páginas de manual.

Ele precisa ser algum módulo que possa carregar e ler arquivos, já que temos um script de firewall personalizado que já lida com um arquivo usando as regras iptables-restore sintax.

    
por nwildner 26.01.2017 / 14:19

1 resposta

1

Eu poderia sugerir uma maneira de alimentar iptables com a lista de IPs usando ipset .

você pode simplesmente criar e ipset :

ipset -N <ipset name> iphash

você pode adicionar IP ao conjunto usando:

ipset add <ipset name> IP

depois disso, você pode usar o conjunto em iptables :

-A FORWARD -d <dst> -m set --match-set <ipset name> src -j _WHATSAPP_

Você pode escrever um script simples que pode alimentar o conjunto com IPs e excluir dele no tempo de execução sem precisar fazer iptables-restore

    
por 26.01.2017 / 14:26