Segnalazione #189
Aggiungere supporto kerberos
0%
Files
History
Updated by Elena Grandi over 7 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-common
per abilitareidmapd
egssd
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 7 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 7 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 about 7 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 about 7 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 about 7 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 about 7 years ago
E adesso anche la parte client è stata committata in fuss-client
Updated by Christopher R. Gabriel about 7 years ago
- Status changed from Commenti to In elaborazione
- Assignee changed from Christopher R. Gabriel to Elena Grandi
Updated by Simone Piccardi about 7 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 about 7 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 about 7 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 about 7 years ago
- Status changed from Commenti to Chiuso
Si, si può chiudere.