SSH Tunnel para usuário restrito com PuTTY e sem shell

3

Por isso, tenho usado túneis SSH para restringir o acesso a sites internos ou partes de sites públicos por um tempo agora, e como somente os administradores tinham acesso SSH, usei contas de usuário padrão não-root / sudo. Bem, agora que estou expandindo e tentando fazer com que os alunos das universidades locais envolvidas expandam seus projetos, eles precisarão começar a acessar algumas dessas páginas internas.

O servidor Proxy é uma caixa do CentOS 6.4, com o SELinux habilitado, e não estará executando nenhum outro serviço além do proxy. Eu estou olhando para, eventualmente, configurar uma VPN completa, mas, neste caso, é simplesmente permitir o acesso a determinadas máquinas com uma lista de permissões IP, em vez de acesso total à rede interna.

Eu observei todos os métodos para configurar um proxy SOCKS com contas de usuário com coisas como / bin / false etc, mas

A) eles assumem que apenas uma única porta ou host está sendo encaminhado (enquanto neste caso eu tenho um conjunto de instâncias de VPS que serão alteradas sob demanda nas configurações de rede), ou

B) que um cliente SSH regular está em uso ao invés de algo como PuTTY (por mais que eu gostaria de forçar todos os alunos a usar uma VM ou instalar o linux diretamente, isso não é uma opção, já que a escola usa o PuTTY em seu hardware de engenharia para uso dos alunos).

Aqui está o que eu encontrei até agora: Se um cliente ssh regular é usado, eu posso configurar o shell do usuário para / bin / false e o usuário pode especificar o comando -N ao configurar o proxy SOCKS, mas infelizmente para usuários do PuTTY isso não parece funcionar (pelo menos Eu não consegui fazer funcionar).

Quando o PuTTY abre um túnel através das opções de tunelamento padrão, ele tem que abrir um shell que imediatamente se desconecta no login, já que o usuário tem um shell / bin / false .. Se eu especificar o argumento "no shell or command" no Configurações de SSH, as opções de proxy não parecem ter configuração. Se eu tentar configurar o proxy nas opções de SSH para comandos remotos, ele ainda não será executado, a menos que eu permita um shell ou outros comandos nas opções.

Questões relacionadas Encontrei, mas não me encaixo bem:

Crie túneis SOCKS com PuTTY e nologin (este tecnicamente funcionaria, mas o shell é simplesmente um comando sleep que é executado por um tempo muito longo, e eu estou preocupado com o fato de ele ter escapado. Eu prefiro ter um verdadeiro noshell e um shell que simplesmente trava por razões de segurança )

link (Isso não funciona porque exigiria que o usuário usasse uma instalação real do ssh e programas como o PuTTY não funcionariam). Também preciso que eles acessem páginas da Web, embora eu possa simplesmente especificar PermitTunnel para a conta, em vez de permitir apenas uma porta específica.

"noshell" para usuários de proxy ssh (Este não funciona para o PuTTY pelas razões que afirmei acima sobre a necessidade de o PuTTY ter comandos habilitados para configurar o Proxy SOCKS)

Alguma sugestão? Eu poderia facilmente estar perdendo alguma coisa, mas não tenho certeza.

-Jim

    
por DaJJHman 03.12.2013 / 16:06

2 respostas

4

Eu encontrei uma solução (em um post aqui sem uso de tags como nologin ou noshell, mas sim um truque simples para os usuários do Windows, mas eu fiz isso funcionar para mim sem um shell).

Eu criei um script em lote usando a resposta deste post que pode executar uma instalação padrão do PuTTY e configurar um túnel sem executar comandos que poderiam fazer com que o shell se desconectasse:

Morto túnel SSH simples para meus usuários do Windows

"C:\Program Files (x86)\PuTTY\plink.exe" -v -N -D localhost:8080 proxy@remote_host

Como isso faz com que os usuários do Windows com o PuTTY possam acessar o túnel, posso usar o shell da conta como / bin / false

Postado aqui para qualquer pessoa que possa estar em uma situação semelhante e resolver o problema. Se houver outras soluções, adoraria ouvi-las!

Agora eu só tenho que tentar fazer isso funcionar com o meu sistema de dois fatores baseado em push do SSH que estou implementando em todos os meus sistemas, mas isso é algo para trabalhar depois que todo o resto estiver funcionando.

-Jim

    
por 05.12.2013 / 00:57
0

Acabamos de ver que o PuTTY tem a seguinte opção e pode ser o que você está procurando: Conexão- > SSH- > Não inicie um shell ou comando

Se habilitado, a conexão é feita, não mais exibição no console, mas é mantida viva e o túnel funciona bem. Espero que ajude.

    
por 09.08.2018 / 11:16