What Is SSH Port Forwarding, aka SSH Tunneling?
encaminhamento de porta SSH é um mecanismo em SSH para portas de aplicação de tunelamento da máquina cliente para a máquina servidor, ou vice-versa. Ele pode ser usado para adicionar criptografia a aplicativos legados, passando por firewalls, e alguns administradores de sistema e profissionais de TI usá-lo para abrir backdoors para a rede interna a partir de suas máquinas domésticas. Também pode ser abusado por hackers e malware para abrir o acesso da Internet para a rede interna., Veja a página de tunelamento SSH para uma visão mais ampla.
encaminhamento Local
encaminhamento Local é usado para encaminhar uma porta da máquina cliente para a máquina servidor. Basicamente, o cliente SSH escuta as conexões em uma porta configurada, e quando recebe uma conexão, ele bloqueia a conexão para um servidor SSH. O servidor conecta-se a uma porta de destino configurada, possivelmente em uma máquina diferente do servidor SSH.,
os usos Típicos para encaminhamento de porta local incluem:
-
Encapsulamento sessões e transferências de arquivos através salto servidores
-
a Ligar para um serviço em uma rede interna de fora
-
a Ligar para um compartilhamento de arquivo remoto através da Internet
Muito poucas organizações para todas as chamadas de acesso SSH através de um único salto servidor. O servidor pode ser uma caixa padrão Linux / Unix, geralmente com algum endurecimento extra, detecção de intrusão e / ou registro, ou pode ser uma solução de servidor de salto comercial.,
muitos servidores de salto permitem o encaminhamento de porta de entrada, uma vez que a conexão tenha sido autenticada. Esse encaminhamento de portas é conveniente, porque permite aos usuários com conhecimento de Tecnologia usar os recursos internos de forma bastante transparente. Por exemplo, eles podem encaminhar uma porta em sua máquina local para o servidor Web Intranet corporativo, para a porta IMAP de um servidor de correio interno, para as portas 445 e 139 de um servidor de arquivos local, para uma impressora, para um repositório de controle de versões, ou para quase qualquer outro sistema na rede interna. Frequentemente, o porto é escavado para um porto SSH em uma máquina interna.,
No OpenSSH, encaminhamento de porta local é configurado usando o -L
opção:
ssh -L 80:intra.example.com:80 gw.example.com
Este exemplo abre uma conexão para o gw.example.com
salto servidor, e reencaminha qualquer ligação para a porta 80 na máquina local para a porta 80 no intra.example.com
.
Por padrão, qualquer um (mesmo em máquinas diferentes) pode se conectar à porta especificada na máquina cliente SSH., No entanto, isto pode ser restrito a programas na mesma máquina, fornecendo um endereço de ligação:
ssh -L 127.0.0.1:80:intra.example.com:80 gw.example.com
a opção LocalForward
no ficheiro de configuração do cliente OpenSSH pode ser usada para configurar o encaminhamento sem ter que especificá-lo na linha de comandos.
Reencaminhamento remoto
no OpenSSH, forwardings de port SSH remoto são especificados usando a opção -R
. Por exemplo:
ssh -R 8080:localhost:80 public.example.com
Isto permite que qualquer pessoa no servidor remoto se ligue à porta tcp 8080 no servidor remoto., A conexão será então tunelada de volta para a máquina cliente, e o cliente então faz uma conexão TCP para a porta 80 em localhost
. Qualquer outro nome da máquina ou endereço IP pode ser usado em vez de localhost
para indicar a máquina a que se ligar.
Este exemplo em particular seria útil para dar a alguém no acesso externo a um servidor WEB interno. Ou expor uma aplicação web interna à Internet pública. Isto pode ser feito por um empregado que trabalha em casa, ou por um atacante.,
Por omissão, o OpenSSH só permite a ligação a portos remotos encaminhados a partir da máquina do servidor. No entanto, a opção GatewayPorts
no ficheiro de configuração do servidor sshd_ config pode ser usada para controlar isto. As seguintes alternativas são possíveis:
GatewayPorts no
isso impede a conexão a portas encaminhadas de fora do computador do servidor.
GatewayPorts yes
Isto permite que qualquer um se conecte às portas encaminhadas. Se o servidor está na Internet pública, qualquer pessoa na Internet pode se conectar ao porto.,
GatewayPorts clientspecified
isto significa que o cliente pode especificar um endereço IP a partir do qual as ligações à porta são permitidas. A sintaxe é:
ssh -R 52.194.1.73:8080:localhost:80 host147.aws.example.com
neste exemplo, apenas conexões a partir do endereço IP 52.194.1.73
para a porta 8080 são permitidos.
OpenSSH também permite que a porta remota encaminhada seja especificada como 0. Neste caso, o servidor irá alocar dinamicamente uma porta e reportá-la ao cliente. Quando usado com a opção -O forward
, o cliente irá imprimir o número de porta atribuído ao resultado padrão.,
abrir portas de trás para a empresa
o encaminhamento remoto de portas SSH é comumente usado pelos funcionários para abrir portas de trás para a empresa. Por exemplo, o empregado pode definir um servidor de Nível livre da Amazon AWS, e entrar do Escritório para esse servidor, especificando encaminhamento remoto de uma porta no servidor para algum servidor ou aplicação na rede interna da empresa. Vários encaminhamentos remotos podem ser especificados para abrir o acesso a mais de uma aplicação.,
o empregado também definiria GatewayPorts yes
no servidor (a maioria dos empregados não tem endereços IP fixos em casa, por isso não podem restringir o endereço IP).
Por exemplo, o seguinte comando abre acesso a uma base de dados Postgres interna na porta 5432 e a uma porta SSH interna na porta 2222.
ssh -R 2222:d76767.nyc.example.com:22 -R 5432:postgres3.nyc.example.com:5432 aws4.mydomain.net
Configuração do Lado do Servidor
AllowTcpForwarding
opção no arquivo de configuração do servidor OpenSSH deve ser habilitado no servidor para permitir o encaminhamento de porta. Por padrão, o encaminhamento é permitido., Os valores possíveis para esta opção são yes
ou all
para permitir que todos TCP encaminhamento, no
para impedir que todos TCP encaminhamento, local
para permitir que o local forwardings, e remote
para permitir remoto forwardings.
outra opção de interesse éAllowStreamLocalForwarding
, que pode ser usado para encaminhar sockets de domínio Unix. Ele permite os mesmos valores que AllowTcpForwarding
. O padrão é yes
.,
Por exemplo:
AllowTcpForwarding remote AllowStreamLocalForwarding no
o GatewayPorts
a opção de configuração, tal como descrita acima, também afecta as expedições de portas remotas. Valores possíveis foram no
(somente ligações locais a partir do servidor de host permitidos; padrão), yes
(qualquer pessoa na Internet pode conectar-se a remota encaminhada portas), e clientspecified
(cliente pode especificar um endereço IP que pode se conectar, qualquer pessoa pode, se não for especificado).,
como evitar que o encaminhamento de porta SSH contorne Firewalls
recomendamos que o encaminhamento de porta seja expressamente desactivado quando não for necessário. Deixar o encaminhamento de portas ativado pode expor a organização a riscos de segurança e backdoors. Por exemplo, se um servidor destinado a fornecer apenas transferências de arquivos SFTP permite transições de portes, essas transições podem ser usadas para obter acesso não intencional à rede interna a partir da Intranet.
o problema é que o encaminhamento de portas só pode, na prática, ser impedido por um servidor ou firewall., Uma empresa não pode controlar todos os servidores na Internet. O controle baseado em Firewall também pode ser complicado, pois a maioria das organizações tem servidores na Amazon AWS e outros serviços de nuvem, e esses servidores são geralmente acessados usando SSH.