iptables localhost redirecionar apenas ecoa

0

Estou tentando redirecionar o tráfego proveniente da Internet para um túnel SSH no host local com iptables , na porta 2025. Por algum motivo, o redirecionamento não funciona.

Eu me conectei a ele com telnet e ele ecoa de volta por algum motivo, mas não mostra o banner do servidor SMTP redirecionando para ele. Se eu telnet no sistema este redirecionamento estiver ligado, para a porta 2025 eu recebo imediatamente uma saudação do servidor SMTP.

Conectando-se do mundo externo e pressionando teclas aleatórias:

$ telnet infantile.xyz 25
Trying 94.156.189.160...
Connected to infantile.xyz.
Escape character is '^]'.
cfvghnjdfghdfgh

Ele ecoa de volta as teclas aleatórias.

Conectando-se no sistema onde o redirecionamento está, mostra como quero que as coisas funcionem para pessoas de fora na Internet ...

# telnet localhost 2025
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 infantile.xyz ESMTP Postfix (Debian/GNU)

Meu iptables config é o seguinte:

Chain INPUT (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 252M  124G ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate RELATED,ESTABLISHED
 270K   16M ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
  308 12340 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate INVALID
 8988  612K ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0            icmptype 8 ctstate NEW
2277K  462M UDP        udp  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate NEW
3204K  147M TCP        tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x17/0x02 ctstate NEW
2277K  462M REJECT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
2914K  130M REJECT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with tcp-reset
    0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-proto-unreachable

Chain FORWARD (policy DROP 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 1855 packets, 447K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain TCP (1 references)
 pkts bytes target     prot opt in     out     source               destination         
22104 1144K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:22
 4976  265K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80
 2585  145K ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:443
   95  4836 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:587

Chain UDP (1 references)
 pkts bytes target     prot opt in     out     source               destination

As regras NAT para este conjunto de regras em que o redirecionamento que criei é:

Chain PREROUTING (policy ACCEPT 3813 packets, 465K bytes)
 pkts bytes target     prot opt in     out     source               destination         
 2954  174K DNAT       tcp  --  *      *       0.0.0.0/0            94.156.189.0/24      tcp dpt:25 to:127.0.0.1:2025

Chain INPUT (policy ACCEPT 3 packets, 110 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 6798 packets, 408K bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 11177 packets, 583K bytes)
 pkts bytes target     prot opt in     out     source               destination    

É estranho que ele aceite a conexão e ecoe, mas não responda de qualquer forma o serviço na outra extremidade (postfix).

Originalmente, configurei iptables com este guia: link

Isso é o que eu tentei usar para redirecionar:

iptables -t nat -I PREROUTING -i eth0 -p tcp -d 94.156.189.160 --dport 25 -j DNAT --to-destination 127.0.0.1:2025

Ativei as seguintes opções de sysctl:

net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.all.route_localnet = 1
    
por Kaizu 03.07.2018 / 09:18

1 resposta

0

Para redirecionar uma porta por meio desse firewall, você precisa de algumas regras iptables na cadeia TCP e uma alteração na política% chain% chain.

Encadear a cadeia deve estar em aceitação:

# iptables -P FORWARD ACCEPT

Você precisa permitir que a porta seja redirecionada e seu destino:

# iptables -A TCP -p tcp --dport 25 -j ACCEPT
# iptables -A TCP -p tcp --dport 2025 -j ACCEPT

Esta regra POSTROUTING ...

# iptables -t nat -A POSTROUTING -j MASQUERADE
# iptables -t nat -I PREROUTING -i eth0 -p tcp -d 94.156.189.160 --dport 25 -j DNAT --to-destination 127.0.0.1:2025

Com essas regras, o iptables agora redireciona pacotes de entrada na porta 25 para um túnel SSH na porta 2025 do host local. A regra de mascaramento permite que os pacotes retornem.

    
por 28.07.2018 / 14:47