Redirecionamento com IPTABLES enquanto oculta a porta original

2

Então, meu servidor Glassfish está escutando na porta 8080.
No entanto, eu quero ter meus pedidos na porta 80 ao esconder 8080 ,
para que as pessoas pensem que meu servidor realmente funciona a 80.

Como posso fazer isso com iptables ? Eu tentei a seguinte regra:

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

mas não é o que eu quero, porque eu tenho que abrir 80 e 8080 para que ele funcione.

Alguma idéia?

Atualização: alterei o arquivo das minhas regras para:

iptables -F

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT

iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

iptables -A INPUT -j DROP

#REDIRECTION RULES
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT  \
         --to-destination 127.0.0.1:8080

Mas ainda não funciona. Eu tenho /proc/sys/net/ipv4/ip_forward definido como 1 .
Nem http://myserver:8080 nem http://myserver:80 work. Os pacotes são descartados.

    
por Alba Mendez 03.08.2011 / 12:24

3 respostas

3

Eu tive exatamente a mesma pergunta e encontrei a resposta com a ajuda dessa comunidade. Aqui está o link:

Redirecionamento de porta com iptables para localhost / bloqueando o porto de destino

Eu resolvi o problema marcando os pacotes recebidos no 8080 e filtrando-os depois:

iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t mangle -A PREROUTING -p tcp -m tcp --dport 8080 -j MARK --set-mark 1
iptables -A INPUT -m mark --mark 1 -j DROP

A última regra para eliminar os pacotes marcados pode ser a primeira regra na sua cadeia INPUT.

O DNAT não funcionou para mim com o host local. Eu acho que isso é porque o host local é tratado especialmente no kernel.

    
por 12.02.2015 / 09:23
2

Use DNAT .

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination your.ip.address:8080

Algo assim deveria funcionar. :)

EDITAR depois da sua própria edição: acho que esta linha é muito cedo no seu conjunto de regras:

iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Graças a isso, o seu servidor não aceita novas conexões, certo? Tente movê-lo antes de sua linha iptables -A INPUT -j DROP .

    
por 03.08.2011 / 12:37
0

Você já tentou mudar:

iptables -P FORWARD DROP

para

iptables -P FORWARD ACCEPT

?

    
por 18.07.2013 / 18:53