Selecionando a interface para encaminhamento de porta SSH

24

Eu tenho um servidor que chamaremos hub-server.tld com três endereços IP 100.200.130.121, 100.200.130.122 e 100.200.130.123. Eu tenho três máquinas diferentes que estão protegidas por um firewall, mas quero usar o SSH para encaminhar uma máquina para cada endereço IP. Por exemplo: a máquina um deve escutar o SSH na porta 22 em 100.200.130.121, enquanto a máquina dois deve fazer o mesmo em 100.200.130.122, e assim por diante, para serviços diferentes nas portas que podem ser iguais em todas as máquinas.

A página do manual SSH -R [bind_address:]port:host:hostportlistou Eu tenho portas de gateway ativadas, mas ao usar -Rcom um endereço IP específico, o servidor ainda escuta a porta em todas as interfaces:

máquina um:

# ssh -NR 100.200.130.121:22:localhost:22 [email protected]

hub-server.tld (escuta SSH na porta 2222):

# netstat -tan | grep LISTEN
tcp        0      0 100.200.130.121:2222        0.0.0.0:*                   LISTEN
tcp        0      0 :::22                       :::*                        LISTEN
tcp        0      0 :::80                       :::*                        LISTEN

Existe uma maneira de fazer o SSH encaminhar apenas conexões em um endereço IP específico para a máquina - para que eu possa ouvir a porta 22 nos outros endereços IP ao mesmo tempo ou terei que fazer algo com o iptables? Aqui estão todas as linhas na minha configuração ssh que não são comentários / padrões:

Port 2222
Protocol 2
SyslogFacility AUTHPRIV
PasswordAuthentication yes
ChallengeResponseAuthentication no
GSSAPIAuthentication no
GSSAPICleanupCredentials no
UsePAM yes
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL
AllowTcpForwarding yes
GatewayPorts yes
X11Forwarding yes
ClientAliveInterval 30
ClientAliveCountMax 1000000
UseDNS no
Subsystem       sftp    /usr/libexec/openssh/sftp-server
Eric Pruitt
fonte

Respostas:

37

De sshd_config(5):

GatewayPorts

  Specifies whether remote hosts are allowed to connect to ports forwarded 
  for the client.  By default, sshd(8) binds remote port forwardings to the
  loopback address. This prevents other remote hosts from connecting to 
  forwarded ports.  GatewayPorts can be used to specify that sshd should 
  allow remote port forwardings to bind to non-loopback addresses, thus 
  allowing other hosts to connect.  The argument may be “no” to force remote 
  port forwardings to be available to the local host only, “yes” to force 
  remote port forwardings to bind to the wildcard address, or 
  “clientspecified” to allow the client to select the address to which the 
  forwarding is bound.  The default is “no”.

Você deseja definir isso para em clientspecifiedvez de yes.

mgorven
fonte
Perfeito, obrigado! Eu realmente gostaria que a página de manual do ssh (1) afirmasse que clientspecifiedera necessário em vez de apenas dizer "enabled": "A especificação de um endereço bind_ad remoto só será bem-sucedida se a opção GatewayPorts do servidor estiver ativada (consulte sshd_config (5))". A partir disso, pensei que só precisava ser definido yes.
11118 Eric Pruitt