#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