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

11

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

Atualização: Decidi seguir meu plano original de um script para criar um túnel ssh reverso. Embora outras soluções sugeridas, como bater à porta, sejam mais do que realmente desejo, neste caso, não tenho acesso para configurar o roteador, a não ser conduzir um usuário através de uma configuração. estremecer

baudtack
fonte
Você não precisa configurar o roteador. O Linux possui um firewall de tabelas de ip, suficiente para a segurança do firewall. E a criação de um túnel ssh sempre ativo para o servidor torna-o vulnerável ao ataque ao host ao qual está conectado.
Kazimieras Aliulis
1
No entanto, eu teria que abrir uma porta no roteador para passar tudo o que eu precisava para a caixa Linux. O túnel ssh nem sempre está ativado. Ele será iniciado por um usuário que termina quando eu precisar do acesso à máquina.
22009 baudtack

Respostas:

5

Tem menos a ver com se preocupar com a abertura de uma porta e mais com não querer orientar o usuário pelo processo de abertura de uma porta. Infelizmente, não tenho acesso a este roteador.

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

Se você tiver um servidor sempre ativo , poderá configurar a transferência automática para que o sistema remoto mantenha sempre um túnel aberto e conectado ao seu servidor. A única desvantagem é que o sistema remoto está comprometido. O atacante receberá as chaves que foram usadas para estabelecer a sessão ssh. Seria muito importante manter seu sistema que aceita a conexão ssh realmente bloqueada.


Abaixo está a 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 suportar, é a porta batendo . Com alguns firewalls, deve ser possível enviar um conjunto especial de pacotes que o firewall percebe e, em seguida, abre temporariamente um buraco no firewall.

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

Zoredache
fonte
Parece uma ótima ideia! Infelizmente, o firewall em questão é apenas um simples Linksys de nível de consumidor ou algo equivalente.
baudtack
1
Se você pode instalar o DD-WRT você pode usar knockd ( dd-wrt.com/wiki/index.php/Knockd )
Zoredache
@Zoredache True, mas isso está em um local remoto. Não tenho acesso a esse roteador e estremecia ao pensar em tentar orientar um usuário em uma instalação dd-wrt.
22009 baudtack
Concordo que esta é provavelmente a maneira correta de configurar isso, desde que eu tenha acesso físico ao roteador para instalar o dd-wrt.
22009 baudtack
Hamachi, desde que foi adquirido pelo LogMeIn, mostrou consideração abismal aos usuários do Linux. Acho o produto não confiável quando as máquinas Linux fazem parte da minha rede hamachi.
Bmb
6

Eu não estaria tão preocupado em deixar a porta 22 acessível à Internet, mas tomaria algumas medidas para protegê-la.

Primeiro, desative a autenticação interativa do teclado e vá para as teclas ssh.

Em segundo lugar, instale algo como fail2ban no servidor remoto em endereços IP blackball que analisam repetidamente 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 os conselhos do WerkkreWs e configure o firewall na frente da máquina para encerrar uma conexão VPN, apenas permita que o daemon ssh no servidor remoto aceite conexões que atravessam essa VPN.

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

Dave Cheney
fonte
Tem menos a ver com se preocupar com a abertura de uma porta e mais com o fato de não querer orientar o usuário no processo de abertura de uma porta. Infelizmente, não tenho acesso a este roteador.
22009 baudtack
Eu entendo e simpatizo com sua dor.
Dave Cheney
2
O primeiro passo nesta solução seria configurar o sshd para executar em uma porta não padrão. Existem muitos bots batendo na porta 22 por aí. Escolha uma porta que não apareça em / etc / services e "nmap HOST" não a encontre.
21609 hayalci
4

Parece que você está procurando knockd

Você pode instalá-lo no próprio servidor Linux, com o iptables, para que seja como um firewall de segundo nível. Mesmo com a porta 22 aberta no firewall de front-end, ela não estaria aberta no servidor; portanto, os portscans não veriam nenhuma porta aberta. Então, quando você envia a "batida secreta", de repente você tem um caminho aberto para a porta 22.

Isso faz sentido?

Brent
fonte
A menos que eu esteja enganado, eu teria que encaminhar todas as portas de batida também, certo? Isso não seria óbvio quando alguém examinou o roteador? Eles não sabiam a ordem, mas reduzir as combinações possíveis para 6, se eu me lembro do meu como fazer permutações corretamente, dá a eles um grande avanço. Ou estou pensando nisso errado?
22009 baudtack
Embora as portas usadas para batidas precisem ser encaminhadas, o host executando knockd não precisa realmente responder à origem da batida de forma alguma.
Zoredache
correto - as portas abertas no primeiro firewall não serão abertas no segundo, portanto, para o scanner, todas elas parecem fechadas. Não há como distinguir portas de batida de não batidas.
Brent
3

Para resumir todas as respostas:

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

Para segurança:

  • Verifique se o login raiz não é permitido (PermitRootLogin no).
  • Limite de usuários, que podem efetuar login pela opção de configuração AllowUsers ou AllowGroups.
  • Verifique se ele usa apenas o protocolo ssh de 2 versões (Protocolo 2).
  • É aconselhável usar apenas chaves de autenticação, mas a senha é mais conveniente, quando pode ser necessário conectar-se ao servidor a partir do feriado, onde você não tem acesso às chaves de autenticação.

Para obscuridade:

  • Altere a porta ssh para uma porta alta aleatória que você lembraria, como 20486. Isso eliminaria a maioria dos bruteforcers automáticos, mas não a ocultaria de todas as verificações de portas no servidor.
  • Ocultar a capacidade de conectar-se à porta. Uma das maneiras é a porta batendo mencionada em outras respostas, mas você precisa de um software especial, que não pode ser acessível em qualquer lugar. Outra opção simples é usar o firewall do 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 precisa tentar várias vezes para se conectar com êxito, mas a varredura simples de todas as portas não revelaria a porta ssh. As regras seriam semelhantes às:


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

Kazimieras Aliulis
fonte
Um bom resumo com +1 e uma ideia interessante sobre o truque de várias tentativas.
217 David Z
2

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

Se você está preocupado com o fato de o SSH ser aberto ao mundo, você pode agendar tarefas durante o período de manutenção com scripts iptables e ter apenas a porta disponível.

Sclarson
fonte
1
Acordado. A menos que você tenha acesso à VPN, a única solução real é basicamente abrir uma porta. Se você estiver nervoso com isso, sempre poderá usar uma porta não padrão.
WerkkreW
2

Olhe em porta batendo para abrir seu túnel SSH.

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

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

Tim Howland
fonte
1

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

Brad Gilbert
fonte
0

Não há razão para não abrir o buraco no firewall se você precisar acessar a máquina remotamente, por mais pouco que seja.

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

Obviamente, isso é muito mais frágil e menos seguro do que apenas abrir a porta. Mas tenho certeza que você tem seus motivos.

Brian
fonte