Indice del forum www.zeroshell.net
Distribuzione Linux ZeroShell
 
 FAQFAQ   CercaCerca  GruppiGruppi   RegistratiRegistrati 
 ProfiloProfilo  Log inLog in   Messaggi privatiMessaggi privati 

Kerberos e ssh

 
Nuovo argomento   Rispondi    Indice del forum -> Reti
Precedente :: Successivo  
Autore Messaggio
teme



Registrato: 06/06/08 22:07
Messaggi: 12

MessaggioInviato: Ven Giu 06, 2008 10:16 pm    Oggetto: Kerberos e ssh Rispondi citando

Buona sera,
sono un profondo utilizzatore di questa stupenda distribuzione e la sto usando per autenticare presso l'università oltre 5000 utenti ad internet.
Vorrei provare ad utilizzare le spaventose funzionalità di kerberos, ed in particolare l'autenticazione ssh in single sign-on.
Ho letto molto in giro e sul vostro forum ma non riesco a trovare una soluzione.
Ho creato una rete cosi:
    kerberos su 192.168.0.75
    computer a su 192.168.0.70 con sshd
    computer b su 192.168.0.30

Il computer B si dovrebbe autenticare su A senza immettere password.
Faccio questi passaggi:
1)lancio sshd sul pc A avendo precedentemente decommentato la linea
KerberosAuthentication yes
GSSAPIAuthentication yes
2)apro un browser in A, mi collego all'indirizzo 192.168.0.75, eseguo la login con un utente
3) apro un browser in B, mi collego all'indirizzo 192.168.0.75, eseguo la login con un altro utente
4) dal pc B eseguo: ssh 192.168.0.70 e mi continua a chiedere username e password.

Cosa sbaglio?

Inoltre, devo settare in qualche modo quale è il pc con il kerberos sul server ssh?

Vi ringrazio per l'aiuto
Top
Profilo Invia messaggio privato
teme



Registrato: 06/06/08 22:07
Messaggi: 12

MessaggioInviato: Ven Giu 06, 2008 10:35 pm    Oggetto: Rispondi citando

Googlando ho trovato questo articolo e pensavo potesse fare al caso mio:
http://www.zeroshell.net/forum/viewtopic.php?t=436&highlight=kerberos+ssh

Dato che secondo l'autore è un problema di host, ho:
Arrow aggiunto in zeroshell, sezione host, un hostname=serverssh; domain =example.com
Arrow modificato /etc/hosts di zeroshell in modo che 192.168.0.70 puntasse a serverssh.example.org e 192.168.0.75 puntasse a kdc.example.com
Arrow modifcato /etc/hosts di 192.168.0.70 in modo che 192.168.0.75 puntasse a zeroshell.example.com e kdc.example.com e 192.168.0.70 a serverssh.example.com
Arrow eseguito il ktadd come da post precedente con relativa copia delle chiavi
Arrow rianciato sshd

Ma nulla da fare
Top
Profilo Invia messaggio privato
fulvio
Site Admin


Registrato: 01/11/06 17:45
Messaggi: 1559

MessaggioInviato: Ven Giu 06, 2008 11:07 pm    Oggetto: Rispondi citando

In realtà, per poter usare il SSO ed effettuare il login con ssh da una macchina all'altra, anche ripetutamente, senza digitare ad ogni passaggio la password è necessario possedere un ticket granting ticket Kerberos 5. L'operazione di effettuare il login con un browser sul box zeroshell non ti da' un ticket. Ci sono due metodi per avere un ticket:

1) dare il comando

kinit fulvio

e digitare la password.
Se non ci sono errori avrai nella cache delle credenziali il TGT che puoi visualizzare con il comando

klist

2) ti configuri i moduli PAM per autenticare con Kerberos 5. In tal caso otterrai automaticamente un ticket quando fai login nel sistema.


Tieni conto che il server KDC va indicato nel file di configurazione /etc/krb5.conf.

Ottenere un TGT è un primo passo. Per ora prova se riesci ad ottenerlo. Fatto ciò si tratta di ottenere i ticket di servizio per la remote shell, ma ti spiego dopo cosa fare.

Ciao
Fulvio
Top
Profilo Invia messaggio privato
teme



Registrato: 06/06/08 22:07
Messaggi: 12

MessaggioInviato: Ven Giu 06, 2008 11:26 pm    Oggetto: Rispondi citando

Ciao Fulvio e grazie per la risposta tempestiva.
Proverò subito ad ottenere un ticket, ma la domanda è questa:
lo devo ottenere sia su client che su server?
In tal caso, entrambi i pc (e quindi tutti quelli che saranno collegati nella rete che dovranno utilizzare SSO) devono avere kerberos almeno per questi comandi?
Grazie
Top
Profilo Invia messaggio privato
teme



Registrato: 06/06/08 22:07
Messaggi: 12

MessaggioInviato: Ven Giu 06, 2008 11:51 pm    Oggetto: Rispondi citando

fulvio ha scritto:

Ottenere un TGT è un primo passo. Per ora prova se riesci ad ottenerlo. Fatto ciò si tratta di ottenere i ticket di servizio per la remote shell, ma ti spiego dopo cosa fare.

Ciao
Fulvio

Il primo passo è stato effettuato: digitando klist ho una stringa composta da data di inzio validità, dalla data di scadenza e dal principal che in tal caso è krbtgt/EXAMPLE.COM@EXAMPLE.COM

Ho capito quindi che anche il client deve avere kerberos installato per richiedere il ticket; devo procurarmi un pc perché per le prove il mio client è l'eeepc e xandros ha parecchi problemi. Conosci per caso una live che abbia kerberos integrato?

Cmq se mi spiegi cosa devo fare per ottenere i ticket di servizio, ti sarei molto grato.

Grazie ancora
Top
Profilo Invia messaggio privato
fulvio
Site Admin


Registrato: 01/11/06 17:45
Messaggi: 1559

MessaggioInviato: Sab Giu 07, 2008 7:16 am    Oggetto: Rispondi citando

Il TGT, ovvero il Ticket Granting Ticket, è un ticket speciale che serve al client per chiedere al KDC i ticket necessari ad accedere ad un servizio come SSH, la posta, il web ed a qualsiasi servizio kerberizzato senza digitare la password. L'utente non deve fare nessuna operazione aggiuntiva per ottenere un ticket di servizio. Semplicemente deve tentare di usare il servizio ed in automatico, se possiede un TGT valido, se lo ritrova nella cache delle credenziali consultabile con klist. Ovviamente, l'amministratore deve creare tale principal nel database di Kerberos.
Supponiamo che il tuo server ssh abbia nome di dominio completo (FQDN)
serverssh.example.com: dovrai aggiungere in kerberos con il kadmin (o kadmin.local) la entry

host/serverssh.example.com@EXAMPLE.COM

Usando Zeroshell la creazione del principal host/serverssh.example.com@EXAMPLE.COM
avviene in automatico se crei l'host serverssh.example.com.

Ma affinché tutto funzioni è fondamentale che la reverse DNS funzioni per bene e cioè sul tuo client da cui vuoi fare ssh all'IP 192.168.0.70 corrisponda esattamente il FQDN serverssh.example.com. Ciò lo puoi verficare con host o nslookup di 192.168.0.70.

Se tutto ciò è corretto allora dopo aver tentato il comando ssh, con klist vedrai il ticket di servizio.

Se non sei ancora riuscito ad effettuare il login, probabilmente non hai ancora aggiunto la chiave segreta sul server ssh.

Ciao
Fulvio
Top
Profilo Invia messaggio privato
teme



Registrato: 06/06/08 22:07
Messaggi: 12

MessaggioInviato: Sab Giu 07, 2008 11:10 am    Oggetto: Rispondi citando

Ciao fulvio
ti aggiorno sugli sviluppi.
Ho aggiunto il server dns di serverssh.example.com, ora se vado sulla macchina client, e mettendo in nameserver 192.168.0.75, ad host serverssh.example.com risponde:
serverssh.example.com has address 192.168.0.70
Ho messo sia sul client che sul server questo /etc/krb5.conf
Codice:

[libdefault]
default_realm = EXAMPLE.COM
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
[realms]
EXAMPLE.COM ={
kdc = zeroshell.example.com
admin_server = zeroshell.example.com
}
[domain_realm]
.example.com = EXAMPLE.COM

Ho eseguito su entrambi i pc kinit con due nomiutenti diversi
ho esportato la chiave in /etc/krb5.keytab

quando pero' avvio ssh dal client, putroppo richiede ancora la password Sad
Top
Profilo Invia messaggio privato
fulvio
Site Admin


Registrato: 01/11/06 17:45
Messaggi: 1559

MessaggioInviato: Sab Giu 07, 2008 12:04 pm    Oggetto: Rispondi citando

Per il funzionamento di Kerberos non è importante la risoluzione diretta del DNS e pertanto che

host serverssh.example.com

risponda 192.168.0.70 e' per tuà comodità, ma a Kerberos poco importa.

Quello che conta è la risoluzione inversa, ovvero se dai

host 192.168.0.70

deve ritornarti serverssh.example.com.
Per ora, se non riesci a fare il login ssh senza password, non preoccuparti. Controlla invece con klist che nella cache delle credenziali tu abbia il ticket ti servizio host/serverssh.example.com. Un passo alla volta vedrai che ti funziona.

Ciao
Fulvio
Top
Profilo Invia messaggio privato
teme



Registrato: 06/06/08 22:07
Messaggi: 12

MessaggioInviato: Sab Giu 07, 2008 12:35 pm    Oggetto: Rispondi citando

Effettivamente il reverse dns non funzionava, ma ora è stato sistemato.

allora dando klist sul server ssh ho:
Codice:
 
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: utente2@EXAMPLE.COM

Valid starting     Expires            Service principal
06/07/08 12:18:12  06/08/08 12:18:09  krbtgt/EXAMPLE.COM@EXAMPLE.COM


Kerberos 4 ticket cache: /tmp/tkt0
klist: You have no tickets cached

mentre adesso sul client è uscito ciò che tu dicevi, ovvero:
Codice:

klist
Credentials cache: FILE:/tmp/krb5cc_0
        Principal: utente1@EXAMPLE.COM

  Issued           Expires          Principal                           
Jun  7 12:06:03  Jun  7 22:06:49  krbtgt/EXAMPLE.COM@EXAMPLE.COM       
Jun  7 12:24:40  Jun  7 22:06:49  host/zeroshell.example.com@EXAMPLE.COM

noto anche che sul server è presente quell'errore finale, sarà normale?

Shocked ps: non mi preoccupo ma chiede ancora la password...cmq spero che pian piano ci stiamo avvicinando
Top
Profilo Invia messaggio privato
teme



Registrato: 06/06/08 22:07
Messaggi: 12

MessaggioInviato: Sab Giu 07, 2008 2:24 pm    Oggetto: Rispondi citando

provando anche ad effettuare un "ssh serverssh.example.com" dal client, devo sempre digitare la password per entare. In ogni modo sul client, chiudendo ssh, visualizzo
Codice:

[root@zeus ~]# klist
Credentials cache: FILE:/tmp/krb5cc_0
        Principal: utente1@EXAMPLE.COM

  Issued           Expires          Principal                           
Jun  7 15:19:07  Jun  8 01:19:52  krbtgt/EXAMPLE.COM@EXAMPLE.COM       
Jun  7 15:20:28  Jun  8 01:19:52  host/serverssh.example.com@EXAMPLE.COM

mentre sul server rimane solo il krbtgt/EXAMPLE.COM@EXAMPLE.COM
Top
Profilo Invia messaggio privato
fulvio
Site Admin


Registrato: 01/11/06 17:45
Messaggi: 1559

MessaggioInviato: Sab Giu 07, 2008 3:49 pm    Oggetto: Rispondi citando

Ok, il secondo ticket che vedi con klist è il ticket di servizio per accedere al serverssh.example.com senza digitare la password.
Ora devi aggiungere sul server ssh la chiave segreta del servizio. Per farlo, dal server ssh dai il comando:

kadmin -p admin -q "ktadd host/serverssh.example.com"

Se non hai già creato l'utente utente1 sul server ssh dai il comando

adduser utente1

Ora dal client distruggi la cache delle credenziali con

kdestroy

Cio' va fatto poiché quando usi il ktadd, automaticamente incrementi di 1 il KVNO (Key Version Number) e quindi per riallinearlo devi richiedere il ticket con:

kinit utente1

Prova quindi

ssh utente1@serverssh.example.com.

Ciao
Fulvio
Top
Profilo Invia messaggio privato
teme



Registrato: 06/06/08 22:07
Messaggi: 12

MessaggioInviato: Sab Giu 07, 2008 4:09 pm    Oggetto: Rispondi citando

Allora Fulvio, la soluzione è all'orizzonte e l'orizzonte è sempre più vicina.

Ho fatto tutto ciò che tu mi hai detto, creando su kerberos l'utente che avevo già sul server ssh (claire).
La password di utente sul server ssh è diversa da quella del kerberos.

Quando accedo dal client a ssh claire@serverssh.example.com. avendo precedentemente caricato su questo l'utente claire del kerberos, la password mi continua ad essere richiesta, ma è quella di kerberos.
L'accesso sul server ssh, senza usare la password di utente, FUNZIONA Laughing

Rimane solo la domanda: perché mi chiede quella del kerberos?

Cmq ti ringrazio molto Fulvio per la disponibilità
Top
Profilo Invia messaggio privato
fulvio
Site Admin


Registrato: 01/11/06 17:45
Messaggi: 1559

MessaggioInviato: Sab Giu 07, 2008 6:37 pm    Oggetto: Rispondi citando

Comincio a non capire.
Elenca i comandi che dai mostrando anche su quale host li esegui.

Ciao
Fulvio
Top
Profilo Invia messaggio privato
teme



Registrato: 06/06/08 22:07
Messaggi: 12

MessaggioInviato: Dom Giu 08, 2008 9:13 am    Oggetto: Rispondi citando

Fulvio allora ho fatto qualche prova che adesso ti descrivo:
zeroshell:

Arrow ho creato un utente claire con password 0987
Arrow ho dato il comando kadmin.local
> ktadd -k /tmp/serverssh.keytab host/serverssh.example.com@EXAMPLE.COM
Arrow ho trasferito il file sul serverssh in /etc/krb5.keytab

server ssh:

Arrow ho creato un utente con username claire con password claire
Arrow ho dato il comando kadmin -p admin -q "ktadd host/serverssh.example.com"
Arrow mi ha chiesto la password di admin@EXAMPLE.COM a cui ho risposto zeroshell


client ssh:

Arrow ho eseguito un kinit claire dando la password 0987
Codice:

Credentials cache: FILE:/tmp/krb5cc_0
        Principal: claire@EXAMPLE.COM

  Issued           Expires          Principal                   
Jun  8 09:46:34  Jun  8 19:48:12  krbtgt/EXAMPLE.COM@EXAMPLE.COM

Arrow ho dato il comando ssh claire@192.168.0.70 e mi ha chiesto la password
ho inserito claire(come funzionerebbe senza kerberos), ma nulla, allora ho provato ad inserire 0987 e funziona.

Sottolineo, che durante la connessione ssh client - server, non ho più il ticket dell'host, infatti:
Codice:

[root@zeus ~]# klist
Credentials cache: FILE:/tmp/krb5cc_0
        Principal: claire@EXAMPLE.COM

  Issued           Expires          Principal                   
Jun  8 09:46:34  Jun  8 19:48:12  krbtgt/EXAMPLE.COM@EXAMPLE.COM
[root@zeus ~]# ssh claire@192.168.0.70
claire@192.168.0.70's password:
Last login: Sun Jun  8 10:06:10 2008 from 192.168.0.30
Linux 2.6.21.5.

The requirements of romantic love are difficult to satisfy in the trunk
of a Dodge Dart.
                -- Lisa Alther

claire@scheggetta:~$ exit
logout
Connection to 192.168.0.70 closed.
[root@zeus ~]# klist
Credentials cache: FILE:/tmp/krb5cc_0
        Principal: claire@EXAMPLE.COM

  Issued           Expires          Principal                   
Jun  8 09:46:34  Jun  8 19:48:12  krbtgt/EXAMPLE.COM@EXAMPLE.COM
[root@zeus ~]#


per scrupolo sono andato sul server ssh, dando un kinit utente1 (precedentemente creato in kerberos con password 1234), una volta loggato il ticket di servizio sul client non c'è.

Ah ecco un host di 192.168.0.70 dal client:
Codice:
[root@zeus ~]# host 192.168.0.70
70.0.168.192.in-addr.arpa domain name pointer serverssh.example.com.
[root@zeus ~]#
Top
Profilo Invia messaggio privato
fulvio
Site Admin


Registrato: 01/11/06 17:45
Messaggi: 1559

MessaggioInviato: Dom Giu 08, 2008 11:47 am    Oggetto: Rispondi citando

Prova a:

1) eseguire ssh con -v in modo che entry in modalità verbose

2) dopo aver eseguito ssh, dai il klist sul client e controlla che oltre al TGT ci sia il ticket di servizio. Ma questo mi sembra già funzionava

3) Controllati i log del daemon sshd sul server


Ciao
Fulvio
Top
Profilo Invia messaggio privato
teme



Registrato: 06/06/08 22:07
Messaggi: 12

MessaggioInviato: Dom Giu 08, 2008 12:19 pm    Oggetto: Rispondi citando

fulvio ha scritto:


2) dopo aver eseguito ssh, dai il klist sul client e controlla che oltre al TGT ci sia il ticket di servizio. Ma questo mi sembra già funzionava


Si ieri funzionava, ma non avevo attivato il database e ho perso tutto. Allora oggi ho rifatto tutte le operazioni attivando anche il database, ma purtroppo non c'è + il ticket di servizio.
Ho anche rimosso sul client /etc/krb5.keytab e rifatto pensando che potessero essere diversi.

Allora ti posto i vari log:

log di kerberos:
kinit sul client
Codice:
13:07:18    AS_REQ (6 etypes {16 5 23 3 2 1}) 192.168.0.30: ISSUE: authtime 1212923238, etypes {rep=16 tkt=1 ses=16}, claire@EXAMPLE.COM for krbtgt/EXAMPLE.COM@EXAMPLE.COM

kinit sul server ssh
Codice:
13:08:26    AS_REQ (7 etypes {18 17 16 23 1 3 2}) 192.168.0.70: ISSUE: authtime 1212923306, etypes {rep=18 tkt=1 ses=18}, utente1@EXAMPLE.COM for krbtgt/EXAMPLE.COM@EXAMPLE.COM

client ssh che accede su server ssh
Codice:
13:09:25    TGS_REQ (6 etypes {16 5 23 3 2 1}) 192.168.0.30: UNKNOWN_SERVER: authtime 1212923238, claire@EXAMPLE.COM for krbtgt/168.0.70@EXAMPLE.COM, Server not found in Kerberos database
13:09:27    AS_REQ (7 etypes {18 17 16 23 1 3 2}) 192.168.0.70: ISSUE: authtime 1212923367, etypes {rep=18 tkt=1 ses=18}, claire@EXAMPLE.COM for krbtgt/EXAMPLE.COM@EXAMPLE.COM
13:30:12    AS_REQ (6 etypes {16 5 23 3 2 1}) 192.168.0.30: ISSUE: authtime 1212924612, etypes {rep=16 tkt=1 ses=16}, claire@EXAMPLE.COM for krbtgt/EXAMPLE.COM@EXAMPLE.COM
13:31:27    TGS_REQ (6 etypes {16 5 23 3 2 1}) 192.168.0.30: UNKNOWN_SERVER: authtime 1212924612, claire@EXAMPLE.COM for krbtgt/168.0.70@EXAMPLE.COM, Server not found in Kerberos database


klist sul client ssh:
Codice:
Credentials cache: FILE:/tmp/krb5cc_0
        Principal: claire@EXAMPLE.COM

  Issued           Expires          Principal                   
Jun  8 13:07:18  Jun  8 23:08:55  krbtgt/EXAMPLE.COM@EXAMPLE.COM

I log di sshd non dicono nulla.
Non capisco perche non mi viene più scambiato il ticket di servizio, però la cosa positiva è che accedo con la password impostata in kerberos.
Per scrupolo ho pensato di accedere via ssh anche su zeroshell, dandomi sul client un kinit admin e accedendo con la password di admin. Il ticket di servizio non c'è.
Non capisco che sia potuto accadere, il client dialoga con kerberos secondo i log...
Top
Profilo Invia messaggio privato
fulvio
Site Admin


Registrato: 01/11/06 17:45
Messaggi: 1559

MessaggioInviato: Dom Giu 08, 2008 3:30 pm    Oggetto: Rispondi citando

Dalla linea di log:

13:31:27 TGS_REQ (6 etypes {16 5 23 3 2 1}) 192.168.0.30: UNKNOWN_SERVER: authtime 1212924612, claire@EXAMPLE.COM for krbtgt/168.0.70@EXAMPLE.COM, Server not found in Kerberos database

ti rendi conto che il tuo client invece di chiedere il ticket di servizio host/serverssh.example.com@EXAMPLE.COM sta invece tentando una cross-autenticazione con un ipotetico dominio 168.0.70:

1) Sei sicuro che il client risolve 192.168.0.70 come serverssh.example.com?

2) nel file /etc/krb5.conf del tuo client hai il mapping dei domini come:

.example.com = EXAMPLE.COM
example.com = EXAMPLE.COM

Ciao
Fulvio
Top
Profilo Invia messaggio privato
teme



Registrato: 06/06/08 22:07
Messaggi: 12

MessaggioInviato: Dom Giu 08, 2008 3:57 pm    Oggetto: Rispondi citando

L'indirizzo veniva risolto, il problema era questo:
ssh claire@192.168.0.70

scrivendo ssh claire@serverssh.example.com, ottengo il ticket, come puoi vedere dal code:
Codice:

[root@zeus ~]# klist
Credentials cache: FILE:/tmp/krb5cc_0
        Principal: claire@EXAMPLE.COM

  Issued           Expires          Principal                     
Jun  8 16:49:02  Jun  9 02:50:38  krbtgt/EXAMPLE.COM@EXAMPLE.COM 
Jun  8 16:49:38  Jun  9 02:50:38  host/ssh.example.com@EXAMPLE.COM
[root@zeus ~]#

La password c'è ancora, ecco cosa dice il log di kerberos:
Codice:
16:52:56    AS_REQ (6 etypes {16 5 23 3 2 1}) 192.168.0.30: ISSUE: authtime 1212936776, etypes {rep=16 tkt=1 ses=16}, claire@EXAMPLE.COM for krbtgt/EXAMPLE.COM@EXAMPLE.COM
16:53:17    TGS_REQ (6 etypes {16 5 23 3 2 1}) 192.168.0.30: ISSUE: authtime 1212936776, etypes {rep=16 tkt=1 ses=16}, claire@EXAMPLE.COM for host/serverssh.example.com@EXAMPLE.COM
16:53:19    AS_REQ (7 etypes {18 17 16 23 1 3 2}) 192.168.0.70: ISSUE: authtime 1212936799, etypes {rep=18 tkt=1 ses=18}, claire@EXAMPLE.COM for krbtgt/EXAMPLE.COM@EXAMPLE.COM
Top
Profilo Invia messaggio privato
Mostra prima i messaggi di:   
Nuovo argomento   Rispondi    Indice del forum -> Reti Tutti i fusi orari sono GMT + 1 ora
Pagina 1 di 1

 
Vai a:  
Non puoi inserire nuovi argomenti
Non puoi rispondere a nessun argomento
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi


Powered by phpBB © 2001, 2005 phpBB Group
phpbb.it