O que significa “bind_address” no encaminhamento de porta SSH?

5

No encaminhamento local de SSH:

 -L [bind_address:]port:host:hostport
         Specifies that the given port on the local (client) host is to be forwarded to the given host and port on the remote side.  This works by
         allocating a socket to listen to port on the local side, optionally bound to the specified bind_address.  Whenever a connection is made to
         this port, the connection is forwarded over the secure channel, and a connection is made to host port hostport from the remote machine.  Port
         forwardings can also be specified in the configuration file.  IPv6 addresses can be specified by enclosing the address in square brackets.
         Only the superuser can forward privileged ports.  By default, the local port is bound in accordance with the GatewayPorts setting.  However,
         an explicit bind_address may be used to bind the connection to a specific address.  The bind_address of “localhost” indicates that the listen‐
         ing port be bound for local use only, while an empty address or ‘*’ indicates that the port should be available from all interfaces.

Em "um endereço vazio ou * indica que a porta deve estar disponível em todas as interfaces", o que significa "todas as interfaces"? Isso significa todas as interfaces de rede no host local quando o host local pode ter várias interfaces de rede e a porta port pode ser usada com todas as interfaces de rede no host local?

Em "O bind_address de localhost indica que a porta de escuta está vinculada somente para uso local", "apenas para uso local" significa uma interface de rede específica no host local?

O bind_address pode se referir a uma interface de rede em um host diferente do host local?

    
por Tim 17.10.2015 / 20:51

2 respostas

6

Em geral, uma ligação de endereço é uma associação entre um serviço (por exemplo, SSH) e um endereço IP.

Um host pode ter vários endereços IP (por exemplo, 127.0.0.1, 192.168.1.2). A vinculação de endereços permite que você execute um serviço em alguns ou todos esses endereços.

Suponha que seu host esteja configurado com duas interfaces de rede, uma conectada a uma rede confiável (por exemplo, 192.168.1.0/24), a outra conectada a uma rede não confiável (por exemplo, 192.168.2.0/24). Digamos que você queira que seu host aceite conexões SSH apenas da rede confiável. Nesse caso, você ligaria o serviço SSH ao endereço do host somente na rede confiável (por exemplo, 192.168.1.2).

Usar localhost como bind_address permitiria que apenas clientes SSH em execução na máquina local se conectassem ao serviço SSH.

    
por 17.10.2015 / 21:06
1

Todas as interfaces significam ... todas as interfaces, embora talvez com exceções para interfaces especiais, como pflog0 (a interface de log de filtro de pacotes). Uso local significa a interface de loopback, normalmente lo0 ou algo semelhante, que deve ter o endereço ::1 atribuído a ela. A principal distinção aqui é se os sistemas remotos podem ou não acessar a porta; usando localhost, somente os processos no sistema local poderiam se conectar.

O endereço de ligação pode, de fato, ser um endereço não local. No entanto, isso deve causar algo parecido com um erro bind: Can't assign requested address , portanto, não servirá muito para nenhum propósito.

    
por 17.10.2015 / 21:12