Acesso remoto a uma máquina Linux por trás de um firewall

8

Vou implantar uma máquina Linux como uma espécie de terminal público em um local remoto. Eu gostaria de poder acessá-lo remotamente via SSH para manutenção, mas não quero manter uma porta aberta no firewall remoto para as raras ocasiões em que preciso acessar essa máquina. Eu tenho um script simples para criar um túnel SSH reverso para uma máquina do lado de fora, mas prefiro não ter um usuário que precise fazer nada quando preciso acessá-lo. Alguma idéia?

Atualização: Eu decidi seguir meu plano original de um script para criar um túnel ssh reverso. Enquanto outras soluções sugeridas, como a porta batendo, seriam mais do tipo que eu realmente quero fazer, neste caso, eu não tenho nenhum acesso para configurar o roteador, a não ser andar por um usuário através de uma configuração. tremor

    
por baudtack 13.05.2009 / 23:33

8 respostas

5

It has less to do with being concerned with a port being open and more to do with not wanting to walk a user though the process of opening up a port. I don't have any access to this router at all unfortunately.

Se a mudança do roteador estiver completamente fora de questão, talvez você precise procurar uma solução P2P ou VPN como Hamachi . Se você configurar o sistema para estabelecer automaticamente a conexão VPN na inicialização, você poderá se conectar sempre que precisar. Hamachi faz toda a negociação do firewall para você. A única desvantagem é que você precisa confiar que os servidores Hamachi estão funcionando e funcionando quando você precisa se conectar.

Se você tem um servidor que está sempre ativo, você pode configurar autossh para que o sistema remoto sempre mantenha um túnel aberto e conectado ao seu servidor. A única desvantagem é que o sistema remoto está comprometido. O invasor obterá as chaves usadas para estabelecer a sessão ssh. Seria muito importante manter seu sistema que aceita a conexão ssh realmente bloqueada.

Abaixo está minha resposta original, eu tinha assumido que atualizar o roteador era uma opção.

Uma solução que você pode querer investigar se o firewall oferecer suporte a ela, é batida de porta . Com alguns firewalls, deve ser possível enviar um conjunto especial de pacotes que o firewall detecta e, em seguida, abre temporariamente um buraco através do firewall.

Existem muitas implementações, algumas melhores que outras. Alguns usam criptografia strong para tornar quase impossível que uma pessoa sem as chaves certas envie a batida correta.

    
por 13.05.2009 / 23:46
6

Eu não ficaria tão preocupado em deixar a porta 22 acessível à internet, mas tomaria algumas providências para protegê-la.

Primeiramente, desabilite a autenticação interativa do teclado e mude para as chaves ssh.

Em segundo lugar, instale algo como fail2ban em seu servidor remoto para obter endereços IP que repetidamente investigam sua máquina. Como você configurou as chaves ssh, não deve haver falhas de autenticação para usuários autorizados.

Como alternativa, se você puder, siga o conselho do WerkkreW e configure o firewall na frente da máquina para encerrar uma conexão vpn e, em seguida, permita que o daemon ssh no servidor remoto aceite conexões que venham a essa VPN.

Alternativamente, se seu firewall não puder terminar a conexão vpn, você provavelmente poderá encaminhar os pacotes GRE ou IPSEC para sua máquina linux e terminá-la lá.

    
por 13.05.2009 / 23:53
4

Parece que você está procurando knockd

Você pode instalá-lo no próprio servidor linux, com iptables , de modo que seja como um firewall de segundo nível. Mesmo com a porta 22 aberta no firewall front-end, ela não estaria aberta no servidor, portanto, os escaneamentos de portas não veriam portas abertas. Então, quando você envia o "toque secreto", de repente você tem um caminho aberto para a porta 22.

Isso faz sentido?

    
por 14.05.2009 / 00:39
3

Para resumir todas as respostas:

use o ssh, mas torne-o mais obscuro e seguro.

Por segurança:

  • Verifique se o login raiz não é permitido (PermitRootLogin no).
  • Limitar usuários, que podem fazer login pela opção de configuração AllowUsers ou AllowGroups.
  • Assegure-se de que use apenas o protocolo ssh de 2 versões (Protocolo 2).
  • É aconselhável usar somente chaves de autenticação, mas a senha é mais conveniente, quando pode haver necessidade de se conectar ao servidor a partir de feriados nos quais você não tem acesso a chaves de autenticação.

Para a obscuridade:

  • Altere a porta ssh para alguma porta alta aleatória que você se lembraria, como 20486. Isso eliminaria a maioria dos bruteforcers automáticos, mas não a ocultaria de todas as varreduras de portas no servidor.
  • Ocultar capacidade de se conectar à porta. Uma maneira é a porta bater mencionada em outras respostas, mas você precisa de um software especial, que não pode ser acessado em todos os lugares. Outra opção simples é usar o firewall iptables com o módulo recente para criar regras, o que permitiria conectar-se apenas na segunda ou terceira tentativa. Então você sabe que você tem que tentar várias vezes para se conectar com sucesso, mas simples todas as varreduras de portas não revelariam a porta ssh. Regras seriam semelhantes àquelas:


iptables -A INPUT -m tcp -p tcp --dport 20486 -m state --state NEW -m recent --set
iptables -A INPUT -m tcp -p tcp --dport 20486 -m state --state NEW  -m recent --rcheck --seconds 60 --hitcount 2 -j ACCEPT
iptables -A INPUT -m tcp -p tcp --dport 20486 -j DROP
    
por 14.05.2009 / 09:33
2

Tarefa agendada do script do seu túnel ssh reverso ou abra a porta do firewall.

Se você está preocupado com o fato de o SSH estar aberto ao mundo, você pode agendar a tarefa quando seu período de manutenção com scripts do iptables e só tiver a porta disponível.

    
por 13.05.2009 / 23:39
2

Olhe para bater de porta para abrir seu túnel SSH.

Além disso, execute denyhosts para bloquear pessoas após muitas solicitações incorretas.

Ambos os pacotes estão disponíveis nos repositórios padrão do Ubuntu, Fedora e RHEL.

    
por 14.05.2009 / 00:06
1

Vá em frente e abra uma porta, apenas faça uma fora do intervalo normal. Eu faria uma porta aleatória acima de 1024. Dessa forma, é improvável que os hackers procurem por ela.

    
por 14.05.2009 / 05:16
0

Não há motivo para não perfurar o firewall, se você precisar acessar a máquina remotamente, mesmo que não seja necessário.

No entanto, se você ainda não quiser (ou não puder) abrir a porta, um script de shell simples poderá monitorar algum recurso disponível da Internet que você controla e ouvir o comando para iniciar o túnel reverso. Contas de e-mail, canais de IRC e páginas da Web vêm imediatamente à mente como dispositivos de acionamento.

Claro, isso é muito mais frágil e menos seguro do que apenas abrir a porta. Mas tenho certeza que você tem suas razões.

    
por 14.05.2009 / 00:47