Como redirecionar pacotes marcados em várias portas para um endereço IP

1

Eu configurei esta regra:

-A PREROUTING -i vboxnet0 -p tcp -m tcp --dport 80 -j internet
-A internet -j MARK --set-xmark 0x63/0xffffffff

Para capturar o tráfego de entrada na porta 80 e enviá-lo para ser marcado. Ele funciona, mas agora eu gostaria de editá-lo para capturar em todas as portas, exceto 53 (DNS), a porta de serviço DHCP e alguns outros. Mais abaixo no meu iptables, eu tenho

-A PREROUTING -i vboxnet0 -p tcp -m mark --mark 0x63 -m tcp --dport 80 -j DNAT --to-destination 192.168.56.1

Isso captura todo o tráfego tcp, que tem a marca e é destinado à porta 80 e DNAT ao IP local. Eu gostaria de editar isso para incluir também todas as portas, exceto 3 (DNS), a porta de serviço DHCP e algumas outras.

Alguns bons indicadores em vez de uma pequena explicação da diferença entre o primeiro e o segundo -m em ambos os conjuntos de regras também podem me colocar no caminho correto.

    
por Dudus 05.01.2018 / 22:22

1 resposta

1

Entendendo suas regras

A primeira etapa para entender como funcionam as regras de firewall é, como na maioria das coisas, verificar a página man ( man iptables ). Na página man , você encontrará:

-m, --match match

Specifies a match to use, that is, an extension module that tests for a specific property. The set of matches make up the condition under which a target is invoked. Matches are evaluated first to last as specified on the command line and work in short-circuit fashion, i.e. if one extension yields false, evaluation will stop.

Perto da parte inferior da página man , você também encontrará:

MATCH AND TARGET EXTENSIONS

iptables can use extended packet matching and target modules. A list of these is available in the iptables-extensions(8) manpage.

Então, a página iptables-extensions man fornecerá os detalhes sobre o que suas opções -m estão realmente fazendo. Alguns pequenos trechos de lá:

mark

[!] --mark value[/mask]

...

tcp

[!] --destination-port,--dport port[:port]

...

DNAT

This target is only valid in the nat table, in the PREROUTING and OUTPUT chains, and user-defined chains which are only called from those chains. It specifies that the destination address of the packet should be modified (and all future packets in this connection will also be mangled), and rules should cease being examined. It takes the following options:

--to-destination [ipaddr[-ipaddr]][:port[-port]]

...

MARK

This target is used to set the Netfilter mark value associated with the packet. It can, for example, be used in conjunction with routing based on fwmark (needs iproute2). If you plan on doing so, note that the mark needs to be set in the PREROUTING chain of the mangle table to affect routing. The mark field is 32 bits wide.

--set-xmark value[/mask]

Para simplificar, as opções -m adicionam opções de correspondência a iptables . Mas a página man também lista alguns destinos não padrão (incluindo o DNAT que você está usando.

O que fazer

Agora, juntando tudo isso, presumo que a tabela com a qual você está trabalhando é nat , pois é a única que trabalha com DNAT target.

Parece também que marcar o tráfego é desnecessário. Ele está simplesmente sendo marcado para que você possa nat o pacote, mas você pode apenas nat o pacote em vez de marcá-lo para começar.

Por exemplo:

-A PREROUTING -i vboxnet0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.56.1

Você pode especificar várias regras para abranger várias portas, mas também especificar intervalos de porta usando [port]:[port] ou correspondências negativas usando ! .

Por exemplo, para aplicar a regra a todas as portas, exceto 53 (domain) e 22 (ssh), você pode fazer o seguinte:

-A PREROUTING -i vboxnet0 -p tcp -m tcp ! --dport 53 -j DNAT --to-destination 192.168.56.1
-A PREROUTING -i vboxnet0 -p tcp -m tcp ! --dport 22 -j DNAT --to-destination 192.168.56.1

Pode ser complicado se houver muitas portas que você deseja filtrar, mas essa é a vida com iptables . Eu recomendaria a verificação de /etc/services para obter uma lista de mapeamentos de portas para que você possa evitar o impacto de determinados serviços / protocolos.

    
por 05.01.2018 / 22:56