ssh túnel reverso e Iptables

0

Eu configurei um túnel ssh reverso usando o seguinte comando entre um laptop Linux e um servidor remoto:

ssh -4nNT -R 2222:localhost:22 somehost.com

Ou seja, o laptop, que está por trás de um firewall, pode ser acessado por meio do ssh usando o seguinte comando:

ssh -p 2222 -l joe somehost.com

em sshd_config de somehost.com, eu habilitei Gatewayports = sim.

Fico feliz em dizer que tudo isso funciona bem. No entanto, uma coisa me bate: existe um iptables rodando em somehost.com que NÃO tem a porta 2222 aberta. Apesar desse túnel funcionar, como isso é possível? Como o túnel ssh remoto funciona nos bastidores? alguém poderia gentilmente explicar?

aqui está a saída do iptables -L:

  target     prot opt source               destination

  ACCEPT     icmp --  anywhere             anywhere             icmp destination-unreachable
  ACCEPT     icmp --  anywhere             anywhere             icmp time-exceeded
  ACCEPT     icmp --  anywhere             anywhere             icmp echo-request
  ACCEPT     icmp --  anywhere             anywhere             icmp echo-reply
  DROP       tcp  -f  anywhere             anywhere
  DROP       tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,PSH,ACK,URG/FIN,SYN,RST,PSH,ACK,URG
  DROP       tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,PSH,ACK,URG/NONE
  DROP       tcp  --  anywhere             anywhere             tcp flags:FIN,SYN/FIN,SYN
  DROP       tcp  --  anywhere             anywhere             tcp flags:FIN,ACK/FIN
  DROP       tcp  --  anywhere             anywhere             tcp flags:SYN,RST/SYN,RST
  DROP       tcp  --  anywhere             anywhere             tcp flags:FIN,SYN,RST,PSH,ACK,URG/FIN,SYN,RST,ACK,URG
  DROP       udp  --  anywhere             anywhere             udp spt:bootps dpt:bootpc
  DROP       tcp  --  anywhere             anywhere             tcp dpt:kazaa
  DROP       udp  --  anywhere             anywhere             udp dpt:kazaa
  LOG        tcp  --  anywhere             somehost.com  tcp dpt:ssh state NEW LOG level warning tcp-options ip-options prefix "firewall-> ssh1: "
  ACCEPT     tcp  --  anywhere             somehost.com  tcp dpt:ssh
  LOG        tcp  --  anywhere             somehost.com  tcp dpt:2023 state NEW LOG level warning tcp-options ip-options prefix "firewall-> Check: "
  ACCEPT     tcp  --  anywhere             somehost.com  tcp dpt:2023
  LOG        tcp  --  anywhere             somehost.com  tcp dpt:http state NEW LOG level warning tcp-options ip-options prefix "firewall-> HTTP: "
  ACCEPT     tcp  --  anywhere             somehost.com  tcp dpt:http
  LOG        tcp  --  anywhere             somehost.com  tcp dpt:https state NEW LOG level warning tcp-options ip-options prefix "firewall-> HTTPS: "
  ACCEPT     tcp  --  anywhere             somehost.com  tcp dpt:https

  Chain FORWARD (policy ACCEPT)
  target     prot opt source               destination

  Chain OUTPUT (policy ACCEPT)
  target     prot opt source               destination
  ACCEPT     tcp  --  anywhere             anywhere             tcp spt:http
    
por Tagsense 28.01.2017 / 16:16

1 resposta

0

Em somehost.com, é executado um daemon ssh chamado sshd. Sua chamada de ssh com -R 2222: localhost: 22 diz ao sshd em somehost.com que deve encapsular o tráfego que é enviado para a porta 2222 para seu laptop atrás do firewall através da porta 22. Porque você configurou Gatewayports = yes, sshd envia todos tráfego formar outros hosts que é enviado para a porta 2222 para o seu laptop através do túnel na porta 22.

Para ler mais, refiro-me ao link .

    
por 28.01.2017 / 20:43