Tempo limite de conexão para o servidor ssh

11

Estou tentando configurar o openssh-server, mas estou tendo alguns problemas de conexão. Alterei a porta para algo fora do padrão (57757) e configurei meu roteador para encaminhar para essa porta. Na minha LAN, sou capaz de fazer ssh na minha máquina usando a porta 57757, mas não posso fazê-lo na WAN.

Se estiver fora da LAN e tentar acessar minha máquina por uma porta incorreta, recebo imediatamente a mensagem "conexão recusada". No entanto, com a porta correta, ele simplesmente trava e depois atinge o tempo limite.

O que posso tentar depurar o problema? Eu tentei um traceroute, mas não me disse nada de útil.

EDIT: Percebi que meu problema era que meu roteador não suportava acessá-lo internamente por WAN IP. Ssh fora para um servidor diferente e de volta e funcionou bem.

Ci3
fonte
Você mudou alguma coisa ao lado da porta em que está ouvindo?
guntbert
@guntbert Nope. Poderia ser um problema com loopback?
Ci3
loopback? você tentou apenas a partir da própria máquina? você tem outro dispositivo na sua LAN para testar?
guntbert
@ guntbert Eu tentei com outra máquina e não há problemas dentro da LAN.
Ci3
Minha idéia de "último recurso": em sudo apt-get purge openssh-serverseguida, reinstale-o (para nos livrarmos de qualquer coisa que possa ter acontecido com a configuração) e reconfigure seu roteador para encaminhar 22-> 22.
guntbert

Respostas:

11

Normalmente, isso significa que você encaminhou a porta para o endereço IP errado na LAN.

Seu roteador NAT recebe tráfego de entrada na porta 57757 e o envia para um endereço IP e uma porta específicos na LAN.

Por padrão, o Ubuntu não filtra as tentativas de conexão recebidas com um firewall. Portanto, a menos que você tenha alterado as configurações de firewall no Ubuntu, uma tentativa de abrir uma conexão com qualquer porta TCP, de 1 a 65535, irá:

  • aceite a conexão, se a porta estiver aberta
  • rejeitar a tentativa de conexão, se a porta estiver fechada

Se as portas fossem filtradas por um firewall, você obteria o que está vendo - sem resposta a uma tentativa de conexão. Mas:

  • a menos que você tenha alterado as configurações do firewall (por exemplo ufw, iptables), nenhuma porta será filtrada e
  • em qualquer caso, você pode conectar-se à porta 22 na LAN, para que fique aberta.

Quando você encaminha uma porta para uma máquina inexistente com um roteador NAT, ela envia o tráfego recebido nessa porta para a máquina inexistente, ou seja, a envia para um buraco negro ; é efetivamente descartado.

Isso causa exatamente a situação que você descreveu. Portanto, você provavelmente pode corrigir isso, certificando-se de que a porta esteja sendo encaminhada para o endereço IP correto na LAN.

Se isso não acontecer, o problema ...

... então você precisará solucionar alguns problemas.

  1. A porta especificada para o lado da LAN está correta? Ou seja, supondo que você não tenha alterado a configuração do servidor SSH, a porta 57757 no lado WAN está configurada para encaminhar para a porta 22 no servidor OpenSSH? (Você pode verificar isso novamente.)

  2. Talvez haja algum problema com a porta específica que você escolheu (57757). Tente um diferente e veja se isso funciona melhor.

    (Caso contrário, e você segue estas instruções, altere-o novamente ou substitua "57757" abaixo pelo novo número.)

  3. Tente reiniciar o servidor OpenSSH. Isso pode ajudar se houver um problema de rede. Se isso não ajudar, tente reiniciar o roteador e o modem a cabo / DSL / ISDN também.

    Se, por algum motivo, você não puder reiniciar os três dispositivos, recomendo reiniciar o que puder. Se você não pode reiniciar o serviço OpenSSH, pelo menos você pode reiniciar o serviço e (com maior probabilidade de corrigir isso) derrubar a interface e trazê-la novamente.

    Para reiniciar o servidor OpenSSH:

    sudo restart ssh
    

    Para desativar a interface de rede, primeiro descubra em que interface está:

    ifconfig
    

    Normalmente, para uma máquina com uma única placa Ethernet e / ou uma única placa sem fio, a Ethernet é eth0e a conexão sem fio wlan0.

    Se a conexão Ethernet com fio é o que você deseja desativar e reiniciar, execute:

    sudo ifdown eth0
    

    Então corra:

    sudo ifup eth0
    

    Como alternativa, você pode executar:

    sudo ifconfig eth0 down
    

    Seguido por:

    sudo ifconfig eth0 up
    

    Se a máquina estiver usando o NetworkManager para gerenciar a interface na qual o servidor OpenSSH está sendo executado, ainda recomendo tentar as maneiras acima, mas você também pode tentar desconectar e reconectar-se no NetworkManager.

    Para uma conexão Ethernet, tente também desconectar o cabo e conectá-lo novamente. Para uma conexão sem fio, tente desligá-lo com a chave de hardware (se houver) e ligue-o novamente.

    Algo estranho está acontecendo aqui e nada disso leva muito tempo - vale a pena ser minucioso antes de executar mais etapas de solução de problemas meticulosas.

  4. Como você está tentando acessá-lo pelo lado da WAN? Se você estiver usando uma máquina na LAN para fazer isso (basta conectar-se da LAN ao WAN IP do seu roteador), isso é suportado apenas em alguns roteadores. Afinal, o trabalho de um roteador é rotear o tráfego entre os lados da WAN e da LAN, não para rotear o tráfego de um lado para o outro. O suporte para conectar-se às portas encaminhadas no IP da WAN de dentro da LAN é realmente a exceção e não a regra, embora muitos roteadores de casa / escritório possuam esse recurso.

    Portanto, se você não estiver testando a porta para frente de um host no lado da WAN, faça isso. Suas opções para isso são:

    • Conecte-se do lado da WAN. Isso funciona se você tiver acesso a uma máquina lá, por exemplo, acesso SSH a uma máquina remota na escola, no trabalho, na casa de um amigo ou similar.

    • Conecte a máquina de teste entre o roteador e o que fornecer sua conexão com a Internet. Se você possui um modem a cabo / DSL / ISDN com uma porta Ethernet e seu roteador está conectado a isso, é possível conectar um switch ao modem e conectá-lo ao switch. Conecte um computador ao switch. Primeiro, veja se essa máquina apenas obtém acesso à Internet - atualmente, muitos ISPs fornecem dois ou mais endereços IP separados. Caso contrário , vá para a página de configuração do roteador e verifique sua máscara de sub-rede WAN IP e WAN e atribua estaticamente um endereço IP à máquina conectada ao switch que está dentro da mesma sub-rede.

      Este método tem algumas desvantagens. É uma dor! Além disso, é teoricamente possível para um ISP configurar sua rede incorretamente para que a máquina de teste conectada ao switch possa acessar a Internet. (A menos que seja a intenção do seu ISP permitir que você se conecte com mais de um IP WAN ese você tiver escolhido um IP da WAN para a máquina de teste que seu ISP lhe atribuiu, o tráfego entre ele e um host WAN verdadeiro deve ser bloqueado / eliminado pelo ISP. Mas alguns provedores de serviços de Internet têm práticas estranhas, então quem sabe?) Se isso acontecer, provavelmente não causará problemas sérios a ninguém (e mesmo se ocorrer, você só o conectará por alguns minutos). No entanto, isso pode ser visto como uma tentativa de obter acesso adicional além dos limites da sua assinatura e, o que é mais importante, se outro usuário tiver o mesmo IP, ele poderá interferir na conexão. Portanto, se você quiser tentar esse método, não tente acessar a Internet a partir da máquina de teste, pare imediatamente se achar que a máquina pode acessar a Internet e não tente fazer isso se for proibido ou desaconselhado pelo seu ISP. (E não use isso se o lado WAN do seu roteador for uma LAN do escritório, sem consultar o administrador da rede primeiro. Esse não é um ISP e não há suposição de que os recursos sejam provisionados para impedir o acesso indesejado.)

      Há uma variação dessa técnica que às vezes é mais apropriada. Seu roteador provavelmente obtém suas informações de conexão - endereço IP, máscara de sub-rede, o endereço IP do gateway (roteador) na WAN que ele usa quando não sabe para onde enviar algo e informações sobre os servidores DNS - do seu computador . ISP, via DHCP, através do modem a cabo / DSL / ISDN. É por isso que você precisa conectar o roteador ao modem para fornecer a configuração necessária para tornar significativos os resultados dos testes no lado da WAN. Mas o roteador normalmente lembrará essas informações, desde que estejam realmente conectadas a uma rede no lado da WAN. Assim, você pode conectar o roteador, modem e máquina de teste, mas rapidamente, eantes de fazer qualquer coisa com a máquina de teste, além de verificar se o switch a vê como conectada , desconecte o modem.

    • Use um serviço gratuito na Internet para testar suas portas. Como a inserção de uma máquina de teste entre a interface WAN do roteador e a Internet (acima) está altamente envolvida - e mostrará uma porta tão acessível mesmo que seja inacessível devido ao bloqueio pelo seu ISP (o que também é verdade na conexão com o WAN IP do roteador do lado da LAN) - geralmente é melhor usar um serviço de verificação de porta baseado na Web.

      Existem muitos serviços de verificação de porta. (Alguns ostentam a frase "verifique seu firewall" com a idéia de que a maioria das pessoas está tentando bloquear, em vez de facilitar o acesso.) Essa é uma delas. Se você optar por usar esse, clique em Continuar , digite 57757 na caixa de texto e clique em Usar Sonda de Porta Personalizada Especificada . Para fins de execução de um servidor, você deseja que ele seja "aberto". "Fechado" significa que a porta está acessível, mas o servidor não está em execução (e, portanto, a tentativa de conexão foi rejeitada). "Discrição" significa que a porta estava inacessível - é como se nenhuma máquina estivesse localizada lá (ou como se a porta fosse encaminhada para onde não há máquina).

  5. OK, então você determinou que realmente não é acessível pela Internet. Potencialmente, você pode digitalizá-lo (idealmente do lado da WAN) para obter detalhes, embora muitas vezes isso não forneça informações úteis.

    Se você quiser fazer isso, no lado da WAN, você pode executar:

    sudo nmap -sS -sV -p57757 -vv WAN-IP

    Se a porta for mostrada como filtrada, isso confirma que os pacotes enviados para lá provavelmente não vão a lugar nenhum (ou são bloqueados / descartados ao longo do caminho).

  6. Vale a pena verificar se o problema está surgindo porque a porta exposta à WAN é diferente da porta em que o servidor está realmente ouvindo. A porta de encaminhamento 55757 na WAN para a porta 22 na máquina da LAN deve dar certo, mas talvez em algum lugar (servidor, cliente) algo esteja assumindo que o número da porta é o mesmo da perspectiva do servidor e do cliente.

    Presumivelmente, você não pode encaminhar a porta 22 através do roteador. Talvez o seu ISP bloqueie essa porta. Mas se você pode fazer isso, faça isso!

    Caso contrário, você pode fazer o servidor OpenSSH realmente escutar na porta 57757.

    Para fazer isso, faça backup do arquivo de configuração do servidor:

    cd /etc/ssh
    sudo cp sshd_config sshd_config.old
    

    Depois edite-o:

    gksu gedit sshd_config
    

    Ou use um editor de texto do console se a máquina não tiver uma GUI:

    sudo nano -w sshd_config
    

    Perto da parte superior do arquivo, este bloco de texto aparece:

    # What ports, IPs and protocols we listen for
    Port 22
    # Use these options to restrict which interfaces/protocols sshd will bind to
    #ListenAddress ::
    #ListenAddress 0.0.0.0
    Protocol 2
    # HostKeys for protocol version 2
    HostKey /etc/ssh/ssh_host_rsa_key
    HostKey /etc/ssh/ssh_host_dsa_key
    HostKey /etc/ssh/ssh_host_ecdsa_key
    #Privilege Separation is turned on for security
    UsePrivilegeSeparation yes
    

    Apenas mude a Port 22linha no topo, para dizer em Port 57757vez disso.

    • Você pode adicionar uma porta em vez de alterá-la. Eu recomendo testar com a configuração eficaz mais simples, no entanto.

      Veja man sshd_configpara mais detalhes sobre a configuração do servidor OpenSSH.

    Salve o arquivo, feche o editor de texto e reinicie o servidor SSH com:

    sudo restart ssh
    

    Agora mude a porta para frente no roteador para que a porta 57757 avance para a porta 57757 (não 22) no servidor OpenSSH e verifique se é acessível a partir da Internet.

  7. Se ainda não estiver funcionando, verifique se o firewall do Ubuntu está realmente bloqueando o tráfego originado fora da LAN.

    (Isso é improvável se você não tiver configurado dessa maneira, mas se todas as suas configurações estiverem corretas e nenhuma das etapas acima revelou nada sobre o problema, vale a pena conferir.)

    Corre:

    sudo iptables -L
    

    Por padrão, no Ubuntu, a saída se parece com:

    Chain INPUT (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain FORWARD (policy ACCEPT)
    target     prot opt source               destination         
    
    Chain OUTPUT (policy ACCEPT)
    target     prot opt source               destination
    

    Essa é uma política permissiva simples, essencialmente equivalente a não executar um firewall. (De fato, se o módulo do firewall netfilter não fosse compilado no seu kernel, seu sistema se comportaria da mesma maneira que nas configurações acima, embora o iptablescomando, que consulta netfilteras configurações, não funcione, é claro).

    Se sua configuração não for assim, leia man iptablespara descobrir o que eles estão fazendo e / ou edite sua pergunta (ou, se você é uma pessoa diferente com um problema semelhante ao ler isso, poste uma nova pergunta) para incluir eles. Observe que, potencialmente, suas iptablesregras podem divulgar informações confidenciais sobre sua configuração. Na prática, esse geralmente não é o caso - com a possível exceção de regras sobre hosts específicos bloqueados ou se sua configuração é muito ruim / insegura - geralmente a utilidade dessas informações para um invasor, especialmente para uma máquina ligada uma LAN em casa / escritório atrás de um roteador NAT , é mínima.

Eliah Kagan
fonte
1

Como ele funciona de dentro da sua LAN, sua configuração do servidor parece estar correta. Você deve dizer ao roteador para encaminhar da porta que deseja usar externamente para a porta 57757 em sua máquina .
A traceroutenão será útil neste caso.

Guntbert
fonte
Ok, achei que o lado da máquina estava bem. Sim, configurei meu roteador para encaminhar 57757 para 22 ... mas tenho o mesmo problema. O sshd_config também está definido na porta 22.
Ci3 12/01
Provavelmente, essa deve ser: 'a porta que você deseja usar externamente (por exemplo, 57757 ) para a porta 22 em sua máquina .' É o endereço da porta pública para a qual você precisa obscurecer.
David6
Não está correto neste caso - se eu entendi a pergunta de Chris
guntbert