#format wiki #LANGUAGE it <
> <> <> = Introduzione = Ci sono due principali concetti per gli utenti: l'autenticazione e gli account. Con l'autenticazione di Active Directory (d'ora in poi AD) si usa il protocollo Kerberos 5 mentre per gli account si usa LDAP. Prima di tutto è necessario configurare Kerberos 5 e LDAP in modo da gestire gli utenti di un'AD. In questo articolo verranno usati i seguenti indirizzi IP, di conseguenza adattateli alle vostre esigenze. {{{ 10.30.2.1 Router and DNS server or proxy 10.30.2.2 DHCP and TFTP server 10.30.2.10 NFS server 10.30.2.20 LTSP server 10.30.2.100-200 LTSP clients}}} Si da per scontato che AD sia confugurato con un dominio AD del tipo EXAMPLE.COM e con un utente creato del tipo: {{{ account name: wendy UID: 1002 GID: 1002 home directory: /home/wendy shell: /bin/bash}}} = Account = Per gli account LDAP è necessario il pacchetto {{{libnss-ldap }}} che non è presente sul CD di Dapper ma è disponibile nei repository Universe. Una volta aggiunti tali repository è sufficiente eseguire i comandi: {{{ $ sudo apt-get update $ sudo apt-get install libnss-ldap}}} Inseriamo l'indirizzo del server Active Direcory. ## IMMAGINI DA RICARICARE ##{{attachment:Screenshot-ocean-nss-ldap.png}} Specifichiamo il search basedm ## IMMAGINI DA RICARICARE ##{{attachment:Screenshot-ocean-nss-ldap-basedn.png}} Selezionare LDAP versione 3 ## IMMAGINI DA RICARICARE ##{{attachment:Screenshot-ocean-nss-ldap-version.png}} Sono necessari alcuni aggiustamenti ulteriori , per questo andiamo a modificare {{{/etc/libnss-ldap.conf}}} {{{ # libnss-ldap.conf # Your LDAP server. Must be resolvable without using LDAP. # Multiple hosts may be specified, each separated by a # space. How long nss_ldap takes to failover depends on # whether your LDAP client library supports configurable # network or connect timeouts (see bind_timelimit). host 10.30.2.2 # The distinguished name of the search base. base example,dc=com # The LDAP version to use (defaults to 3 # if supported by client library) ldap_version 3 # (AD) mappings # nss_map_attribute userPassword sambaPassword nss_map_attribute gecos name nss_map_attribute uid unixName nss_map_attribute shadowLastChange pwdLastSet nss_map_objectclass posixGroup group pam_filter objectclass=User pam_password crypt # Disable SASL security layers. This is needed for AD. sasl_secprops maxssf=0 }}} Configuriamo il nome del servizio per usare LDAP modificando{{{/etc/nsswitch.conf}}} {{{ # /etc/nsswitch.conf # # Example configuration of GNU Name Service Switch functionality. # If you have the `glibc-doc' and `info' packages installed, try: # `info libc "Name Service Switch"' for information about this file. passwd: files ldap group: files ldap shadow: files ldap hosts: files dns mdns networks: files protocols: db files services: db files ethers: db files rpc: db files netgroup: nis}}} = Testing = Il comando getent mostrerà il contenuto del servizio, così una volta configurato Active Directory con un utente e con {{{libnss-ldap}}} configurato, dovremmo essere in grado di vedere gli utenti extra e i gruppi. {{{ $ getent passwd gdm:x:106:111:Gnome Display Manager:/var/lib/gdm:/bin/false test:x:1000:1000:Test,,,:/home/test:/bin/bash wendy:x:1002:1002:wendy:/home/wendy:/bin/bash $ getent group gdm:x:111: test:x:1000: wendy:x:1002:}}} Un semplice file di prova ci mostrerà se Ubuntu comprende gli username di AD. {{{ $ cd /tmp $ touch moo $ ls -l moo -rw-rw-r-- 1 root root 0 2006-07-20 14:27 moo $ sudo chown wendy moo $ ls -l moo -rw-rw-r-- 1 wendy root 0 2006-07-20 14:27 moo}}} Per visualizzare gli utenti tramite LDAP è necessario installare il pacchetto {{{ldap-utils}}} {{{ $ sudo apt-get install ldap-utils $ ldapsearch -x -H ldap://10.30.2.2 "(objectClass=posixAccount)" sAMAccountName # extended LDIF # # LDAPv3 # base <> with scope sub # filter: (objectClass=posixAccount) # requesting: sAMAccountName # # wendy, Users, EXAMPLE.COM dn: cn=wendy,cn=Users,dc=EXAMPLE,dc=COM sAMAccountName: wendy # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1}}} = Autenticazione = Ora che le informazioni relative agli utenti sono presenti, è necessario configurare Linux affinché gli utenti possano effettuare il login.Il protocollo di login di AD è Kerberos 5, quindi è necessario installare il modulo PAM Kerberos 5 e il pacchetto client per procedere al test. {{{ $ sudo apt-get-install heimdal-clients libpam-heimdal}}} Configuriamo Kerberos con i parametri del dominio AD e dell' indirizo IP editando{{{/etc/krb5.conf}}} {{{ [libdefaults] default_realm = EXAMPLE.COM [realms] EXAMPLE.COM = { kdc = 10.30.2.2:88 } }}} {{{ [domain_realm] .example.com = EXAMPLE.COM example.com = EXAMPLE.COM }}} Aggiorniamo la configurazione di PAM in modo da verificare gli account Kerberos {{{/etc/pam.d/common-auth }}}scegliamo se vogliamo un prompt di login di Kerberos oppure un prompt classico. {{{ # # /etc/pam.d/common-auth - authentication settings common to all services # # This file is included from other service-specific PAM config files, # and should contain a list of the authentication modules that define # the central authentication scheme for use on the system # (e.g., /etc/shadow, LDAP, Kerberos, etc.). The default is to use the # traditional Unix authentication mechanisms. # # prompt user "Password for : " (warning: no l18n) auth sufficient pam_krb5.so minimum_uid=1000 ➊ auth required pam_unix.so nullok_secure # use password from pam_unix prompt #auth sufficient pam_unix.so nullok_secure #auth sufficient pam_krb5.so minimum_uid=1000 use_first_pass}}} Sono possibili molte opzioni, una modifica classica di "minimum_uid" è "ignore_root". {{{ # # /etc/pam.d/common-session - session-related modules common to all services # # This file is included from other service-specific PAM config files, # and should contain a list of modules that define tasks to be performed # at the start and end of sessions of *any* kind (both interactive and # non-interactive). The default is pam_unix. # session required pam_unix.so session optional pam_foreground.so session optional pam_krb5.so }}} Aggiunlgiamo la seguente linea se vogliamo creare automaticamente le home per i nuovi utenti. {{{ session required pam_mkhomedir.so umask=0022 skel=/etc/skel }}} Le password Samba 4 non possono essere modificate tramite{{{kpasswd}}}e quindi le configurazioni di {{{common-password}}} sono irrilevanti.Le informazioni degli account sono gestite già tramite{{{ pam_unix}}} con NSS e{{{ libnss-ldap }}}quindi non sono necessarie modifiche per {{{common-account}}} comunque ulteriori informazioni sono disponibili nelle seguenti linee di codice. {{{ # # /etc/pam.d/common-account - authorization settings common to all services # # This file is included from other service-specific PAM config files, # and should contain a list of the authorization modules that define # the central access policy for use on the system. The default is to # only deny service to users whose accounts are expired in /etc/shadow. # account required pam_unix.so account [default=bad success=ok user_unknown=ignore service_err=ignore system_err=ignore] pam_krb5.so }}} = Attenzione = Se AD gira su in PC con ... non c'è un orologio con batteria di backup.Questo significa che quando la macchina vien spenta per un certo periodo di tempo , l'orologio verrà resettato.quando la macchina verrà riaccesa sarà necessaria una connessione internet per risincronizzare l'ora.senza una risincronizzazione dell'orologiao , Kerberos non permettrò il login ai clients. = Testing = Con l'AD in esecuzione e un account impostato , cerchiamio di acquisire alcuni dettagli con il comando {{{kinit.}}} {{{ $ kinit wendy wendy@EXAMPLE.COM's Password: }}} = Orologio = Per sicurezza e efficacia dell'orologio, Kerberos necessita che tutti gli orologi siano sincronizzati.Altrimenti il comando{{{ kinit }}}fallirà. {{{ kinit: krb5_get_init_creds: Too large time skew }}} Il setup della sincronizzazione dell' orologio con il programma ntpudate; la sincoronia si mantiene tramite un server{{{ ntpd.}}} {{{ $ sudo apt-get install ntpdate $ sudo ntpdate ntp.ubuntu.com 25 Jul 16:22:06 ntpdate[8158]: step time server 82.211.81.145 offset 402569.951826 sec $ sudo apt-get install ntp-simple }}} Confermiamo l'ottenimento di due tagliandi con il comando{{{ klist.}}} {{{ $ klist Credentials cache: FILE:/tmp/krb5cc_1000 Principal: wendy@EXAMPLE.COM Issued Expires Principal Jul 25 16:23:06 Jul 26 02:23:58 krbtgt/EXAMPLE.COM@EXAMPLE.COM}}} Per testare gli account è necessario un sistema di login, poichè è necessario per LTSP allora procediamo all' installazione del server OpenSSH e del client. {{{ $ sudo apt-get install openssh-server openssh-client }}} Proviamo il login tramite l'utente AD. {{{ $ ssh wendy@localhost The authenticty of host 'localhost (127.0.0.1)' can't be established. RSA key fingerprint is Are you sure you want to continue connecting (yes/no)? Warning: Permanently added 'localhost' (RSA) to the list of known hosts. wendy@localhosts password: Linux ubuntu 2.6.15-23-386 #1 PREEMPT Tue May 23 13:49:40 UTC 2006 i686 GNU/Linux The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Wed Jul 26 10:32:24 2006 from localhost wendy@ubuntu:~$ }}} Se ricevete un' errore di password , confermate il funzionamento corretto della password tramite il comando{{{ kinit}}}, se tutto funziona potrebbe esserci un problema di sincronizzazione dell' orologio tra il server AD e il vostro server.Prima di tutto dobbiamo abilitare il debug del login tramite il modulo{{{ pam_krb5}}} ,modifichiamo il file{{{ common-auth}}} e aggiungiamo la parola chiave "{{{debug}}}" alla fine della riga di Kerberos. {{{ auth sufficient pam_krb5.so minimum_uid=1000 use_first_pass debug}}} Provate ad eseguire nuovamente il login e controllate {{{/var/log/auth.log }}}che dovrebbe spiegarvi la il motivo del mancato login. = Key Table non valida = Il seguinte errore può comparire se è presente un {{{/etc/krb5.keytab }}}non valido. {{{ Aug 7 19:31:27 ubuntu sshd[4444]: pam_krb5: pam_sm_authenticate(ssh wendy): entry: Aug 7 19:31:27 ubuntu sshd[4444]: pam_krb5: verify_krb_v5_tgt(): krb5_mk_req(): KDC has no support for encryption type Aug 7 19:31:27 ubuntu sshd[4444]: pam_krb5: pam_sm_authenticate(ssh wendy): exit: failure Aug 7 19:31:30 ubuntu sshd[4444]: Failed password for wendy from 127.0.0.1 port 50054 ssh2}}} Il seguente errore indica una {{{/etc/krb5.keytab }}}non valida , di solito non è un problema. {{{ Aug 7 20:00:05 ubuntu sshd[4764]: pam_krb5: pam_sm_authenticate(ssh wendy): entry: Aug 7 20:00:05 ubuntu sshd[4764]: pam_krb5: verify_krb_v5_tgt(): krb5_kt_read_service_key(): Key table entry not found Aug 7 20:00:05 ubuntu sshd[4764]: pam_krb5: pam_sm_authenticate(ssh wendy): exit: success Aug 7 20:00:05 ubuntu sshd[4764]: Failed password for wendy from 10.0.0.69 port 39428 ssh2 }}} = Shadow password = Una delle cause di fallimento consite nel fatto che i dettagli degli account nascosti non possono essere trovati, controllate di avere {{{/etc/nsswitch.conf}}}: {{{ shadow: files ldap}}} Specificando uno dei seguenti casi provoca il fallimento del login: {{{ shadow: files shadow: compat }}} = Scambio di dominio = I seguenti errori indicano un host name non corretto, nome di domio o dominio AD. {{{ Sep 9 17:35:00 ubuntu sshd[8088]: pam_krb5: pam_sm_authenticate(ssh steve-o): entry: Sep 9 17:35:00 ubuntu sshd[8088]: pam_krb5: verify_v5_tgt(): krb5_sname_to_principal(): Cannot determine realm for host Sep 9 17:35:00 ubuntu sshd[8088]: pam_krb5: pam_sm_authenticate(ssh steve-o): exit: failure Sep 9 17:35:00 ubuntu sshd[8088]: Failed password for steve-o from 127.0.0.1 port 52992 ssh2}}} Verificate che {{{/etc/hostname}}} coincida con {{{/etc/hosts }}}e che coincida con l'intera voce dominio in {{{/etc/krb5.conf}}} .Gli esempi che seguino evidenziano dove il nome del dominio deve apparire. * `/etc/hostname`: {{{ ubuntu.}}} * `/etc/hosts`: {{{ 127.0.0.1 localhost 10.82.6.10 ubuntu. ubuntu }}} * `/etc/krb.conf`: {{{ [libdefaults] default_realm = EXAMPLE.COM [realms] EXAMPLE.COM = { kdc = 10.30.2.2:88 } [domain_realm] example.com = EXAMPLE.COM }}} = Ulteriori risorse = * [[http://developer.novell.com/wiki/index.php/HOWTO:_Configure_Ubuntu_for_Active_Directory_Authentication|Documento originale]] ---- CategoryServer CategoryDaRevisionare