Como usar o SSH para login no aplicativo da web?

2

É possível ligar o login de uma aplicação web a um servidor SSH? Gostaria de ter acesso a um painel de controle da Web conectado a um grupo de usuários SSH. Eles poderiam usar a mesma senha para o login do painel de controle, como fariam em sua conta SSH normal. Ele não precisa dar a eles acesso SSH - basta fazer a autenticação de nome de usuário / senha. Idealmente, ele poderia usar sua chave SSH para login automático, quando visitar o painel de controle, mas não acredito que isso seja possível.

    
por Azmisov 12.07.2014 / 03:01

2 respostas

1

Em grande parte, sua pergunta se traduz em: Eu quero que meu aplicativo da Web autentique usuários no banco de dados do usuário do sistema ( /etc/passwd , /etc/shadow e /etc/group ), assim como o SSH. O jargão para a camada de autenticação do sistema Linux é o PAM, módulos de autenticação plugáveis.

O mais rápido é o mais provável de configurar o Apache para fornecer suporte ao PAM. Uma receita é executar pwauth e mod_authnz_external resultando em uma configuração do Apache parecida com:

DefineExternalAuth pwauth pipe /usr/sbin/pwauth

<Directory /var/www/yourapp>
 AuthType Basic
 AuthName "Your app requires authentication" 
 AuthBasicProvider external
 AuthExternal pwauth
 # any valid username/password is allowed access
 Require valid-user
 ## Only bob and sarah allowed
 # Require user bob sarah
 ## Only the members of the group yourappusers are granted access
 # Require group yourappusers
</Directory>

Em ambientes maiores, a autenticação de usuário baseada em arquivo local geralmente é substituída por um diretório central de usuários, geralmente um diretório LDAP. No nível do sistema, que é a questão de alterar a configuração do PAM, após o qual todos os aplicativos que precisam de autenticação são instantaneamente informados sobre o LDAP.

Existe também um módulo LDAP do Apache, embora normalmente a maioria dos aplicativos suporte nativamente a autenticação LDAP, em vez disso, confiando no Apache. Isso também permite que coisas como um botão "fazer logoff" funcionem, funcionalidade que não existe com a autenticação do Apache.

As chaves SSH são específicas para o protocolo SSH e, embora você possa achar a reconstrução dessa funcionalidade em um aplicativo da web um desafio interessante, você deve saber que o equivalente mais usado da autenticação de chave pública SSH em aplicativos da Web é implementar certificados de cliente SSL .

    
por 12.07.2014 / 12:29
-2

Se você realmente precisar da criptografia fornecida pelo SSH, poderá fazer o seguinte:

Faça com que o Apache ouça apenas o localhost no servidor que também executa o SSHd. Nada mais se você quiser mantê-lo seguro. Então você simplesmente cria um túnel SSH para o servidor, que redireciona para si mesmo para a porta onde o Apache está escutando.

Isso pode ser feito da seguinte forma: ssh -L 8080:127.0.0.1:80 [email protected] (isso é para o OS X)

Quando a conexão é estabelecida, você pode simplesmente ir ao localhost: 8080 no navegador na máquina remota (cliente) e acessar a página da Web.

    
por 12.07.2014 / 06:17