Redirecionamento de porta com iptables para localhost / bloqueando a porta de destino

2

Eu gosto de encaminhar todo o tráfego que chega a 80 para ser redirecionado para 8000.

eu usei

iptables -tnat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8000

Mas a porta 8000 ainda está aberta ao público.

Eu tentei -DNAT:

iptables -t nat -A PREROUTING  -p tcp --dport 80 -j DNAT --to-destination 127.0.0.1:8000

Mas isso não funciona de jeito nenhum. / proc / sys / net / ipv4 / ip_forward está definido como 1.

Não há outras regras configuradas.

Por favor me ajude:)

-

editar :

Em resposta à pergunta abaixo: Aqui está exatamente o que eu quero alcançar:

Eu tenho um serviço rodando na porta 8000 que pode ser visto como um servidor web. Deve ser acessível pela porta 80 de fora, mas não pela porta 8000. A rede interna não importa: pode ser restrita ou não.

Eu entendo que o REDIRECT não elimina pacotes endereçados diretamente à porta 8000, mas se eu descartasse todos os pacotes para 8000 na cadeia INPUT, então os pacotes redirecionados também seriam descartados.

iptables -A INPUT -p tcp -m tcp --dport 8000 -j DROP 

Não pode trabalhar para mim.

Existe uma maneira de descartar pacotes com a porta de destino 8000, que não foram redirecionados através da cadeia PREROUTING?

Adicionar um ip de origem via -s não ajuda, certo? porque o IP de origem não muda no redirecionamento.

Resposta

Com base na resposta aceita, posso resolvê-lo desta maneira:

iptables -tmangle -A PREROUTING -p tcp -m tcp --dport 8000 -j MARK --set-mark 1
iptables -A INPUT -m mark --mark 1 -j DROP
    
por Phil 11.02.2015 / 17:50

1 resposta

3

Defina a marca no pacote que você redirecionar. Então permita os pacotes marcados antes dos pacotes bloqueados. veja iptables -j MARK -h para marcar um pacote e iptables -m mark -h para corresponder a um pacote

    
por 11.02.2015 / 19:59