SSH port block: encaminhamento de porta

0

Eu preciso acessar o SSH na máquina A dentro de outra porta que não a 22, porque há apenas as portas padrão permitidas para acessar da rede que eu uso. Portanto, eu quero rotear a porta 443 da máquina B para a porta 22 na máquina A (na máquina A, nenhuma porta padrão é mais livre e eu não quero tocar na máquina produtiva).

A Máquina B é apenas uma máquina não usada, portanto a porta 443 não é usada. Além disso, esta solução é apenas por alguns dias.

Minhas perguntas são:

-como redireciono a porta 443 da máquina B (5.6.7.8) para a porta 22 da máquina A (1.2.3.4)? Eu penso sobre o iptables.

-O que é segurança com este método? Não deve ser um problema por causa do keyprint do servidor SSH, correto?

    
por Richard 29.07.2015 / 11:39

3 respostas

0

Você precisará usar a funcionalidade NAT no iptables. Está documentado aqui: Destination NAT com netfilter (DNAT) . No entanto, isso não cobre números de porta. Eu já vi isso funcionando apenas colocando um número de porta atrás do endereço IP.

Acho que isso funcionará:

iptables -t nat -A PREROUTING -p tcp -d 5.6.7.8 --dport 443 -j DNAT --to-destination 1.2.3.4:22

Isto, claro, assume que 5.6.7.8 pode chegar a 1.2.3.4:22. Em relação à segurança, você provavelmente verá alguns clientes tentando se conectar ao SSH. Se você tiver senhas strongs em todas as contas (ou melhor ainda, somente autenticação pubkey), ainda assim será bem seguro.

edit : percebi que essa pergunta já foi respondida no Server Fault: Como posso encaminhar com a porta iptables?

    
por 29.07.2015 / 13:26
0

A menos que eu tenha entendido mal o que você precisa fazer, é bem simples conseguir o que você quer, se você controla B e pode configurar o daemon SSH em B para escutar na porta 443 ao invés da porta padrão 22 e configurar qualquer firewall software em B para permitir a conectividade de entrada para a porta 443, desde que qualquer tráfego para a porta 443 seja permitido de saída da rede que você usa.

Se B for um sistema Linux, fazer com que ele escute na porta 443 para conexões SSH provavelmente exigirá uma pequena atualização para /etc/ssh/sshd_config . Procure a linha abaixo no arquivo:

#Port 22

Remova o "#", que significa o que segue, caso contrário será tratado como um comentário, desde o início da linha. Altere "22" para "443" e reinicie o daemon SSH.

No sistema cliente, você usa a opção -L para SSH, que resultará em conexões locais, ou seja, aquelas para o sistema a partir do qual você inicia as conexões SSH, sendo encaminhadas para uma porta em algum outro sistema do SSH. servidor ao qual você se conecta.

 -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 con‐
             nection 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 spec‐
             ified 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.  How‐
             ever, an explicit bind_address may be used to bind the connection
             to a specific address.  The bind_address of “localhost” indicates
             that the listening port be bound for local use only, while an
             empty address or ‘*’ indicates that the port should be available
             from all interfaces.

Por exemplo, você poderia usar um comando como o abaixo para conectar-se à porta 443 via SSH na máquina B e fazer com que ele direcione o tráfego para a porta 2222 em seu sistema local para a porta 22 em A pela porta 443 em B.

ssh -p 443 -L 2222:1.2.3.4:22 [email protected]

O -p significa "porta" e informa ao SSH que você precisa se conectar ao sistema de destino, que é B em 5.6.7.8 na porta 443, em vez da porta padrão de 443. O -L diz ao SSH para crie uma porta de escuta local no sistema a partir do qual você está estabelecendo a conexão. Eu coloquei "2222" na linha de comando, mas o número é arbitrário; basta colocar algo maior que 1.024 e menor que 65.536. O -L 2222:1.2.3.4:22 também está instruindo o programa SSH no sistema a partir do qual você está estabelecendo a conexão SSH para B para encaminhar qualquer tráfego recebido na porta 2222 através do SSH tunnel foi estabelecido com B. E quando ele sai da outra extremidade do túnel, B o envia para A em 1.2.3.4 na porta 22. Então, da perspectiva de A, o SSH conexão a ele é originária de B.

Em seguida, no sistema a partir do qual você está estabelecendo a conexão, você precisa iniciar outra conexão SSH, mas desta vez para a porta 2222 em si. Você pode fazer isso da seguinte maneira:

ssh -p 2222 [email protected]

Agora, seu sistema se conecta à porta não padrão de 2222 no endereço localhost , isto é, 127.0.0.1. A primeira conexão SSH configurada tem o software cliente SSH escutando na porta 2222 para conexões e, em seguida, encaminhando o tráfego por meio de um túnel SSH para a porta 443 em B, onde é enviado para a porta 22 em A. Quando você inicia a conexão, a senha O prompt que você receberá, se você usar a autenticação por senha, será para a máquina A.

O firewall na rede da qual você originou a primeira conexão SSH vê apenas uma conexão de saída para a porta 443 em B. Mas dentro da conexão com a porta 443 em B há um túnel criptografado que está roteando todo o tráfego para a porta 2222 em seu Cliente SSH para a porta 22 em A.

Eu uso uma abordagem semelhante para transferir arquivos de / para um servidor SSH, A, que está em uma zona de rede restrita, onde a única conectividade SSH de entrada permitida deve vir através de um host de bastiões , B. Nota: se você também precisar executar transferências de arquivos usando cópia segura (SCP) , você precisa usar um" P "maiúsculo com SCP para especificar a porta, enquanto que com o ssh você deve usar um" p "minúsculo.

Se você não estiver usando um sistema Linux ou OS X como seu sistema SSH do cliente, poderá usar uma abordagem de encaminhamento de porta similar com o PuTTY ou outro software cliente SSH.

    
por 29.07.2015 / 14:23
0

Você faz login manualmente ou um serviço em uma máquina externa X precisa fazer o login na Máquina A? Para o login manual, você pode fazer isso:

  1. Você configura o servidor SSH na máquina B para ouvir a porta 443. É claro que você precisa configurar o firewall da empresa para direcionar o tráfego externo para a porta 443 para acessar essa máquina.
  2. Você faz o login na máquina B. Agora você está na rede local, provavelmente sem restrições de firewall.
  3. Na máquina B, efetue login na máquina A, que tem seu servidor SSH atendendo na porta 22.

Dado que você pode configurar o firewall para direcionar o tráfego da porta 443 para a máquina B, por que você não pode configurar o firewall para ouvir a porta 22 ou 54827 (ou qualquer número de porta aleatório) e rotear isso para a máquina A?

Outra opção é encapsular o tráfego SSH por meio de B até A

A segurança é tão boa quanto o SSH.

    
por 29.07.2015 / 13:36

Tags