Segnalazione #189
Aggiungere supporto kerberos
0%
Files
History
Updated by Elena Grandi over 8 years ago
Inizio a segnare i passaggi di quanto fatto (e sono abbastanza sicura vada fatto) sul client:
- installato nfs-common
- controllato la correttezza del fqdn
- modificato
/etc/default/nfs-commonper abilitareidmapdegssd
A questo punto cercando di montare con
mount -t nfs4 -o sec=krb5 proxy.{{ domain }}:/home /mnt
si ottiene correttamente un access denied.
Proseguo e poi aggiornerò il ticket
Updated by Elena Grandi over 8 years ago
Sul server, dato il comando kadmin.local e poi:
addprinc -randkey nfs/client.fqdn@REALM ktadd nfs/client.fqdn@REALM
A quel punto ho copiato le righe relative a nfs/client.fqdn dal /etc/krb5.keytab del server a quello del client, e montare come sopra funziona anche sul client.
Non mi è ancora chiaro come si possa automatizzare questa parte, che fa eseguita per ciascun client.
Updated by Elena Grandi over 8 years ago
Nota, i pacchetti di kerberos sul client sono preseedabili con krb5-config/default-realm: {{ domain | upper }}; non trovo dove venga salvata l'altra domanda di preseed (la cui risposta è il nome del server)
Updated by Elena Grandi over 8 years ago
- File add_client_principal add_client_principal added
Come soluzione potenziale ho iniziato a scrivere uno script che potrebbe essere installato da ansible sul server e che:
- prende l'hostname del client come parametro
- genera principal e relativa chiave, salvandola su un file per-client
- mergia le chiavi create nel keytab globale
dal client sarebbe sufficiente lanciare
ssh root@proxy.{{ domain }} add_client_principal `hostname`
scp root@proxy.{{ domain }}/$(hostname).keytab /etc/krb5.keytab
Per avere le chiavi installate nel posto giusto e poter montare
Se è una soluzione fattibile, basta solidificare un po' lo script e poi lo posso mettere sul fuss-server
Updated by Elena Grandi over 8 years ago
Riassumendo la procedura completa in un unico post:
Controllare l'fqdn
Installare: nfs-common krb5-user krb5-config
da preseedarsiConfigurazione dell'autenticazione Kerberos, Realm preferito ---> enter
Configurazione dell'autenticazione Kerberos, Server Kerberos del proprio
realm ----> proxy.{{ domain }}
Configurazione dell'autenticazione Kerberos, Server amministrativo per il
realm Kerberos ---> proxy.{{ domain }}Dovrebbero corrispondere, rispettivamente, a
> krb5-config/default_realm > krb5-config/kerberos_servers > krb5-config/admin_server >modificare /etc/default/nfs-common per abilitare idmapd e gssd
service nfs-common restartssh root@proxy.{{ domain }} add_client_principal {{ client_hostname }}
scp root@proxy.{{ domain }}:{{ client_hostname }}.keytab /etc/krb5.keytabmount -t nfs4 -o sec=krb5 proxy.{{ domain }}:/home /mnt
Updated by Elena Grandi over 8 years ago
- Status changed from In elaborazione to Commenti
- Assignee changed from Elena Grandi to Christopher R. Gabriel
Dimenticato di riassegnare
la parte server è tutta committata dentro a fuss-server, per la parte client c'è la procedura del commento sopra
Updated by Elena Grandi over 8 years ago
E adesso anche la parte client è stata committata in fuss-client
Updated by Christopher R. Gabriel over 8 years ago
- Status changed from Commenti to In elaborazione
- Assignee changed from Christopher R. Gabriel to Elena Grandi
Updated by Simone Piccardi over 8 years ago
Altre cose da fare per mettere i dati di kerberos su LDAP:
Modificare:
access to attrs=userPassword
by dn="cn=admin,dc=thisschool,dc=lan" write
by anonymous auth
by self write
by * none
in
access to attrs=userPassword,userPKCS12
by dn="cn=admin,dc=thisschool,dc=lan" write
by anonymous auth
by self write
by * none
ed aggiungere anche:
index krbPrincipalName eq
la configurazione dovrebbe essere (in /etc/krb5kdc/kdc.conf):
[kdcdefaults]
kdc_ports = 750,88
[realms]
THISSCHOOL.LAN = {
# database_name = /var/lib/krb5kdc/principal
# admin_keytab = FILE:/etc/krb5kdc/kadm5.keytab
# acl_file = /etc/krb5kdc/kadm5.acl
# key_stash_file = /etc/krb5kdc/stash
# kdc_ports = 750,88
# max_life = 10h 0m 0s
# max_renewable_life = 7d 0h 0m 0s
# master_key_type = des3-hmac-sha1
# supported_enctypes = aes256-cts:normal arcfour-hmac:normal des3-hmac-sha1:normal des-cbc-crc:normal des:normal des:v4 des:norealm des:onlyrealm des:afs3
# default_principal_flags = +preauth
database_module = LDAP
}
[dbmodules]
LDAP = {
db_library = kldap
ldap_kerberos_container_dn = cn=krbContainer,dc=thisschool,dc=lan
ldap_kdc_dn = cn=admin,dc=thisschool,dc=lan
ldap_kadmind_dn = cn=admin,dc=thisschool,dc=lan
ldap_service_password_file = /etc/krb5kdc/admin.stash
ldap_servers = ldapi:///
}
eseguire:
kdb5_ldap_util -D cn=admin,dc=thisschool,dc=lan create -subtrees ou=users,dc=thisschool,dc=lan -r THISSCHOOL.LAN -s Password for "cn=admin,dc=thisschool,dc=lan": Initializing database for realm 'THISSCHOOL.LAN' You will be prompted for the database Master Password. It is important that you NOT FORGET this password. Enter KDC database master key: Re-enter KDC database master key to verify:
chiede prima la password dell'admin ldap e poi due volte quella del KDC database master key, poi fare lo stash della password:
root@server:/etc/krb5kdc# kdb5_ldap_util -D cn=admin,dc=thisschool,dc=lan stashsrvpw cn=admin,dc=thisschool,dc=lan Password for "cn=admin,dc=thisschool,dc=lan": Password for "cn=admin,dc=thisschool,dc=lan": Re-enter password for "cn=admin,dc=thisschool,dc=lan":
Così kadmin.local sul server usa LDAP per salvare i dati, ma ci van comunque rimessi i principal che servono (compresi quelli per gli utenti).
Updated by Simone Piccardi over 8 years ago
Fatti ulteriori controlli, non serve mettere le configurazioni di kerberos su LDAP.
Quello che serve è invece avere un principal per ogni utente presente su LDAP, corrispondente al nome utente.
Se cioè user è un utente su LDAP/Samba, deve esistere il corrispondente principal user@DOMINIO.LAN.
Questo deve essere creato sul server con il comando kadmin.local con qualcosa del tipo:
kadmin.local << EOF addprinc user@DOMINIO.LAN pwd pwd EOF
La password deve essere la stessa dell'utenza su LDAP, questo va fatto per ogni utente in fase di creazione, (da octofuss, o quando lo si crea a mano).
Sul lato client invece occorre installare il pacchetto libpam-krb5 modificare due dei common-* sotto /etc/pam.d.
Il primo è /etc/pam.d/common-auth cui va aggiunto la riga:
auth optional pam_krb5.so minimum_uid=1000 try_first_pass
sopra:
auth required pam_permit.so
tolti i commenti /etc/pam.d/common-auth deve essere qualcosa del tipo:
auth [success=2 default=ignore] pam_unix.so nullok_secure auth [success=1 default=ignore] pam_ldap.so minimum_uid=1000 use_first_pass auth requisite pam_deny.so auth optional pam_krb5.so minimum_uid=1000 try_first_pass auth required pam_permit.so
Il secondo è /etc/pam.d/common-password cui va aggiunta la riga:
password optional pam_krb5.so minimum_uid=1000 try_first_pass use_authtok
sopra:
password optional pam_krb5.so minimum_uid=1000 try_first_pass use_authtok
e tolti i commenti deve risultare qualcosa del tipo:
password requisite pam_cracklib.so retry=3 minlen=8 difok=3 minclass=3 password [success=2 default=ignore] pam_unix.so obscure use_authtok try_first_pass sha512 password [success=1 default=ignore] pam_ldap.so minimum_uid=1000 try_first_pass use_authtok password requisite pam_deny.so password optional pam_krb5.so minimum_uid=1000 try_first_pass use_authtok password required pam_permit.so password optional pam_gnome_keyring.so
Va verificato che nell'installazione di libpam-krb5 non venga attivata l'autenticazione ordinaria via kerberos, che non è necessaria.
In questo modo sarà possibile modificare la password dell'utente (sia su LDAP che su kerberos) via PAM (è stato verificato solo passwd, controllare con gli altri programmi).
Per cambiare la password del principal dell'utente sul server (ad uso dei programmi di gestione dell'utente sul server) si può usare il comando:
kadmin.local << EOF cpw user@DOMINIO.LAN newpw newpw EOF
Updated by Christopher R. Gabriel over 8 years ago
- Status changed from In elaborazione to Commenti
- Assignee changed from Elena Grandi to Simone Piccardi
Ho aggiunto il necessario a octofussd per la creazione utenti/cambio password, assumendo il realm di default.
Visto che tutti gli altri test sono a posto, direi che si puo' chiudere?
Updated by Simone Piccardi over 8 years ago
- Status changed from Commenti to Chiuso
Si, si può chiudere.