Guida di aggiornamento a Linux-PAM 0.99
1.
Guida all'aggiornamento
Introduzione
Questa guida è stata scritta per aiutare gli utenti attraverso il processo di
aggiornamento dalle vecchie versioni di Linux-PAM alla nuova versione basata
sulle serie 0.99. Con la 0.99, Gentoo non usa più patch provenienti da
RedHat/Fedora, e di conseguenza alcune funzionalità precedentemente supportate
non sono più disponibili (d'altra parte, anche RedHat ha cessato di supportare e
fornire alcune di queste funzionalità).
Per questo motivo, l'aggiornamento dal vecchio Linux-PAM al nuovo non è
diretto, e potrebbe richiedere alcuni cambiamenti nella configurazione
dell'autenticazione per il sistema o per i servizi se essa non è stata
aggiornata automaticamente in precedenza. Inoltre alcuni moduli sono stati
rimossi dal pacchetto sys-libs/pam e spostati in pacchetti a sé, per cui
probabilmente si dovranno installarli se si fa affidamento alle funzionalità
che essi mettono a disposizione.
Nota:
Questa guida non deve intimorire: se il proprio sistema è stato installato
all'incirca dopo Settembre 2005, il percorso di aggiornamento risulterà essere
abbastanza indolore, e questo documento sarà solamente una lettura interessante.
Se il proprio sistema è più vecchio, ma è stato aggiornato costantemente, e PAM
non è stato configurato manualmente, dovrebbe andare bene lo stesso, in quanto
la maggior parte dei file di configurazione saranno già stati aggiornati per
conto dell'utente. Se la propria configurazione di PAM è stata personalizzata,
probabilmente bisognerà aggiornarla manualmente, ma a questo punto si dovrebbero
avere già le conoscenze su come gestire tale operazione.
|
Tenere presente che non ci sono perdite di funzionalità durante l'aggiornamento:
la maggior parte delle patch RedHat sono attualmente implementate in Linux-PAM
attraverso metodi leggermente diversi, per esempio la direttiva include
che sostituisce il modulo deprecato pam_stack. I moduli sono stati
spostati nei loro rispettivi pacchetti per mantenere il disegno pulito
dell'ebuild, e per permettere ai pacchetti le cui configurazioni predefinite
richiedono questi moduli opzionali di dipendere solamente da essi.
È importante mantenere aggiornato Linux-PAM, perché è un importante componente
del sistema, in quanto è il fornitore predefinito dell'autenticazione per Gentoo
Linux. Per questa ragione si consiglia di dare un'alta priorità
all'aggiornamento a Linux-PAM 0.99 per mantenere il sistema sicuro e protetto.
Importante:
Dopo aver aggiornato PAM, da una qualsiasi versione ad una qualsiasi versione,
bisognerà riavviare quei servizi che lo staranno usando, per evitare
discrepanze di ABI interne. Tali servizi includono sshd,
vixie-cron (e probabilmente qualsiasi altro servizio cron), server mail,
e generalmente tutti quei servizi che accettano utenze.
|
Quello che gli utenti dovranno fare nella maggior parte dei casi è o installare
un nuovo pacchetto (perché il modulo è stato migrato al di fuori dell'ebuild
principale sys-libs/pam), o cambiare la configurazione in modo da non
utilizzare il modulo che è stato rimosso. Se l'utente ha effettuato delle
modifiche ai file di configurazione del servizio PAM, dovrebbe essere capace a
gestire tutti i cambiamenti necessari. Per quelli che non hanno mai modificato
un file di configurazione, c'è un unico cambiamento che necessita di essere
eseguito, documentato nella sezione pam_stack e la
direttiva include
I cambiamenti devono essere applicati a ciascun file contenuto nella directory
/etc/pam.d/ (i file di configurazione di PAM). Assicurarsi di
rimuovere eventuali file di backup (*~) prima di provare ad
aggiornare sys-libs/pam, o il processo di emerge fallirà come misura di
sicurezza.
Come dispositivo di sicurezza, l'ebuild di sys-libs/pam controlla i file
presenti in /etc/pam.d/ per individuare eventuali moduli ora
deprecati, ed interrompe il processo di merge in caso essi siano ancora usati,
per evitare di bloccare l'accesso dell'utente al proprio sistema. A causa della
natura dei file di configurazione, è probabile che ci siano ancora vecchi file
di configurazione per pacchetti già rimossi, per cui si dovrebbe prima
verificare che non ci siano file orfani (file che non appartengono a nessun
pacchetto), per esempio attraverso il comando qfile presente in
app-portage/portage-utils.
Importante:
Il controllo di sicurezza controlla inoltre le linee commentate, ciò significa
che bisognerà rimuovere anche i commenti che fanno riferimento ai moduli
rimossi. Questa cosa è pensata come una sicurezza aggiuntiva in modo che gli
utenti non decommentino linee che successivamente inibiscano l'autenticazione
nel proprio sistema. Se si vogliono mantenere i commenti come documentazione, si
consiglia di spezzare i nomi dei moduli (per esempio in pam
_stack.so).
|
Codice 1.1: usare qfile -o per verificare la presenza di file orfani |
# qfile -o /etc/pam.d/*
/etc/pam.d/sshd
/etc/pam.d/system-auth~
/etc/pam.d/vmware-authd
|
La maggior parte delle volte la presenza di file orfani in
/etc/pam.d è dovuta ai file di backup creati dai vari editor, i cui
nomi terminano con un carattere tilde (~). I file rimanenti, a meno che
non si abbia creato autonomamente una configurazione particolare, si dovrebbero
poter rimuovere senza problemi (o almeno spostati da un'altra parte), in quanto
probabilmente saranno rimasugli di pacchetti precedentemente installati.
Un'eccezione speciale per questa situazione è il file
/etc/pam.d/vmware-authd per vmware-server, che viene creato
dallo script vmware-config.pl (ma la sua rimozione dovrebbe essere sicura
a meno che non lo si abbia modificato manualmente, basta rieseguire lo script).
Quali sono i cambiamenti principali?
Come è stato detto in precedenza, il principale cambiamento tra la versione
0.78 e la 0.99 è che le patch RedHat non vengono più applicate, ma ciò non
spiega cosa realmente cambia per gli utenti. Una prima differenza è che i
seguenti moduli non sono più disponibili: pam_stack, pam_pwdb (ex
flag USE pwdb), e pam_timestamp.
La flag USE pam_chroot non è più presente, in quanto il modulo (in
precedenza proveniente dalle patch RedHat) non viene più creato in
sys-libs/pam, ed è stato spostato in sys-auth/pam_chroot.
Inoltre, la flag USE berkdb, usata per creare il modulo
pam_userdb, è stata rimossa; al suo posto si dovrà installare manualmente
il pacchetto sys-auth/pam_userdb che fornisce il modulo con lo stesso
nome. Inoltre la flag USE pam_console è stata rimossa, ed il relativo
modulo non è più disponibile, si prega quindi di leggere la relativa sezione per
ulteriori informazioni.
Per tutti moduli mancanti, a parte pam_stack, l'utente può chiedere
senza problemi, tramite Bugzilla, informazioni riguardo al loro destino,
fornendo dei casi di utilizzo degli stessi, e non è escluso che vengano
resuscitati all'interno dei loro rispettivi pacchetti.
La questione a pam_console
Il modulo pam_console era stato progettato da RedHat per permettere
l'impostazione di permessi differenti sulle periferiche per gli utenti che
effettuavano il login tramite accesso hardware (o in X attraverso le varie
applicazioni grafiche di login, o attraverso la login da console). Questo
approccio ha causato più di qualche problema in passato, con il risultato di
utenti che non riuscivano a far funzionare le proprie periferiche, ragione per
cui questo modulo è stato disabilitato in modo predefinito, e la sua
abilitazione/disabilitazione è stata collegata alla flag USE
pam_console per quegli utenti che ne avessero bisogno.
Dalla versione 0.99 di Linux-PAM l'intero patchset di RedHat è stato rimosso, e
pam_console non viene più fornito con il pacchetto. Sebbene sia
disponibile ancora per un certo periodo di tempo tramite
sys-auth/pam_console per chi ne avesse bisogno, un bug di sicurezza ha
forzato il mascheramento e la rimozione di questo pacchetto.
La necessità di utilizzare pam_console è mitigata dalla migrazione di
HAL all'utilizzo alternativo di ConsoleKit. Le persone che hanno ancora la
necessità di un funzionamento simile a quello di pam_console sono invitati ad
aggiornare il proprio codice in modo farlo funzionare con ConsoleKit, oppure
usare il gruppo plugdev insieme al modulo pam_group.
Moduli spostati
Il modulo pam_userdb, usato per fornire l'autenticazione tramite un
semplice file Berkley DB, era precedentemente disponibile attraverso la flag
USE berkdb. Siccome questo modulo, per funzionare correttamente, richiede
una copia statica in linea di Berkley DB, è stato spostato in un pacchetto a sé
per semplificare la manutenzione di PAM, e ridurre il rischio di incappare in
qualche problema. Il pacchetto è sys-auth/pam_userdb.
È importante notare che, sebbene il codice del modulo sia aggiornato, preso
direttamente dall'ultimo rilascio di PAM, la copia di Berkley DB è ancora della
versione 4.3; non è stato pianificato nessun aggiornamento, in quanto tali
aggiornamenti solitamente non sono retrocompatibili. Per questo motivo, a meno
che non venga trovato un bug di sicurezza, c'è ancora bisogno di usare gli
strumenti di Berkely DB 4.3 per manipolare il database degli utenti.
Per gli utenti che hanno bisogno di questo modulo non è richiesto nient'altro
che l'utilizzo di sys-auth/pam_userdb.
La stessa cosa vale per il modulo pam_chroot, ora disponibile tramite
sys-auth/pam_chroot, per cui sarà sufficiente utilizzare questo nuovo
pacchetto.
Anche il modulo pam_radius è stato spostato nel proprio pacchetto a sé,
chiamato sys-auth/pam_radius, anche se non sia stato notato nulla nel
momento della scrittura del documento riguardo alla compatibilità con la
versione precedente che veniva fornita da Linux-PAM 0.99.
pam_stack e la direttiva include
PAM è stato progettato per permettere la configurazione di software e servizi
diversi con diversi mezzi di autenticazione, per esempio accettando utenti
locali attraverso i normali mezzi di autenticazione Unix, ma anche permettere
l'autenticazione di utenti mail tramite un database. Per la maggior parte degli
utenti desktop e per quei servizi che non si aspettano connessioni da utenti non
di sistema (come i server HTTP), quasi tutti i servizi useranno semplicemente la
medesima autenticazione rispetto al database di sistema delle password.
Per questa ragione, per evitare copie multiple dello stesso identico file di
configurazione di PAM, molte distribuzioni Linux hanno cominciato a scrivere
estensioni in modo da mantenere un singola configurazione system o
meglio conosciuta come system-auth, e poi informare gli altri servizi di
usarla per autenticarsi.
Fino alla versione 0.77, Linux-PAM in sé non forniva nessuna di queste
estensioni, e il pacchetto di Gentoo seguiva la soluzione di RedHat tramite il
modulo system-auth che dirottava le chiamate interne di PAM per andare a
leggere un seconda configurazione alternativa del servizio. Questo metodo non
era standard, non era portabile, e richiedeva una pesante modifica alla
struttura interna della libreria.
Una soluzione alternativa è stata progettata invece da ALTLinux per OpenPam, ed
era di usare una direttiva include, che doveva essere gestita
internamente dalla implementazione di PAM, caricando in modo efficiente la
configurazione per quel servizio e passare attaverso il modulo della classe
equivalente. Questa è la medesima estensione implementata da Linux-Pam 0.78 in
avanti, e l'unica opzione attualmente supportata da Gentoo (in quanto funziona
su entrambe le implementazioni supportate).
Per convertire un vecchio file di configurazione che usa pam_stack in
uno aggiornato che funziona con la direttiva include, basta sostituire
le linee come mostrato:
Codice 1.2: Sostituire l'utilizzo di pam_stack con la direttiva include |
auth required pam_stack.so service=system-auth
auth include system-auth
|
Importante:
Ci sono quattro servizi nella configurazione di PAM: auth,
account, password e session. Bisogna aggiornare i file di
configurazione per tutti questi servizi, non solo per auth.
|
Si prega di notare che probabilmente bisognerà anche riordinare le chiamate
durante l'applicazione di questo cambiamento, in quanto alcune volte i moduli
come pam_nologin sono elencati dopo pam_stack, benché ora essi
necessitino di essere elencati prima della direttiva include.
Codice 1.3: Gestire moduli multipli con pam_stack |
auth required pam_stack.so service=system-auth
auth required pam_nologin.so
auth required pam_nologin.so
auth include system-auth
|
Questo cambiamento non porterà ad una perdita di funzionalità
(pam_stack funziona solamente con la direttiva required), e
dovrebbe essere sicuro in ogni caso. Tutte le configurazioni di PAM installate
recentemente dagli ebuild contenuti nell'albero di Portage sono aggiornati per
usare la nuova sintassi.
I contenuti di questo documento sono rilasciati sotto la licenza Creative
Commons - Attribution / Share Alike.
|