2015-08-09 18 views
8

Diciamo che voglio configurare uno schema di autenticazione di un uomo povero per un semplice servizio di rete.Utilizzare le chiavi ssh per l'autenticazione in altre applicazioni?

Non voglio preoccuparmi dell'autenticazione tramite nome utente/password, per semplicità voglio solo avere un elenco di chiavi pubbliche nella mia applicazione e chiunque possa dimostrare di essere il proprietario di quella chiave può utilizzare il mio servizio.

Ai fini della mia applicazione, semplificherebbe notevolmente il processo di autenticazione dal momento che tutti i miei utenti si trovano sulla rete locale e usano tutti Unix. Ogni volta che salgo a bordo di un nuovo utente posso semplicemente chiedere loro la loro chiave pubblica ssh.

Esiste un modo semplice per riutilizzare il meccanismo coinvolto nell'autenticazione della chiave pubblica ssh in un'applicazione non ssh? Questa è una domanda intesa come indipendente dal linguaggio.

risposta

2

Se si dispone solo di un elenco di utenti che possono utilizzare l'applicazione e non è necessario vedere chi ha fatto cosa.

È possibile regolare il server in modo che si mette in ascolto solo su localhost (127,1), piuttosto che 0.0.0.0, e fornire uno sshd ristretto, l'inoltro al porto necessario per connettersi all'applicazione

~/.ssh/authorized_keys fornirà un elenco di le chiavi autorizzate che possono essere utilizzate.

ssh -I private_key_file <hostname> -L 3000:localhost:3000 

Per una configurazione di base e aiutare con la configurazione sshd, check out questa risposta: https://askubuntu.com/questions/48129/how-to-create-a-restricted-ssh-user-for-port-forwarding

Nota: Essere avvertito che se non si blocca in giù, ogni utente avrà pieno accesso alla shell sulla scatola in cui è ospitata la macchina.

1

Supponendo che si stia parlando di un'applicazione basata sul web. Quello che stai davvero cercando sono i certificati client X.509 (1.3.6.1.5.5.7.3.2). Questo ti permetterà di identificare un utente individualmente per la tua applicazione.

Questi si trovano ad affrontare gli stessi problemi che solitamente si presentano quando si guarda alla distribuzione delle chiavi. Che è generalmente considerato un problema difficile.

Se si desidera percorrere questa strada, ecco cosa si dovrebbe fare.

  • Generare un certificato di origine (una volta)
  • web server di installazione con moduli appropriati per analizzare il certificato (nginx/apache)
  • generare un certificato per ogni utente (OpenSSL)
  • Scarica cerificiate da centralizzata server. (Magari utilizzare la loro chiave pub ssh qui)
  • Installare il CERT X509 localmente (dipende dal sistema operativo)

Sul lato server, si avrebbe bisogno di elaborare il CERT come parte del web-server (nginx o Apache dovrebbe avere moduli per fare ciò) e quindi passare il nome sull'applicazione come campo di intestazione che è possibile elaborare internamente.

Questa è una soluzione di sicurezza molto migliore rispetto a nomi utente e password, tuttavia è complessa a causa del problema di distribuzione delle chiavi. La maggior parte delle persone non si preoccuperebbe poiché nella maggior parte delle applicazioni è abbastanza facile integrare gli accessi con LDAP o raggio.

2

Un vero e proprio capestro: potresti avvolgere l'applicazione in modo da creare un vero tunnel SSH da localhost al tuo server e utilizzarlo?

Problemi correlati