Guida all`amministrazione di sistemi HP

Transcript

Guida all`amministrazione di sistemi HP
Guida all'amministrazione di sistemi
HP-UX: Gestione della sicurezza
HP-UX 11i versione 3
Codice prodotto HP: 5992-3427
Pubblicato: Marzo 2008
Edizione: 4
© Copyright 2008 Hewlett-Packard Development Company L.P
Avvisi legali
Le informazioni contenute nel presente documento possono essere modificate senza preavviso.
Hewlett-Packard non fornisce alcuna garanzia di qualsiasi tipo relativamente a questo documento, comprese ma non limitatamente
ad esse, le garanzie implicite di commerciabilità o di idoneità per un fine particolare. Hewlett-Packard non sarà ritenuta responsabile
degli errori ivi contenuti o di danni diretti, indiretti, particolari, accidentali o consequenziali in connessione con la fornitura, le
prestazioni o l’uso del presente materiale.
Garanzia
È possibile ottenere una copia dei termini di garanzia specifici applicabili al proprio prodotto e parti di ricambio
Hewlett-Packard dal proprio Ufficio vendite ed assistenza locale.
Licenza del Governo degli Stati Uniti
Software per computer proprietario. Per il possesso, uso o copia, è necessaria una licenza
HP valida. In base a quanto previsto da FAR 12.211 e 12.212, il software per computer proprietario, la documentazione del
software per computer ed i dati tecnici per gli articoli commerciali sono dati in licenza al Governo degli Stati Uniti secondo la
licenza commerciale standard del rivenditore.
Avvisi sui marchi registrati
UNIX® è un marchio registrato negli Stati Uniti e negli altri paesi, brevettato esclusivamente attraverso
The Open Group. VERITAS® è un marchio registrato di Symantec Corporation.
Riconoscimenti
Questo prodotto comprende del software sviluppato dalla Apache Software Foundation. Questa documentazione
è basata su informazioni della Apache Software Foundation (http://www.apache.org).
Questo prodotto comprende del software sviluppato da OpenSSL Project per l'utilizzo con il Toolkit OpenSSL
(http://www.openssl.org).
Sommario
Informazioni su questo documento..............................................................................................11
I Protezione dei sistemi................................................................................................17
1 Installazione in modo sicuro dell'ambiente operativo HP-UX...................................................19
1.1 Considerazioni sulla sicurezza dell'installazione............................................................19
1.2 Prevenzione delle violazioni di protezione durante la procedura di avvio.........................20
1.3 Abilitazione della protezione dell'accesso per l'utente root.............................................21
1.4 Utilizzo dell'autenticazione all'avvio per impedire gli accessi non autorizzati...................21
1.5 Impostazione delle opzioni di protezione al momento dell'installazione...........................21
1.6 Installazione delle patch di protezione........................................................................22
1.7 Consigli sulla protezione per il backup ed il ripristino dopo l'installazione.......................23
2 Gestione della protezione di utenti e sistema.......................................................................25
2.1 Amministrazione dell'accesso degli utenti....................................................................25
2.1.1 Monitoraggio degli account utente.......................................................................25
2.1.2 Monitoraggio degli account guest.......................................................................26
2.1.3 Creazione di account utente per le applicazioni....................................................27
2.1.4 Amministrazione degli account di gruppo............................................................27
2.2 Autenticazione degli utenti durante l'accesso...............................................................28
2.2.1 Descrizione della procedura di accesso...............................................................28
2.2.2 Esame dei file di controllo degli accessi (btmp e wtmp).........................................29
2.2.2.1 Esempi del comando last...........................................................................30
2.2.3 Controllo di chi ha eseguito l'accesso.................................................................30
2.3 Autenticazione degli utenti con PAM...........................................................................31
2.3.1 Panoramica......................................................................................................31
2.3.2 Librerie PAM....................................................................................................32
2.3.3 Configurazione dell'intero sistema con /etc/pam.conf..........................................34
2.3.4 Esempio del file /etc/pam.conf..........................................................................34
2.3.5 Il file di configurazione degli utenti /etc/pam_user.conf........................................35
2.3.6 Esempi: Come funziona PAM per l'accesso.........................................................36
2.4 Gestione delle password...........................................................................................37
2.4.1 Responsabilità dell'amministratore di sistema.......................................................37
2.4.2 Responsabilità degli utenti.................................................................................38
2.4.3 Criteri di una password valida...........................................................................38
2.4.4 Modifica del file delle password /etc/passwd.....................................................39
2.4.4.1 Esempi di comandi passwd........................................................................39
2.4.4.2 Formato del file /etc/passwd....................................................................40
2.4.5 Il file per le password shadow /etc/shadow........................................................40
Sommario
3
2.4.6 Eliminazione degli pseudoaccount e protezione dei sottosistemi chiave in
etc/passwd..............................................................................................................42
2.4.7 Accesso protetto con HP-UX Secure Shell.............................................................43
2.4.8 Protezione delle password archiviate in NIS.........................................................43
2.4.9 Protezione delle password archiviate in un server di directory LDAP........................43
2.5 Definizione degli attributi di protezione di sistema........................................................43
2.5.1 Configurazione degli attributi per l'intero sistema..................................................45
2.5.2 Configurazione degli attributi per ogni utente......................................................45
2.5.2.1 Esempi di definizione di attributi specifici per gli utenti con userdbset..............46
2.5.2.2 INACTIVITY_MAXDAYS e il file delle password shadow.................................46
2.5.3 Risoluzione dei problemi del database degli utenti...............................................47
2.6 Gestione dei programmi setuid e setgid......................................................................47
2.6.1 Possibili fattori di rischio dei programmi setuid e setgid..........................................48
2.6.2 Modalità di impostazione degli ID.....................................................................49
2.6.3 Linee guida per limitare le potenzialità di setuid...................................................49
2.7 Prevenzione degli attacchi con overflow del buffer dello stack........................................50
2.8 Protezione di workstation e terminali incustoditi............................................................51
2.8.1 Controllo degli accessi con /etc/inittab ed i livelli di esecuzione............................51
2.8.2 Protezione dei file di dispositivo dei terminali.......................................................52
2.8.3 Configurazione del blocco dello schermo............................................................52
2.8.3.1 Configurazione della variabile TMOUT.......................................................52
2.8.3.2 Configurazione del gestore di blocco CDE..................................................53
2.9 Protezione dei sistemi dall'accesso da parte di dispositivi remoti....................................53
2.9.1 Controllo degli accessi con /etc/dialups e /etc/d_passwd....................................54
2.10 Protezione delle intestazioni di accesso......................................................................55
2.11 Protezione dell'account root......................................................................................56
2.11.1 Monitoraggio dell'accesso dell'account root........................................................57
2.11.2 Utilizzo di SMH Builder limitato per limitare gli accessi dei superutenti....................57
2.11.3 Esame degli accessi dei superutenti....................................................................58
3 HP-UX Bastille..................................................................................................................59
3.1 Funzionalità e vantaggi.............................................................................................59
3.2 Installazione di HP-UX Bastille....................................................................................60
3.3 Uso di HP-UX Bastille................................................................................................60
3.3.1 Uso interattivo di HP-UX Bastille..........................................................................61
3.3.2 Uso non interattivo di HP-UX Bastille...................................................................62
3.3.3 Configurazione di un sistema.............................................................................63
3.4 Uso di HP-UX Bastille per annullare le modifiche...........................................................65
3.5 Posizione dei file......................................................................................................65
3.6 Suggerimenti e risoluzione dei problemi......................................................................67
3.7 Rimozione di HP-UX Bastille.......................................................................................68
4
Sommario
4 HP-UX Standard Mode Security Extensions...........................................................................69
4.1 Panoramica.............................................................................................................69
4.2 Attributi di protezione e database degli utenti..............................................................70
4.2.1 Attributi di protezione del sistema.......................................................................70
4.2.2 Configurazione degli attributi per l'intero sistema.................................................71
4.2.3 Componenti del database degli utenti.................................................................71
4.2.3.1 File di configurazione................................................................................71
4.2.3.2 Comandi................................................................................................72
4.2.3.3 Attributi..................................................................................................72
4.2.3.4 Manpage...............................................................................................73
4.2.4 Configurazione degli attributi nel database degli utenti.........................................73
4.2.5 Risoluzione dei problemi del database degli utenti...............................................74
5 Gestione della protezione dell'accesso remoto.....................................................................75
5.1 Panoramica dei servizi Internet e dei servizi d'accesso remoto........................................75
5.1.1 Protezione di ftp................................................................................................76
5.1.2 Protezione di ftp anonimo..................................................................................77
5.1.3 Negazione dell'accesso con /etc/ftpd/ftpusers....................................................78
5.1.4 Altre soluzioni di protezione contro lo spoofing.....................................................78
5.2 Il daemon inetd........................................................................................................79
5.2.1 Protezione di inetd............................................................................................80
5.2.1.1 Negare o consentire l'accesso con /var/adm/inetd.sec.................................80
5.3 Protezione contro lo spoofing con i wrapper TCP..........................................................81
5.3.1 Caratteristiche aggiuntive dei wrapper TCP..........................................................81
5.3.2 Mancato funzionamento dei wrapper TCP con i servizi RPC...................................82
5.4 Secure Internet Services.............................................................................................82
5.5 Controllo di un dominio amministrativo.......................................................................83
5.5.1 Esame delle autorizzazioni nei file di controllo della rete........................................83
5.6 Protezione delle sessioni remote con HP-UX Secure Shell (SSH).......................................84
5.6.1 Principali funzionalità di protezione di HP-UX Secure Shell.....................................85
5.6.2 Componenti software di HP-UX Secure Shell........................................................86
5.6.3 Esecuzione di HP-UX Secure Shell.......................................................................87
5.6.3.1 Esecuzione del client ssh............................................................................87
5.6.3.2 Esecuzione del client sftp...........................................................................87
5.6.3.3 Esecuzione del client scp...........................................................................88
5.6.4 Separazione dei privilegi di HP-UX Secure Shell...................................................88
5.6.5 Autenticazione con HP-UX Secure Shell...............................................................89
5.6.5.1 GSS-API..................................................................................................90
5.6.5.2 Autenticazione a chiave pubblica...............................................................90
5.6.5.3 Autenticazione basata sull'host e su chiave pubblica.....................................90
5.6.5.4 Autenticazione con password....................................................................91
5.6.6 Protocolli di comunicazione...............................................................................91
5.6.7 HP-UX Secure Shell ed il sistema HP-UX...............................................................91
Sommario
5
5.6.8 Tecnologie correlate.........................................................................................92
5.6.9 Requisiti di Strong Random Number Generator....................................................92
5.6.10 Supporto di TCP Wrappers..............................................................................93
5.6.11 Jail di directory di chroot..................................................................................93
II Protezione dei dati...................................................................................................95
6 Protezione dei filesystem....................................................................................................97
6.1 Controllo dell'accesso ai file......................................................................................97
6.1.1 Impostazione delle autorizzazioni di accesso ai file...............................................99
6.1.2 Impostazione della proprietà dei file....................................................................99
6.1.3 Protezione delle directory...................................................................................99
6.1.4 Protezione dei file degli account utente..............................................................100
6.1.5 Individuazione e correzione dei file danneggiati con fsck.....................................100
6.2 Impostazione delle liste di controllo dell'accesso........................................................101
6.3 Uso delle liste di controllo dell'accesso di HFS...........................................................102
6.3.1 Liste di controllo dell'accesso di HFS e comandi e chiamate di HP-UX....................103
6.4 Uso delle liste di controllo dell'accesso di JFS.............................................................106
6.4.1 Definizione di una lista di controllo dell'accesso di JFS........................................106
6.4.2 Modalità di generazione delle lista di controllo dell'accesso di JFS da parte del
sistema..................................................................................................................106
6.4.3 Lista di controllo dell'accesso minima di JFS.......................................................106
6.4.4 Voci aggiuntive di utente e di gruppo della lista di controllo dell'accesso di JFS.....107
6.4.5 Voci di classe e di gruppo della lista di controllo dell'accesso di JFS.....................107
6.4.6 Uso dei comandi setacl e getacl......................................................................108
6.4.7 Effetti di chmod sulle voci di classe...................................................................108
6.4.8 Esempio di modifica di una lista di controllo dell'accesso minima di JFS................109
6.4.9 Liste di controllo dell'accesso predefinite di JFS..................................................111
6.4.10 Modifica della lista di controllo dell'accesso di JFS con il comando setacl............112
6.4.10.1 Uso della opzioni di modifica ed eliminazione..........................................112
6.4.10.2 Uso dell'opzione -f................................................................................112
6.4.10.3 Autorizzazioni effettive e setacl -n............................................................113
6.5 Confronto fra le liste di controllo dell'accesso di JFS e di HFS.......................................113
6.5.1 Mappatura dei comandi e delle funzioni di JFS e HFS.........................................114
6.6 Liste di controllo dell'accesso e NFS.........................................................................115
6.7 Considerazioni sulla protezione per i file speciali di dispositivo /dev............................115
6.8 Protezione delle partizioni del disco e dei volumi logici...............................................116
6.9 Linee guida per il montaggio e lo smontaggio dei filesystem........................................117
6.10 Controllo della protezione dei file in una rete............................................................118
6.10.1 Esame delle autorizzazioni nei file di controllo di rete........................................118
6.10.2 File montati in ambiente NFS..........................................................................119
6.10.2.1 Vulnerabilità del server...........................................................................119
6.10.2.2 Vulnerabilità del client...........................................................................119
6.10.2.3 Tutela dei file montati su NFS..................................................................120
6
Sommario
7 Compartimenti...............................................................................................................121
7.1 Panoramica............................................................................................................121
7.1.1 Architettura dei compartimenti...........................................................................122
7.1.2 Configurazione predefinita dei compartimenti.....................................................123
7.2 Pianificazione della struttura dei compartimenti..........................................................123
7.3 Attivazione dei compartimenti..................................................................................124
7.4 Modifica della configurazione dei compartimenti.......................................................125
7.4.1 Modifica delle regole di compartimento.............................................................126
7.4.2 Modifica del nome del compartimento..............................................................126
7.5 Componenti dei compartimenti.................................................................................126
7.5.1 File di configurazione dei compartimenti............................................................127
7.5.2 Comandi dei compartimenti.............................................................................127
7.5.3 Manpage dei compartimenti............................................................................128
7.6 Regole di compartimento e sintassi...........................................................................128
7.6.1 Definizione dei compartimenti..........................................................................128
7.6.2 Regole per i filesystem.....................................................................................129
7.6.3 Regole per IPC...............................................................................................131
7.6.4 Regole per la rete...........................................................................................133
7.6.5 Regole varie..................................................................................................135
7.6.6 Esempio di file di regole..................................................................................136
7.7 Configurazione delle applicazioni nei compartimenti..................................................136
7.8 Risoluzione dei problemi dei compartimenti...............................................................136
7.9 Utilizzo della modalità rilevamento per generare la configurazione iniziale dei
compartimenti.............................................................................................................137
7.10 Compartimenti nei cluster di HP Serviceguard...........................................................138
8 Privilegi ad alta definizione.............................................................................................141
8.1 Panoramica...........................................................................................................141
8.2 Componenti dei privilegi ad alta definizione..............................................................141
8.2.1 Comandi.......................................................................................................141
8.2.2 Manpage.....................................................................................................142
8.3 Privilegi disponibili.................................................................................................142
8.4 Configurazione delle applicazioni con privilegi ad alta definizione..............................145
8.4.1 Modello dei privilegi.......................................................................................146
8.4.2 Privilegi composti...........................................................................................147
8.5 Protezione e privilegi ad alta definizione...................................................................147
8.5.1 Aumento dei privilegi......................................................................................148
8.6 Privilegi ad alta definizione nei cluster Serviceguard...................................................148
8.7 Risoluzione dei problemi dei privilegi ad alta definizione............................................148
III Protezione dell'identità...........................................................................................151
9 HP-UX Role-based Access Control.....................................................................................153
9.1 Panoramica............................................................................................................153
Sommario
7
9.2 Aspetti fondamentali del controllo dell'accesso...........................................................154
9.2.1 Semplificazione del controllo dell'accesso mediante i ruoli...................................155
9.3 Componenti di HP-UX RBAC.....................................................................................156
9.3.1 Access Control Policy Switch di HP-UX RBAC.......................................................157
9.3.2 File di configurazione di HP-UX RBAC...............................................................157
9.3.3 Comandi di HP-UX RBAC.................................................................................158
9.3.4 Manpage di HP-UX RBAC................................................................................158
9.3.5 Architettura di HP-UX RBAC..............................................................................159
9.3.6 Esempio di utilizzo e di operatività di HP-UX RBAC.............................................160
9.4 Pianificazione della messa in attività di HP-UX RBAC...................................................161
9.4.1 Pianificazione dei ruoli....................................................................................162
9.4.2 Pianificazione delle autorizzazioni per i ruoli.....................................................162
9.4.3 Pianificazione della mappatura dei comandi.....................................................163
9.4.4 Limiti e restrizioni di HP-UX RBAC.....................................................................164
9.5 Configurazione di HP-UX RBAC................................................................................164
9.5.1 Configurazione dei ruoli..................................................................................165
9.5.1.1 Creazione dei ruoli..................................................................................165
9.5.1.2 Assegnazione dei ruoli agli utenti..............................................................166
9.5.1.3 Assegnazione dei ruoli ai gruppi...............................................................167
9.5.2 Configurazione delle autorizzazioni..................................................................167
9.5.3 Configurazione di privilegi ed autorizzazioni per comandi aggiuntivi....................169
9.5.4 Configurazione di HP-UX RBAC con privilegi ad alta definizione..........................170
9.5.5 Configurazione di HP-UX RBAC con i compartimenti...........................................172
9.6 Uso di HP-UX RBAC................................................................................................173
9.6.1 Uso del comando privrun per eseguire applicazioni con privilegi..........................173
9.6.1.1 HP-UX RBAC nei cluster Serviceguard.........................................................175
9.6.2 Uso del comando privedit per modificare i file sottoposti al controllo dell'accesso....176
9.6.3 Personalizzazione di privrun e privedit con ACPS................................................177
9.7 Risoluzione dei problemi di HP-UX RBAC...................................................................177
9.7.1 Strumento per la sintassi del database rbacdbchk................................................177
9.7.2 Informazioni di privrun -v.................................................................................178
10 Amministrazione dell'auditing........................................................................................179
10.1 Auditing dei componenti........................................................................................180
10.1.1 Comandi......................................................................................................180
10.1.2 File di configurazione dell'auditing..................................................................180
10.1.3 Manpage relative all'auditing.........................................................................181
10.2 Auditing del proprio sistema..................................................................................181
10.2.1 Pianificazione dell'implementazione dell'auditing..............................................181
10.2.2 Abilitazione dell'auditing..............................................................................182
10.2.3 Disabilitazione dell'auditing...........................................................................183
10.2.4 Monitoraggio dei file di auditing....................................................................183
10.2.5 Considerazioni sulle prestazioni.....................................................................183
8
Sommario
10.2.6 Linee guida per la gestione del sistema di auditing...........................................184
10.3 Auditing degli utenti.............................................................................................184
10.4 Eventi oggetto di auditing......................................................................................185
10.5 Sequenze di auditing............................................................................................187
10.5.1 Configurazione delle sequenze di auditing.......................................................188
10.5.2 Monitoraggio e gestione delle sequenze di auditing.........................................188
10.6 Visualizzazione dei registri eventi di auditing...........................................................190
10.6.1 Esempi d'utilizzo del comando audisp.............................................................191
10.7 Auto-auditing.......................................................................................................191
10.8 Auditing di HP-UX RBAC........................................................................................192
10.8.1 Auditing basato sui criteri HP-UX RBAC e sul file /etc/rbac/aud_filter..................193
10.8.2 Procedure per l'auditing dei criteri di HP-UX RBAC............................................194
A Sistemi sicuri.......................................................................................................................195
A.1 Configurazione di un sistema sicuro...............................................................................195
A.2 Auditing di un sistema sicuro........................................................................................197
A.3 Gestione delle password sicure e dell'accesso al sistema..................................................197
A.3.1 File delle password..............................................................................................198
A.3.1.1 Il file /etc/passwd........................................................................................198
A.3.1.2 Il database /tcb/files/auth/..........................................................................199
A.3.2 Scelta e creazione della password........................................................................200
A.3.3 Durata della password.........................................................................................200
A.3.4 Cronologia e riutilizzo della password...................................................................201
A.3.5 Controllo dell’accesso basato sull'orario.................................................................201
A.3.6 Controllo dell'accesso basato sul dispositivo...........................................................201
A.3.7 Manipolazione dei database del sistema sicuro......................................................202
A.4 Linee guida per il backup ed il ripristino sicuro...............................................................202
B Altri prodotti per la protezione..............................................................................................205
B.1 HP-UX HIDS.................................................................................................................205
B.2 Patch di protezione......................................................................................................205
B.3 HP-UX IPFilter..............................................................................................................206
B.4 HP-UX Secure Shell......................................................................................................206
Glossario..............................................................................................................................207
Indice...................................................................................................................................215
Sommario
9
10
Informazioni su questo documento
Cronologia della pubblicazione
La data della pubblicazione del documento ed il codice prodotto indicano la sua edizione
corrente. La data di pubblicazione cambierà con una nuova edizione.
Per assicurarsi di ricevere le nuove edizioni, abbonarsi al corrispondente servizio di
supporto del prodotto. Per i dettagli, consultare il proprio rappresentante commerciale
HP.
È possibile reperire varie versioni di questo documento all'indirizzo:
http://docs.hp.com
Marzo 2008
Ottobre 2007
Codice prodotto HP 5992–3427
•
Il documento è suddiviso in tre parti: Protezione dei sistemi,
Protezione dei dati e Protezione dell'identità.
•
Aggiunto un capitolo per documentare le HP-UX Standard
Mode Security Extensions (vedere il Capitolo 4).
•
Security Patch Check è stato sostituito da Software Assistant.
•
Aggiunta una figura un che illustra l'interfaccia utente di HP-UX
Bastille (vedere la Sezione 3.3).
•
Aggiunto il file di log della configurazione di HP-UX Bastille
assessment-log.config (vedere la Sezione 3.5).
•
Apportate diverse modifiche.
Codice prodotto HP 5992-2921
•
Agosto 2007
Febbraio 2007
Aggiunto un capitolo per descrivere HP-UX Bastille.
Codice prodotto HP 5992-1933 (Solo in inglese)
•
Process Resource Manager (PRM) è stato rimosso dall'elenco
dei prodotti che non supportano le password shadow (vedere
la Sezione 2.4.5).
•
Correzione di search a nsearch in
elenco_autorizzazioni (vedere la Sezione 7.6.2).
Codice prodotto HP 5991-6514
Prima edizione
Cronologia della pubblicazione
11
NOTA: I volumi della Guida all'amministrazione di sistemi HP-UX possono essere
aggiornati indipendentemente. Le versioni più recenti dei volumi della serie possono
quindi variare nel corso del tempo e rispetto alle altre versioni. La più recente versione
di questi documenti è disponibile all'indirizzo:
http://docs.hp.com
Destinatari del documento
La Guida all'amministrazione di sistemi HP-UX è destinata agli amministratori di sistemi
HP-UX di tutti i livelli di esperienza che devono gestire dei sistemi HP-UX a partire da
HP-UX Release 11i versione 3.
Anche se alcuni argomenti di questa serie sono validi anche per le release precedenti,
nella versione 3 di HP-UX 11i sono state apportate numerose modifiche; perciò, per
informazioni sulle release precedenti consultare il manuale Gestione di sistemi e gruppi
di lavoro: Guida per amministratori di sistema HP-UX.
Informazioni su questa serie di documenti
La Guida all'amministrazione di sistemi HP-UX documenta le operazioni di base – ed i
concetti associati – necessarie per l'amministrazione di sistemi che eseguono HP-UX
Release 11i versione 3. Comprende i seguenti volumi:
Panoramica
Gestione della configurazione
Gestione dei volumi logici
Gestione della sicurezza
Operazioni abituali di gestione
Offre una veduta generale di HP-UX 11i, dei suoi
componenti e di come si legano l’uno con l’altro.
Descrive molte delle operazioni che è necessario
eseguire per configurare e personalizzare le
impostazioni di sistema ed il comportamento dei
sottosistemi.
Documenta come configurare i volumi fisici, i
gruppi di volumi ed i volumi logici utilizzando
HP Logical Volume Manager (LVM).
Documenta le funzionalità di protezione di sistema
e dati di HP-UX 11i.
Documenta molte delle operazioni che è
necessario eseguire abitualmente per mantenere
l'operatività del sistema.
Guida all'amministrazione di sistemi HP-UX: Gestione della sicurezza è diviso in tre
parti: Protezione dei sistemi, Protezione dei dati e Protezione dell'identità. Queste parti
trattano i seguenti argomenti:
Capitolo 1
12
Descrive le considerazioni sulla sicurezza relative alle procedure di
avvio ed installazione.
Informazioni su questo documento
Capitolo 2
Capitolo 3
Capitolo 4
Capitolo 5
Capitolo 6
Capitolo 7
Capitolo 8
Capitolo 9
Capitolo 10
Appendice A
Appendice B
Descrive come amministrare la protezione degli utenti e del sistema
dopo aver installato il sistema operativo.
Descrive come rafforzare la protezione di un sistema usando Bastille
per migliorare la sicurezza del sistema operativo HP-UX.
Descrive le funzionalità ed i componenti di HP-UX Standard Mode
Security Extensions.
Descrive come proteggere l'accesso remoto al proprio sistema.
Descrive come controllare e proteggere i filesystem.
Descrive i compartimenti e come isolare l'uno dall'altro i componenti
di un sistema.
Descrive i privilegi ad alta definizione e come suddividere in un
insieme di privilegi le prerogative dei superutenti.
Descrive le funzionalità e le caratteristiche di HP-UX Role-Based Access
Control.
Descrive l'amministrazione del sistema di audit.
Descrive i sistemi sicuri.
Descrive altri prodotti per la protezione.
Nomi ed identificativi delle release di HP-UX 11i
Con HP-UX 11i v1, HP fornisce un sistema operativo ad alta disponibilità, sicuro e
gestibile. HP-UX 11i supporta gli ambienti operativi Enterprise, Mission-critical e Technical
computing, ed è disponibile per sistemi HP 9000 e server HP Integrity.
Ogni release HP-UX 11i v1 ha associato un nome ed un identificativo di release. Il
comando uname con l'opzione -r restituisce l'identificatore di release. Per l'elenco delle
release disponibili per HP-UX 11i, consultare la tabella seguente:
Identificativo della release Nome della release
Architettura del processore supportata
B.11.11
HP-UX 11i versione 1
HP 9000
B.11.23
HP-UX 11i versione 2
Intel™ Itanium™
B.11.23
HP-UX 11i versione 2, settembre
2004
HP 9000
HP-UX 11i versione 3
HP 9000
B.11.31
Itanium
Itanium
Per informazioni sui sistemi ed architetture di processori supportati dalle varie versioni
di HP-UX 11i, consultare le informazioni sulla release specifiche della propria versione
di HP-UX 11i (ad esempio, le Informazioni sulla release di HP-UX 11i versione 3).
Nomi ed identificativi delle release di HP-UX 11i
13
Reperimento di informazioni su HP-UX
La seguente tabella indica dove trovare le informazioni generali sull’amministrazione di
sistema per HP-UX. Tuttavia, non contiene informazioni di prodotti specifici.
Se si desidera
Consultare
Che si trova in
Informazioni sulla release di
• Nel supporto Instant Information
HP-UX 11i specifiche della propria
di HP (solamente in lingua
versione di HP-UX. Ad esempio,
inglese)
si potrebbe voler consultare le
• http://docs.hp.com
• Il contenuto degli ambienti
Informazioni sulla release di
operativi
HP-UX 11i versione 3.
• La directory /usr/share/
doc/ (solo in inglese)
• I requisiti firmware ed i sistemi
supportati di una specifica
La directory /usr/share/doc
release
contiene solo le informazioni sulla
release originali della propria
versione di HP-UX. Per le
informazioni sulla release
aggiornate, cercare nel supporto
Instant Information o nel sito
http://docs.hp.com.
Per sapere:
• Cosa è stato modificato nelle
release di HP-UX
Installare o aggiornare HP-UX
• Leggere prima di installare o
aggiornare ad HP-UX
• Kit del supporto (fornito con
l'ambiente operativo)
• Guida di installazione ed
aggiornamento di HP-UX 11i
• http://docs.hp.com
(Nota: vedere i documenti
specifici della propria versione di
HP-UX.)
Gestire un sistema HP-UX
Per le release a partire da HP-UX
11i versione 3:
• Guida all'amministrazione di
sistemi HP-UX (serie di più
volumi)
Altre fonti di informazioni per
l'amministrazione di sistema:
• Nel supporto Instant Information
di HP (solamente in lingua
inglese)
• http://docs.hp.com
• Planning Superdome
Configurations (libro bianco)
• nPartition Admnistrator's Guide
• Planning Superdome
Configurations (libro bianco)
Informazioni correlate
Ulteriori informazioni sulla protezione e su HP-UX sono disponibili all'indirizzo
http://docs.hp.com. In particolare, sono disponibili i seguenti documenti:
14
Informazioni su questo documento
•
HP-UX AAA Server Administrator's Guide
•
HP-UX Host Intrusion Detection System Administrator's Guide
•
HP-UX IPFilter Administrator's Guide
•
HP-UX IPSec Administrator's Guide
•
HP-UX Secure Shell Release Notes
Convenzioni
Questo documento osserva le seguenti convenzioni tipografiche.
reboot(1M)
Manpage di HP-UX. reboot è il nome e 1M è la sezione nella HP-UX
Reference. In rete e nel disco Instant Information, potrebbe essere
presente un collegamento alla manpage stessa. Per visualizzare la
manpage, nella riga dei comandi HP-UX, è possibile digitare “man
reboot” oppure “man 1M reboot”. Per ulteriori informazioni, vedere
man(1).
Titolo del
Titolo di un manuale. In rete e nel disco Instant Information, potrebbe
manuale
essere presente un collegamento al libro stesso.
KeyCap
Nome di un tasto della tastiera. Invio ed Enter si riferiscono entrambi
allo stesso tasto.
Enfasi
Testo enfatizzato.
Enfasi
Testo fortemente enfatizzato.
Termine
Introduzione di un termine o un'espressione importante.
ComputerOut Testo visualizzato dal computer.
Input
Comandi ed altro testo digitato dall'utente.
utente
Comando
Nome di un comando o espressione di comando qualificata.
Variabile
Nome di una variabile, che è possibile sostituire in un comando o
funzione, oppure informazioni in una schermata che rappresentano
vari valori possibili.
[]
Il contenuto è facoltativo nei formati e nelle descrizioni del comando.
{}
Il contenuto è obbligatorio nei formati e nelle descrizioni del comando.
Nel caso il contenuto sia un elenco di voci separate dal carattere |,
occorrerà sceglierne una.
...
L'elemento che precede può essere ripetuto un numero arbitrario di
volte.
|
Separa le voci in un elenco di scelte.
Convenzioni
15
16
Parte I Protezione dei sistemi
Un fattore critico della sicurezza aziendale è la riduzione al minimo ed il rafforzamento dei
sistemi. HP-UX 11i offre un insieme di funzionalità di protezione, ideate per affrontare le
vulnerabilità note e sconosciute, eseguendo soltanto i servizi necessari e riducendo quindi al
minimo i potenziali punti di attacco.
Questa sezione tratta i seguenti strumenti HP-UX in grado di proteggere un sistema da un attacco
e di individuare e reagire alle minacce alla sicurezza:
•
Installazione in modo sicuro dell'ambiente operativo HP-UX (Capitolo 1)
•
Gestione della protezione di utenti e sistema (Capitolo 2)
•
HP-UX Bastille (Capitolo 3)
•
Standard Mode Security Extensions (Capitolo 4)
•
Gestione della protezione dell'accesso remoto (Capitolo 5)
17
18
1 Installazione in modo sicuro dell'ambiente operativo
HP-UX
Questo capitolo prende in esame le considerazioni sulla sicurezza relative alle procedure
di avvio ed installazione, compresi gli aspetti seguenti:
•
Considerazioni sulla protezione dell'installazione (Sezione 1.1)
•
Prevenzione delle violazioni di protezione durante la procedura di avvio
(Sezione 1.2)
•
Abilitazione della protezione dell'accesso per l'utente root (Sezione 1.3)
•
Utilizzo dell'autenticazione all'avvio per prevenire accessi non autorizzati
(Sezione 1.4)
•
Impostazione delle opzioni di protezione al momento dell'installazione (Sezione 1.5)
•
Installazione delle patch di protezione (Sezione 1.6)
•
Consigli sulla protezione per il backup ed il ripristino dopo l'installazione
(Sezione 1.7)
1.1 Considerazioni sulla sicurezza dell'installazione
Prima di installare o aggiornare un nuovo sistema operativo o un nuovo software, è
buona regola prendere in considerazione le considerazioni sulla sicurezza. Utilizzare
le seguenti misure di protezione nella preparazione dell'installazione:
•
Esaminare il contenuto del kit del supporto. Leggere le informazioni sulla release
ed altre informazioni correlate, reperibili all'indirizzo http://docs.hp.com.
•
Decidere quale software è necessario e quale no. Non installare software che non
è necessario. Per una guida nella scelta dei prodotti software di protezione,
consultare gli altri capitoli di questo documento.
•
Isolare il proprio sistema dalla rete, specialmente da una pubblica, finchè le
modifiche alla protezione non saranno completate. Prendere in considerazione
l'eventuale livello di protezione che si desidera applicare al sistema. Per ulteriori
informazioni, vedere la Sezione 1.5.
•
Accertarsi che la console del sistema sia fisicamente protetta e che la console LAN
sia scollegata, oppure utilizzata solamente in una rete in cui i protocolli con testo
in chiaro come telnet siano consentiti e protetti. Si tratta di una considerazione
di protezione importante. Limitare l'accesso alla console del sistema serve ad
impedire che persone non autorizzate modifichino le impostazioni di protezione
del proprio sistema.
•
Installare le patch più recenti, in particolare quelle di protezione. Per ulteriori
informazioni, vedere la Sezione 1.6.
1.1 Considerazioni sulla sicurezza dell'installazione
19
•
Mantenere un sistema di backup e ripristino. Per ulteriori informazioni, vedere la
Sezione 1.7.
1.2 Prevenzione delle violazioni di protezione durante la procedura di
avvio
Le violazioni della protezione possono avvenire durante la sequenza di avvio. È possibile
interrompere la procedura di avvio, consentendo così l'accesso al sistema ad una persona
non autorizzata. Se alcuni file di sistema sono modificati in modo errato o doloso prima
del riavvio, il sistema potrebbe mostrare problemi durante e dopo il riavvio. Eseguire
quindi queste operazioni preventive:
•
Accertarsi che il sistema e la sua console siano fisicamente protetti e che ad essi
sia consentito l'accesso soltanto da utenti autorizzati.
•
Abilitare la funzionalità di autenticazione all'avvio, per consentire soltanto agli
utenti specificati di avviare il sistema in modalità utente singolo. Vedere la
Sezione 1.4.
•
Accertarsi che i file di sistema siano protetti in scrittura; per alcuni di essi potrebbe
essere necessaria la protezione in lettura.
Quello seguente è il riepilogo della sequenza eseguita all'accensione o al riavvio del
computer. Per ulteriori informazioni sulla sequenza di avvio, vedere Guida
all'amministrazione di sistemi HP-UX: Operazioni abituali di gestione.
1. Durante l'avvio, esiste un periodo di attesa di 10 secondi, che consente di ignorare
la sequenza automatica di avvio. A quel punto, un intruso potrebbe interrompere
la sequenza d'avvio e penetrare nel sistema.
Premendo un tasto qualsiasi sarà possibile interrompere la sequenza d'avvio ed
ottenere l'accesso come root. ISL visualizzerà quindi il prompt dei comandi. Digitando
il comando seguente, il sistema opererà in modalità utente singolo:
ISL> hpux -is
Se non è utilizzata l'autenticazione all'avvio, un utente potrebbe accedere come
root senza utilizzare una password.
L'autenticazione all'avvio consente l'accesso come root solamente agli utenti
specificati.
2.
3.
Se la sequenza di avvio non è interrotta, la procedura di inizializzazione proseguirà.
HP-UX porterà a termine la procedura di inizializzazione e inizierà il normale
funzionamento, pronto per l'accesso. A questo punto potrebbe verificarsi un'altra
violazione della protezione, se un intruso è riuscito ad accedere come root.
Se un intruso interrompe la procedura di avvio, ha accesso come root al sistema e in
teoria ne è proprietario. L'esserne proprietario consentirà di modificare il sistema
attraverso un gran numero di meccanismi.
20
Installazione in modo sicuro dell'ambiente operativo HP-UX
1.3 Abilitazione della protezione dell'accesso per l'utente root
Molti protocolli di rete come rlogind e telnetd non cifrano le comunicazioni di rete,
agevolando gli intrusi che vogliono carpire dalla rete le password di amministrazione.
Si consiglia di ridurre al minimo l'utilizzo di protocolli non protetti.
Per impedire l'accesso privilegiato con questi protocolli, è possibile usare il file /etc/
securetty per riservare l'accesso all'account root unicamente alla console di sistema.
Per riservare l'accesso di root alla sola console di sistema, creare il file /etc/security
con l'unica riga "console". Per ulteriori informazioni, consultare login(1).
1.4 Utilizzo dell'autenticazione all'avvio per impedire gli accessi non
autorizzati
La funzionalità dell'autenticazione all'avvio protegge l'avvio in modalità utente singolo
con l'autenticazione della password. Consente di configurare un sistema in modo che
soltanto agli utenti autorizzati siano in grado di accedere alla macchina in modalità
utente singolo. La funzionalità dell'autenticazione all'avvio deve essere abilitata prima
del riavvio del sistema.
L'autenticazione all'avvio è configurata con due attributi del file /etc/default/
security:
•
BOOT_AUTH abilita o disabilita l'autenticazione all'avvio. Per abilitare
l'autenticazione all'avvio, specificare BOOT_AUTH=1. Per impostazione predefinita,
l'autenticazione è disabilitata (BOOT_AUTH=0).
•
BOOT_USERS definisce quali utenti possono eseguire l'accesso come root quando
la funzionalità dell'autenticazione all'avvio è abilitata. I nomi elencati in
BOOT_USERS sono separati da virgole. Ad esempio:
BOOT_USERS=root,maria,gianni,luca,mara
BOOT_USERS=root è il valore predefinito.
Il file di configurazione /etc/default/security è spiegato nel Capitolo 2 e in
security(4).
1.5 Impostazione delle opzioni di protezione al momento dell'installazione
Le opzioni di protezione al momento dell'installazione consentono di configurare il
motore di blocco di sicurezza di HP-UX Bastille, che può comprendere il firewall HP-UX
IPFilter. Al termine dell'installazione del sistema, sarà attivo uno del livelli preconfigurati
di protezione.
Durante l'installazione, è possibile scegliere fra quattro livelli di protezione preconfigurati:
Sec00Tools
Installa l'infrastruttura di protezione ma non abilità le funzionalità
facoltative. Si tratta del funzionamento predefinito.
1.3 Abilitazione della protezione dell'accesso per l'utente root
21
Sec10Host
Sec20MngDMZ
Sec30DMZ
Installa un sistema di blocco su base host, senza configurazione del
firewall HP-UX IPFilter. Con questo livello di protezione, la maggior
parte dei servizi di rete è disabilitata. Questi servizi possono essere
ripristinati eseguendo il comando bastille(1M).
Installa un sistema di blocco amministrato, che blocca gran parte del
traffico entrante con il firewall HP-UX IPFilter.
Installa un sistema di blocco DMZ completo, basato su host e con
blocco di rete IPFilter. HP-UX IPFilter blocca quasi tutte le connessioni
entranti.
Per informazioni su HP-UX Bastille, vedere il Capitolo 3. Per informazioni su HP-UX
IPFilter, consultare HP-UX IPFilter Administrator's Guide, all'indirizzo:
http://www.docs.hp.com/en/internet.html#IPFilter
1.6 Installazione delle patch di protezione
Immediatamente dopo l'installazione, installare le patch necessarie e quelle consigliate
utilizzando HP-UX Software Assistant (SWA).
SWA è uno strumento basato sulla riga dei comandi che consolida e semplifica
l'amministrazione delle patch e l'amministrazione dei bollettini di protezione nei sistemi
HP-UX. Lo strumento SWA sostituisce Security Patch Check (SPC) ed è l'utility consigliata
da HP per conservare la conformità con i bollettini di protezione pubblicati da HP per
il software HP-UX.
NOTA: L'uso dello strumento software Software Assistant può contribuire al
rafforzamento della protezione dei sistemi, ma non la garantisce.
Per ulteriori informazioni su SWA, consultare:
•
Il sito Web HP-UX Software Assistant all'indirizzo:
https://www.hp.com/go/swa
•
swa(1M)
•
HP-UX Software Assistant System Administration Guide, all'indirizzo:
http://docs.hp.com
22
Installazione in modo sicuro dell'ambiente operativo HP-UX
1.7 Consigli sulla protezione per il backup ed il ripristino dopo l'installazione
Una volta che il sistema sia in esecuzione, è ancora necessario garantirne la protezione.
È necessario mantenere un accurato sistema di backup e ripristino dei file. Seguono
alcune linee guida:
•
Usare soltanto i comandi fbackup e frecover per eseguire in modo selettivo il
backup ed il ripristino dei file. Solo fbackup e frecover conservano le liste di
controllo dell'accesso (ACL). Per eseguire il backup e ripristinare file per sistemi che
non implementano le ACL, usare l'opzione -A di questi comandi. Vedere
fbackup(1M) e frecover(1M).
•
Se si prevede di ripristinare i file in un altro sistema, assicurarsi che il nome utente
ed il nome del gruppo in entrambi i sistemi siano coerenti.
•
Ricordare che i supporti di backup sono materiale sensibile. Consentire l'accesso
ai supporti soltanto se è effettivamente necessario.
•
Etichettare i nastri di backup e metterli al sicuro. La conservazione dei supporti in
depositi decentrati fornisce il massimo della sicurezza. Mantenere gli archivi per
un minimo di sei mesi, quindi riciclare i supporti.
•
Eseguire backup giornalieri incrementali e backup completi settimanali.
Sincronizzare la pianificazione dei backup con il flusso di dati della propria
organizzazione. Ad esempio, se il database principale è aggiornato ogni venerdì,
il backup settimanale potrebbe essere eseguito il venerdì sera.
•
Se fosse necessario eseguire il backup programmato di tutti i file, richiedere a tutti
gli utenti di terminare la propria sessione prima del backup. Il comando fbackup
avverte se un file sta per essere modificato durante il backup.
•
Esaminare il file di log degli ultimi backup per identificare gli eventuali problemi
correlati. Impostare delle autorizzazioni restrittive nel file di log del backup.
•
Tenere presente che il comando frecover consente di sovrascrivere un file. Tuttavia,
quando è eseguito il backup il file conserva le autorizzazioni e le ACL configurate.
•
Controllare in anticipo la procedura di ripristino, per essere sicuri di poter ripristinare
completamente i dati in caso di emergenza.
•
Ripristinando file provenienti da un'altra macchina, se l'utente e il gruppo non sono
ancora presenti nel nuovo sistema, per impostare ID utente e ID gruppo nel sistema
in cui si trovano al momento potrebbe essere necessario dover eseguire il comando
chown. Se i file sono ripristinati in un nuovo sistema che non ha il gruppo specificato,
il gruppo proprietario del file sarà quello della persona che ha eseguito il comando
frecover. Se il nome di proprietario e di gruppo ha un significato diverso in
sistemi differenti, il risultato del ripristino potrebbe imprevisto e indesiderato.
1.7 Consigli sulla protezione per il backup ed il ripristino dopo l'installazione
23
24
•
Anche se un'interruzione di corrente normalmente non è causa di perdita di file, se
qualcuno dovesse segnalarla dopo un'interruzione di corrente, prima di ripristinare
il file dal nastro di backup cercarlo nella directory /lost+found.
•
Per controllare il contenuto del nastro utilizzato per il ripristino, usare l'opzione -I
del comando frecover per visualizzare l'indice dei file nel nastro. Le autorizzazioni
esistenti di un filesystem non sono alterate dal backup. Il comando frecover
impedirà di leggere un file se le sue autorizzazioni lo vietano.
•
Non ripristinare mai alcun file critico come /etc/passwd, o quelli contenuti in
/tcb/files. Al contrario, ripristinare il file in una directory temporanea (non
usare /tmp) e fornire a questa directory le autorizzazioni drwx------, che ne
impedirà l'uso ad altri utenti. Confrontare i file ripristinati con quelli da sostituire.
Eseguire tutte le modifiche necessarie.
•
Assicurarsi che l'auditing sia attivato. L'auditing non sarà abilitato automaticamente
dopo avere ripristinato il sistema.
Installazione in modo sicuro dell'ambiente operativo HP-UX
2 Gestione della protezione di utenti e sistema
Questo capitolo affronta gli aspetti principali della sicurezza degli utenti dopo
l'installazione del sistema operativo. Tratta in particolare l'accesso, le password ed altre
interazioni dell'utente con il sistema. Sono trattati i seguenti argomenti:
•
Amministrazione dell'accesso degli utenti (Sezione 2.1)
•
Autenticazione degli utenti durante l'accesso (Sezione 2.2)
•
Autenticazione degli utenti con PAM (Sezione 2.3)
•
Gestione delle password (Sezione 2.4)
•
Definizione degli attributi di protezione di sistema (Sezione 2.5)
•
Gestione dei programmi setuid e setgid (Sezione 2.6)
•
Prevenzione degli attacchi con overflow del buffer dello stack (Sezione 2.7)
•
Protezione di workstation e terminali incustoditi (Sezione 2.8)
•
Protezione dei sistemi dall'accesso da parte di dispositivi remoti (Sezione 2.9)
•
Protezione delle intestazioni di accesso (Sezione 2.10)
•
Protezione dell'account root (Sezione 2.11)
2.1 Amministrazione dell'accesso degli utenti
Gli utenti autorizzati accedono al sistema fornendo un nome utente – nome di accesso
– ed una password validi. Ogni utente è definito da una voce nel file /etc/passwd.
Utilizzare HP System Management Homepage – HP SMH – per aggiungere, rimuovere,
disattivare, riattivare o modificare un account utente.
Per informazioni aggiuntive sulle password, consultare passwd(4), passwd(1) e la sezione
Sezione 2.4 di questo documento.
2.1.1 Monitoraggio degli account utente
Di seguito sono presentate le linee guida per il monitoraggio degli account utente:
•
Controllare regolarmente l'output dei comandi last, lastb e who per individuare
eventuali accessi inconsueti.
•
Controllare che tutti gli utenti con un account abbiano una legittima necessità di
accesso al sistema.
•
Fare attenzione alla presenza di più utenti che condividono lo stesso account. Non
consentire che due utenti condividano il medesimo account.
•
Controllare che nessun account condivida l'ID utente (UID).
2.1 Amministrazione dell'accesso degli utenti
25
•
Assicurarsi che tutti gli account abbiano password protette, modificate
periodicamente.
•
Controllare che tutte le directory home degli utenti abbiano le autorizzazioni
appropriate. La maggior parte delle directory home consentono agli altri utenti
l'accesso in lettura, ma non quello in scrittura. Per una maggior protezione, impostare
le autorizzazioni di scrittura, lettura ed esecuzione al solo proprietario della directory.
•
Assicurarsi che tutti gli utenti conoscano i criteri di protezione. Collocare in ogni
directory home un file che descrive i criteri di protezione dell'azienda.
•
Cercare gli account inutilizzati nel file /etc/passwd o in altri database degli
utenti, in particolare quelli di chi ha lasciato l'azienda.
•
Esaminare gli account root per controllare chi ha accesso di root.
•
Considerare l'installazione di HP-UX Role-based Access Control, per minimizzare i
rischi associati all'accesso di più utenti con l'account root. Per ulteriori informazioni,
vedere il Capitolo 9.
•
Esaminare gli account guest per controllare la frequenza del loro utilizzo.
2.1.2 Monitoraggio degli account guest
Per ottenere il livello più elevato di protezione, non consentire l'uso di account guest o
aperti. Se sono presenti account guest, eseguire le operazione seguenti:
•
Modificare di frequente le password dei guest. È possibile specificare la password.
•
Usare una shell con restrizioni (rsh) per limitare gli accessi al sistema. Per
informazioni sul comando rsh, consultare sh(1) e sh-posix(1).
•
Spesso la presenza di account guest è trascurata. Per disabilitare gli account guest
inutilizzati, utilizzare uno dei metodi seguenti:
— Usare attributi di protezione specifici per il singolo utente per disabilitare
automaticamente l'account dopo un certo numero di giorni di inattività. Per
ulteriori informazioni, consultare security(4) e vedere la Sezione 2.5.2.2.
— Usare il comando seguente per bloccare l'account guest:
# passwd -l guest
— Usare il comando seguente per eliminare l'account guest:
# userdel guest
•
Pianificare un'operazione con at che blocchi automaticamente gli account
temporanei:
# at now +14 days passwd -l account_temporaneo
•
26
Esaminare con regolarità i file /var/adm/wtmp e /var/adm/sulog per
individuare gli account inutilizzati.
Gestione della protezione di utenti e sistema
Per ulteriori informazioni, consultare sh(1) e su(1).
2.1.3 Creazione di account utente per le applicazioni
Se gli utenti utilizzano soltanto HP-UX per lanciare un'applicazione, non è necessario
fornire loro l'accesso a una shell. Questi utenti devono usare soltanto l'applicazione, ad
esempio un sistema per la gestione di database, e non necessitano dell'accesso ad una
funzionalità di HP-UX.
Per limitare l'accesso ad HP-UX, modificare il file /etc/passwd in modo che sia possibile
eseguire, dopo l'accesso, soltanto un comando specifico. Il file /etc/passwd contiene
le informazioni essenziali richieste al momento dell'accesso:
•
Nome utente
•
Password crittografata
•
ID utente
•
ID gruppo
•
Campo per il commento
•
Directory home
•
Programma di accesso
Di solito, il programma di accesso è una shell, ad esempio /bin/sh, ma non
necessariamente deve esserlo. È possibile creare un account passivo, che cioè accede
direttamente ad un'applicazione, identificandola come shell di accesso.
Quello seguente è un esempio di limitazione, che consente ad un utente di utilizzare
soltanto il comando date. La voce nel file /etc/passwd è:
nome_utente:rc70x.4,sx2:20:1:run only date command:/home/date:/usr/bin/date
Al prompt d'accesso, l'utente immette il nome_utente e la password corrispondente.
È eseguito il comando date, la sessione utente sarà quindi chiusa immediatamente.
login:nome_utente
Password:xxxxxx
Tue Nov 14 18:38:38 PDT 2006
2.1.4 Amministrazione degli account di gruppo
Quando un gruppo deve condividere o avere accesso a file relativi a un progetto, per
assicurare la protezione eseguire queste operazioni:
1.
2.
3.
Controllare che ogni membro abbia una voce nel file /etc/passwd.
Creare una voce per il gruppo nel file /etc/group.
Creare una directory condivisa per il gruppo.
drwxrwx-- root project /home/projects
2.1 Amministrazione dell'accesso degli utenti
27
4.
Impostare il valore di umask in ogni ~/.profile dei membri del gruppo.
Nell'esempio successivo, gli utenti del gruppo (e solo questi utenti) potranno leggere,
scrivere ed eseguire un file:
umask u=rwx,g=rwx, o=
2.2 Autenticazione degli utenti durante l'accesso
Per utilizzare un sistema e le sue risorse, gli utenti devono eseguire l'accesso. Controllando
l'accesso al sistema, è possibile tentare di impedirne l'utilizzo ad utenti non autorizzati.
Tuttavia, anche se degli utenti non autorizzati riuscissero ad avere accesso al sistema,
sarà comunque possibile impedire loro di eseguire programmi che consumino risorse e
di accedere ai dati del sistema. Questa sezione spiega che cosa avviene durante la
procedura di accesso, dal momento in cui si digita il nome utente al momento in cui
si ottiene il prompt della shell.
2.2.1 Descrizione della procedura di accesso
I punti seguenti descrivono la procedura di accesso. Queste informazioni dimostrano
l'importanza di creare nomi utente unici e di mantenere dei criteri di protezione delle
password. Per ulteriori informazioni, vedere login(1).
1.
2.
3.
Dopo aver installato il sistema, Login Manager del desktop visualizzerà la schermata
di accesso. Se è stato installato, Common Desktop Environment (CDE) visualizzerà
la relativa schermata di accesso.
Il programma init avvia il processo getty, che invita ad inserire il nome utente.
Immettere quindi il proprio nome utente. Il programma getty invia il nome utente
al programma login.
Il programma login cerca il nome utente nel file /etc/passwd.
•
Se il nome utente esiste, login passerà al punto 4.
•
Se il nome utente non esiste, login eseguirà i seguenti controlli:
— Richiede la password (Password: ).
— Nel caso sia digitata una password non valida, il sistema visualizza il
messaggio di errore Invalid login.
— Aggiorna il file /var/adm/btmp, se esiste. Il file /var/adm/btmp registra
i tentativi di accesso non validi. Per ulteriori informazioni, vedere la
Sezione 2.2.2.
— Esce dopo tre tentativi di accesso non validi consecutivi.
4.
Il processo login controlla il file /etc/passwd.
•
28
Se è stato impostato il campo password, login chiederà l'inserimento della
password e passerà al punto 5.
Gestione della protezione di utenti e sistema
•
5.
6.
Se il campo password non è stato impostato, l'utente non dovrà inserire la
password e login procederà al punto 6.
Il processo login confronta la password con quella crittografata nel file
/etc/passwd.
•
Se la password corrisponde, login procederà al punto 6.
•
Se la password non corrisponde, login visualizzerà Invalid login. Il
processo login consente tre tentativi di accesso consecutivi. Dopo il terzo
tentativo di accesso non valido, login uscirà.
Il processo login aggiorna il file /var/adm/wtmp, che registra gli accessi validi.
Per ulteriori informazioni, vedere la Sezione 2.2.2.
Dopo un accesso riuscito, avverrà l'inizializzazione di ID utente e di gruppo, della
lista di accesso dei gruppi e della directory di lavoro.
7.
Il processo login eseguirà quindi il comando definito nel relativo campo del file
/etc/passwd. Solitamente, il campo del comando è il nome del percorso di una
shell, come /bin/ksh, /bin/csh o /bin/sh. Se il campo del comando è vuoto,
l'impostazione predefinita è /sbin/sh.
Il campo del comando non deve essere necessariamente una shell. Per un esempio
di esecuzione di un altro comando, vedere la Sezione 2.1.3.
8.
Una volta completata l'inizializzazione della shell, il sistema visualizza il prompt e
attende che l'utente digiti dei dati.
È possibile fare in modo che il processo login esegua ulteriori autenticazioni degli
utenti utilizzando Pluggable Authentication Modules (PAM). Per ulteriori informazioni,
vedere pam.conf(4) e Sezione 2.3.
2.2.2 Esame dei file di controllo degli accessi (btmp e wtmp)
I file seguenti registrano gli accessi:
•
Il file /var/adm/btmp registra i tentativi di accesso non riusciti.
•
Il file /var/adm/wtmp registra i tentativi di accesso riusciti.
Usare il comando lastb per leggere il file /var/adm/btmp e controllare se degli
utenti non autorizzati hanno tentato di eseguire l'accesso.
Usare il comando last per leggere il file /var/adm/wtmp.
I comandi last e lastb visualizzano le informazioni più recenti sugli utenti, in ordine
decrescente.
I file wtmp e btmp tendono a crescere senza limitazioni, è necessario quindi controllarli
periodicamente. Rimuovendo periodicamente le informazioni non più necessarie, si
impedirà che il file diventi troppo grande. I file wtmp e btmp non sono creati dai
programmi che li mantengono. Se questi file sono rimossi, la registrazione degli accessi
sarà disabilita.
2.2 Autenticazione degli utenti durante l'accesso
29
Un errore comune compiuto dagli utenti è digitare la password, o parte di essa, al
momento del prompt di accesso. Questi accessi non riusciti sono registrati nel file btmps,
esponendo così la password o parte di essa. Di conseguenza, la protezione del file
deve essere impostata in modo che btmps sia leggibile soltanto dagli amministratori.
# chmod 400 /var/adm/btmps
Se i criteri di protezione richiedono che le ultime sessioni di un utente non siano visibili
da un altro utente, potrebbe essere necessario modificare anche la protezione del file
/var/adm/wtmp.
Per maggiori informazioni, consultare last(1), utmp(4), and wtmp(4).
Il database utmp è un database degli account utente amministrato e sincronizzato in
base a /var/adm/utmp dal comando utmpd. Le applicazioni possono accedere al
database utmps. Vedere utmpd(1M) e utmps(4).
2.2.2.1 Esempi del comando last
Questa sezione contiene alcuni esempi di utilizzo del comando last. Il comando
seguente elenca tutte le sessioni di root e tutte le sessioni del terminale della console:
# last root console | more
root pts/1 Mon Mar 12 16:22 - 18:04 (01:41)
abcdeux console Mon Mar 12 10:13 - 10:19 (00:06)
root pts/2 Fri Mar 9 13:51 - 15:12 (01:21)
abcdeux console Thu Mar 8 12:21 - 12:22 (00:00)
root pts/ta Wed Mar 7 15:38 - 18:13 (02:34)
Il comando seguente mostra quando sono avvenuti i riavvii:
# last
reboot
reboot
reboot
reboot
reboot
reboot
system
system
system
system
system
boot
boot
boot
boot
boot
Sun
Sun
Sun
Thu
Mon
Mar
Mar
Mar
Feb
Feb
28
28
28
19
16
18:06
17:48
17:40
18:25
13:56
still logged in
- 18:06 (00:17)
- 17:48 (00:08)
- 17:40 (37+23:15)
- 18:25 (3+04:28)
2.2.3 Controllo di chi ha eseguito l'accesso
Il comando who esamina il file /etc/utmp per ottenere informazioni correnti degli
utenti che hanno eseguito l'accesso. Inoltre, il comando who può elencare gli accessi,
le sessioni chiuse, i riavvii, le variazioni all'orologio del sistema e i processi avviati da
quello init.
Per controllare chi al momento ha eseguito l'accesso, usare il comando who -u. Ad
esempio:
# who -u
aperson console Aug 5 11:28 old 5796 system.home.company.com
aperson pts/0 Aug 17 18:11 0:03 24944 system
aperson pts/1 Aug 5 11:28 1:14 5840 system
Per ulteriori informazioni, vedere who(1).
30
Gestione della protezione di utenti e sistema
2.3 Autenticazione degli utenti con PAM
Pluggable Authentication Modules (PAM) è una struttura standard che offre servizi di
autenticazione, gestione degli account, delle sessioni e servizi per le password. Questa
sezione presenta una panoramica di PAM e ne descrive i file di configurazione: /etc/
pam.conf e /etc/pam_user.conf.
Per ulteriori informazioni, vedere pam(3), pam_*(5), pam.conf(4), pam_user.conf(4) e
security(4).
2.3.1 Panoramica
PAM offre la flessibilità di scegliere qualsiasi servizio di autenticazione disponibile nel
sistema. La struttura di PAM consente anche di aggiungere nuovi moduli del servizio
autenticazione e di renderli disponibili senza modificare le applicazioni.
Quando un utente esegue l'accesso locale o remoto (ad esempio, usando login o
rlogin), deve essere controllato o autenticato come utente valido del sistema. Poiché
i metodi di autenticazione migliorano e cambiano costantemente, i servizi di accesso
devono cambiare di conseguenza. PAM è stato sviluppato per evitare modifiche continue
ai servizi di accesso, dovute esclusivamente alla revisione del codice di autenticazione,
consentendo così di utilizzare più metodi di autenticazione senza modificare il codice
di accesso.
Di conseguenza, l'autenticazione dell'accesso, il controllo dell'account e la modifica
della password usano l'interfaccia di PAM.
I programmi che necessitano di autenticazione dell'utente passano le loro richieste a
PAM, che stabilisce il metodo di controllo corretto e restituisce la risposta appropriata.
Non è necessario che i programmi conoscano qual'è il metodo di autenticazione
utilizzato. Per una panoramica, vedere la Figura 2-1.
2.3 Autenticazione degli utenti con PAM
31
Figura 2-1 Moduli di autenticazione HP-UX con PAM
Servizi di autenticazione
passwd
su
login
telnet
Richiesta di
convalida
Libreria PAM
UNIX
DCE
libpam_unix.1
Kerberos
Usare il file di configurazione
PAM /etc/pam.conf, per
indicare quale modulo di
autenticazione usare.
LDAP
libpam_ntlm.1
libpam_krb5.1
libpam_dce.1
NTLM
libpam_ldap.1
I metodi di autenticazione sono specificati sia a livello dell'intero sistema sia per singolo
utente, utilizzando i seguenti file di sistema PAM:
/etc/pam.conf
/etc/pam_user.conf
File di controllo per l'intero sistema. Definisce quali moduli
di servizio devono essere accoppiati con i servizi. Questi
sono considerati come impostazioni predefinite del sistema.
File di controllo del singolo utente. Definisce quali opzioni
i moduli di servizio devono utilizzare per utenti specifici.
Questo è un file facoltativo.
Per ulteriori informazioni, vedere pam(3), pam.conf(4), pam_updbe(5), pam_user.conf(4).
2.3.2 Librerie PAM
I moduli di servizio PAM sono implementati mediante librerie condivise. PAM consente
la coesistenza di più tecnologie di autenticazione nei sistemi HP-UX. Il file di
configurazione /etc/pam.conf determina quale modulo di autenticazione usare. Le
librerie PAM sono le seguenti:
32
Gestione della protezione di utenti e sistema
•
PAM_DCE
I moduli PAM_DCE consentono l'integrazione di DCE nei servizi di accesso ai sistemi
(come login, telnet, rlogin, ftp). I moduli PAM_DCE offrono funzionalità
per i moduli di gestione dell'autenticazione, degli account e delle password. Questi
moduli sono supportati attraverso la libreria PAM_DCE, /usr/lib/security/
pam_dce.sl. Per ulteriori informazioni, vedere pam_dce(5).
•
PAM_HPSEC
I moduli PAM-HPSEC gestiscono le estensioni specifiche di HP-UX per l'autenticazione,
la gestione degli account, delle password e delle sessioni. L'uso di /usr/lib/
security/$ISA/libpam_hpsec.so.1 è obbligatorio per servizi come login,
dtlogin, ftp, su, remsh, rexec e ssh. Questi servizi devono porre
libpam_hpsec.so.1 in cima allo stack, al di sopra di uno o più moduli non
facoltativi. Il modulo pam_hpsec applica anche diversi attributi, definiti in /etc/
default/security. Per ulteriori informazioni, vedere pam_hpsec(5) e security(4).
•
PAM_KRB5
Kerberos è un protocollo di autenticazione di rete che consente comunicazioni
protette fra reti, senza trasmettere in chiaro le password. Una password è autenticata
da Key Distribution Center (KDC), che quindi rilascia un Ticket Granting Ticket (TGT).
La libreria condivisa PAM Kerberos è /usr/lib/security/libpam_krb5.1.
Per ulteriori informazioni, vedere pam_krb5(5).
•
PAM_LDAP
Lightweight Directory Access Protocol (LDAP) è uno standard per centralizzare le
informazioni sull'amministrazione di utenti, gruppi e reti attraverso dei servizi di
directory. L'autenticazione avviene in un server di directory LDAP. Per ulteriori
informazioni, consultare la documentazione LDAP-UX all'indirizzo
http://docs.hp.com/hpux/11iv2/index.html.
•
PAM_NTLM
PAM NT LAN Manager consente di autenticare gli utenti HP-UX rispetto ai server
Windows durante l'accesso al sistema. PAM NTLM usa i server NT per autenticare
gli utenti che accedono ad un sistema HP-UX. Per ulteriori informazioni, consultare
HP CIFS Client Administrator's Guide all'indirizzo http://docs.hp.com/hpux/11iv2/
index.html.
•
PAM_UNIX
I moduli PAM_UNIX offrono funzionalità per tutti i quattro moduli PAM:
autenticazione, gestione degli account, delle sessioni e delle password. I moduli
sono supportati dalla libreria PAM UNIX, /usr/lib/security/libpam_unix.1.
Per ulteriori informazioni, vedere pam_unix(5).
2.3 Autenticazione degli utenti con PAM
33
•
PAM_UPDBE
Il modulo di servizio PAM per la definizione dei criteri per gli utenti, /usr/lib/
security/libpam_updbe.1, legge le opzioni definite nel file di configurazione
degli utenti, /etc/pam_user.conf e registra le informazioni nello handle PAM
per l'uso successivo da parte dei moduli di servizio. Per ulteriori informazioni, vedere
pam_updbe(5).
2.3.3 Configurazione dell'intero sistema con /etc/pam.conf
Il file di configurazione di PAM, /etc/pam.conf, definisce i meccanismi di sicurezza
usati per autenticare gli utenti. I suoi valori predefiniti forniscono il funzionamento usuale
del sistema, sia nei sistemi HP-UX standard sia nei sistemi sicuri. Fornisce anche supporto
per i controlli sui singoli utenti e per la funzionalità d'accesso integrato DCE
NOTA: Con DCE, per creare il file di configurazione desiderato usare l'utility
auth.adm. Questo file equivale, dal punto di vista funzionale, al file precedente di
HP per l'accesso integrato, auth.conf. Per ulteriori informazioni, vedere auth.adm(1m).
Perché gli utenti siano in grado di eseguire l'accesso o modificare la password, occorre
che le librerie PAM (libpam e libpam_unix) ed il file di configurazione (/etc/
pam.conf) si trovino nel sistema.
L'autenticazione HP-UX dipende dal file /etc/pam.conf. Questo file deve essere di
proprietà di root con le seguenti autorizzazioni:
-r--r--r-- 1 root sys
1050 Nov
8 10:16 /etc/pam.conf
Se nel sistema questo file è danneggiato o mancante, per risolvere il problema l'utente
root sarà in grado di eseguire l'accesso alla console in modalità utente unico.
I nomi dei servizi protetti sono elencati nel file di controllo del sistema, /etc/pam.conf,
in quattro categorie di prova (tipo_modulo): autenticazione, account, sessione e
password.
Per ulteriori informazioni, vedere pam(3), pam.conf(4) e pam_user.conf(4).
2.3.4 Esempio del file /etc/pam.conf
Quello seguente è un esempio parziale del listato del file /etc/pam.conf. Le righe
che iniziano con # sono commenti. Le sezioni in /etc/pam.conf sono autenticazione,
gestione degli account, delle sessioni e delle password.
#
#
#
#
#
#
#
#
#
34
PAM configuration
Notes:
If the path to a library is not absolute, it is assumed to be
relative to the directory /usr/lib/security/$ISA/
For PA applications, /usr/lib/security/$ISA/libpam_unix.so.1 is a
Gestione della protezione di utenti e sistema
# symbolic link that points to the corresponding PA (32 or 64-bit) PAM
# backend library.
#
# The $ISA (i.e. Instruction Set Architecture) token will be replaced
# by the PAM engine with an appropriate directory string.
# See pam.conf(4).
#
# Also note that the use of pam_hpsec(5) is mandatory for some of
# the services. See pam_hpsec(5).
#
# Authentication management
#
login
auth required libpam_hpsec.so.1
login
auth required libpam_hpsec.so.1
su
auth required libpam.hpsec.so.1 bypass_setaud
su
auth required libpam_unix.so.1
dtlogin auth required libpam_hpsec.so.1
dtlogin auth required libpam_unix.so.1
dtaction auth required libpam_hpsec.so.1
dtaction auth required libpam_unix.so.1
ftp
auth required libpam_hpsec.so.1
ftp
auth required libpam_unix.so.1
rcomds
auth required libpam_hpsec.so.1
rcomds
auth required libpam_unix.so.1
sshd
auth required libpam_hpsec.so.1
sshd
auth required libpam_unix.so.1
OTHER
auth required libpam_unix.so.1
#
# Account management
#
login
account required
libpam_hpsec.so.1
login
account required
libpam_unix.so.1
su
account required
libpam_hpsec.so.1
su
account required
libpam_unix.so.1
2.3.5 Il file di configurazione degli utenti /etc/pam_user.conf
Il file di configurazione di PAM, /etc/pam_user.conf, configura PAM a livello utente.
Questo file è facoltativo. Occorre soltanto se le applicazioni PAM devono comportarsi
in modo diverso per utenti differenti.
È possibile assegnare a singoli utenti opzioni differenti, elencandole nel file /etc/
pam_user.conf. Per un nome_accesso elencato qui, le opzioni elencate qui
sostituiscono le opzioni specificate per il tipo_modulo e il percorso_modulo in
/etc/pam.conf.
Le voci in /etc/pam_user.conf utilizzano la sintassi seguente:
nome_accesso tipo_modulo percorso_modulo opzioni
dove:
nome_accesso
tipo_modulo
percorso_modulo
Il nome per l'accesso dell'utente.
Il tipo_modulo specificato in /etc/pam.conf.
Il percorso_modulo associato a tipo_modulo in /etc/
pam.conf.
2.3 Autenticazione degli utenti con PAM
35
Zero o più opzioni riconosciute dal modulo.
opzioni
Il contenuto predefinito di /etc/pam_user.conf è costituito da commenti:
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
#
This file defines PAM configuration for a user. The configuration
here overrides pam.conf.
The format for each entry is:
user_name module_type module_path options
For example:
user_a
user_a
user_a
auth
auth
password
/usr/lib/security/libpam_unix.1
/usr/lib/security/libpam_dce.1
/usr/lib/security/libpam_unix.1
debug
try_first_pass
debug
user_b
user_b
auth
password
/usr/lib/security/libpam_unix.1
/usr/lib/security/libpam_unix.1
debug use_psd
debug use_psd
See the pam_user.conf(4) manual page for more information
2.3.6 Esempi: Come funziona PAM per l'accesso
Gli esempi seguenti descrivono il processo auth per login, che dipende da come è
stato configurato il file /etc/pam.conf:
•
Se in /etc/pam.conf è presente un'unica voce standard login/auth, come
quella seguente, login procederà normalmente:
login
•
auth
required
/usr/lib/security/libpam_unix.1
Se ci sono due o più voci login/auth per tutto il sistema, come le seguenti, saranno
elaborate secondo il loro ordine:
login
login
auth
auth
required
required
/usr/lib/security/libpam_unix.1
/usr/lib/security/libpam_dce.1
In questo caso, sarà eseguito il processo login standard di HP-UX. Quindi, avverrà
la procedura di autenticazione DCE. Se entrambi sono stati soddisfatti, l'accesso
riuscirà. Sono eseguiti entrambi i processi, anche se l'utente non dovesse superarne
uno.
•
Se per l'autenticazione di utenti diversi dovessero essere necessari metodi di
autenticazione differenti, collocare la voce speciale libpam_udpbe davanti ai
moduli di autenticazione in /etc/pam.conf (le righe sono numerate per facilitare
il riferimento):
#/etc/pam.conf
#1
login
auth
#2
login
auth
#3
login
auth
36
required
/usr/lib/security/libpam_udpbe.1
required
/usr/lib/security/libpam_unix.1
required
/usr/lib/security/libpam_dce.1
Gestione della protezione di utenti e sistema
Collocare quindi le voci di ciascun utente interessato in /etc/pam_user.conf:
#/etc/pam_user.conf
#4
mario auth /usr/lib/security/libpam_unix.1 debug
#5
mario auth /usr/lib/security/libpam_dce.1
try_first_pass
#6
isabella auth /usr/lib/security/libpam_unix.1 debug use_psd
Quando mario eseguirà l'accesso, la riga 1 in /etc/pam.conf provocherà la
lettura da parte di PAM di /etc/pam_user.conf. Dato che il percorso dei moduli
alle righe 4 e 5 di /etc/pam_user.conf coincide con quello alle righe 2 e 3 di
/etc/pam.conf, PAM sostituirà temporaneamente i campi delle opzioni vuote
delle righe 2 e 3 di /etc/pam.conf rispettivamente con debug e
try_first_pass. I moduli specificati nelle righe 2 e 3 saranno quindi eseguiti
con le opzioni riviste.
Quando isabella eseguirà l'accesso, la riga 1 in /etc/pam.conf provocherà
la lettura da parte di PAM di /etc/pam_user.conf e sostituirà temporaneamente
il campo opzioni della riga 2 di /etc/pam.conf con debug use_psd. La
riga 3 resta invariata. I moduli specificati nelle righe 2 e 3 saranno quindi eseguiti
con le opzioni riviste.
Quando giorgio eseguirà l'accesso, la riga 1 in /etc/pam.conf provocherà
la lettura da parte di PAM di /etc/pam_user.conf. Dato che non ci sono voci
per giorgio, le righe 2 e 3 di /etc/pam_user.conf non saranno modificate.
I moduli specificati nelle righe 2 e 3 saranno quindi eseguiti senza modifiche.
2.4 Gestione delle password
La password è il simbolo di identificazione più importante per il singolo utente. Con
essa, il sistema autentica l'utente per consentirgli l'accesso. Dato che il loro uso,
archiviazione, o riconoscimento le rende vulnerabili, le password devono essere tenute
sempre segrete. Le sezioni seguenti descrivono le password con maggior dettaglio.
2.4.1 Responsabilità dell'amministratore di sistema
L'amministratore di sistema e tutti gli utenti devono condividere la responsabilità che
riguarda la sicurezza delle password. L'amministratore di sistema esegue le seguenti
procedure di sicurezza:
•
Controllare che tutti gli utenti abbiano la propria password.
•
Mantenere le autorizzazioni corrette di tutti i file di sistema, compresi file standard
delle password e dei gruppi, /etc/passwd e /etc/group
•
Eliminare o annullare ID utente e password degli utenti che non hanno più i requisiti
necessari per accedere al sistema.
2.4 Gestione delle password
37
•
Controllare che tutte le password delle applicazioni siano crittografate.
•
Controllare che le autorizzazioni in /var/adm/btmp e /var/adm/wtmp siano
impostate nel modo appropriato.
•
Implementare le password da utilizzare una volta sola per l'accesso guest singolo.
•
Informare gli utenti delle loro responsabilità riguardo alla protezione delle password.
•
Usare la durata delle password per costringere gli utenti a modificare periodicamente
la loro password.
•
Impedire il riutilizzo di password recenti.
•
Configurare gli attributi di protezione per tutto il sistema nel file /etc/default/
security. Per ulteriori informazioni, consultare la Sezione 2.5 e security(4)
•
Convertire il sistema in modo da utilizzare le password shadow. Per ulteriori
informazioni, vedere la Sezione 2.4.5 e consultare shadow(4) e pwconv(1M).
2.4.2 Responsabilità degli utenti
Tutti gli utenti devono osservare le seguenti regole:
•
Ricordare la password e tenerla sempre segreta.
•
Modificare immediatamente la password iniziale, quindi cambiarla periodicamente.
•
Riferire ogni variazione dello stato e tutte le possibili violazioni della sicurezza.
•
Assicurarsi che nessuno osservi la digitazione della password.
2.4.3 Criteri di una password valida
Nella scelta della password, osservare le seguenti linee guida e comunicarle agli utenti:
38
•
Scegliere una password che abbia almeno 6 e non più di 80 caratteri. I caratteri
speciali possono comprendere caratteri di controllo e simboli, come l'asterisco e le
barre. Nella modalità standard sono utilizzati solamente i primi otto caratteri.
•
Non scegliere parole che si trovano nei dizionari di qualsiasi lingua, anche se
digitate al contrario. Esistono software in grado di individuarle.
•
Non scegliere una password facilmente associabile all'utente, come ad esempio
nomi di familiari o animali domestici, o che riguardano i propri hobby.
•
Non utilizzare semplici sequenze di tasti, come ad esempio asdfghjkl, o ripetizioni
del proprio nome di accesso (ad es., se è carla; la password carlacarla sarà
inopportuna).
•
Le parole con errori ortografici o con sillabe combinate da due parole non correlate
tra loro producono password appropriate. Un altro metodo comune consiste
nell'utilizzare per la password i primi caratteri di una pubblicazione o di
un'espressione preferita.
Gestione della protezione di utenti e sistema
•
Considerare la possibilità di usare un generatore di password, che combina le
sillabe per produrre un discorso senza senso ma pronunciabile.
•
Non condividere le password con altri utenti. I dirigenti amministrativi devono
proibire la condivisione delle password.
•
Disporre sempre di una password. Evitare la cancellazione del proprio campo della
password nel file /etc/passwd.
2.4.4 Modifica del file delle password /etc/passwd
Un sistema standard mantiene il file delle password: /etc/passwd.
Tutte le password sono crittografate immediatamente dopo l'immissione e archiviate nel
file delle password, /etc/passwd. Per i confronti, è utilizzata solamente la password
crittografata.
Seguire queste linee guida se si desidera modificare il file delle password:
•
Non consentire la presenza di alcun campo di password vuoto o nullo; si tratterebbe
di una vulnerabilità della sicurezza. Un campo di password vuoto consente a
qualsiasi utente di impostare la password per quell'account.
•
Non modificare direttamente il file delle password. Per modificare le voci del file
delle password, usare HP SMH o i comandi useradd, userdel o usermod. Se
è necessario modificare direttamente il file, usare il comando vipw e controllarlo
con il comando pwck. Per ulteriori informazioni, vedere vipw(1M) e pwck(1M).
2.4.4.1 Esempi di comandi passwd
Quelli seguenti sono esempi utili del comando passwd:
•
Reimpostazione della password di un utente:
# passwd utente_1
•
Modifica forzata della password all'accesso successivo:
# passwd -f utente_1
•
Blocco o disabilitazione di un account:
# passwd -l utente_2
•
Abilitazione della scadenza della password:
# passwd -n 7 -x 28 utente_1
•
Controllo dello stato della scadenza della password di uno utente specifico:
# passwd -s utente
•
Controllo dello stato della scadenza della password di tutti gli utenti:
# passwd -sa
2.4 Gestione delle password
39
2.4.4.2 Formato del file /etc/passwd
Il file /etc/passwd è utilizzato per autenticare un utente al momento dell'accesso. Il
file contiene una voce per ciascun account nel sistema HP-UX. Ciascuna voce comprende
sette campi, separati da due punti. Una voce tipica di /etc/passwd ha il seguente
aspetto:
robin:Z.yxGaSvxAXGg:102:99:Robin Hood,Rm 3,x9876,408-555-1234:/home/robin:/usr/bin/sh
I campi contengono le seguenti informazioni (elencate in ordine), separate da due punti:
1.
2.
3.
4.
5.
6.
7.
robin – Nome (d'accesso) dell'utente, composto da un massimo di 8 caratteri.
Z.yxGaSvxAXGg – Campo della password crittografata.
102 – ID utente, un numero intero da 0 a MAXINT-1 (pari a 2.147.483.646 o
231 -2).
99 – ID di gruppo, da /etc/group, un numero intero da 0 a MAXINT-1.
Robin Hood,Rm 3,x9876,408-555-1234 – Il campo Comment serve per
identificare informazioni come nome completo dell'utente, la sua ubicazione ed il
suo numero di telefono. Per ragioni storiche, si chiama anche campo gecos.
/home/robin – La directory home è la directory iniziale di accesso dell'utente.
/usr/bin/sh – Nome di percorso della shell d'accesso, eseguita quando l'utente
esegue l'operazione.
L'utente può modificare la password eseguendo passwd, il campo del commento (quinto
campo) con chfn e il nome di percorso del programma di accesso (settimo campo) con
chsh. L'amministratore di sistema imposta i campi rimanenti. L'ID utente deve essere
unico. Per ulteriori informazioni, vedere chfn(1), chsh(1), passwd(1) e passwd(4).
2.4.5 Il file per le password shadow /etc/shadow
L'aumento della potenza di elaborazione disponibile a chi desiderare decifrare
dolosamente le password ha reso vulnerabili le password in chiaro nel file /etc/passwd.
Una password shadow incrementa la protezione del sistema, nascondendo le password
crittografate in un file di password shadow. È possibile spostare le password crittografate,
precedentemente memorizzate nel file /etc/passwd leggibile pubblicamente, nel file
/etc/shadow, accessibile soltanto ad un utente con i privilegi appropriati.
Per abilitare, controllare e disabilitare le password shadow, utilizzare i comandi seguenti:
•
Il comando pwconv crea un file delle password shadow e copia le password
crittografate dal file /etc/passwd al file /etc/shadow.
•
Il comando pwck controlla i file /etc/passwd e /etc/shadow, cercando eventuali
incoerenze.
•
Il comando pwunconv copia le password crittografate e le informazioni sulla loro
scadenza dal file /etc/shadow al file /etc/passwd, quindi elimina il file /etc/
shadow.
Per ulteriori informazioni, vedere pwconv(1M), pwck(1M), pwunconv(1M) e shadow(4).
40
Gestione della protezione di utenti e sistema
Si osservino i punti seguenti, relativi alla funzionalità delle password shadow.
•
Quando si abilitano le password shadow, potrebbero esserci conseguenze per le
applicazioni che accedono in modo diretto al campo della password del file /etc/
passwd per ottenere le informazioni sulle password e sulla loro scadenza. Quel
campo conterrà una x, che segnala che le informazioni si trovano in /etc/shadow.
Le applicazioni che usano le interfacce PAM per l'autenticazione non saranno
interessate.
Per accedere in modo programmatico al file /etc/shadow, usare le chiamate
getspent(). Queste chiamate sono simili a quelle getpwent() per /etc/
passwd. Per ulteriori informazioni, vedere getspent(3C) e getpwent(3C).
•
Nel file /etc/nsswitch.conf, le password shadow sono supportate dai servizi
dei nomi files, NIS e LDAP, ma potrebbero non essere supportate dai backend
di commutazione di altri server dei nomi. Per configurare il sistema in modo che
utilizzi soltanto files, NIS e/o LDAP, accertarsi che la riga passwd in /etc/
nsswitch.conf contenga soltanto files, NIS e/o LDAP. Se /etc/
nsswitch.conf non esiste, o se la riga passwd non è presente, l'impostazione
predefinita è soltanto files. Per ulteriori informazioni, consultare nsswitch.conf(4).
•
La password shadow è basata su uno standard di fatto, offerto da altri sistemi UNIX.
I seguenti attributi, definiti in /etc/default/security, si applicano alle password
shadow. Per ulteriori informazioni, consultare la Sezione 2.5 e la manpage security(4).
•
INACTIVITY_MAXDAYS – Numero di giorni che precedono la scadenza di un
account inutilizzato.
•
PASSWORD_MINDAYS – Numero minimo di giorni prima che sia possibile cambiare
la password.
•
PASSWORD_MAXDAYS – Numero massimo di giorni di validità della password.
•
PASSWORD_WARNDAYS – Numero di giorni prima che gli utenti ricevano il preavviso
di scadenza della password.
Le password shadow sono supportate da questi prodotti:
•
Lightweight Directory Access Protocol (LDAP)
•
Ignite-UX Directory Access Control (LDAP)
•
Serviceguard
Le password shadow non sono supportate da quelle applicazioni che prevedono che le
password si trovino in /etc/passwd.
Per ulteriori informazioni, consultare le seguenti manpage:
passwd(1), pwck(1M), pwconv(1M), pwunconv(1M), getspent(3C), putspent(3C),
nsswitch.conf(4), passwd(4), security(4), shadow(4)
2.4 Gestione delle password
41
2.4.6 Eliminazione degli pseudoaccount e protezione dei sottosistemi chiave in
etc/passwd
Tradizionalmente, il file /etc/passwd contiene numerosi “pseudoaccount”, cioè voci
non associate ad alcun utente singolo e che non hanno shell di accesso realmente
interattive.
Alcune di queste voci, come date, who, sync e tty, sviluppate per esclusiva comodità
dell'utente, offrono dei comandi che potrebbero essere eseguiti senza accedere al
sistema. Per assicurare una più rigida protezione, sono stati eliminati nel file /etc/
passwd distribuito, in modo che questi programmi possano essere eseguiti solo da un
utente che abbia eseguito l'accesso.
Le altre voci di questo tipo rimangono in /etc/passwd, perché sono le proprietarie
dei file. I programmi con proprietari come adm, bin, daemon, hpdb, lp e uucp
comprendono interi sottosistemi e costituiscono un caso speciale. Dato che concedono
l'accesso ai file che proteggono o usano, questi programmi devono essere lasciati
operare come pseudoaccount, con le voci elencate in /etc/passwd. Gli account di
tipo pseudo e speciale utilizzati usualmente sono illustrati nell'Esempio 2-1.
Esempio 2-1 Account di sistema pseudo e speciali
root::0:3::/:/sbin/sh
daemon:*:1:5::/:/sbin/sh
bin:*:2:2::/usr/bin:/sbin/sh
sys:*:3:3::/:
adm:*:4:4::/var/adm:/sbin/sh
uucp:*:5:3::/var/spool/uucppublic:/usr/lbin/uucp/uucico
lp:*:9:7::/var/spool/lp:/sbin/sh
nuucp:*:11:11::/var/spool/uucppublic:/usr/lbin/uucp/uucico
hpdb:*:27:1:ALLBASE:/:/sbin/sh
nobody:*:-2:-2::/:
La caratteristica principale dello stato privilegiato di questi sottosistemi è la loro capacità
di consentire l'accesso ai programmi che si trovano nella la loro giurisdizione, senza
consentire l'accesso di root (uid 0). Al contrario, è impostato il bit setuid del file
eseguibile e l'utente effettivo del processo corrisponde al proprietario del file eseguibile.
Ad esempio, il comando cancel fa parte del sottosistema lp ed è eseguito come utente
effettivo lp).
Una volta impostato setuid, la mediazione di protezione di quel sottosistema garantisce
la protezione di tutti i programmi in esso compresi, ma non nell'intero sistema. Quindi,
anche la vulnerabilità del sottosistema ad una violazione della protezione è limitata
solamente a quei file di sottosistema. Le violazioni non possono riguardare i programmi
che si trovano in altri sottosistemi. Ad esempio, i programmi in lp non hanno effetto su
quelli che si trovano in daemon.
42
Gestione della protezione di utenti e sistema
2.4.7 Accesso protetto con HP-UX Secure Shell
HP-UX Secure Shell offre la protezione di accesso remoto, trasferimento file ed esecuzione
remota di comandi. Tutte le comunicazioni fra client e server sono crittografate. Le
password non sono mai trasmesse in chiaro attraverso la rete. Per ulteriori informazioni,
vedere ssh(1) e Sezione 5.6.
2.4.8 Protezione delle password archiviate in NIS
Network Information Service (NIS) fa parte di Network File System (NFS). NIS consente
l'amministrazione della configurazione di più host da un unico punto, un server master.
Invece di conservare separatamente le configurazioni degli host in ciascuno di essi, le
informazioni sono consolidate nell'unità centrale. Il file /etc/password è uno dei vari
file di configurazione archiviati nel server NIS.
Il file /etc/shadow delle password shadow non è supportato da NIS.
Per ulteriori informazioni su NIS, vedere NFS Services Administrator's Guide.
2.4.9 Protezione delle password archiviate in un server di directory LDAP
LDAP-UX Client Services interagisce con PAM per autenticare le password archiviate in
un server di directory LDAP. La libreria PAM_LDAP offre il servizio di autenticazione.
2.5 Definizione degli attributi di protezione di sistema
Gli attributi di protezione offrono ulteriori possibilità di controllo delle configurazioni di
sistema, accrescendo la protezione delle password, degli accessi e dell'auditing.
Esistono più di 20 attributi. Questi attributi sono descritti in security(4). Le categorie degli
attributi sono riassunte di seguito:
Attributi di accesso
Questi attributi controllano le attività di accesso,
come l'ora in cui eseguire l'operazione, il numero
di accessi consentiti e il numero di accessi non
riusciti consentito prima del blocco dell'account.
Attributi delle password
Questi attributi controllano le caratteristiche delle
password, come la loro lunghezza, il numero e
il tipo di caratteri, la cronologia della password,
il numero di giorni dopo i quali è necessario
cambiarla e la loro scadenza.
Attributi di avvio
Questi attributi controllano l'autenticazione,
definendo gli utenti autorizzati ad avviare il
sistema in modalità utente singolo. Consultare le
informazioni sull'autenticazione all'avvio nel
Capitolo 1.
Attributi per il cambiamento di utente Questi attributi definiscono la variabile ambientale
(su)
PATH, il nome del gruppo root per il comando
2.5 Definizione degli attributi di protezione di sistema
43
Attributo audit
Attributo umask
su e se su potrà distribuire determinate variabili
ambientali. Per ulteriori informazioni, vedere su(1).
Questo attributo determina se gli utenti devono
essere sottoposti all'auditing. L'attribuito audit è
controllato durante la procedura di accesso. Per
ulteriori informazioni sulle funzionalità di auditing
di HP-UX, vedere audit(5).
Questo attributo controlla il valore di umask()
di tutte le sessioni iniziate da pam_unix o
pam_hpsec. Per ulteriori informazioni, vedere
pam_unix(5) and pam_hpsec(5). L'attribuito
umask è controllato durante la procedura di
accesso.
Il sistema usa questi file per elaborare gli attributi:
•
/etc/default/security
•
/var/adm/userdb
•
/etc/security.dsc
•
/etc/passwd
•
/etc/shadow
Ogni attributo ha un valore per singolo utente in una soltanto di queste ubicazioni:
/etc/password, /etc/shadow o il database degli utenti in /var/adm/userdb.
Ogni attributo e la sua ubicazione per singolo utente sono spiegati nella manpage
security(4).
Il sistema controlla quali attributi saranno applicati, nel modo seguente:
•
Il sistema esamina i valori per utente degli attributi nel database degli utenti /var/
adm/userdb, nel file /etc/passwd o in quello /etc/shadow.
•
Se non ci sono valori per utente, il sistema esaminerà quindi gli attributi predefiniti
configurabili per l'intero sistema in /etc/default/security.
•
Se non ci sono valori configurabili per l'intero sistema, il sistema utilizzerà gli attributi
predefiniti in /etc/security.dsc.
Il file che descrive gli attributi di protezione /etc/security.dsc, elenca gli attributi
che è possibile definire in /etc/default/security e nel database degli utenti in
/var/adm/userdb. Alcuni attributi sono configurabili, altri sono interni. Il contenuto
del file /etc/security.dsc non deve essere alterato in nessun modo.
44
Gestione della protezione di utenti e sistema
2.5.1 Configurazione degli attributi per l'intero sistema
I punti seguenti spiegano come definire gli attributi di protezione per l'intero sistema.
1.
Consultare la manpage security(4), che descrive i valori configurabili predefiniti
degli attributi per l'intero sistema. Questi attributi sono configurati nel file /etc/
default/security, descritto anche dalla manpage security(4).
Se un attributo non è definito nel file /etc/default/security, il sistema
utilizzerà il valore predefinito del file /etc/security.dsc. Per una descrizione
del file /etc/security.dsc, consultare la manpage userdb(4).
2.
Per modificare un'impostazione predefinita per l'intero sistema, modificare con un
editor di testo, come vi, il file delle impostazioni predefinite di protezione, /etc/
default/security. Il file è leggibile da qualsiasi utente e modificabile solo da
root.
Ogni riga del file /etc/default/security è un commento o un dato di
configurazione di un attributo. Le righe che iniziano con # sono commenti. Le righe
non destinate ai commenti sono formate da coppie attributo=valore, ad
esempio PASSWORD_MAXDAYS=30.
2.5.2 Configurazione degli attributi per ogni utente
Per configurare gli attributi specifici dei singoli utenti, utilizzare i comandi seguenti. Gli
attributi configurati per i singoli utenti hanno la precedenza su quelli configurati per
l'intero sistema.
userdbset Cambia l'attributo dell'utente specificato, in modo che sia ignorato il
valore predefinito di sistema del file /etc/default/security. Per
un esempio, vedere la Sezione 2.5.2.1; per maggiori informazioni,
consultare userdbset(1M).
userdbget Visualizza i valori definiti dall'utente di uno o di tutti gli utenti. Per ulteriori
informazioni, consultare userdbget(1M).
userdbck
Controlla o corregge i valori definiti dall'utente. Per ulteriori informazioni,
consultare userdbck(1M).
Ad esempio, è possibile cambiare il valore di PASSWORD_MAXDAYS da 60 a 30 giorni
soltanto per l'utente luca. La password di luca sarà valida per 30 giorni invece di
60. A tutti gli altri utenti è applicato il valore valido per l'intero sistema, 60 giorni.
Per modificare il valore di un attributo di un utente, utilizzare la procedura seguente:
1.
2.
Consultare la manpage security(4), che spiega i valori e gli attributi validi per l'intero
sistema e come configurare un valore per il singolo utente. Non tutti gli attributi
hanno un valore per singolo utente.
Consultare le manpage dei comandi userdbset, userdbget e userdbck.
2.5 Definizione degli attributi di protezione di sistema
45
3.
4.
Decidere quali utenti modificare e quali attributi applicare ad essi. Ad esempio, si
può far sì che gli utenti di un servizio di contabilità modifichino le loro password
ogni 30 giorni e che gli allievi di una classe le modifichino ad ogni trimestre.
Usare il comando userdbset per modificare un attributo di un utente.
Le informazioni dei singoli utenti sono archiviate nel database degli utenti, nella
directory /var/adm/userdb. Il database degli utenti è descritto nella manpage
userdb(4).
Non è possibile utilizzare il comando userdbset per configurare tutti gli attributi.
Alcuni valori per utente sono definiti nei file /etc/passwd e /etc/shadow. Per
ulteriori informazioni, consultare security(4).
5.
Usare il comando userdbget per ottenere informazioni sugli utenti.
2.5.2.1 Esempi di definizione di attributi specifici per gli utenti con userdbset
Nell'esempio seguente, il comando userdbset elimina tutti gli attributi individuali
dell'utente giovanni. Quando giovanni eseguirà l'accesso, gli saranno applicati i
valori predefiniti per l'intero sistema in /etc/default/security.
# /usr/sbin/userdbset -d -u giovanni
Successivamente, userdbset imposterà la lunghezza minima della password a 7 e
UMASK a 0022 (ottale 022). Queste modifiche si applicano solo a giovanni.
# /usr/sbin/userdbset -u giovanni MIN_PASSWORD_LENGTH=7 UMASK=0022
Nell'esempio seguente, il comando userdbset visualizza tutti gli attributi dell'utente
luca.
# /usr/sbin/userdbget -u luca
luca AUDIT_FLAG=1
luca DISPLAY_LAST_LOGIN=0
Nella visualizzazione, per l'utente luca il flag dell'auditing è abilitato e la funzionalità
per l'ultimo accesso è disabilitata.
2.5.2.2 INACTIVITY_MAXDAYS e il file delle password shadow
L'attributo INACTIVITY_MAXDAYS definito nel file /etc/default/security consente
di stabilire se far scadere gli account inattivi nell'intero sistema. Per ignorare
l'impostazione predefinita per l'intero sistema e configurare INACTIVITY_MAXDAYS
per ogni singolo utente, usare il comando useradd -f o il comando usermod -f.
Per eliminare la configurazione di un singolo utente, usare il comando userdel. Per
ulteriori informazioni, vedere le manpage useradd(1M), usermod(1M) e userdel(1M).
Non è possibile utilizzare il comando userdbset per configurare
INACTIVITY_MAXDAYS per un singolo utente. L'attributo INACTIVITY_MAXDAYS è
correlato al campo di inattività del file delle password shadow. I comandi useradd e
usermod modificano nel file delle password shadow il campo di inattività dell'utente
46
Gestione della protezione di utenti e sistema
specificato. Per maggiori informazioni, vedere la descrizione di INACTIVITY_MAXDAYS
nella manpage security(4).
2.5.3 Risoluzione dei problemi del database degli utenti
Per risolvere i problemi del database degli utenti, usare le seguenti procedure.
Problema 1: Gli attributi di protezione di un utente sembrano configurati
impropriamente. Quando vi è il sospetto che le informazioni di un utente siano
configurate impropriamente nel database degli utenti, eseguire il comando seguente:
# userdbget -u nome_utente
Saranno così visualizzati gli attributi configurati dell'utente nome_utente. Se un attributo
è configurato impropriamente, riconfigurarlo.
Problema 2: Il database degli utenti non in funziona in modo appropriato. Se è
necessario controllare il database degli utenti, eseguire il comando seguente:
# userdbck
Il comando userdbck identifica e risolve i problemi del database degli utenti.
2.6 Gestione dei programmi setuid e setgid
Poiché questi programmi rappresentano un rischio potenziale per la protezione del
sistema, prendere nota di quali programmi sono setuid (impostano l'ID utente) e quali
setgid (impostano l'ID gruppo). Chi attacca un sistema può utilizzare i programmi
setuid e setgid, usando per lo più una o due modalità:
•
Facendo eseguire ad un programma setuid o setgid dei comandi definiti
dall'aggressore, interattivamente o mediante script.
•
Sostituendo dati falsi a quelli creati da un programma.
Per proteggere i programmi setuid e setgid, seguire queste linee guida:
•
Fare attenzione a qualsiasi modifica ai programmi setuid e setgid.
•
Cercare eventuali programmi setuid superflui.
•
Modificare le autorizzazioni di un programma che risulti essere setuid senza che
ci sia la necessità, trasformandole in quelle di un programma setgid. Per ulteriori
informazioni, vedere chmod(1) e chmod(2).
La forma completa del comando ls (ll o ls -l) mostra i programmi setuid,
elencando S o s invece di - o x per le autorizzazioni proprietario-esecuzione.
Mostra i programmi setgid elencando S o s invece di - o x per le autorizzazioni
gruppo-esecuzione.
Ci si può attendere di trovare filesystem setuid e setgid, ma devono avere le
stesse autorizzazioni fornite dai supporti di fabbrica, salvo che queste siano state
personalizzate.
2.6 Gestione dei programmi setuid e setgid
47
•
Non consentire agli utenti di avere programmi setuid, soprattutto quando utilizzano
setuid per altri utenti.
•
Esaminare il codice di tutti i programmi importati da fonti esterne per rilevare
l'eventuale presenza di software distruttivi noti come "cavalli di Troia". Non
ripristinare o installare mai un programma setuid proveniente da un fonte non
controllabile.
•
Per consentire agli utenti l'accesso a determinati programmi per superutente,
HP consiglia di usare SMH limitato. SMH limitato consente a chi non dispone di
privilegi di superutente di accedere a particolari aree di SMH. Per i dettagli,
consultare smh(1M).
2.6.1 Possibili fattori di rischio dei programmi setuid e setgid
Qualunque esso sia, il programma eseguito crea un processo con quattro numeri di ID,
ID utente reale ed effettivo (ruid ed euid) ed ID gruppo reale ed effettivo (rgid ed
egid). Normalmente, queste coppie di ID sono identiche.
Tuttavia, l'esecuzione di un programma setuid o setgid modifica il valore di euid
o egid del processo, da quello associato al proprietario a quello associato all'oggetto.
I processi generati acquisiscono i propri attributi dall'oggetto, fornendo all’utente gli
stessi diritti d'accesso di proprietario e gruppo del programma.
•
Se il bit di setuid è attivato, i privilegi del processo saranno impostati in base a
quelli del proprietario del file.
•
Se il bit di setgid è attivato, i privilegi del processo saranno impostati in base a
quelli del gruppo del file.
•
Se né il bit di setuid né quello di setgid sono impostati, i privilegi del processo
rimarranno invariati.
•
In un caso particolarmente rischioso, se il programma è stato impostato come root
con setuid, l'utente guadagnerà tutti i privilegi disponibili per root. Si tratta di
una situazione pericolosa, perché il programma potrà essere utilizzato in un modo
che viola la sicurezza del sistema. Questo problema si presenta in misura minore
anche in altri casi in cui si utilizzano setuid e setgid.
Per ragioni di sicurezza, normalmente il kernel HP-UX ignora i bit setuid e setgid
degli script. Questa regola può essere resa meno rigida, modificando appropriatamente
il parametro sintonizzabile secure_sid_scripts, ma si consiglia vivamente di non
modificare le impostazioni predefinite di questo parametro. Per ulteriori informazioni su
questo parametro sintonizzabile, consultare la manpage secure_sid_scripts(5).
48
Gestione della protezione di utenti e sistema
2.6.2 Modalità di impostazione degli ID
Gli ID sono impostati in questi diversi modi:
•
Il valore di ruid e rgid è ereditato dal processo login, che imposta il valore di
uid e gid. Il valore di uid e gid è specificato in /etc/passwd.
•
Il comando login modifica anche ruid, euid, rgid ed egid.
•
Il comando su modifica euid e ruid.
•
Il comando newgrp può modificare valore di gid.
•
I bit di setuid e setgid sono impostati utilizzando la chiamata di sistema
chmod() o il comando chmod. Per ulteriori informazioni, vedere chmod(1) e
chmod(2).
2.6.3 Linee guida per limitare le potenzialità di setuid
Se si aggiungono a un sistema esistente dei programmi setuid impostati come root,
fare molta attenzione. Aggiungendo un programma setuid impostato come root, si
modifica la configurazione del sistema e si potrebbe comprometterne la protezione.
Rafforzare l'uso restrittivo dei programmi privilegiati seguendo questi suggerimenti relativi
alle procedure amministrative e di programmazione:
•
Usare setuid e setgid solo quando è assolutamente necessario.
•
Assicurarsi che nessun programma setuid sia scrivibile da altri utenti.
•
Quando possibile, usare setgid al posto di setuid, per ridurre la portata
dell'eventuale danneggiamento causato da errori di programmazione o da violazioni
della protezione.
•
Eseguire periodicamente delle ricerche nei propri filesystem per rilevare l'eventuale
presenza di programmi setuid e setgid nuovi o modificati. È possibile utilizzare
il comando ncheck -s.
•
Essere perfettamente a conoscenza di cosa possono fare i programmi setuid e
setgid e controllare che eseguano solamente le operazioni previste. In caso
contrario, rimuovere il programma o il suo attributo setuid.
•
Se è necessario copiare un programma setuid, controllare che nel file di
destinazione le modalità siano corrette.
•
Scrivere programmi setuid in modo che sia possibile provarli con dati non critici,
senza attributi setuid o setgid. Applicare questi attributi solo dopo la revisione
del codice e dopo che tutti i settori aziendali interessati abbiano compreso che i
nuovi programmi sono in grado di garantire la protezione.
•
Controllare che un programma setuid non crei file scrivibili da soggetti diversi
dall'utente designato.
2.6 Gestione dei programmi setuid e setgid
49
•
Reimpostare il valore di euid prima di una chiamata di sistema exec*(). Tenere
presente che exec*() può essere chiamata da altre routine di libreria ed essere
cauti nell'utilizzare routine (tra cui popen(), system(), execlp() e execvp())
che ramificano la shell per eseguire un programma. Per ulteriori informazioni,
consultare exec(2), popen(3S) e system(3S).
•
Quando si scrivono programmi setuid, per ridurre l'ambito delle vulnerabilità
usare setresuid() nelle parti di codice che richiedono privilegi. Per ulteriori
informazioni, vedere setresuid(2).
•
Chiudere tutti i i descrittori di file non necessari prima di chiamare exec*().
•
Assicurarsi che nell'ambiente del programma tutte le variabili (PATH, IFS) ed il
valore umask siano sufficientemente restrittivi.
•
Non utilizzare la chiamata di sistema creat() per creare un file di blocco. Usare
invece lockf() o fcntl(). Per ulteriori informazioni, vedere lockf(2) e fcntl(2).
•
Fare soprattutto attenzione ad evitare l'overrun del buffer, utilizzando sprintf(),
strcpy() e strcat() senza la corretta validazione della lunghezza del
parametro. Per ulteriori informazioni, consultare printf(3S) e string(3C).
2.7 Prevenzione degli attacchi con overflow del buffer dello stack
L'invio di grandi quantità di dati ad un programma è chiamato attacco con overflow del
buffer dello stack. Solitamente, i dati contengono comandi destinati ad essere eseguiti
dal programma. Questi attacchi hanno lo scopo di ottenere accesso non autorizzato al
sistema, distruggerne o alterarne i dati, oppure causare la negazione del servizio agli
utenti autorizzati.
Per individuare gli attacchi con overflow del buffer dello stack, fare attenzione alle
seguenti variazioni:
•
Un programma setuid che esegue altri programmi.
•
Un programma ottiene inaspettatamente un ID utente pari a zero (0). L'ID utente
zero è riservato al superutente o a root.
Per prevenire gli attacchi con overflow del buffer dello stack:
•
Abilitare il parametro sintonizzabile del kernel executable_stack.
•
Utilizzare il comando chatr +es.
Il parametro sintonizzabile del kernel executable_stack consente di impedire che
un programma esegua del codice dal proprio stack. Questa azione impedisce ad un
intruso di trasferire dati illegali ad un programma, in modo da fargli eseguire del codice
arbitrario dal proprio stack del programma.
Il parametro sintonizzabile del kernel executable_stack abilita o disabilita
globalmente la protezione contro gli attacchi con overflow del buffer dello stack.
Un'impostazione pari a 0 (zero) fa sì che gli stack non siano eseguibili ed è consigliata
50
Gestione della protezione di utenti e sistema
per ragioni di sicurezza. Per impostazione predefinita e per compatibilità con il passato,
executable_stack è impostato a 1, il che consente l'esecuzione dello stack e quindi
non garantisce la protezione. Per modificare il valore di executable_stack, usare
HP SMH o il comando kmtune.
Un altro modo per gestire la protezione contro l'overflow del buffer dello stack consiste
nell'usare l'opzione +es del comando chatr. Ad esempio, se executable_stack
è impostato a zero ma un programma deve eseguire il suo stack, per consentirlo usare
il seguente comando chatr:
# chatr -es enable programma
Per ulteriori informazioni, vedere chatr(1), kmtune(1M) e executable_stack(5).
2.8 Protezione di workstation e terminali incustoditi
Le workstation e i terminali incustoditi sono estremamente vulnerabili all'accesso da parte
di utenti non autorizzati. Sono aperti a chiunque, come una porta che non è chiusa a
chiave. Questa sezione descrive le modalità per ridurre quel rischio:
•
Controllare l'accesso usando /etc/inittab e i livelli di esecuzione. Modificare
/etc/inittab, in modo da identificare quali dispositivi devono essere eseguiti
ai diversi livelli di esecuzione.
•
Proteggere i file di dispositivo dei terminali, negando l'accesso universale alle
sessioni utente dei terminali.
•
Configurare il blocco dello schermo.
2.8.1 Controllo degli accessi con /etc/inittab ed i livelli di esecuzione
Il livello di esecuzione è lo stato del sistema che consente l'esecuzione di un gruppo
specifico di processi. I processi ed i livelli di esecuzione predefiniti sono definiti nel file
/etc/inittab. I livelli di esecuzione vanno da 0 a 6, s, o S. Se un processo non è
allo stesso livello del sistema, sarà terminato. Se un processo si trova allo stesso livello
di esecuzione, sarà avviato o la sua esecuzione proseguirà.
Quello seguente è un esempio del modo di abilitare terminali e modem a livelli di
esecuzione specificati. Sia ttp1 sia ttp2 devono essere a livelli di esecuzione 2 e 3.
ttp1:23:respawn:/usr/sbin/getty -h tty0p1 9600
ttp2:23:respawn:/usr/sbin/uugetty -h ttypd0p2 9600
Quello seguente è un esempio della modifica dei livelli di esecuzione dopo il normale
orario di lavoro, per disabilitare terminal e modem con un job di cron. Durante il giorno,
il livello di esecuzione è 3 ed è possibile utilizzare i terminali ttp1 e ttp2, poiché sono
eseguiti ai livelli 2 e 3. Alle ore 8 dal lunedì al venerdì, il livello di esecuzione del sistema
è 3:
2.8 Protezione di workstation e terminali incustoditi
51
# crontab -e
0 8 * * 1-5 /sbin/init 3
0 17 * * * /sbin/init 4
Alle ore 17 di ogni giorno (il 17 dell'esempio precedente significa le ore 17), il livello
di esecuzione del sistema passerà a 4. I terminali ttp1 e ttp2 non potranno operare
dopo le 17, perchè il loro livello di esecuzione è 2 e 3.
2.8.2 Protezione dei file di dispositivo dei terminali
Se un intruso ottiene l'accesso ad un terminale aperto, potrà reindirizzare un comando
ad un'altra finestra terminale. Nel esempio seguente, un comando per la rimozione rm
è reindirizzato a /dev/tty0p0:
# echo "\r rm -r / \r\033d" > /dev/tty0p0
Per impedire l'invio di messaggi ad un terminale, è possibile usare il comando mesg
-n (o mesg n). Questo comando revoca le autorizzazioni di scrittura agli utenti che
non dispongono dei privilegi appropriati. Per ulteriori informazioni, consultare mesg(1)
e write(1).
# vi ~/.shrc
mesg n
Un altro modo per proteggere la workstation o il terminale è di usare il comando xhost.
Per ulteriori informazioni, vedere xhost(1). Il comando xhost definisce i nomi degli host
e degli utenti che possono accedere alla workstation.
# xhost +altro.sistema
Per consentire a tutti i sistemi e utenti di accedere alla workstation, disabilitando quindi
il controllo degli accessi, usare il comando seguente:
# xhost +
2.8.3 Configurazione del blocco dello schermo
Questa sezione descrive la configurazione del blocco dello schermo, usando la variabile
TMOUT e il gestore di blocco CDE.
2.8.3.1 Configurazione della variabile TMOUT
È possibile configurare la variabile TMOUT per bloccare automaticamente i terminali
inattivi.
Nel caso di frequente utilizzo di altri sistemi e nel caso si copi il file .profile da un
sistema all'altro, è più indicato aggiungere la variabile TMOUT al file .profile. Se si
utilizza usualmente un solo sistema, entrambi i metodi di blocco sono appropriati.
Per configurare la variabile TMOUT, modificare il file .profile secondo l'esempio
seguente:
52
Gestione della protezione di utenti e sistema
# vi ~/.profile
export TMOUT=600 # (blocco dopo 600 secondi di inattività)
È possibile sostituire a 600 un altro valore desiderato.
2.8.3.2 Configurazione del gestore di blocco CDE
È possibile configurare il gestore di blocco CDE in modo da bloccare il proprio schermo
dopo un certo periodo di inattività. Per configurare il gestore di blocco CDE in modo
da bloccare il proprio schermo dopo dieci minuti di inattività, digitare i comandi seguenti:
# cp /usr/dt/config/C/sys.resources /etc/dt/config/C/sys.resources
# vi /etc/dt/config/C/sys.resources
dtsession*lockTimeout: 10
Per impostare il gestore di blocco CDE, è anche possibile usare il pannello delle procedure
di Style Manager. Per fare ciò, fare clic sull'icona screen.
2.9 Protezione dei sistemi dall'accesso da parte di dispositivi remoti
Per proteggere il sistema da un'intrusione tramite l'accesso remoto, osservare le seguenti
precauzioni:
•
Richiedere l'uso di un sistema hardware di chiamata di ritorno per tutti i modem
interattivi.
•
Richiedere un'ulteriore password agli utenti dei modem, aggiungendo in /etc/
dialups una voce per il dispositivo modem e, facoltativamente, in /etc/
d_passwd. Vedere la Sezione 2.9.1.
•
Chiedere agli utenti di rinnovare spesso gli account con chiamate in ingresso.
•
Rimuovere rapidamente l'accesso al sistema una volta che l'utente non faccia più
parte dell'azienda.
•
Stabilire un programma regolare di auditing per controllare l'uso in modalità remota.
•
Connettere i modem e le attrezzature di chiamata di ritorno ad un solo sistema
HP-UX e consentire ai servizi di rete di raggiungere il sistema di destinazione
partendo da quel punto.
•
Creare eccezioni per le chiamate di ritorno per l'accesso UUCP. Con una corretta
configurazione di UUCP sono possibili delle ulteriori restrizioni. Per ulteriori
informazioni, vedere uucp(1).
Un'altra possibile eccezione è il trasferimento di file con kermit. Per ulteriori
informazioni, vedere kermit(1).
•
In caso di violazione della protezione per fattori sconosciuti, interrompere sia
l'accesso di rete, sia quello telefonico ed informare l'amministratore di rete.
•
Per massimizzare la protezione durante la configurazione di sistema di chiamata
di ritorno con modem, dedicare il meccanismo delle chiamate in uscita a questa
2.9 Protezione dei sistemi dall'accesso da parte di dispositivi remoti
53
sola funzione. Non deve essere configurato per accettare le chiamate in ingresso.
Per il servizio di chiamate in ingresso, usare un altro modem in un'altra linea
telefonica.
•
Conservare degli elenchi dei numeri telefonici dei modem al di fuori di un elenco
ed in un sistema diverso da quello per gli altri telefoni aziendali. Non divulgare i
numeri telefonici utilizzati per le chiamate in ingresso.
•
Proteggere fisicamente i modem.
•
Per identificare tutte le chiamate in ingresso di un modem, utilizzare l'ID del
chiamante.
•
Non consentire nelle linee destinate ai modem il trasferimento di chiamate o altri
servizi telefonici aggiuntivi. Non usare modem di telefoni cellulari.
•
Per l'accesso remoto e locale, prendere in considerazione l'installazione di un
prodotto server HP-UX AAA. Usando il protocollo standard Remote Authentication
Dial-In User Service (RADIUS), i server HP-UX AAA consentono l'autenticazione,
l'autorizzazione e la gestione degli account nel punto di ingresso della rete degli
accessi degli utenti. Per ulteriori informazioni, vedere HP-UX AAA Server
Administrator's Guide.
•
Per le connessioni mobili che usano Mobile IPv6, per crittografare ed autenticare i
messaggi nel protocollo Mobile IPv6 fra il client Mobile IPv6 e Home Agent, utilizzare
HP-UX IPSec. Per ulteriori informazioni, vedere HP-UX IPSec Administrator's Guide.
2.9.1 Controllo degli accessi con /etc/dialups e /etc/d_passwd
Per una maggiore protezione nell'identificazione degli utenti remoti, aggiungere delle
voci nei file /etc/dialups ed /etc/d_passwd. Questi file sono utilizzati per
controllare le funzionalità di protezione delle chiamate telefoniche per l'accesso. Per
ulteriori informazioni, consultare dialups(4) e login(1).
Se esiste il file /etc/dialups, la procedura di accesso confronta i terminali con quelli
elencati in /etc/dialups. Se il terminale è elencato in /etc/dialups, il processo
login richiederà una password. La password è quindi confrontata con quelle contenute
in /etc/d_passwd.
Inoltre,per controllare la password è utilizzato il file /etc/passwd.
Quello seguente è un esempio di configurazione del file /etc/dialups:
# vi /etc/dialups (elenca i terminali autorizzati)
/dev/ttyd0p1
/dev/ttyd0p2
# vi /etc/d_passwd
/usr/bin/sh:xxxpassword_crittografataxxxxxxxxx:commenti
/usr/bin/ksh:xxxpassword_crittografataxxxxxxxx:commenti
54
Gestione della protezione di utenti e sistema
/sbin/sh:xxxpassword_crittografataxxxxxxxxx:commenti
L'utente vedrà:
Login:
Password:
Dialup password:
Per cambiare le password in /etc/d_passwd, usare il comando passwd nel modo
seguente:
# passwd -F /etc/d_passwd percorso_shell
Dove percorso_shell è il percorso della shell elencato in /etc/d_passwd.
2.10 Protezione delle intestazioni di accesso
Le intestazioni d'accesso sono spesso utilizzate per visualizzare informazioni sul sistema,
come il suo nome, la versione della release e lo scopo del sistema. Queste informazioni
possono servire ad un utente non autorizzato per conoscere meglio il sistema. Seguono
alcune linee guida per creare intestazioni di accesso più sicure:
•
Consultare l'ufficio legale per identificare un messaggio appropriato.
•
Aggiungere all'intestazione un avviso, che ne proibisca l'uso non autorizzato.
•
Le informazioni presentate nell'intestazione devono essere coerenti,
indipendentemente dal metodo di accesso.
È possibile modificare un'intestazione nel modo seguente:
•
Modificare l'intestazione di login, definita in /etc/copyright e /etc/motd.
•
Modificare l'intestazione di telnet, definita in /etc/issue. Il comando del file
dell'intestazione telnetd -b definisce un'intestazione personalizzata. Per usare
/etc/issue come intestazione di accesso, aggiungere le righe seguenti al file
/etc/inetd.conf:
telnet stream tcp nowait root /usr/lbin/telnetd \
telnetd -b /etc/issue
Quando inetd avvia telnetd, sarà utilizzata l'intestazione in /etc/issue. Per
ulteriori informazioni, vedere inetd(1M), telnetd(IM) e inetd.conf(4).
•
Modificare l'intestazione di ftp, definita in /etc/ftpd/ftpaccess, cioè il file
di configurazione ftpd. Gli altri messaggi visualizzati sono definiti in /etc/ftpd/
ftpaccess: benvenuto, intestazione, nome host e messaggio. Per ulteriori
informazioni, vedere ftpdaccess(4) e ftpd(1M).
Quello seguente è un esempio non protetto di telnet che presenta l'intestazione di
accesso:
# telnet computer_luca
2.10 Protezione delle intestazioni di accesso
55
L'intestazione di accesso telnet mostra la versione della release e il tipo di macchina.
Se un utente non autorizzato cerca di usare telnet per accedere a computer_luca,
le informazioni presentate in precedenza potrebbe essere eccessive.
Quello seguente è un esempio di telnet che presenta un'intestazione di accesso più
sicura:
$ telnet computer_principale
Trying...
Connected to computer_principale.città.società.com.
Escape character is '^]'.
Local flow control on
Telnet TERMINAL-SPEED option ON
**************************************************************
Questo è un sistema privato gestito da Hewlett-Packard.
Per utilizzare questo sistema è necessaria l'autorizzazione
fornita dall'amministrazione di HP. È proibito l'uso da parte
di persone non autorizzate.
*************************************************************
login: Connection closed by foreign host.
2.11 Protezione dell'account root
Seguono alcuni suggerimenti per la protezione dell'account root:
•
Non condividere la password di root.
•
Non utilizzare / come directory home di root.
•
Controllare l'output restituito da last -R e lastb -R, per individuare accessi di
root inusuali o non riusciti e per controllare chi ha eseguito l'accesso come utente
root.
•
Controllare /var/adm/sulog, per individuare i tentativi di usare il comando su
root.
•
Individuare gli account non autorizzati con ID utente zero (0), usando il comando
logins -d.
Le sezioni seguenti descrivono con maggior dettaglio come proteggere l'account root.
56
Gestione della protezione di utenti e sistema
2.11.1 Monitoraggio dell'accesso dell'account root
Se ci sono due o più amministratori di sistema che necessitano dell'accesso come root,
i suggerimenti seguenti saranno utili a tenere sotto controllo la loro attività:
•
Consentire soltanto gli accessi di root diretti nella console del sistema. Creare il file
/etc/securetty con una singola voce console, nel modo seguente:
#echo console > /etc/securetty
Questa limitazione vale per tutti i nomi di accesso con ID utente zero (0). Per ulteriori
dettagli, consultare login(1).
•
Richiedere che gli amministratori utilizzino per accedere come root il comando su
root dal loro account personale. Ad esempio:
login:me
$ su root
password:xxxx
•
Monitorare /var/adm/sulog, per individuare chi ha fatto accesso come root con
il comando su.
•
Configurare un account root diverso per ogni amministratore di sistema.
# vipw
root:xxx:0:3::/home/root:/sbin/sh
root1:xxx:0:3::/home/root1:/sbin/sh
root2:xxx:0:3::/home/root2:/sbin/sh
•
Monitorare il file cronologico di ogni amministratore di sistema nel modo seguente:
#more ~root1/.sh_history
#more ~root2/.sh_history
•
Monitorare in /var/adm/syslog i tentativi su riusciti e non riusciti.
2.11.2 Utilizzo di SMH Builder limitato per limitare gli accessi dei superutenti
Nel caso sia necessario fornire accesso limitato come superutente ad un non superutente,
è possibile attivare SMH Builder limitato. Usando SMH Builder limitato, sarà possibile
abilitare o disabilitare aree scelte di SMH per gli utenti. Per attivare SMH Builder limitato,
digitare:
# smh -r
Quando gli utenti con accesso limitato eseguiranno SMH, avranno stato di superutente
nelle aree definite e nel menu vedranno soltanto quelle aree di SMH. Tutte le altre aree
di SMH saranno nascoste. Quando gli utenti non autorizzati eseguiranno SMH,
riceveranno un messaggio di errore che li informerà della necessità di avere stato di
superutenti.
È anche possibile aggiungere a SMH altre applicazioni e configurarle per l'accesso
limitato.
2.11 Protezione dell'account root
57
2.11.3 Esame degli accessi dei superutenti
Il file /var/adm/sulog registra tutti i tentativi di utilizzo del comando su root,
compresi quelli non riusciti. I tentativi riusciti sono contrassegnati con il carattere "più"
(+) e quelli non riusciti con il carattere "meno" (-). Solo gli utenti root possono visualizzare
il file /var/adm/sulog. Ad esempio:
# su root
Password:
# ll /var/adm/sulog
-rw------- 1 root root 690 Aug 17 19:37 /var/adm/sulog
Nell'esempio successivo, utente_1 ha utilizzato il comando su per accedere come
root. Un altro utente, utente_2, non è riuscito. Inoltre, utente_2 non è riuscito ad
utilizzare su per accedere anche a utente_autorizzato_1.
# more /var/adm/sulog
SU 08/17 19:10:00 + 0 utente_1-root
SU 08/17 19:36 - 0 utente_2-root
SU 08/17 19:36 - 0 utente_2-root
SU 08/17 19:36 + 0 utente_1-root
SU 08/17 19:37 - 0 utente_2-utente_autorizzato_1
58
Gestione della protezione di utenti e sistema
3 HP-UX Bastille
HP-UX Bastille è uno strumento di inasprimento/bloccaggio che è possibile usare per
migliorare la sicurezza del sistema operativo HP-UX. Fornisce un blocco personalizzato
sistema per sistema, mediante la funzionalità di codifica simile a Bastion Host ed altre
elenchi di controllo per inasprimento e bloccaggio.
Bastille è stato sviluppato in origine dalla comunità open source perché fosse usato sui
sistemi Linux. HP ha contribuito in modo significativo a Bastille e lo ha utilizzato come
base per lo sviluppo di HP-UX Bastille.
Questo capitolo tratta i seguenti argomenti:
•
Funzionalità e vantaggi (Sezione 3.1)
•
Installazione di HP-UX Bastille (Sezione 3.2)
•
Uso di HP-UX Bastille (Sezione 3.3)
•
Uso di HP-UX Bastille per annullare le modifiche (Sezione 3.4)
•
Posizione dei file (Sezione 3.5)
•
Suggerimenti e risoluzione dei problemi (Sezione 3.6)
•
Rimozione di HP-UX Bastille (Sezione 3.7)
3.1 Funzionalità e vantaggi
HP-UX Bastille offre le seguenti funzionalità e vantaggi:
•
Blocco di un sistema
— Configurazione dei processi daemon e delle impostazioni di sistema in modo
che siano più sicuri
— Disattivazione dei servizi non necessari, come pwgrd
— Informa gli utenti tramite la sua interfaccia utente
— Configurazione di Software Assistant e Security Patch Check in modo che siano
eseguiti automaticamente
— Configurazione dei firewall basati su IPFilter
•
Segnalazione dello stato della configurazione di protezione
— Creazione di rapporti dello stato della configurazione di protezione
— Creazione di configurazioni di base di HP-UX Bastille e confronto dello stato
corrente del sistema con la configurazione di base salvata (deviazione).
•
Integrazione con System Insight Manager (SIM)
— Blocco di un sistema e generazione di rapporti con SIM
3.1 Funzionalità e vantaggi
59
— Disponibilità di una configurazione collaudata, SIM.config, per il blocco di
server con SIM
3.2 Installazione di HP-UX Bastille
HP-UX Bastille è contenuto nel supporto degli ambienti operativi come software consigliato
ed è possibile installarlo ed eseguirlo con Ignite-UX o con Update-UX. Per ulteriori
informazioni sull'installazione di HP-UX Bastille, consultare Guida di installazione ed
aggiornamento di HP-UX 11i v3.
Per scaricare la versione più recente di HP-UX Bastille, andare all'indirizzo:
http://www.hp.com/go/bastille
3.3 Uso di HP-UX Bastille
È possibile utilizzare HP-UX Bastille interattivamente o non interattivamente per eseguire
le operazioni seguenti:
•
Per bloccare un sistema – creare un file di configurazione-protezione o applicarne
uno esistente – digitare:
# bastille -x
•
Per duplicare un file di configurazione di protezione in più macchine, digitare:
# bastille -b -f file
•
Per generare i rapporti dello stato della configurazione del sistema, digitare:
# bastille --assess
•
Creazione di configurazioni di base di HP-UX Bastille e confronto dello stato corrente
del sistema con la configurazione di base salvata. Per salvare la configurazione di
base, digitare:
# bastille_drift --save_baseline configurazione_base
Per confrontare lo stato del sistema con la configurazione di base specificata,
digitare:
# bastille_drift --from_baseline configurazione_base
Per ulteriori informazioni, vedere bastille(1M) e bastille_drift(1M).
NOTA: Per controllare se è stato modificato lo stato del sistema, eseguire nuovamente
bastille_drift ad ogni installazione di software o patch. L'utility bastille_drift
serve anche ad identificare le modifiche allo stato del sistema quando swverify è
eseguito con l'opzione -x fix=true o con quella -F per eseguire script di correzione
forniti dal produttore.
60
HP-UX Bastille
3.3.1 Uso interattivo di HP-UX Bastille
HP-UX Bastille è eseguito interattivamente utilizzando l'interfaccia X implementata con
Perl/Tk. L'interfaccia richiede un server X ed offre:
•
Accesso causale ai vari moduli delle domande.
•
Indicatori esaurienti per mostrare l'avanzamento delle operazioni dell'utente.
•
Incanalamento crittografato del traffico X11 utilizzando l'opzione seguente:
# ssh -X
Per ulteriori informazioni, vedere ssh(1).
La Figura 3-1 mostra la schermata principale dell'interfaccia utente di HP-UX Bastille.
Figura 3-1 Interfaccia utente di HP-UX Bastille
L'interfaccia utente informa gli utenti guidandoli attraverso una serie di domande
raggruppate in moduli (vedere la Tabella 3-1). Ciascuna domanda descrive un problema
di protezione e le conseguenti azioni necessarie per bloccare il sistema HP-UX. Ciascuna
domanda descrive inoltre, ad alto livello, costi e vantaggi di ogni decisione; l'utente
decide come lo strumento dovrà gestire il problema.
3.3 Uso di HP-UX Bastille
61
Dopo avere risposto alle domande, HP-UX Bastille offrirà il supporto automatizzato per
l'esecuzione di ciascuna operazione di blocco. Eseguirà le azioni che è possibile eseguire
automaticamente, quindi produrrà un elenco di operazioni manuali che dovranno essere
eseguite dall'utente. Per completare la procedura di blocco di HP-UX Bastille sarà
necessario eseguire le operazioni elencate.
Tabella 3-1 Moduli delle domande di HP-UX Bastille
Nome modulo
Descrizione
Patches Applications
Installazione e configurazione per il controllo della conformità con i
bollettini di protezione.
File Permissions
Esecuzione di SUID ed altre modifiche alle autorizzazioni.
Account Security
Configurazione delle impostazioni di accesso e dell'uso di cron.
Secure inetd
Disattivazione dei servizi inetd non necessari.
Miscellaneous Daemons
Disattivazione dei servizi non sovente non necessari o ad alto rischio per
la sicurezza.
sendmail
Configurazione della posta elettronica per maggiore protezione, oppure
possibilità di disattivarla.
DNS
Disattivazione o configurazione maggiormente protetta di DNS.
Apache
Configurazione maggiormente protetta dei server Web Apache.
FTP
Configurazione maggiormente protetta dei server FTP.
HP-UX
Esecuzione di azioni di configurazione della protezione esclusive della
piattaforma HP-UX.
IPFilter
Configurazione di un firewall basato su IPFilter
3.3.2 Uso non interattivo di HP-UX Bastille
È possibile eseguire il rafforzamento della protezione direttamente con il motore di
configurazione. Questo metodo è utile per duplicare una configurazione di protezione
in più macchine in cui è installato il medesimo sistema operativo e le stesse applicazioni.
Il motore di configurazione utilizza in file di configurazione predefinito. Questa opzione
può usare il file creato nella posizione predefinita con una sessione interattiva, oppure
uno alternativo, specificato con l'opzione -f, nel modo seguente:
# bastille -b -f file
62
HP-UX Bastille
3.3.3 Configurazione di un sistema
Per configurare un sistema o per creare un file di configurazione da riutilizzare in seguito
in un altro sistema, eseguire queste operazioni:
1. Accedere come utente root, dato che HP-UX Bastille deve modificare impostazioni
e configurazione del sistema. Nel caso HP-UX Bastille non sia eseguito localmente,
si potrebbe voler incanalare il traffico X11 con Secure Shell (ssh) o con IPSec, per
limitare l'esposizione dei dati di rete, oppure usare una soluzione di condivisione
del desktop, che protegga da eventuali attacchi di utenti sia locali sia remoti.
2. Nel caso si debba eseguire modifiche al sistema, scegliere se usare HP-UX Bastille
interattivamente o non interattivamente. Gli utenti che usano HP-UX Bastille per la
prima volta devono eseguirlo interattivamente per creare un profilo di configurazione,
a meno che la propria distribuzione sia fornita con un file di configurazione
precompilato, come DMZ.config. Prevedere un'ora di tempo per leggere e
rispondere a tutte le domande.
Per ulteriori informazioni sull'uso interattivo e non interattivo di HP-UX Bastille, vedere
la Sezione 3.3.
3.
Seguire la procedura appropriata – interattiva o non interattiva – in base alla scelta
fatta al punto 2.
Procedura interattiva
a. Eseguire HP-UX Bastille
Per creare un profilo di configurazione, chi usa HP-UX Bastille per la prima volta
dovrà farlo interattivamente. Lo strumento aggiorna la variabile ambientale PATH
al momento dell'installazione, quindi, se dopo avere installato HP-UX Bastille è
stata chiusa la sessione e ripetuto l'accesso, per eseguirlo digitare:
# bastille
Se la variabile PATH non fosse stata aggiornata, per eseguire HP-UX Bastille
digitare:
# /opt/sec_mgmt/bastille/bin/bastille
Saranno visualizzate solamente le domande rilevanti per la configurazione
corrente.
b. Rispondere alle domande
Le domande sono categorizzate per funzione; come indicatori del completamento
di una data categoria sono utilizzati dei segni di spunta. Ciò consente di seguire
il procedere dell'operazione.
Rispondendo alle domande, usare il menu Explanation-Detail per alternare
descrizioni più o meno dettagliate. Non tutte le domande hanno spiegazioni
dettagliate e sintetiche.
Procedura interattiva
63
c. Salvare la configurazione ed applicare le modifiche
Per salvare o caricare un file di configurazione è possibile usare in un qualsiasi
momento la barra del menu. Usando l'opzione Save As sarà creato un file di
configurazione di dimensione maggiore, dato che lo strumento presumerà che
l'operazione non è terminata o che la configurazione potrebbe essere modificata
in seguito. L'uso dell'opzione Save/Apply indica allo strumento che l'operazione
è terminata e che è possibile applicare un maggior filtraggio. Anche se la
dimensione del file di configurazione può variare, le funzionalità di HP-UX Bastille
rimarranno in ogni caso le stesse. L'opzione Save/Apply salverà sempre il file
di configurazione nella posizione corrente, visualizzata nella barra del titolo di
HP-UX Bastille.
Procedura non interattiva
a. Eseguire HP-UX Bastille interattivamente per creare un file di configurazione, nel
caso non ne esista già uno
Non in tutte le distribuzioni è fornito un file di configurazione predefinito. In tal
caso, sarà necessario eseguire interattivamente HP-UX Bastille per creare un
profilo di configurazione. Per ulteriori informazioni, vedere “Procedura
interattiva”.
b. Copiare il file di configurazione in ciascuna macchina che si desidera replicare
Copiare il file di configurazione, /etc/opt/sec_mgmt/bastille/config,
dalla sua posizione nella prima macchina nella medesima ubicazione nelle altre:
# bastille -b -f file
NOTA: Dato che alcune domande sono specifiche per il sistema operativo o
per il software di protezione, nelle macchine da duplicare deve essere installato
il medesimo sistema operativo e lo stesso software della macchina in cui è stato
creato il file di configurazione.
c. Installare HP-UX Bastille in ciascuna delle macchine da replicare
Questa operazione può essere eseguita in una sola volta, esaminando in seguito
i registri eventi delle azioni e degli errori. Digitare:
# bastille -b
4.
Esaminare i file di log
Per esaminare i file di log in tempo reale, digitare:
# tail -f file_di_log
Il file di log delle azioni, /var/opt/sec_mgmt/bastille/log/action-log,
contiene le operazioni specifiche eseguite da HP-UX Bastille per modificare il sistema.
È creato solamente quando le modifiche sono applicate al sistema.
64
HP-UX Bastille
Il file di log degli errori, /var/opt/sec_mgmt/bastille/log/error-log,
contiene eventuali errori rilevati da HP-UX Bastille durante le modifiche al sistema.
È creato solamente se si verificano errori durante l'esecuzione.
5.
Eseguire le operazioni elencato nell'elenco delle operazioni da fare.
Dopo avere completato le operazioni che è possibile eseguire automaticamente, lo
strumento produrrà un elenco di operazioni da eseguire, /var/opt/sec_mgmt/
bastille/TODO.t, che descrive le azioni rimanenti che l'utente dovrà eseguire
manualmente. Sono compresi i riavvii, se le modifiche li richiedono.
Per garantire una configurazione protetta è necessario completare le operazioni
elencate.
NOTA: L'elenco delle operazioni da fare è creato solamente quando sono
applicate le modifiche al sistema.
3.4 Uso di HP-UX Bastille per annullare le modifiche
Per riportare la configurazione di protezione allo stato antecedente l'esecuzione di HP-UX
Bastille, eseguire:
# bastille -r
Se fosse necessario eseguire delle azioni manuali per tornare al precedente stato di
HP-UX Bastille, questa procedura creerà il file /var/opt/sec_mgmt/bastille/
TOREVERT.txt. Per completare la procedura inversa sarà necessario eseguire le azioni
elencate.
Dopo avere eseguito l'operazione di annullamento, controllare il file TOREVERT.txt
per eventuali azioni manuali da eseguire per completare la procedura. Il file si trova in
/var/opt/sec_mgmt/bastille/TOREVERT.txt.
NOTA: A parte alcune opzioni del firewall, il ripristino del sistema è l'unico modo in
cui HP-UX Bastille renderà meno sicuro un sistema.
3.5 Posizione dei file
L'elenco seguente descrive i file chiave di HP-UX Bastille e la loro ubicazione:
•
File predefinito di configurazione — Contiene le risposte date nella più recente
sessione salvata nel caso non sia stato specificato un altro nome di file:
/etc/opt/sec_mgmt/bastille/config
•
Registro eventi della configurazione – File che, se applicato con HP-UX Bastille,
blocca gli elementi relativi a Bastille che HP-UX Bastille bloccherebbe completamente
nel caso in cui entrambi i sistemi abbiano la stessa versione di HP-UX, un insieme
di applicazioni installate ed una configurazione simili. Nei casi in cui i sistemi siano
diversi, il file di configurazione potrebbe contenere domande superflue, non rilevanti
3.4 Uso di HP-UX Bastille per annullare le modifiche
65
per il sistema di destinazione, o potrebbe mancare di domande necessarie per il
sistema remoto. Nel primo caso HP-UX Bastille genererà un avvertimento, nel secondo
un errore. Nell'interfaccia grafica sarà quindi possibile fornire le risposte alle
domande mancanti o di rimuovere quelle superflue.
/var/opt/sec_mgmt/bastille/log/Assessment/
assessment-log.config
•
Registro eventi degli errori — Contiene eventuali errori rilevati da HP-UX Bastille
durante le modifiche eseguite al sistema:
/var/opt/sec_mgmt/bastille/log/error-log
•
Registro eventi delle azioni — Contiene le operazioni eseguite da HP-UX Bastille
per modificare il sistema:
/var/opt/sec_mgmt/bastille/log/action-log
•
File dell'elenco delle azioni da eseguire — Contiene le operazioni manuali rimanenti
che l'utente dovrà eseguire per garantire la protezione della macchina:
/var/opt/sec_mgmt/bastille/TODO.txt
•
Script delle azioni di annullamento — Restituisce i file che sono stati modificati da
HP-UX Bastille per riportarli alla condizioni precedente alla sua esecuzione:
/var/opt/sec_mgmt/bastille/revert/revert-actions
Questo script fa parte della funzionalità di annullamento.
•
File delle operazioni di annullamento da eseguire — Contiene le azioni da eseguire
manualmente per terminare il ripristino della macchina allo stato in cui si trovava
prima dell'esecuzione di HP-UX Bastille:
/var/opt/sec_mgmt/bastille/TOREVERT.txt
•
File dei rapporti di valutazione — Questi file sono in formato HTML, testo e come
file di log di HP-UX Bastille:
/var/opt/sec_mgmt/bastille/log/Assessment/
assessment-report.HTML
/var/opt/sec_mgmt/bastille/log/Assessment/
assessment-report.txt
/var/opt/sec_mgmt/bastille/log/Assessment/
assessment-report-log.txt
•
66
File di deviazione della configurazione — Contiene le informazioni riguardanti le
variazioni alla configurazione rilevate dal sistema dall'ultima esecuzione di HP-UX
Bastille. Questo file sarà creato solamente se è presente un'antecedente
configurazione di HP-UX Bastille applicata al sistema:
HP-UX Bastille
/var/opt/sec_mgmt/bastille/log/Assessment/Drift.txt
3.6 Suggerimenti e risoluzione dei problemi
Questa sezione offre le informazioni di base riguardanti la risoluzione dei problemi.
•
Le modifiche eseguite da HP-UX Bastille potrebbero impedire il funzionamento di
altro software.
Per risolvere il problema, digitare:
# bastille -r
Questo comando riporta il sistema nello stato in cui si trovava prima dell'esecuzione
di HP-UX Bastille, quindi controllerà se il problema è stato eliminato.
•
$DISPLAY not set, cannot use X.
L'utente ha chiesto l'interfaccia X, ma la variabile ambientale $DISPLAY non è stata
impostata. Per correggere il problema, impostare la variabile ambientale alla
visualizzazione desiderata.
•
System is in original state...
L'utente ha tentato di annullare le modifiche fatta da HP-UX Bastille utilizzando
l'opzione -r, ma non esistono modifiche da annullare.
•
Must run HP-UX Bastille as root
HP-UX Bastille deve essere eseguito come root, dato che le modifiche con esso
eseguite influenzano i file di sistema.
•
Problemi nell'apertura, la copia e la lettura di file
I messaggi di errore riguardanti queste operazioni sono normalmente correlati a
filesystem NFS che non autorizzano l'utente root nella macchina locale. Per i dettagli,
vedere la sezione options della manpage fstab.
•
Errori correlati a singoli file di configurazione
Errori riguardanti singoli file di configurazione indicano che il sistema è stato
eccessivamente alterato perché HP-UX Bastille sia in grado di eseguirne modifiche,
oppure che sono state modificate le autorizzazioni, l'ubicazione, i file delle directory
di installazione di HP-UX Bastille.
•
Nel caso che HP Secure Shell escluda l'utente dal sistema immediatamente alla
scadenza della password, è necessaria una patch di PAM: PHCO_24839 (HP-UX
11.11) disponibile nel sito HP IT Resource Center:
https://www2.itrc.hp.com/service/patch/mainPage.do
3.6 Suggerimenti e risoluzione dei problemi
67
•
HP-UX Bastille configura un firewall con IPFilter
I più comuni conflitti sono con i firewall. Quando un servio di rete, che non sia stato
esplicitamente disattivato da HP-UX Bastille, cessa di funzionare, accertarsi che le
regole del firewall consentano l'uso delle porte necessarie.
Per ulteriori informazioni, vedere ipfstat(8) e ipmon(8).
3.7 Rimozione di HP-UX Bastille
Quando HP-UX Bastille è rimosso da un sistema, non lo riporta alla condizione in cui si
trovava prima della esecuzione di HP-UX Bastille. La rimozione del software lascia in
posto lo script revert-actions. Ciò consente all'amministratore di ripristinare i file
di configurazione modificati da HP-UX Bastille senza che questo sia installato. In molti
casi, le modifiche eseguite da HP-UX Bastille sono registrate a livello di file, in modo che
lo script revert-actions sia in grado di ripristinare solamente i file che sono stato
modificati.
In altri casi, HP-UX Bastille esegue modifiche più dettagliate, che è possibile annullare
programmaticamente anche se nel medesimo file sono stati eseguiti altri tipi di interventi.
Ad esempio, è possibile ripristinare le autorizzazioni di un file alla forma originaria
anche se questo è stato modificato.
1. Per rimuovere HP-UX Bastille da una macchina HP-UX, usare swremove.
2. (Facoltativo) Per annullare le modifiche ad un sistema in cui HP-UX Bastille è stato
rimosso, eseguire i comandi seguenti:
#
#
#
#
3.
68
cd /var/opt/sec_mgmt/bastille/revert/
chmod 0500 revert-actions
./revert-actions
mv revert-actions revert-actions.last
Controllare se è stato creato il file delle operazioni di annullamento da eseguire,
/var/opt/sec_mgmt/bastille/TOREVERT.txt. Se esiste, per completare la
procedura inversa eseguire le azioni elencate.
HP-UX Bastille
4 HP-UX Standard Mode Security Extensions
Questo capitolo descrive le funzionalità HP-UX Standard Mode Security Extensions (HP-UX
SMSE). Sono trattati i seguenti argomenti:
•
Panoramica (Sezione 4.1)
•
Attributi di protezione e database degli utenti (Sezione 4.2)
4.1 Panoramica
HP-UX Standard Mode Security Extensions (HP-UX SMSE) è un insieme di funzionalità
che accresce la protezione degli utenti e del sistema operativo. HP-UX SMSE comprende
migliorie o cambiamenti al sistema di auditing, alle password ed agli accessi per sistemi
in modalità standard. Precedentemente, queste funzionalità erano supportate solamente
nei sistemi convertiti in modalità protetta. Con HP-UX SMSE, è possibile usare queste
funzionalità nei sistemi che operano in modalità standard.
NOTA: HP non consiglia l'utilizzo di HP-UX SMSE nei sistemi eseguiti in modalità
protetta. HP-UX SMSE mette a disposizione nella modalità standard molti criteri relativi
agli account ed alle password disponibili soltanto con la conversione del sistema HP-UX
in modalità protetta. I criteri configurati con HP-UX SMSE non sono applicati nei sistemi
eseguiti in modalità protetta.
Per determinare se un sistema è stato convertito in modalità protetta, controllare l'esistenza
del file:
/tcb/files/auth/system/default
Se questo file è presente, il sistema è eseguito in modalità protetta. Per convertire
nuovamente il sistema in modalità standard, usare il comando sam(1M).
Per maggiori informazioni sulle configurazioni supportate da ognuna delle funzionalità
di sicurezza di HP-UX SMSE, consultare security(4).
HP-UX SMSE offre una nuova funzionalità, il database degli utenti. In precedenza, tutte
le limitazioni degli attributi di protezione e dei criteri delle password di HP-UX erano
definite a livello dell'intero sistema. L'introduzione del database degli utenti consente di
impostare gli attributi di protezione in base ai singoli utenti, ignorando le impostazioni
predefinite di sistema.
Le seguenti funzionalità della modalità protetta sono disponibili nella modalità standard
con HP-UX SMSE:
•
Auditing di tutti gli utenti ed eventi di un sistema
•
Visualizzazione degli accessi utente recenti, riusciti e falliti
•
Blocco di un account utente dopo un numero eccessivo di autenticazioni non riuscite
4.1 Panoramica
69
•
Visualizzazione della cronologia della password
•
Scadenza degli account inattivi
•
Prevenzione dell'uso da parte degli utenti di una password vuota
•
Limitazione degli accessi utente ad orari specifici
•
Limitazione dell'uso del comando userdbset in base alle autorizzazioni dell'utente.
Per ulteriori informazioni, vedere userdbset(1M).
•
Il comando userstat visualizza lo stato degli account degli utenti locali. Controlla
lo stato degli account degli utenti locali e segnala le condizioni anomale, quali i
blocchi degli account. Per ulteriori informazioni, vedere userstat(1M).
4.2 Attributi di protezione e database degli utenti
In precedenza, nella modalità standard tutte le limitazioni di attributi di protezione e
criteri delle password di HP-UX erano definite a livello dell'intero sistema. L'introduzione
del database utenti consente di impostare gli attributi di protezione in base ai singoli
utenti, ignorando le impostazioni predefinite a livello dell'intero sistema.
4.2.1 Attributi di protezione del sistema
Un attributo di protezione definisce il modo in cui sono controllate le configurazioni di
protezione, come password, accessi ed auditing. Il file che descrive gli attributi di
protezione, /etc/security.dsc, elenca gli attributi che è possibile definire in /etc/
default/security e nel database degli utenti in /var/adm/userdb, o in entrambi
questi file. Alcuni attributi sono configurabili, altri sono interni.
ATTENZIONE:
nessun modo.
Il contenuto del file /etc/security.dsc non deve essere alterato in
Quando un utente esegue l'accesso, il sistema controlla gli attributi di protezione
applicabili nell'ordine seguente:
1. Il sistema esamina gli attributi per utente nelle seguenti ubicazioni:
•
/var/adm/userdb
•
/etc/passwd
•
/etc/shadow
NOTA: Per ogni attributo per utente, è conservato un valore in uno dei tre
file di cui sopra. Per conoscere quali attributi sono conservati in ogni file,
consultare security(4).
2.
70
Se non ci sono valori per utente, il sistema esaminerà quindi gli attributi predefiniti
configurati per l'intero sistema in /etc/default/security.
HP-UX Standard Mode Security Extensions
3.
Se non sono stati configurati dei valori per l'intero sistema, il sistema utilizzerà gli
attributi predefiniti in /etc/security.dsc.
4.2.2 Configurazione degli attributi per l'intero sistema
Per configurare degli attributi validi per l'intero sistema, eseguire le operazioni seguenti:
1.
2.
Pianificare la propria configurazione in base alle risorse disponibili. Per informazioni
sulla configurazione degli attributi per l'intero sistema, consultare security(4).
Per modificare un'impostazione predefinita per l'intero sistema, modificare con un
editor di testo, come vi, il file /etc/default/security. I commenti iniziano
con il carattere #. Gli attributi sono scritti nel formato attributo=valore.
Ad esempio, per impostare a livello di intero sistema un numero minimo di due (2)
caratteri maiuscoli in una password, digitare i valori seguenti in /etc/default/
security:
PASSWORD_MIN_UPPER_CASE_CHARS=2
NOTA: I cambiamenti degli attributi di protezione per un intero sistema non hanno
effetto immediato. Gli attributi relativi alle password hanno effetto al successivo
cambiamento della password da parte degli utenti. Gli attributi relativi all'accesso hanno
effetto al successivo accesso degli utenti.
4.2.3 Componenti del database degli utenti
La funzionalità del database degli utenti di HP-UX SMSE comprende file, comandi,
manpage e attributi per utente che è possibile applicare ad utenti specifici del proprio
sistema HP-UX. Tutti questi elementi del database degli utenti sono descritti nelle seguenti
sezioni:
4.2.3.1 File di configurazione
La Tabella 4-1 descrive brevemente i file utilizzati con i componenti dei database degli
utenti.
Tabella 4-1 File di configurazione del database degli utenti
File
Descrizione
/var/adm/userdb
Memorizza la maggior parte delle informazioni per utente.
4.2 Attributi di protezione e database degli utenti
71
4.2.3.2 Comandi
La Tabella 4-2 descrive brevemente i comandi che è possibile utilizzare per modificare
e gestire le voci del database degli utenti.
Tabella 4-2 Comandi del database degli utenti
Comando
Descrizione
userdbset
Modifica il valore di un attributo configurato nel database degli utenti.
userdbget
Visualizza il valore di un attributo configurato nel database degli utenti.
userdbck
Controlla l'integrità delle informazioni contenute nel database degli utenti.
userstat
Segnala lo stato degli account degli utenti locali.
4.2.3.3 Attributi
Per i singoli utenti sono disponibili i seguenti attributi di protezione:
Tabella 4-3 Attributi dell'utente
Attributo
Descrizione
ALLOW_NULL_PASSWORD
Consente o impedisce l'accesso con password vuote.
AUDIT_FLAG
Esegue o arresta l'auditing dell'utente.
AUTH_MAXTRIES
Definisce il numero di accessi non riusciti dopo il quale l'accesso di
un utente al sistema è bloccato.
DISPLAY_LAST_LOGIN
Visualizza le informazioni sull'ultimo accesso dell'utente.
LOGIN_TIMES
Limita l'accesso ad orari determinati.
MIN_PASSWORD_LENGTH
Definisce la lunghezza minima delle password.
NUMBER_OF_LOGINS_ALLOWED
Definisce il numero massimo consentito di accessi simultanei per utente.
PASSWORD_HISTORY_DEPTH
Definisce la lunghezza della cronologia delle password.
PASSWORD_MIN_LOWER_CASE_CHARS Definisce il numero minimo di caratteri minuscoli obbligatori nella
password.
PASSWORD_MIN_UPPER_CASE_CHARS Definisce il numero minimo di caratteri maiuscoli obbligatori nella
password.
PASSWORD_MIN_DIGIT_CHARS
Definisce il numero minimo di caratteri numerici obbligatori nella
password.
PASSWORD_MIN_SPECIAL_CHARS Definisce il numero minimo di caratteri speciali obbligatori nella
password.
UMASK
72
Definisce il valore di umask per la creazione di file.
HP-UX Standard Mode Security Extensions
NOTA: L'elenco precedente contiene solamente attributi di protezione nel database
degli utenti che è possibile configurare. Per l'elenco completo degli attributi di protezione
del sistema HP-UX, consultare security(4).
4.2.3.4 Manpage
La Tabella 4-4 descrive brevemente le manpage usate con il database degli utenti.
Tabella 4-4 Manpage del database degli utenti
Manpage
Descrizione
userdb(4)
Offre una panoramica dell'uso del database degli utenti.
userdbset(1M)
Descrive le funzionalità e la sintassi di userdbset.
userdbget(1M)
Descrive le funzionalità e la sintassi di userdbget.
userdbck(1M)
Descrive le funzionalità e la sintassi di userdbck.
userstat(1M)
Descrive le funzionalità e la sintassi di userstat.
4.2.4 Configurazione degli attributi nel database degli utenti
Nei precedenti sistemi HP-UX, le limitazioni degli attributi di protezione e dei criteri delle
password erano definite a livello dell'intero sistema. Con HP-UX SMSE, è possibile
configurare alcuni attributi di protezione in base ai singoli utenti. Gli attributi configurati
per i singoli utenti ignorano gli attributi configurati per l'intero sistema.
Per modificare il valore di un attributo dell'utente, eseguire le operazioni seguenti:
1.
Decidere quali utenti modificare e quali attributi applicare ad essi.
Ad esempio, si desidera che l'utente giorgio sia in grado di accedere al sistema
solo dalle 8.00 alle 17.00 del lunedì.
2.
Modificare gli attributi con il comando userdbset, nel modo seguente:
# userdbset -u nome_utente nome_attributo=valore_attributo
Ad esempio, per specificare che l'utente giorgio può accedere al sistema solo dalle
8.00 alle 17.00, digitare:
# userdbset -u giorgio LOGIN_TIMES=Mo0800-1700
4.2 Attributi di protezione e database degli utenti
73
4.2.5 Risoluzione dei problemi del database degli utenti
Per risolvere i problemi del database degli utenti, usare le seguenti procedure.
Problema 1: Gli attributi di protezione di un utente sembrano configurati
impropriamente. Quando vi è il sospetto che le informazioni di un utente siano
configurate impropriamente nel database degli utenti, eseguire il comando seguente:
# userdbget -u nome_utente
Saranno così visualizzati gli attributi configurati dell'utente nome_utente. Se un attributo
è configurato impropriamente, riconfigurarlo. Per i dettagli, consultare “Configurazione
degli attributi nel database degli utenti”.
Problema 2: Il database degli utenti non in funziona in modo appropriato. Se è
necessario controllare il database degli utenti, eseguire il comando seguente:
# userdbck
Il comando userdbck identifica e risolve i problemi del database degli utenti.
74
HP-UX Standard Mode Security Extensions
5 Gestione della protezione dell'accesso remoto
HP-UX offre diversi servizi di accesso remoto, come il trasferimento file, l'accesso utente
remoto, l'esecuzione remota di comandi, la gestione di indirizzi IP e client di rete, i
protocolli di routing, lo scambio di posta elettronica, i servizi di rete e un meccanismo
di protezione generato da inetd, il daemon principale di Internet.
Questo capitolo tratta i seguenti argomenti:
•
Panoramica dei servizi Internet e dei servizi d'accesso remoto (Sezione 5.1)
•
Il daemon inetd (Sezione 5.2)
•
Protezione contro lo spoofing con i wrapper TCP (Sezione 5.3)
•
Secure Internet Services (Sezione 5.4)
•
Controllo di un dominio amministrativo (Sezione 5.5)
•
Protezione delle sessioni remote con HP-UX Secure Shell (SSH) (Sezione 5.6)
5.1 Panoramica dei servizi Internet e dei servizi d'accesso remoto
Questa sezione presenta la descrizione sintetica dei meccanismi di autenticazione o
autorizzazione utilizzati dai vari servizi Internet e dei rischi per la protezione.
I servizi Internet di HP-UX sono documentati in HP-UX Internet Services Administrator's
Guide e Using HP-UX Internet Services, all'indirizzo: http://www.docs.hp.com/en/
netcom.html#Internet%20Services
Vedere anche HP-UX Remote Access Services Administrator's Guide, all'indirizzo:
http://www.docs.hp.com/en/netcom.html#Internet%20Services
I servizi Internet di HP-UX forniscono l'autenticazione, tramite controllo della password
o dell'autorizzazione, secondo le impostazioni di un file di configurazione. Per un elenco
dei componenti dei servizi Internet e dei loro meccanismi di controllo dell'accesso o
dell'autorizzazione, vedere la Tabella 5-1.
Tabella 5-1 Componenti dei servizi Internet e controllo dell'accesso, autorizzazione ed
autenticazione
Componente dei servizi
Internet
Meccanismo di controllo d'accesso, autorizzazione o autenticazione
ftp (trasferimento file)
Controllo della password. Può anche utilizzare i meccanismi di
autenticazione di Kerberos, definiti in /etc/inetsvcs.conf. Consultare
ftp(1).
rcp (copia remota)
Voce nel file $HOME/.rhosts o /etc/hosts.equiv. Può anche utilizzare
i meccanismi di autenticazione di Kerberos, definiti in /etc/
inetsvcs.conf. Consultare rcp(1).
5.1 Panoramica dei servizi Internet e dei servizi d'accesso remoto
75
Tabella 5-1 Componenti dei servizi Internet e controllo dell'accesso, autorizzazione ed
autenticazione (segue)
Componente dei servizi
Internet
Meccanismo di controllo d'accesso, autorizzazione o autenticazione
rdist (distribuzione remota Voce nel file $HOME/.rhosts o /etc/hosts.equiv. Consultare rdist(1).
di file)
remsh, rexec (esecuzione Voce nel file $HOME/.rhosts o /etc/hosts.equiv. Può anche utilizzare
da shell remota)
i meccanismi di autenticazione di Kerberos, definiti in /etc/
inetsvcs.conf. Vedere remsh(1).
rlogin (accesso utente
remoto)
Controllo della password o della voce nel file $HOME/.rhosts o /etc/
hosts.equiv. Può anche utilizzare i meccanismi di autenticazione di
Kerberos, definiti in /etc/inetsvcs.conf. Vedere rlogin(1).
telnet (accesso utente
remoto con il protocollo
TELNET)
Controllo della password. Se l'opzione ID utente TAC è abilitata dal daemon
telnetd, telnet usa la voce nel file $HOME/.rhosts o /etc/
hosts.equiv. Vedere telnet(1) e telnetd(1M).
NOTA: Le informazioni, password comprese, sono trasmesse in chiaro fra i due sistemi,
senza essere crittografate. Usare i servizi Internet soltanto tra host noti e definiti l'uno
nei confronti dell'altro, all'interno di una rete privata interna e protetta da un firewall.
Quando si comunica attraverso una rete non sicura, proteggere le comunicazioni con
IPSec o Kerberos.
I servizi di accesso remoto collegano i sistemi remoti in una rete. Per impostazione
predefinita, i servizi di accesso remoto operano in un ambiente non protetto. Per operare
in un ambiente protetto, abilitare l'autenticazione di rete Kerberos V5. In un ambiente
non protetto, per accedere ad un sistema remoto è necessario avere un nome per
l'accesso ed una password; il nome per l'accesso non sarà sottoposto a controlli di
autenticazione ed autorizzazione. In un ambiente protetto, non è necessario disporre
di un nome per l'accesso e di una password. Quando si tenta di accedere ad un sistema
remoto, il protocollo Kerberos controllerà se l'utente è autorizzato ad accedere al sistema
remoto.
5.1.1 Protezione di ftp
Un utente non autorizzato potrebbe cercare di accedere ad un sistema con il comando
ftp. Seguono alcuni suggerimenti per impedire questo problema:
•
Abilitare la registrazione eventi di ftp in /etc/inetd.conf con il comando
ftpd -l.
•
Controllare i registri eventi di ftp in /var/adm/syslog/syslog.log e /var/
adm/syslog/xferlog per individuare eventuali tentativi insoliti di accesso remoto.
Consultare syslogd(1M) e xferlog(5).
76
Gestione della protezione dell'accesso remoto
•
Impedire l'accesso ftp a guest, root e altri account, elencandoli in /etc/ftpd/
ftpusers
Vedere ftpusers(4).
•
Periodicamente, cercare e rimuovere i file ~/.netrc degli utenti. Il file .netrc
contiene le informazioni di accesso, password e account usate dalla procedura di
accesso automatico di ftp, dalla libreria di routine rexec() e dal comando
rexec.
Consultare netrc(4).
5.1.2 Protezione di ftp anonimo
Se un file $HOME/.rhosts è collocato in /home/ftp, un utente non autorizzato
potrebbe usare rlogin per accedere come utente a ftp. Il file .rhosts specifica gli
host e gli utenti che possono accedere ad un account locale con rcp, remsh o rlogin
senza usare una password. Per ulteriori informazioni, vedere hosts.equiv(4).
Seguono alcuni suggerimenti per proteggere meglio ftp anonimo.
•
Accertarsi che /home/ftp e nessuna delle directory figlie siano scrivibili:
$chmod -R a -w /home/ftp
•
Accertarsi che la voce ftp in /etc/passwd sia configurata correttamente:
ftp:*:500:100:Anonymous FTP user:/var/ftp:/usr/bin/false
•
Accertarsi che tutte le password in ~ftp/etc/passwd siano asterischi (*):
$more ~ftp/etc/passwd
root:*:0:3::/:/usr/bin/false daemon:*:1:5::/:/usr/bin/false
•
Se è necessario che la directory pub sia scrivibile, usare le autorizzazioni 1733:
$chmod 1733 /home/ftp/pub
•
Usare le quote del disco o un job cron per controllare la dimensione di /home/
ftp/pub:
0 1 * * * find /home/ftp/pub/* -atime +1 exec rm -rf {} \;
•
Controllare l'attività ftp anonima in /var/adm/syslog/syslog.log:
$tail /var/adm/syslog/syslog.log
5.1 Panoramica dei servizi Internet e dei servizi d'accesso remoto
77
5.1.3 Negazione dell'accesso con /etc/ftpd/ftpusers
Il daemon inetd esegue il server del protocollo di trasferimento file, ftpd, quando alla
porta indicata in /etc/services è ricevuta una richiesta di servizio. Il server ftpd
rifiuta gli accessi utente remoti agli account utente locali elencati in /etc/ftpd/
ftpusers. Questi account utente sono chiamati account riservati. Vedere ftpd(1M),
privatepw(1) e services(4).
Nel file /etc/ftpd/ftpusers, ogni nome di account riservato deve comparire da
solo in una riga. Aggiungere anche gli account utente con shell di accesso riservate che
sono definiti in /etc/passwd, perché ftpd accede agli account locali senza usare le
loro shell di accesso.
Se /etc/ftpd/ftpusers non esiste, ftpd non eseguirà controlli di protezione. Per
ulteriori informazioni, consultare ftpusers(4).
In HP-UX 11i, il daemon ftpd è basato su WU-FTPD. WU-FTPD è l'implementazione
HP del daemon ftpd sviluppato dalla Washington University. WU-FTPD consente un
maggior controllo degli accessi, migliori capacità di registrazione eventi, il supporto di
host virtuali e il supporto del protocollo di identificazione RFC1413. Per ulteriori
informazioni, vedere HP-UX Remote Access Services Administrator's Guide, all'indirizzo:
http://www.docs.hp.com/en/netcom.html#Internet%20Services
5.1.4 Altre soluzioni di protezione contro lo spoofing
Lo spoofing è un metodo per fingere di essere un utente autorizzato ed ottenere l'accesso
non autorizzato ad un sistema. Poiché gli indirizzi IP ed i nomi degli host possono essere
oggetto di spoofing, l'uso del file di protezione /var/adm/inetd.sec per inetd (il
daemon di Internet) non è una soluzione garantita per la protezione. Per ulteriori
informazioni su inetd, vedere la Sezione 5.2.
Le seguenti funzionalità ed i seguenti prodotti per la protezione sono soluzioni alternative
per la sicurezza:
•
IPFilter è un filtro per pacchetti TCP/IP che può essere utilizzato come firewall di
sistema per proteggere i server delle applicazioni. Per ulteriori informazioni, vedere
HP-UX IPFilter Administrator's Guide, all'indirizzo:
http://www.docs.hp.com/en/internet.html#IPFilter
•
TCP Wrappers offre un daemon wrapper TCP, tcpd, chiamato da inetd per
fornire ulteriore protezione. Vedere la Sezione 5.3 e HP-UX Internet Services
Administrator's Guide, all'indirizzo:
http://www.docs.hp.com/en/netcom.html#Internet%20Services
•
78
Secure Internet Services consente l'uso dell'autenticazione e dell'autorizzazione
Kerberos per ftp, rcp, remsh, rlogin e telnet. Invece delle password utente,
sono trasmessi nella rete i dati crittografati per l'autenticazione Kerberos. Vedere
la Sezione 5.4, Installing and Administering Internet Services, all'indirizzo:
Gestione della protezione dell'accesso remoto
http://www.docs.hp.com/en/netcom.html#Internet%20Services, e Configuration
Guide for Kerberos Client Products on HP-UX, all'indirizzo:
http://www.docs.hp.com/en/internet.html#Kerberos
•
IPSec, una suite di protocolli per la protezione IP, fornisce la protezione delle reti
IP offrendo l'integrità dei dati, l'autenticazione, la riservatezza dei dati, la protezione
trasparente per le applicazioni e la crittografia.
Vedere HP-UX IPSec Administrator's Guide, all'indirizzo:
http://www.docs.hp.com/en/internet.html#IPSec
5.2 Il daemon inetd
Il daemon internet, /usr/sbin/inetd, è il server principale per molti servizi Internet.
Il daemon inetd di solito è avviato automaticamente dallo script /sbin/init.d/
inetd durante la procedura di avvio.
Il daemon inetd controlla le richieste di connessione per i servizi elencati nel file di
configurazione /etc/inetd.conf, avviando il server appropriato una volta ricevuta
la richiesta. In altre parole, gli utenti si collegano ai sistemi remoti usando un servizio
Internet, come telnet. Il daemon inetd determina se una connessione telnet dall'host
è permessa, prima di avviarla. Le informazioni dell'host che consentono di autorizzare
o negare una connessione sono contenute nel file /var/adm/inetd.sec.
Il daemon inetd opera nel modo seguente:
1.
2.
3.
4.
5.
6.
7.
8.
È avviato al livello di esecuzione 2 all'avvio del sistema, (se nello script di avvio
del sistema è presente il seguente comando: /sbin/init.d/inetd start)
Controlla /etc/inetd.conf per determinare quali servizi offrire. Per ulteriori
informazioni, vedere ftp(1) e inetd.conf(4).
Controlla /etc/services per determinare quali porte monitorare per i servizi
elencati in /etc/inetd.conf. Il file /etc/services mappa i nomi di servizio
ai numeri di porta. Per ulteriori informazioni, vedere services(4).
Riceve da un client una richiesta di connessione per servizi Internet. Ad esempio,
qualcuno esegue telnet.
Consulta /var/adm/inetd.sec per determinare se al client è consentito l'accesso.
Per ulteriori informazioni, consultare inetd.sec(4).
Se è abilitata la registrazione eventi, la richiesta sarà registrata nel file /var/adm/
syslog/syslog.log. Per ulteriori informazioni, vedere syslogd(1M).
Se inetd rifiuta la connessione per ragioni di sicurezza, la connessione sarà chiusa.
Se la richiesta di connessione è valida, inetd eseguirà un processo del server per
gestire la richiesta di connessione. Il processo server può avere altre funzionalità
di protezione, oltre a inetd.
5.2 Il daemon inetd
79
5.2.1 Protezione di inetd
Il file /etc/inetd.conf è il file di configurazione di inetd, che elenca i servizi che
il daemon inetd può avviare. Ogni servizio elencato in /etc/inetd.conf deve
anche essere presente nel file /etc/services. Il file /etc/services mappa i nomi
di servizio ai numeri di porta. Ad ogni numero di porta è associato un nome di protocollo,
come tcp o udp. Ogni voce di un protocollo deve avere una voce corrispondente nel
file /etc/protocols.
I seguenti suggerimenti possono servire a proteggere maggiormente inetd:
•
Abilitare in /etc/rc.config.d/netdaemons la registrazione eventi di inetd.
Per ulteriori informazioni, vedere rc.config.d(4).
•
Controllare se sono state eseguite modifiche a /etc/inetd.conf ed a /etc/
services. Un utente non autorizzato potrebbe aver ottenuto l'accesso di root ed
aver modificato i file /etc/services e /etc/inetd.conf. In /etc/
inetd.conf, cercare eventuali nomi di servizio che non sono utilizzati. In /etc/
services, cercare i numeri di porta che non sono registrati con Internet Assigned
Numbers Authority (IANA), all'indirizzo http://www.iana.org. Controllare che i
numeri di porta elencati per i servizi Internet corrispondano ai numeri registrati con
IANA.
•
Rimuovere i servizi non necessari, come finger, in /etc/inetd.conf. Il comando
finger visualizza le informazioni sugli utenti senza richiedere una password.
•
Rimuovere i servizi Remote Procedure Calls (RPC), in /etc/inetd.conf.
•
Rimuovere i servizi interni inetd di minore importanza in /etc/inetd.conf,
per evitare attacchi a negazione di servizio. Un utente malintenzionato potrebbe
sovraccaricare inetd con richieste chargen (generatore di caratteri). Per ulteriori
informazioni, vedere inetd(1M) e inetd.conf(4).
5.2.1.1 Negare o consentire l'accesso con /var/adm/inetd.sec
Oltre a configurare il file /etc/inetd.conf, per limitare gli accessi ai servizi avviati
da inetd è possibile configurare il file di protezione facoltativo /var/adm/inetd.sec.
Il file /var/adm/inetd.sec elenca gli host a cui l'accesso è permesso o negato per
ogni servizio. Per ulteriori informazioni, consultare inetd.conf(4).
Ad esempio:
login allow 10.3-5 192.34.56.5 nome_host nome_rete
login deny 192.54.24.5 cory.example.edu.testlan
80
Gestione della protezione dell'accesso remoto
5.3 Protezione contro lo spoofing con i wrapper TCP
I wrapper TCP (Transmission Control Protocol) offrono maggior protezione ai servizi
chiamati da inetd. I wrapper TCP sono un'alternativa all'uso di /etc/inetd.sec. I
wrapper TCP offrono protezione contro lo spoofing del nome host e dell'indirizzo dell'host.
Lo spoofing è un metodo per fingere di essere un utente autorizzato ed ottenere l'accesso
non autorizzato ad un sistema.
Per impedire lo spoofing, i wrapper TCP usano le liste di controllo dell'accesso (ACL) Le
liste di controllo dell'accesso sono elenchi di sistemi nei file /etc/hosts.allow e
/etc/hosts.deny. I wrapper TCP offrono una parziale protezione dallo spoofing IP
quando sono configurati per controllare il nome host mappandolo all'indirizzo IP e per
respingere i pacchetti con origine di routing IP.
Tuttavia, i wrapper TCP non consentono l'autenticazione crittografica o la crittografia
dei dati. Come nel caso di inetd, le informazioni trasmesse sono testo in chiaro.
I wrapper TCP fanno parte del software HP-UX Internet Services. Per ulteriori informazioni,
vedere HP-UX Internet Services Administrator's Guide, all'indirizzo:
http://www.docs.hp.com/en/netcom.html#Internet%20Services e le seguenti manpage:
tcpd(1M), tcpdmatch(1), tcpdchk(1), tcpd.conf(4), hosts_access(3), hosts_access(5) e
hosts_options(5).
Quando i wrapper TCP sono abilitati, inetd esegue un daemon wrapper TCP, tcpd,
invece di eseguire direttamente il servizio richiesto. I wrapper TCP operano nel modo
seguente:
1.
2.
3.
4.
5.
I client inviano le richieste di connessione ad inetd come di solito avviene, ad
esempio, con telnet.
Invece di avviare il processo del server, inetd chiama il daemon wrapper TCP
(tcpd).
Il daemon wrapper TCP determina la validità della richiesta di connessione del
client. Il daemon tcpd registra la richiesta e controlla i file di controllo dell'accesso
/etc/hosts.allow e /etc/hosts.deny.
Se il client è autorizzato,tcpd avvia il processo appropriato del server.
Il processo del server elabora la richiesta del client, ad esempio eseguendo la
connessione telnet.
5.3.1 Caratteristiche aggiuntive dei wrapper TCP
È inoltre possibile definire i parametri di configurazione nel file /etc/tcpd.conf,
come il comportamento all'accesso, la ricerca dei nomi degli utenti, e la ricerca inversa
dei comportamenti in caso di malfunzionamento. Il daemon tcpd legge questo file di
configurazione per cercare i parametri di configurazione durante l'esecuzione.
È possibile configurare i file /etc/hosts.allow e /etc/hosts.deny per altre
funzionalità di protezione, come le impostazioni trap e del messaggio di intestazione.
5.3 Protezione contro lo spoofing con i wrapper TCP
81
La funzionalità di impostazione trap dei wrapper TCP consente di attivare le appropriate
operazioni nell'host, in base al numero di tentativi di connessione non riusciti da un host
remoto.
La funzionalità del messaggio di intestazione fa sì che, quando una regola della lista di
controllo dell'accesso è contenuta in un file di controllo dell'accesso, al client sia inviato
un messaggio.
5.3.2 Mancato funzionamento dei wrapper TCP con i servizi RPC
I wrapper TCP non funzionano con il servizio di chiamata di procedura remota (RPC)
attraverso TCP. Questi servizi sono registrati come rpc o tcp nel file /etc/
inetd.conf. L'unico servizio importante influenzato da questa restrizione è rexd,
usato dal comando on.
5.4 Secure Internet Services
Secure Internet Services (SIS) è un meccanismo abilitato facoltativamente che comprende
l'autenticazione e l'autorizzazione Kerberos V5 per i servizi di accesso remoto: ftp,
rcp, remsh, rlogin e telnet.
Secure Internet Services fa parte del prodotto HP-UX Internet Services, documentato in
Using HP-UX Internet Services, all'indirizzo http://www.docs.hp.com/en/
netcom.html#Internet%20Services e nelle seguenti manpage:
sis(5), kinit(1), klist(1), kdestroy(1M), krbval(1M), k5dcelogin(1M), inetsvcs_sec(1M) e
inetsvcs(4).
Quando si eseguono comandi SIS, la protezione è accresciuta, perché non è più
necessario trasmettere in rete una password in formato leggibile.
NOTA: Le librerie SIS non crittografano la sessione oltre il livello necessario ad
autorizzare l'utente o autenticare il servizio. Perciò, questi servizi non forniscono il
controllo dell'integrità o servizi di crittografia per dati o per i servizi remoti. Per
crittografare i dati, usare OpenSSL. Per maggiori informazioni, consultare OpenSSL
Release Notes: http://docs.hp.com/en/internet.html#OpenSSL.
Quando due sistemi funzionano in un ambiente sicuro su base Kerberos V5, Secure
Internet Services garantisce che un host locale ed uno remoto siano reciprocamente
identificati in modo protetto e sicuro e che l'utente sia autorizzato ad accedere all'account
remoto.
Con ftp/ftpd, rlogin/rlogind e telnet/telnetd, l'autenticazione di Kerberos
V5 invia in rete dei ticket crittografati invece di una password per controllare ed
identificare l'utente. Con rcp/remshd e remsh/remshd, le versioni protette di questi
servizi garantiscono che l'utente sia autorizzato ad accedere all'account remoto.
82
Gestione della protezione dell'accesso remoto
5.5 Controllo di un dominio amministrativo
Tutti i programmi per l'amministrazione della rete, invece di essere proprietà dell'utente
root devono esserlo di un account di rete protetto e specifico, come uucp, nso oppure
di un daemon.
Il dominio amministrativo è un gruppo di sistemi connessi tramite servizi di rete, che
consentono agli utenti di accedere a un sistema diverso dal proprio senza bisogno di
autenticare la password. Il dominio amministrativo presuppone che gli utenti del sistema
siano già stati controllati dal loro sistema host. Per identificare e controllare un dominio
amministrativo, eseguire le operazioni seguenti:
1. Elencare i nodi in cui sono esportati i filesystem in /etc/exports. Il file /etc/
exports contiene le voci dei percorsi di filesystem e l'elenco dei sistemi o gruppi
di sistemi ai quali è consentito l'accesso ai filesystem. Le voci di /etc/exports
possono contenere nomi di gruppi di sistemi. È possibile scoprire quali singoli sistemi
fanno parte di un gruppo controllando /etc/netgroup.
2. Elencare i nodi che hanno un database delle password equivalenti in /etc/
hosts.equiv.
3. Controllare che ogni nodo nel dominio amministrativo non estenda i privilegi ad
nodi che non ne fanno parte. Ripetere le operazioni 2 e 3 per ciascun nodo del
dominio.
4. Controllare la protezione di root e locale in ogni modo del dominio amministrativo.
Un utente con privilegi di superutente in una qualsiasi macchina del dominio può
acquisire questi privilegi in tutte le macchine del dominio.
5. Mantenere la coerenza tra nome utente, uid e gid tra i file delle password del
dominio amministrativo.
6. Mantenere la coerenza fra tutti i file del gruppo in tutti i nodi del dominio
amministrativo. Ad esempio, per controllare la coerenza fra i sistemi hq e mfg, se
il filesystem di root del sistema mfg è montato remotamente in hq come /nfs/
mfg/, digitare il seguente comando diff:
$diff /etc/group /nfs/mfg/etc/group
Se sono visualizzate delle differenze, i due file /etc/group sono incoerenti fra
loro, cosa che non dovrebbe essere.
5.5.1 Esame delle autorizzazioni nei file di controllo della rete
I file di controllo della rete nella directory /etc sono obiettivi da tenere sotto controllo,
dato che forniscono l'accesso alla rete stessa. I file di controllo della rete non devono
mai essere scrivibili da chiunque.
Impostare con attenzione modalità, proprietari e gruppi di tutti i file di sistema. Controllare
periodicamente questi file, per individuare eventuali cambiamenti.
I file di controllo della rete più comunemente usati sono i seguenti:
5.5 Controllo di un dominio amministrativo
83
•
/etc/exports
Elenco delle directory che è possibile esportare in client NFS. Per ulteriori
informazioni, vedere exports(4).
•
/etc/hosts
Elenco degli host di rete e dei loro indirizzi IP. Per ulteriori informazioni, vedere
hosts(4).
•
/etc/hosts.equiv
Elenco degli host remoti ai quali è consentito l'accesso e che equivalgono all'host
locale. Per ulteriori informazioni, vedere hosts.equiv(4).
•
/etc/inetd.conf
File di configurazione di Internet Services. Per ulteriori informazioni, consultare
inetd.sec(4).
•
/etc/netgroup
Elenco di gruppi comuni a tutta la rete. Per ulteriori informazioni, vedere netgroup(4).
•
/etc/networks
Elenca tutti i nomi di rete e dei loro numeri di rete. Per ulteriori informazioni, vedere
networks(4).
•
/etc/protocols
Elenco dei nomi di protocollo e dei loro numeri. Per ulteriori informazioni, vedere
protocols(4).
•
/etc/services
Elenco dei nomi ufficiali dei servizi e degli alias con il numero di porta e il protocollo
usati dai servizi. Per ulteriori informazioni, vedere services(4).
5.6 Protezione delle sessioni remote con HP-UX Secure Shell (SSH)
HP-UX Secure Shell è basato su OpenSSH, un prodotto SSH open source
(http://www.openssh.org). Consente di proteggere le connessioni tra un client ed un
host remoto attraverso di una rete altrimenti non protetta. Quelle seguenti sono le
caratteristiche principali di questa connessione protetta:
84
•
Autenticazione forte sia per il client sia per l'host remoto.
•
Cifratura forte e crittografia a chiave pubblica per le comunicazioni tra un client e
l'host remoto.
•
Un canale protetto che il client può usare per eseguire comandi nell'host remoto.
Gestione della protezione dell'accesso remoto
HP-UX Secure Shell offre un'alternativa sicura a funzioni e comandi di uso comune, come
telnet, remsh, rlogin, ftp e rcp.
Per la documentazione relativa ad HP-UX Secure Shell, consultare la manpage ssh(1)
per il client ssh e quella sshd(8) per il server sshd. Entrambe le manpage contengono
riferimenti ad altre manpage di HP-UX Secure Shell, fornite insieme al prodotto.
Consultare inoltre le HP-UX Secure Shell Release Notes, all'indirizzo:
http://www.docs.hp.com/en/internet.html#Secure%20Shell
5.6.1 Principali funzionalità di protezione di HP-UX Secure Shell
Le principali funzionalità di protezione di HP-UX Secure Shell sono le seguenti:
•
Crittografia forte
Tutte le comunicazioni fra il client e l'host remoto sono cifrate con algoritmi
crittografici liberi da brevetti, come Blowfish, 3DES, AES e arcfour. Le informazioni
per l'autenticazione, come le password, non sono mai trasmesse in chiaro attraverso
la rete. La cifratura, insieme alla crittografia forte a chiave pubblica, offre una tutela
da potenziali attacchi alla protezione.
•
Autenticazione forte
HP-UX Secure Shell supporta un solido insieme di metodi di autenticazione fra client
e server. L'autenticazione può avvenire in due sensi: il server autentica il client ed
il client autentica il server. In questo modo la sessione sarà protetta da numerosi
rischi per la sicurezza del sistema. I metodi di autenticazione supportati sono descritti
in Sezione 5.6.5.
•
Port forwarding
Il reindirizzamento delle connessioni TCP/IP tra un client e un host remoto (e
viceversa) è chiamato port forwarding o canale SSH. HP-UX Secure Shell supporta
il port forwarding. Ad esempio, con il port forwarding è possibile reindirizzare il
traffico ftp tra client e server (o il traffico di posta elettronica tra un client di posta
elettronica ed un server POP/IMAP). Il client non comunica direttamente con il suo
server, ma il traffico può essere reindirizzato verso un server sshd attraverso un
canale protetto ed il server sshd può quindi inviare il traffico alla porta designata
della macchina che opera effettivamente come server.
•
Integrazione con le funzionalità di protezione di HP-UX.
Il prodotto HP-UX Secure Shell è integrato con importanti funzionalità di protezione
di HP-UX. Per ulteriori informazioni, vedere la Sezione 5.6.7.
5.6 Protezione delle sessioni remote con HP-UX Secure Shell (SSH)
85
5.6.2 Componenti software di HP-UX Secure Shell
Il software HP-UX Secure Shell è composto da un insieme di componenti client e server.
Vedere la Tabella 5-2.
Tabella 5-2 Componenti software di HP-UX Secure Shell
Componente
Descrizione
Ubicazione
Componenti
equivalenti non
protetti
ssh
Il client Secure Shell sostituisce, a vantaggio
della protezione, telnet e remsh; è molto
simile a remsh con in più delle funzionalità
di protezione
Client
remsh, telnet,
rlogin
slogin
Collegamento simbolico a ssh
Client
remsh, telnet,
rlogin
scp
Client e server secure copy
Client e server
rcp
sftp
Client ftp protetto
Client
ftp
sshd
Daemon Secure Shell
Server
remshd, telnetd,
rlogind
sftp-server
Daemon ftp protetto
Server
ftpd
ssh-rand-helper Generatore di numeri casuali, utilizzato
Server
quando sshd non è in grado di trovare nel
server /dev/random o /dev/urandom.
HP-UX contiene un generatore di numeri
casuali residente nel kernel, rng. Se rng non
è configurato, sshd usa prngd.
86
Non applicabile
ssh-agent
Strumento per accessi utente "automatici",
basati su chiavi, da client a server
Client e server
Meccanismo del file
rhosts
ssh-add
Strumento per generare coppie di chiavi del
client, note a ssh-agent
Client
Non applicabile
ssh-keygen
Strumento per generare coppie di chiavi per
l'autenticazione a chiave pubblica
Client
Non applicabile
ssh-keyscan
Strumento che consente ad un client di
Client
raccogliere le chiavi pubbliche di un insieme
di host che eseguono il daemon Secure Shell
(sshd)
Non applicabile
ssh-keysign
Strumento per generare la firma digitale
Client
necessaria per l'autenticazione basata su host
ed utilizzato da ssh() per accedere
all'autenticazione dell'host locale basata sulle
chiavi dell'host
Non applicabile
Gestione della protezione dell'accesso remoto
5.6.3 Esecuzione di HP-UX Secure Shell
Prima di eseguire uno qualsiasi dei client Secure Shell elencati nella Tabella 5-2, avviare
il daemon del server Secure Shell, sshd. Il daemon sshd ricava i suoi valori iniziali di
configurazione dal file sshd_config, situato nella directory /opt/ssh/etc del sistema
server. Una delle direttive di configurazione più importanti in sshd_config è l'insieme
di metodi di autenticazione supportati dal daemon sshd. Per ulteriori informazioni,
vedere la Sezione 5.6.5.
5.6.3.1 Esecuzione del client ssh
L'applicazione client ssh stabilisce una connessione socket con il server sshd. Il server
sshd genera un processo sshd figlio. Questo processo figlio eredita la connessione
socket ed autentica il client in base al metodo d'autenticazione scelto. La sessione protetta
del client sarà stabilita soltanto dopo la riuscita dell'autenticazione.
Dopo la creazione della sessione, tutte le comunicazioni successive avverranno
direttamente tra il client e questo processo sshd figlio. Il client potrà ora eseguire comandi
remoti nel server. Ogni richiesta di comando proveniente dal client ssh farà sì che il
processo sshd figlio generi un processo della shell per l'esecuzione di quel comando.
In sintesi, una sessione client-server ssh in esecuzione consiste dei processi seguenti:
•
In ogni sistema client connesso al server sshd, c'è un processo client ssh per ogni
connessione ssh corrente stabilita da quel sistema client.
•
Nel sistema server, c'è un processo sshd genitore e un numero di processi sshd
figlio, pari al numero di client ssh connessi al server. Il numero dei processi sshd
figlio in esecuzione nel server raddoppia se nel server è abilitata la separazione
dei privilegi. Vedere la Sezione 5.6.4.
•
Nel sistema server, per ogni richiesta di esecuzione di un comando proveniente da
un client ssh, il processo sshd figlio corrispondente genererà un processo della
shell ed utilizzerà una pipe UNIX per comunicare a quest'ultimo la richiesta di
comando. Questo processo della shell restituirà il risultato dell'esecuzione del
comando al processo sshd figlio, usando la pipe UNIX e si chiuderà completata
l'esecuzione del comando.
5.6.3.2 Esecuzione del client sftp
L'applicazione client sftp fa sì che il processo client sftp avvii il client ssh, quindi
comunichi con esso usando una pipe UNIX. Il client ssh stabilirà quindi una connessione
socket con il server sshd.
Il resto dell'interazione con il server è simile al caso del client ssh descritto in
Sezione 5.6.3.1. La differenza consiste nel fatto che invece di avviare una shell per
l'esecuzione del comando remoto, il processo sshd figlio genererà il processo
5.6 Protezione delle sessioni remote con HP-UX Secure Shell (SSH)
87
sftp-server. Tutte le successive comunicazioni nel corso di questa sessione sftp
avverranno fra i seguenti processi:
•
Il client sftp ed il client ssh, nel sistema client, attraverso una pipe UNIX.
•
Il client ssh ed il processo figlio sshd, attraverso la connessione socket stabilita.
•
Il processo figlio sshd e il processo sftp del server, attraverso una pipe UNIX.
5.6.3.3 Esecuzione del client scp
Il caso del client scp è quasi identico all'esecuzione del client sftp. La differenza
consiste nel fatto che invece di avviare il processo sftp-server, il processo sshd
figlio genererà il processo scp. Tutte le successive comunicazioni nel corso di questa
sessione scp avverranno fra i seguenti processi:
•
Il client scp ed il client ssh, nel sistema client, attraverso una pipe UNIX.
•
Il client ssh ed il processo figlio sshd, attraverso la connessione socket stabilita.
•
Il processo figlio sshd e il processo scp del server, attraverso una pipe UNIX.
5.6.4 Separazione dei privilegi di HP-UX Secure Shell
HP-UX Secure Shell offre un livello più elevato di protezione, grazie alla separazione
dei privilegi. Come descritto in Sezione 5.6.3, il processo genitore sshd e i processi
figlio sshd sono eseguiti come utenti privilegiati. Quando è abilitata la separazione dei
privilegi, per ogni connessione utente sarà generato un processo aggiuntivo.
Quando un client ssh accede ad un server sshd configurato per la separazione dei
privilegi, il processo genitore sshd genererà un processo figlio sshd privilegiato.
Quando è abilitata la separazione dei privilegi, il processo figlio sshd genererà un
processo figlio aggiuntivo sshd non privilegiato. Questo processo figlio sshd non
privilegiato erediterà quindi la connessione socket. Tutte le successive comunicazioni tra
il client ed il server avverranno con questo processo figlio sshd non privilegiato.
La maggior parte delle richieste di esecuzione remota di comandi da parte del client
non sono privilegiate e sono gestite da una shell avviata da questo processo figlio sshd
non privilegiato. Quando il processo figlio sshd non privilegiato richiede l'esecuzione
di una funzione privilegiata, comunicherà con il suo processo genitore privilegiato sshd
attraverso una pipe UNIX.
La separazione dei privilegi serve a limitare i danni che un intruso potrebbe causare.
Ad esempio, se durante l'esecuzione di un comando della shell avviene un attacco con
overflow del buffer, il controllo risiede nel processo non privilegiato, limitando di
conseguenza il rischio potenziale per la protezione.
88
Gestione della protezione dell'accesso remoto
NOTA: La separazione dei privilegi è la configurazione predefinita di HP-UX Secure
Shell. È possibile disabilitare la separazione dei privilegi impostando
UsePrivilegeSeparation NO nel file sshd_config. A causa dei rischi potenziali
per la sicurezza, disabilitare la separazione dei privilegi soltanto dopo un'attenta
valutazione.
5.6.5 Autenticazione con HP-UX Secure Shell
HP-UX Secure Shell supporta i seguenti metodi di autenticazione:
•
GSS-API (autenticazione client basata su Kerberos)
•
Autenticazione a chiave pubblica
•
Autenticazione su base host
•
Autenticazione con password
Quando un client accede ad un daemon sshd remoto, il client sceglie il metodo
desiderato di autenticazione – uno dei metodi elencati prima – e presenta le appropriate
credenziali, all'interno della richiesta di connessione o in risposta al prompt restituito
dal server. Tutti i metodi di autenticazione operano così.
Per stabilire la connessione, il server richiede al client una chiave, una frase o una
password, o delle credenziali.
In base ai requisiti di protezione, è possibile impostare sshd in modo che supporti
soltanto un sottoinsieme dei metodi di autenticazione.
Nonostante HP-UX Secure Shell supporti i metodi di autenticazione elencati in precedenza,
gli amministratori di sistema possono limitare i metodi di autenticazione offerti da
un'istanza sshd, tenendo conto dei requisiti di protezione specifici del loro ambiente.
Ad esempio, un ambiente HP-UX Secure Shell può richiedere che tutti i client siano
autenticati con la chiave pubblica o con i metodi Kerberos. Di conseguenza, i metodi
rimanenti potrebbero essere disabilitati. L'abilitazione e la disabilitazione dei metodi di
autenticazione supportati è ottenuta con direttive di configurazione specificate nel file
sshd_config.
Quando un client ssh richiede una connessione, il server innanzitutto risponde con il
suo elenco dei metodi d'autenticazione supportati. Questo elenco contiene i metodi di
autenticazione supportati dal server sshd e la sequenza con la quale questi metodi
saranno utilizzati. Il client può ignorare uno o più di questi metodi di autenticazione. Il
client inoltre può modificare la sequenza nella quale i metodi saranno eseguiti. È possibile
far ciò usando una direttiva di configurazione nel file di configurazione del client, /opt/
ssh/etc/ssh_config.
I metodi di autenticazione supportati da HP-UX Secure Shell sono riassunti nelle sezioni
seguenti.
5.6 Protezione delle sessioni remote con HP-UX Secure Shell (SSH)
89
5.6.5.1 GSS-API
Con Generic Security Service application Programming Interface (GSS-API), un metodo
di autenticazione del client basato su Kerberos, il client deve ottenere in anticipo le
credenziali Kerberos e disporre anche di un file di configurazione di Kerberos nella
directory appropriata del client. Quando un client accede ad un daemon sshd, al
momento della connessione presenterà le sue credenziali. Il server confronterà queste
credenziali con la propria copia delle credenziali di questo specifico utente. Inoltre, il
server può stabilire facoltativamente la legittimità dell'ambiente host del client.
Per ulteriori informazioni, consultare gssapi(5), kerberos(9) e la documentazione per
l'amministrazione di Kerberos all'indirizzo: http://www.docs.hp.com/en/
internet.html#Kerberos.
5.6.5.2 Autenticazione a chiave pubblica
Per l'autenticazione con chiave pubblica, l'ambiente Secure Shell deve essere configurato
nel modo seguente:
•
Il client ed il server devono avere entrambi una coppia di chiavi. Ogni client ssh
ed ogni server sshd deve generare una coppia di chiavi per se stessi con l'utility
ssh-keygen.
•
Il client deve rendere nota la sua chiave pubblica a tutti i server sshd con cui ha
necessità di comunicare. Fare ciò copiando ciascuna chiave pubblica del client in
una directory predeterminata in ogni server interessato.
•
Il client deve acquisire la chiave pubblica di ogni server con cui ha necessità di
comunicare. Il client acquisisce le chiavi pubbliche con l'utility ssh-keyscan.
Dopo aver completato questa configurazione, i client ssh che accedono ai server sshd
saranno autenticati con le chiavi pubblica e privata. Per maggiori informazioni sulla
crittografia a chiave pubblica, vedere crittografia a chiave pubblica.
HP-UX Secure Shell offre una funzionalità aggiuntiva per semplificare l'autenticazione
della chiave pubblica. In alcuni ambienti, potrebbe risultare conveniente non rispondere
ad ogni prompt di password. È possibile eliminare la necessità di rispondere ai prompt
per la password usando una combinazione dei processi ssh-agent e ssh-add,
eseguiti entrambi nella macchina client. Il client registra tutte le sue informazioni sulle
chiavi con il processo ssh-agent, mediante l'utility ssh-add. Quindi, l'autenticazione
della chiave pubblica fra client e server è facilitata da ssh-agent senza che il daemon
sshd debba interagire con il client.
5.6.5.3 Autenticazione basata sull'host e su chiave pubblica
L'autenticazione basata su host e su chiave pubblica è una versione estesa e
maggiormente sicura del metodo di autenticazione a chiave pubblica. Oltre a prevedere
coppie di chiavi per client e server, questo metodo consente agli ambienti client di limitare
i server con i quali potranno comunicare. Implementare questa restrizione creando un
file .rhosts nella directory home del client.
90
Gestione della protezione dell'accesso remoto
5.6.5.4 Autenticazione con password
Il metodo di autenticazione con password fa affidamento sull'esistenza di un ID utente
unico e di un accesso al sistema basato su password. Tale accesso può essere basato
sul nome di accesso dell'utente specificato in /etc/passwd, oppure può essere basato
su PAM.
HP-UX Secure Shell è completamente integrato con i moduli PAM disponibili nel sistema
server. A questo scopo, il file /opt/ssh/etc/sshd_config contiene la direttiva di
configurazione UsePAM. Impostandola come YES, le richieste di autenticazione con
password del client faranno sì che sshd legga il file di configurazione PAM (/etc/
pam.conf). L'autenticazione con password avviene quindi sequenzialmente attraverso
i moduli PAM configurati, fino a che non avrà successo. Per ulteriori informazioni
sull'autenticazione PAM, consultare pam.conf(4).
Per ignorare l'autenticazione PAM, impostare la direttiva UsePAM come NO. Qualsiasi
richiesta di autenticazione del client farà quindi sì che sshd ignori le impostazioni della
configurazione PAM nel server. Invece, sshd ottiene le informazioni sulle password
degli utenti eseguendo direttamente la chiamata della libreria getpwnam().
HP-UX Secure Shell è stato provato con PAM_UNIX, PAM_LDAP e PAM_KERBEROS. Si
prevede inoltre che operi con altri moduli PAM, come PAM_DCE e PAM_NTLM.
5.6.6 Protocolli di comunicazione
Gli utenti di HP-UX Secure Shell possono accedere ad un daemon sshd remoto con i
protocolli SSH-1 o SSH-2. SSH-2 è maggiormente protetto ed è vivamente consigliato in
sostituzione di SSH-1.
5.6.7 HP-UX Secure Shell ed il sistema HP-UX
HP-UX Secure Shell non è in realtà una shell protetta. Si tratta di un meccanismo usato
per creare una connessione protetta fra un client e un host remoto, per eseguire sessioni
remote della shell in maniera protetta nell'host. Per ottenere la connessione protetta,
HP-UX Secure Shell stesso esegue gran parte dell'autenticazione e della creazione della
sessione. Quello seguente è un elenco parziale delle funzionalità di HP-UX Secure Shell:
•
Registrazione eventi dei tentativi di accesso.
Come telnet o remsh, HP-UX Secure Shell registra le sessioni riuscite e non
riuscite, rispettivamente nei file /var/adm/wtmp e /var/adm/btmp. Per ulteriori
informazioni, consultare utmp(4).
•
Moduli PAM
Come descritto in Sezione 5.6.5, HP-UX Secure Shell può usare l'autenticazione
PAM per le sessioni del client. Quando è selezionata l'autenticazione PAM, HP-UX
Secure Shell utilizzerà il file /etc/pam.conf ed avvierà il modulo PAM appropriato
per l'autenticazione. Per ulteriori informazioni sul file /etc/pam.conf, vedere
pam.conf(4).
5.6 Protezione delle sessioni remote con HP-UX Secure Shell (SSH)
91
•
Uso del file /etc/default/security
Si tratta di un file di configurazione per l'intero sistema, che contiene gli attributi
che definiscono il comportamento d'accesso, delle password e di altre configurazioni
di protezione. HP-UX Secure Shell consente l'uso di questi attributi con alcune
restrizioni, descritte nel file /opt/ssh/README.hp di HP-UX Secure Shell.
Per maggiori informazioni sul file /etc/default/security, consultare security(4).
•
Password shadow
HP-UX Secure Shell è integrato con la funzionalità delle password shadow di HP-UX.
Per ulteriori informazioni, consultare shadow(4).
•
Registro eventi di sistema (syslog)
HP-UX Secure Shell usa syslog per scrivere messaggi importanti. Per ulteriori
informazioni, vedere syslog(3C) e syslogd(1M).
•
Registrazione degli eventi di auditing
HP-UX Secure Shell ha implementato nel proprio codice la registrazione eventi di
auditing (in modalità protetta). Per ulteriori informazioni, vedere audit(5).
5.6.8 Tecnologie correlate
HP-UX Secure Shell è stato provato con le seguenti tecnologie:
•
Kerberos 5 e GSS-API
•
OpenSSL
•
IPv6
•
TCP Wrappers
•
PAM (PAM_UNIX, PAM_Kerberos, PAM_LDAP)
•
HP-UX Strong Random Number Generator
5.6.9 Requisiti di Strong Random Number Generator
Come tutti i prodotti di crittografia basati su chiavi, HP-UX Secure Shell richiede un
generatore di numeri casuali. Cerca i file speciali di dispositivo di HP-UX Strong Random
Number Generator, /dev/urandom e /dev/random ed usa il primo file speciale di
dispositivo individuato. Se questi due file non sono presenti nel sistema, HP-UX Secure
Shell utilizzerà il proprio generatore di numeri casuali interno, ssh-rand-helper.
HP-UX Strong Random Number Generator migliora le prestazioni e l'entropia (una misura
della casualità e, di conseguenza, della protezione delle chiave generate) di HP-UX
Secure Shell. Genera numeri non riproducibili, effettivamente casuali. L'uso HP-UX Strong
Random Number Generator è vivamente consigliato con HP-UX Secure Shell.
92
Gestione della protezione dell'accesso remoto
HP-UX Strong Random Number Generator è disponibile per impostazione predefinita.
Per ulteriori informazioni, vedere random(7).
5.6.10 Supporto di TCP Wrappers
Il daemon di HP-UX Secure Shell, sshd, per supportare TCP Wrappers è collegato alla
libreria statica libwrap.a. Vedere anche la Sezione 5.3.
5.6.11 Jail di directory di chroot
chroot è una jail di directory. Avvia un'applicazione in una directory specificata e
limita l'accesso degli utenti a quella directory ed a quelle che essa contiene. Impedisce
agli utenti di modificare le directory superiori a quella specificata. Ha lo scopo di limitare
l'accesso degli utenti ai file ed alle directory di quell'applicazione mentre la utilizzano.
Occorre abilitare chroot per un'applicazione. Occorre creare delle nuove directory e
copiare in esse l'insieme di file interessati.
Facoltativamente, è possibile impostare ssh, scp e sftp con una directory chroot.
Il file README di HP-UX Secure Shell in /opt/ssh/README.hp descrive la funzionalità
chroot, lo script di configurazione chroot ed i file specifici che lo script copia per
abilitare ssh, sftp e scp per operare in un ambiente chroot. Consultare anche
chroot(1M).
Lo script di configurazione di chroot è nel file /opt/ssh/utils/
ssh_chroot_setup.sh, che fa parte del prodotto software HP-UX Secure Shell (Secure
Shell 4.30.004/005).
5.6 Protezione delle sessioni remote con HP-UX Secure Shell (SSH)
93
94
Parte II Protezione dei dati
HP-UX 11i consente di proteggere i dati in molti modi: proteggendo i dati in transito, quelli in
uso e quelli non attivi. Utilizzando le funzionalità di sicurezza ideate per proteggere i dati in
queste tre forme, gli utenti di HP-UX 11i saranno in grado di ridurre al minimo le violazioni della
protezione, evitando non solo la perdita di dati ma anche della fiducia dei clienti. Questa
sezione tratta i seguenti argomenti:
•
Protezione dei filesystem (Capitolo 6)
•
Compartimenti (Capitolo 7)
•
Privilegi ad alta definizione (Capitolo 8)
95
96
6 Protezione dei filesystem
Questo capitolo descrive la protezione dei filesystem. Prima di leggere questo capitolo,
è necessaria la conoscenza basilare dei file e dei filesystem.
Dato che i dati sono archiviati nei file, è importante conoscere come proteggerli. Questo
capitolo tratta i seguenti argomenti:
•
Controllo dell'accesso ai file (Sezione 6.1)
•
Impostazione delle liste di controllo dell’accesso (Sezione 6.2)
•
Uso delle liste di controllo dell'accesso di HFS (Sezione 6.3)
•
Uso delle liste di controllo dell'accesso di JFS (Sezione 6.4)
•
Confronto fra le liste di controllo dell'accesso di JFS e di HFS (Sezione 6.5)
•
Liste di controllo dell'accesso e NFS (Sezione 6.6)
•
Considerazioni sulla protezione per i file speciali di dispositivo /dev (Sezione 6.7)
•
Protezione delle partizioni del disco e dei volumi logici (Sezione 6.8)
•
Linee guida per il montaggio e lo smontaggio dei filesystem (Sezione 6.9)
•
Controllo della protezione dei file in una rete (Sezione 6.10)
6.1 Controllo dell'accesso ai file
I gruppi di lavoro, le autorizzazioni e la proprietà dei file e le regole di compartimento
determinano chi sarà in grado di accedere ad un dato file. Le regole più semplici di
accesso ai file sono le autorizzazioni standard UNIX.
È possibile dividere gli utenti in gruppi, in modo che i file di proprietà di un gruppo
siano condivisi dal gruppo e siano protetti dagli utenti esterni.
Le autorizzazioni tradizionali dei file UNIX sono visualizzate utilizzando il comando ls
con il flag -l. Le autorizzazioni indicano il tipo di accesso – cioè la possibilità di lettura,
scrittura ed esecuzione – assegnata al proprietario ed ai gruppi del proprio sistema. Le
tradizionali protezioni UNIX dei file consentono un certo grado di controllo sull'accesso
ai file ed alle directory, ma non di definire l'accesso dei singoli utenti e dei gruppi oltre
all'utente proprietario ed al gruppo proprietario. Quella seguente è una breve panoramica
delle autorizzazioni dei file UNIX.
Ogni file ed ogni directory ha nove autorizzazioni. I file e le directory hanno i tre tipi
seguenti di autorizzazioni:
•
r (lettura)
•
w (scrittura)
•
x (esecuzione)
6.1 Controllo dell'accesso ai file
97
Queste tre autorizzazioni sono applicate alle tre seguenti classi di utenti:
•
u (utente/proprietario)
•
g (gruppo)
•
o (tutti gli altri)
L'autorizzazione r consente all'utente di visualizzare o stampare il file. L'autorizzazione
w consente all'utente di scrivere (modificare) il file. L'autorizzazione x consente all'utente
di eseguire il file o di eseguire ricerche nelle directory.
La Figura 6-1 mostra i campi delle autorizzazioni tradizionali.
Figura 6-1 Campi delle autorizzazioni di file e directory
autorizzazione
proprietario
gruppo
altri
rwx
rwx
rwx
r lettura
w scrittura
x esecuzione
L'utente/proprietario di un file o di una directory è generalmente la persona che li ha
creati. Il proprietario di un file può modificarne le autorizzazioni con il comando chmod.
Il gruppo specifica il gruppo a cui il file appartiene. Il proprietario di un file può
modificarne l'ID gruppo con il comando chgrp.
I tre tipi di autorizzazioni hanno un significato leggermente diverso secondo che siano
riferiti ai file ordinari o alle directory. Per ulteriori informazioni, vedere la Tabella 6-1.
Tabella 6-1 Differenze tra i privilegi dei file e delle directory
98
Autorizzazione
File
Directory
r (lettura)
È possibile visualizzare o
stampare il contenuto.
È possibile leggere il contenuto, ma
non eseguirvi una ricerca.
Solitamente, r e x sono usati
assieme.
w (scrittura)
È possibile modificare o eliminare È possibile aggiungere o rimuovere
il contenuto.
voci.
x (esecuzione)
Il file può essere utilizzato come
un programma.
Protezione dei filesystem
È possibile eseguire una ricerca
nella directory.
6.1.1 Impostazione delle autorizzazioni di accesso ai file
Il comando chmod modifica il tipo di accesso – privilegi di lettura, scrittura ed esecuzione
– del proprietario dei file, dei membri del gruppo e di tutti gli altri. Soltanto il proprietario
di un file o un utente con i privilegi appropriati può modificare l'accesso al file. Vedere
chmod(1).
Per impostazione predefinita, l'insieme iniziale di autorizzazioni in lettura e in scrittura
è determinato dal valore umask del creatore di file e directory. Per cambiare le
autorizzazioni predefinite, usare il comando umask. Consultare umask(1).
Ogni bit impostato della maschera di creazione della modalità file provoca l'azzeramento
(disabilitazione) nella modalità file del bit dell'autorizzazione corrispondente. Viceversa,
i bit che sono stati azzerati nella maschera consentono l'abilitazione nei file appena
creati dei bit corrispondenti nella modalità file.
Ad esempio, il valore ottale 022 di umask crea la maschera u=rwx,g=rx,o=rx, che
disabilita le autorizzazioni del gruppo ed altre autorizzazioni di scrittura.
6.1.2 Impostazione della proprietà dei file
Il comando chown modifica la proprietà dei file. Per cambiare il proprietario, è necessario
essere proprietari del file o avere privilegi appropriati.
Il comando chgrp cambia il gruppo proprietario dei file. Per cambiare il gruppo, è
necessario essere proprietari del file o avere privilegi appropriati.
Per ulteriori informazioni, vedere chown(1) e chgrp(1).
6.1.3 Protezione delle directory
Se una directory è scrivibile, sia tramite le autorizzazioni standard, sia tramite le liste
di controllo dell'accesso, chiunque potrà rimuovere i file in quella directory,
indipendentemente dalle loro autorizzazioni. Per impedire l'eliminazione indesiderata
dei file in una directory:
•
Rimuovere le autorizzazioni di scrittura delle directory che non devono averle.
Ciò è particolarmente efficace per le directory private degli utenti. Il comando
seguente consente ad altri di leggere ed eseguire ricerche nella directory
nome_directory ma solo il proprietario potrà eliminarne i file.
# chmod 755 nome_directory
Vedere chmod(1) e chmod(2).
•
Impostare nella directory il bit sticky.
•
Il bit sticky è un bit speciale di modalità di ogni file. Impostando il bit sticky, un
utente non potrà rimuovere dalla directory i file di altri utenti. Impostando il bit sticky
di una directory soltanto il proprietario del file, il proprietario della directory o un
utente con i privilegi appropriati potranno eliminare o rinominare i file.
6.1 Controllo dell'accesso ai file
99
Ciò è efficace per directory temporanee o di progetto (come /tmp e /var/tmp),
che devono essere accessibili a molti utenti autorizzati. Il comando seguente consente
chiunque di creare, leggere e scrivere file in /mfgproj, ma solo il proprietario del
file, della directory, o un utente con i privilegi appropriati potranno eliminare i file.
# chmod a+rwxt /mfgproj
Impostare il bit sticky è importante per le directory utilizzate per ospitare file
temporanei. Nel caso in cui una directory temporanea non sia impostata come
sticky, chi attacca il sistema potrebbe alterare il comportamento previsto dei
programmi degli utenti, attendendo la creazione di un file temporaneo, quindi
eliminandolo e creando nuovamente un file di diverso contenuto, ma con lo stesso
nome. Nella maggior parte dei casi, l'applicazione è inconsapevole del
cambiamento e potrebbe compiere involontariamente azioni illecite a vantaggio di
chi ha attaccato il sistema.
6.1.4 Protezione dei file degli account utente
Per proteggere i file degli account utente, seguire queste linee guida:
•
Le directory home devono essere scrivibili esclusivamente dal proprietario. In caso
contrario, qualsiasi utente potrebbe aggiungere e rimuovere file dalla directory.
•
Soltanto il proprietario dell'account deve poter scrivere i file dell'utente .profile,
.kshrc, .login e .cshrc.
•
Il file .rhosts di un utente non deve essere né leggibile né scrivibile chiunque non
sia il proprietario. Questa precauzione impedisce agli utenti di scoprire quali altri
account esistono ed impedisce a chiunque di modificare il file .rhosts così da
avere accesso ai relativi sistemi. Per ulteriori informazioni, consultare hosts.equiv(4).
•
Non si consiglia di usare il file .netrc, poiché ignora l'autenticazione di login
per l'accesso remoto e contiene inoltre la password non crittografata dell'utente.
Se fosse utilizzato, .netrc non deve essere leggibile o scrivibile da chiunque non
sia il proprietario. Per ulteriori informazioni, vedere netrc(4).
6.1.5 Individuazione e correzione dei file danneggiati con fsck
I problemi seguenti possono indicare danni al filesystem:
•
Un file contiene dati non corretti (incomprensibili).
•
Un file è stato troncato o dei dati sono mancanti.
•
I file scompaiono o cambiano posizione inaspettatamente.
•
Il terminale di un utente, la console di sistema oppure il registro eventi del sistema
visualizzano messaggi di errore.
•
Non è possibile passare ad un'altra directory o elencare file.
•
Non è possibile riavviare il sistema.
100 Protezione dei filesystem
Se non fosse possibile identificare rapidamente il problema del filesystem, controllarlo
con il comando fsck. Il comando fsck è lo strumento principale per individuare e
correggere le incoerenze dei filesystem. Il comando fsck controlla i filesystem elencati
in /etc/fstab.
L'utility fsck non è in grado di individuare i file danneggiati. Se fsck non trova errori,
il problema è probabilmente non è dovuto ad un filesystem danneggiato. Di conseguenza,
il filesystem è utilizzabile, anche se i dati che contiene sono perduti o danneggiati.
Controllare se sono presenti uno o più dei seguenti problemi dei file:
•
Un programma, un'applicazione oppure un utente ha eliminato, sovrascritto, spostato
o troncato uno o più file.
•
Il filesystem, associato a una particolare directory al momento della creazione del
file, potrebbe non essere stato montato in quella directory.
•
Uno o più file è stato collocato in una directory in cui adesso è montato un filesystem.
I file esistono ma non sono accessibili. Per accedere ai file, smontare il filesystem.
•
La protezione del file o la sua proprietà impediscono l'accesso. Usare il comando
chmod o chown per modificare le autorizzazioni dei file.
6.2 Impostazione delle liste di controllo dell'accesso
Le liste di controllo dell'accesso – ACL – offrono un grado di protezione dei file superiore
rispetto alle tradizionali autorizzazioni di accesso. Utilizzare le liste di controllo
dell'accesso per consentire o limitare l'accesso ai file a singoli utenti indipendentemente
dal gruppo a cui appartengono. Solo il proprietario di un file o un utente con i privilegi
appropriati può creare le liste di controllo dell'accesso.
Sia Journaled File System (JFS) sia High-Performance File System (HFS) supportano le
liste di controllo dell'accesso, ma utilizzano procedure e sintassi differenti.
JFS è l'implementazione HP-UX di VERITAS journaled filesystem (VxFS). HFS è la versione
HP-UX di UNIX File System (UFS) ed è compatibile con le versioni precedenti di HP-UX.
Una lista di controllo dell'accesso (ACL) è l'insieme di voci di utenti, gruppi e modalità
associate ad un file. La lista specifica le autorizzazioni di tutte le possibili combinazioni
di ID utente e ID gruppo. Le liste di controllo dell'accesso forniscono un modo per
controllare l'accesso ai file più preciso rispetto a quello delle tradizionali autorizzazioni
UNIX dei file. Le liste di controllo dell'accesso consentono di estendere o limitare l'accesso
ai file in termini di singoli utenti e gruppi specifici, oltre al controllo di tipo tradizionale.
Sia i filesystem HFS sia quelli JFS supportano le ACL, ma usano procedure e sintassi
differenti.
6.2 Impostazione delle liste di controllo dell'accesso
101
NOTA: HFS è ora disapprovato. Sarà rimosso dal sistema operativo in una futura
release.
HP-UX supporta due diversi prodotti JFS: il prodotto JFS di base, compreso nel sistema
operativo e il prodotto facoltativo avanzato, OnLineJFS, installato separatamente. Entrambi
i prodotti JFS supportano le liste di controllo dell'accesso.
Per ulteriori informazioni, vedere setacl(1), getacl(1), aclv(5), chacl(1), lsacl(1) e acl(5).
6.3 Uso delle liste di controllo dell'accesso di HFS
Le autorizzazioni delle liste di controllo dell'accesso di HFS sono configurate con il
comando chacl e sono visualizzate con quello lsacl Vedere l'Esempio 6-1.
IMPORTANTE: Lavorando con file a cui sono assegnate autorizzazioni delle liste di
controllo dell'accesso di HFS, è necessario utilizzare chmod con l'opzione -A. Senza
l'opzione -A, chmod eliminerà dal file le autorizzazioni delle liste di controllo
dell'accesso. La sintassi è:
# chmod -A modalità file
Il comando chacl è un sovrainsieme del comandochmod. Tutti le autorizzazioni
specifiche assegnate con il comando chacl sono aggiunte alle autorizzazioni più
generiche assegnate con il comando chmod.
Quando un file ha delle liste di controllo dell'accesso, il comando ll visualizzerà il
segno più (+) dopo la stringa dell'autorizzazione.
Se un utente.gruppo corrisponde a più di una voce della lista di controllo dell'accesso
di HFS, avrà la precedenza quella più specifica. Vedere l'Esempio 6-2.
102 Protezione dei filesystem
Esempio 6-1 Creazione di una lista di controllo dell'accesso di HFS
In questo esempio, il comando chmod limita le autorizzazioni in scrittura del file
nome_file all'utente mario. Il comando chmod inoltre elimina tutte le precedenti liste
di controllo dell'accesso di HFS.
$ chmod 644 nome_file
$ ll nome_file
-rw-r--r-1 mario
users
0 Sep 21 16:56 nome_file
$ lsacl nome_file
(mario.%,rw-)(%.users,r--)(%.%,r--) nome_file
Il comando lsacl visualizza solo i valori predefiniti – non della lista di controllo
dell'accesso – corrispondenti a proprietario, gruppo ed altre autorizzazioni di base.
Il comando chacl fornisce ad un altro utente l'accesso in lettura e scrittura a nome_file.
$ chacl 'anna.users=rw' nome_file
$ ll nome_file
-rw-r--r--+ 1 mario
users
0 Sep 21 16:56 nome_file
$ lsacl nome_file
(anna.users,rw-)(mario.%,rw-)(%.users,r--)(%.%,r--) nome_file
Osservare due cose: la visualizzazione delle autorizzazioni di ll ha il segno + in coda,
che indica l'esistenza delle liste di controllo dell'accesso e che la stringa delle
autorizzazioni di ll non è stata cambiata. La voce aggiuntiva nella visualizzazione di
lsacl specifica che l'utente anna nel gruppo users ha accesso in lettura e scrittura
a nome_file.
Esempio 6-2 Corrispondenze multiple nella lista di controllo dell'accesso di HFS
Se la combinazione utente.gruppo di un utente corrisponde a più di una voce della
lista di controllo dell'accesso, avrà precedenza quella più specifica. In questo esempio,
per prima cosa sono impostate le autorizzazioni del file.
$ chmod 644 nome_file
Usare il comando chacl con nome_file per aggiungere una voce di sola scrittura
per l'utente anna.
$ chacl anna.%=w nome_file
$ lsacl nome_file
(anna.%,-w-)(mario.%,rw-)(%.users,r--)(%.%,r--) nome_file
A questo punto, l'utente anna avrà accesso in scrittura al file nome_file, usando le
liste di controllo dell'accesso definite per anna.%, ma non avrà accesso in lettura al file
perché anna.% ha la precedenza sulle liste di controllo dell'accesso definite per %.users
e %.%.
Il comando lsacl mostra le liste di controllo dell'accesso di HFS in ordine decrescente
di specificità. In altre parole, la ricerca delle corrispondenze delle autorizzazioni avviene
da sinistra a destra.
6.3 Uso delle liste di controllo dell'accesso di HFS 103
6.3.1 Liste di controllo dell'accesso di HFS e comandi e chiamate di HP-UX
I seguenti comandi e chiamate di sistema funzionano con le liste di controllo dell'accesso
nei filesystem HFS:
Tabella 6-2 Comandi delle liste di controllo dell'accesso di HFS
Comandi
Descrizione
chacl
Modifica le liste di controllo dell'accesso di HFS dei
file.
getaccess
Elenca i diritti di accesso dell'utente ai file.
lsacl
Elenca le liste di controllo dell'accesso di HFS dei
file.
Tabella 6-3 Chiamate di sistema delle liste di controllo dell'accesso di HFS
Chiamata di sistema
Descrizione
getaccess()
Ottiene i diritti effettivi di accesso di un utente ad un
file.
getacl(), fgetacl()
Ottiene le informazioni sulle liste di controllo
dell'accesso di HFS.
setacl(), fsetacl()
Imposta le informazioni delle liste di controllo
dell'accesso di HFS.
acltostr()
Converte la struttura delle liste di controllo
dell'accesso di HFS nel formato stringa.
chownacl()
Cambia il proprietario o il gruppo rappresentato
della lista di controllo dell'accesso di un file HFS.
cpacl(), fcpacl()
Copia le liste di controllo dell'accesso di HFS e i bit
di modalità da un file ad un altro.
setaclentry(), fsetaclentry()
Aggiunge, modifica o elimina una voce di una lista
di controllo dell'accesso di un file HFS.
strtoacl()
Analizza e converte la struttura di una lista di
controllo dell'accesso di HFS nel formato stringa.
strtoaclpatt()
Analizza e converte in array le stringhe della struttura
delle liste di controllo dell'accesso di HFS.
I seguenti comandi, chiamate di sistema e librerie di sottoroutine, influiscono sulle voci
delle liste di controllo dell'accesso, talvolta in modo imprevisto.
104 Protezione dei filesystem
Tabella 6-4 Comandi e chiamate che influiscono sulle voci delle liste di controllo
dell'accesso
Comando o chiamata
Descrizione
chmod
Elimina per impostazione predefinita le liste di
controllo dell'accesso di HFS. Per conservare le liste
di controllo dell'accesso di HFS, usare l'opzione -A.
chmod()
Elimina le voci della lista di controllo dell'accesso di
HFS. Per salvare e ripristinare le voci della lista di
controllo dell'accesso di HFS, usare getacl() e
setacl().
cpset
Non imposta le voci facoltative della lista di controllo
dell'accesso del file.
find
Identifica i file le cui voci della lista di controllo
dell'accesso corrispondono, o contengono, strutture
specifiche della lista di controllo dell'accesso in
filesystem HFS o JFS.
ls -l
La forma estesa indica l'esistenza di liste di controllo
dell'accesso, con la visualizzazione del segno più
(+) dopo i bit di autorizzazione del file.
mailx
Non supporta le voci facoltative della lista di
controllo dell'accesso nei file /var/mail/*.
compact, compress, cp, ed, pack, unpack
Copiano le voci della lista di controllo dell'accesso
nei nuovi file da essi creati.
frecover, fbackup
Utilizzare esclusivamente questi comandi per
ripristinare ed eseguire selettivamente il backup dei
file. Utilizzare l'opzione -A per eseguire il backup
da un sistema con liste di controllo dell'accesso ed
eseguire il ripristino nei sistemi che non le
supportano.
ar, cpio, ftio, shar, tar, dump, restore
Questi programmi non conservano le liste di controllo
dell'accesso dopo l'archiviazione e il ripristino.
Utilizzano il valore st_mode restituito da stat().
rcs, sccs
Questi comandi non supportano le liste di controllo
dell'accesso.
Le liste di controllo dell'accesso HFS utilizzano nella creazione di nuovi filesystem degli
“inodi di continuazione” addizionali. Prenderli in considerazione utilizzando i programmi
seguenti:
•
fsck: restituisce il numero dei file con voci nella lista di controllo dell'accesso sotto
forma di valore per icont. Usa l'opzione -p per annullare gli inodi di continuazione
non referenziati. Consultare fsck(1M).
6.3 Uso delle liste di controllo dell'accesso di HFS 105
•
diskusg, ncheck: ignorano gli inodi di continuazione. Vedere diskusg(1M) e
ncheck(1M).
•
mkfs: consente gli inodi di continuazione nei nuovi dischi. Vedere mkfs(1M).
6.4 Uso delle liste di controllo dell'accesso di JFS
Questa sezione descrive le liste di controllo dell’accesso di JFS ed il loro utilizzo.
NOTA: Per usare le liste di controllo dell'accesso di JFS, è necessario avere un filesystem
VxFS che usa la struttura disco versione 4. Per informazioni sull'aggiornamento un
filesystem alla versione 4, vedere vxupgrade(1M).
6.4.1 Definizione di una lista di controllo dell'accesso di JFS
Una lista di controllo dell'accesso di JFS contiene voci di una sola riga, che definiscono
utenti e gruppi specifici ed indicano quale accesso sarà concesso a ciascuno di essi. La
presenza di una lista di controllo dell'accesso di JFS modifica anche il significato dei bit
di autorizzazione di group visualizzati con il comando ls -l.
In un lista di controllo dell'accesso di JFS ci sono sempre almeno quattro voci: una voce
user, una group, una class ed una other. Quando una lista di controllo dell'accesso
di JFS contiene solo queste quattro voci, le autorizzazioni concesse sono esattamente le
stesse di quelle rappresentate dai bit di autorizzazione di un sistema UNIX standard.
6.4.2 Modalità di generazione delle lista di controllo dell'accesso di JFS da parte del
sistema
Ogni volta che si crea un file in un filesystem VxFS versione 4, il sistema inizializzerà
per il file una lista di controllo dell'accesso di JFS minima, contenente la voce user per
le autorizzazioni del proprietario, la voce group per le autorizzazioni del gruppo
proprietario, quella class per le autorizzazioni del gruppo proprietario e quella other
per le altre autorizzazioni del gruppo. Delle voci aggiuntive possono essere aggiunte
dall'utente, oppure derivare dalle voci predefinite specificate per la directory di livello
superiore.
6.4.3 Lista di controllo dell'accesso minima di JFS
Una lista di controllo dell'accesso di JFS contenente le quattro voci di base descritte in
precedenza è definita "minima". Un esempio di lista di controllo dell'accesso minima
ha il seguente aspetto:
user::rwgroup::r-class:r-other:---
106 Protezione dei filesystem
•
La voce user indica le autorizzazioni del proprietario del file e mappa direttamente
i bit di autorizzazione del proprietario. Poiché la prima voce si riferisce al
proprietario del file, non è necessario indicare il nome dell'utente. Questo esempio
di voce della lista di controllo dell'accesso concede l'accesso in lettura e scrittura
al proprietario del file.
•
Le voci group e class specificano le autorizzazioni concesse ai membri del gruppo
proprietario del file. L'esempio di voce della lista di controllo dell'accesso concede
l'accesso in sola lettura al gruppo proprietario del file. Le voci group e class sono
descritte in maggior dettaglio in Sezione 6.4.5.
•
La voce other rappresenta una voce jolly, che specifica le autorizzazioni per tutti
coloro ai quali non è concessa o è negata l'autorizzazione dalle altre voci. L'esempio
di voce other nega l'accesso a tutti gli utenti che non sono proprietari del file, né
sono presenti nel gruppo proprietario del file.
I bit di autorizzazione visualizzati da ls -l per questo file dovrebbero avere il seguente
aspetto:
rw-r-----
La sezione successiva descrive come ulteriori voci della lista di controllo dell'accesso di
JFS influenzeranno l'accesso al file e l'interpretazione dei bit di autorizzazione.
6.4.4 Voci aggiuntive di utente e di gruppo della lista di controllo dell'accesso di JFS
Se nel sistema desidera concedere o negare specificamente l'accesso a determinati
utenti o gruppi, è possibile aggiungere fino a 13 voci user e group alle quattro voci
minime descritte nella sezione precedente.
Ad esempio, la voce seguente nella lista di controllo dell'accesso di un file concede
accesso in lettura, scrittura ed esecuzione ad un utente che ha eseguito l'accesso come
boss:
user:boss:rwx
Nell'esempio successivo, la lista di controllo dell'accesso con la seguente voce nega
l'accesso ad un utente del gruppo spies:
group:spies:---
6.4.5 Voci di classe e di gruppo della lista di controllo dell'accesso di JFS
In un file con lista di controllo dell'accesso minima, le voci del proprietario group e
class sono identiche. Tuttavia, in un file con voci aggiuntive, le voci del proprietario
group e class della lista di controllo dell'accesso sono differenti. La voce del
proprietario group concede le autorizzazioni ad un gruppo specifico: il group
proprietario.
La voce class è più generica; specifica le autorizzazioni massime che è possibile
concedere con una delle voci aggiuntive user e group.
6.4 Uso delle liste di controllo dell'accesso di JFS 107
Se nella voce class non è concessa un'autorizzazione particolare, nessun altra voce
della lista di controllo dell'accesso potrà concederla, ad eccezione della prima voce
user (proprietario) e e di quella other. È possibile negare qualsiasi autorizzazione
ad un particolare utente o un gruppo. La voce class funziona come collegamento
superiore per le autorizzazioni dei file.
Quando una lista di controllo dell'accesso contiene più di una voce group o user, le
voci aggiuntive user e group si riferiscono a quelle group class, poiché
l'autorizzazione effettiva concessa da ciascuna di queste voci aggiuntive è limitata da
quella class.
6.4.6 Uso dei comandi setacl e getacl
Per modificare e visualizzare le liste di controllo dell'accesso, usare i comandi setacl
e getacl.
Usare il comando setacl per modificare la lista di controllo dell'accesso in uno dei
modi seguenti:
•
Sostituire l'intera lista di controllo dell'accesso di un file, compresa quella predefinita
in una directory.
•
Aggiungere, modificare oppure eliminare una o più voci, comprese quelle predefinite
nelle directory.
Il comando getacl visualizza le voci della lista di controllo dell'accesso. I bit di
autorizzazione di user e group sono convertiti in alcuni casi particolari di queste voci:
•
I bit che rappresentano le autorizzazioni dei proprietari sono rappresentati dalla
voce user senza uno specifico ID utente.
•
I bit che rappresentano le autorizzazioni del gruppo sono rappresentati dalla voce
group senza uno specifico ID di gruppo.
Una lista di controllo dell'accesso deve contenere almeno una di queste voci speciali
user e group. La lista di controllo dell'accesso può contenere un numero qualsiasi
di voci aggiuntive user e group, ma devono tutte contenere, rispettivamente, un
ID utente o un ID di gruppo. Nella lista di controllo dell'accesso c'è solo una voce
other, che rappresenta i bit di autorizzazione delle autorizzazioni da concedere
ad altri utenti.
Per la descrizione dei comandi, vedere setacl(1) e getacl(1).
6.4.7 Effetti di chmod sulle voci di classe
Quando un file ha una lista di controllo dell'accesso minima, le voci di proprietà group
e class sono identiche e chmod le influenza entrambe. Tuttavia, quando un file contiene
voci aggiuntive e facoltative della lista di controllo dell'accesso, ci saranno le seguenti
conseguenze:
108 Protezione dei filesystem
•
La voce class della lista di controllo dell'accesso non sarà più necessariamente
uguale alla voce di proprietà group.
•
Il comando chmod influenza la voce class della lista di controllo dell'accesso, ma
non quella di proprietà group.
•
Per modificare la voce di proprietà group, è necessario utilizzare il comando
setacl.
6.4.8 Esempio di modifica di una lista di controllo dell'accesso minima di JFS
Per illustrare la funzione della voce class della lista di controllo dell'accesso di JFS,
questa sezione descrive l'influenza di chmod e setacl su un file con lista di controllo
dell'accesso minima di JFS e su un file con le voci group e class.
NOTA: Per ulteriori dettagli sull'uso dei comandi getacl e setacl consultare la
Sezione 6.4.10. Consultare anche getacl(1) e setacl(1).
Prendere in considerazione un file, file_esempio, con autorizzazioni di sola lettura
(444) ed una lista di controllo dell'accesso minima di JFS. Il comando ls -l mostra le
autorizzazioni di file_esempio:
$ ls -l file_esempio
-r--r--r-- 1 antonio users 12 Sep 20 15:02 file_esempio
Il comando getacl restituisce per file_esempio l'output seguente, che è la lista di
controllo dell'accesso minima di JFS:
$ getacl file_esempio
# file: file_esempio
# owner: antonio
# group: users
user::r-group::r-class:r-other:r--
Usando il comando chmod per aggiungere a file_esempio le autorizzazioni di
scrittura, saranno modificate entrambe le voci di proprietà group e class della lista
di controllo dell'accesso. Ad esempio, esaminare l'output del comando getacl:
$ chmod 666 file_esempio
$ getacl file_esempio
# file: file_esempio
# owner: antonio
# group: users
user::rwgroup::rwclass:rwother:rw-
6.4 Uso delle liste di controllo dell'accesso di JFS 109
Ora, sono aggiunte alcune voci utente e di gruppo, che influenzeranno la voce class
della lista di controllo dell'accesso, ma non quella di proprietà group. Il primo comando
setacl concede l'autorizzazione di sola lettura all'utente guest; le altre voci della
lista di controllo dell'accesso rimarranno inalterate. Tuttavia, il secondo comando setacl
concede autorizzazioni di lettura e di esecuzione al gruppo dev ed è esteso il vincolo
superiore alle autorizzazioni (la voce class), per comprendere l'autorizzazione di
esecuzione.
$ setacl -m u:guest:r-- file_esempio
$ setacl -m g:dev:r-x file_esempio
$ getacl file_esempio# file: file_esempio
# owner: antonio
# group: users
user::rwuser:guest:r-group::rwgroup:dev:r-x
class:rwx
other:rw-
A questo punto, il comando chmod rimuove l'autorizzazione di scrittura ed esecuzione
da group, riducendo effettivamente le autorizzazioni class alla sola lettura. Le
autorizzazioni proprietarie di group, sebbene invariate, sono effettivamente ridotte alla
sola lettura.
$ chmod g-wx file_esempio
$ getacl file_esempio
# file: file_esempio
# owner: antonio
# group: users
user::rwuser:guest:r-group::rw# effective:r-group:dev:r-x # effective:r-class:r-other:rw-
Le autorizzazioni other sono rimaste invariate. La voce class non limita l'accesso
che può essere concesso dalla prima voce user (proprietario) o da quella other.
Il comando ls -l mostra le autorizzazioni di file_esempio. Il segno più (+) alla
fine della stringa delle autorizzazioni indica la presenza di una lista di controllo
dell'accesso per il file.
$ ls -l file_esempio
-rw-r--rw-+ 1 antonio users 12 Sep 20 15:02 file_esempio
110
Protezione dei filesystem
6.4.9 Liste di controllo dell'accesso predefinite di JFS
Si potrebbe desiderare che tutti i file creati in una directory abbiano certe voci della lista
di controllo dell'accesso. Per esempio, quando si lavora insieme ad un'altra persona, è
possibile concederle l'autorizzazione di scrittura per qualsiasi file della propria directory.
È possibile inserire nella lista di controllo dell'accesso la voce che concede l'accesso
desiderato a tutti i file della directory, ma ogni volta che si crea un nuovo file sarà
necessario aggiungere ancora quella voce. Usando le voci della lista di controllo
dell'accesso predefinita, è possibile fare in modo che il sistema esegua l'operazione
automaticamente ogni volta che si crea un file.
Una voce della lista di controllo dell'accesso predefinita ha il seguente aspetto:
default:user:boss:rw-
Le liste di controllo dell'accesso predefinite possono essere inserite soltanto in una
directory e non hanno influenza sul tipo di accesso alla directory garantito agli utenti.
La lista di controllo dell'accesso predefinita è applicata ai file creati nella directory.
Se il file appena creato è una directory, le voci della lista di controllo dell'accesso
predefinita avranno due conseguenze:
•
Saranno create le corrispondenti voci della lista di controllo dell'accesso non
predefinita, in modo che le autorizzazioni desiderate siano concesse e negate per
quella directory, proprio come per tutti i file creati nella directory.
•
Saranno copiate le voci predefinite stesse, in modo che la nuova sottodirectory
abbia la medesima lista di controllo dell'accesso predefinita della directory di livello
superiore.
Ad esempio, se si desidera che tutti i file creati nella directory progetti siano leggibili
da determinati utenti, è possibile creare le voci predefinite appropriate nel modo seguente:
$ setacl -m d:u:boss:r,d:u:franco:r,d:u:dev:r progetti
$ getacl progetti
# file: progetti
# owner: antonio
# group: users
user::rwuser:boss:rwuser:franco:rwuser:mrossi:--group::rwgroup:dev:rwclass:rwother:--default:user:boss:r--default:user:franco:r-default:group:dev:r--
6.4 Uso delle liste di controllo dell'accesso di JFS
111
Se il file appena creato è una directory, saranno generate le stesse voci della lista di
controllo dell'accesso. Inoltre, le voci predefinite saranno anch'esse inserite nella lista
di controllo dell'accesso.
Una volta immesse queste voci, tutti i file creati nella directory progetti avranno una
lista di controllo dell'accesso come quella mostrata in precedenza, senza le voci
predefinite.
6.4.10 Modifica della lista di controllo dell'accesso di JFS con il comando setacl
Questa sezione contiene altri esempi dell'uso del comando setacl.
6.4.10.1 Uso della opzioni di modifica ed eliminazione
Il seguente comando setacl usa l'opzione -m (modifica) per attribuire l'accesso in sola
lettura all'utente boss al file junk:
$ setacl -m u:boss:r-- junk
Per concedere l'accesso in lettura e scrittura a tutti gli utenti del gruppo dev, utilizzare
per il comando setacl -m il parametro per il gruppo (g:):
$ setacl -m g:dev:rw- junk
L'opzione -d elimina una voce. Con -d, non specificare alcuna autorizzazione nella
voce della lista di controllo dell'accesso. Ad esempio, il seguente comando elimina la
voce per il gruppo dev:
$ setacl -d g:dev junk
6.4.10.2 Uso dell'opzione -f
Per aggiungere o modificare parecchie voci, è possibile usare una procedura diversa.
È possibile salvare la lista di controllo dell'accesso in un file, modificarlo, quindi applicare
la nuova lista al file. Ad esempio, salvare la lista di controllo dell'accesso in un file con
questo comando:
$ getacl junk > junk.acl
Modificare il file come mostrato oltre:
$ cat junk.acl
# file: junk
# owner: utente1
# group: gruppo1
user::rwuser:utente2:rwuser:utente3:rwuser:utente4:--user:utente5:r-group::rwgroup:gruppo2:rwgroup:gruppo3:r-group:gruppo4:--group:gruppo5:rw112
Protezione dei filesystem
class:rwother:r--
Applicare la lista di controllo dell'accesso al file con il comando setacl -f:
$ setacl -f junk.acl junk
6.4.10.3 Autorizzazioni effettive e setacl -n
Solitamente, setacl rielabora la voce class in modo da garantire siano realmente
accordate che le autorizzazioni concesse dalle voci addizionali della lista di controllo
dell'accesso. Se si specifica l'opzione -n, la voce class non sarà rielaborata e sarà
utilizzato il valore esistente. In pratica, ciò significa che alcune autorizzazioni concesse
dalle voci della lista di controllo dell'accesso non saranno accordate.
Ad esempio, questa lista di controllo dell'accesso è modificata con il comando setacl
-n per aggiungere autorizzazioni di lettura ed esecuzione al gruppo dev nel modo
seguente:
$ getacl file_esempio
# file: file_esempio
# owner: antonio
# group: users
user::rwgroup::rwclass:rwother:rw$ setacl -n -m group:dev:r-x file_esempio
$ getacl file_esempio
# file: file_esempio
# owner: antonio
# group: users
user::rwgroup::rwgroup:dev:r-x
#effective r-class:rwother:rw-
La voce del gruppo dev della lista di controllo dell'accesso è stata aggiunta come
specificato, ma l'autorizzazione di esecuzione non sarà realmente concessa.
L'autorizzazione di esecuzione è negata dalla voce class e quella class non è stata
rielaborata perché è stata specificata l'opzione -n. Se non fosse stata usata l'opzione
-n, class sarebbe stata reimpostata come class:rwx e non sarebbe stato presente
il commento effective.
6.5 Confronto fra le liste di controllo dell'accesso di JFS e di HFS
Le liste di controllo dell'accesso di JFS aderiscono allo standard POSIX.
Le liste di controllo dell'accesso di JFS differiscono da quelle di HFS nel formato (interno
ed esterno) e nelle funzionalità.
Le differenze funzionali tra le liste di controllo dell'accesso di JFS e di HFS comprendono:
6.5 Confronto fra le liste di controllo dell'accesso di JFS e di HFS
113
•
Una lista di controllo dell'accesso di directory JFS ha voci predefinite, che sono
applicate ai file creati in seguito in quella directory. Le liste di controllo dell'accesso
di HFS non hanno questa possibilità.
•
Una lista di controllo dell'accesso di HFS ha un proprietario che può essere differente
da quello del file da essa controllato. Le liste di controllo dell'accesso di JFS
appartengono al proprietario del file corrispondente.
•
Una lista di controllo dell'accesso di HFS può avere voci differenti per un particolare
utente in gruppi specifici. Ad esempio, utente_x può avere l'accesso in lettura e
scrittura in quanto membro del gruppo users, ma avere l'accesso di sola lettura
come membro del gruppo other.
6.5.1 Mappatura dei comandi e delle funzioni di JFS e HFS
La Tabella 6-5 elenca le manpage dei comandi e delle funzioni equivalenti delle liste di
controllo dell'accesso di JFS e di HFS.
Tabella 6-5 Equivalenze delle liste di controllo dell'accesso di HFS e JFS
114
Nome HFS
Equivalente JFS
chacl(1)
setacl(1)
lsacl(1)
getacl(1)
getacl(2)
acl(2)
fgetacl(2)
— nessuno —
setacl(2)
acl(2)
fsetacl(2)
— nessuno —
acltostr(3C)
— nessuno —
chownacl(3C)
— nessuno —
cpacl(3C)
— nessuno —
setaclentry(3C)
— nessuno —
strtoacl(3C)
— nessuno —
— nessuno —
aclsort(3C)
acl(5)
aclv(5)
Protezione dei filesystem
6.6 Liste di controllo dell'accesso e NFS
Network File System (NFS) non dispone di funzionalità per trasmettere ai file remoti le
informazioni della lista di controllo dell'accesso. Di conseguenza, NFS non è in grado
di visualizzare le liste di controllo dell'accesso dei file remoti. Il comando ls -l non
mostrerà l'esistenza delle liste di controllo dell'accesso del file remoto, ma il loro controllo
delle autorizzazioni di accesso resta effettivo.
Le singole voci delle manpage specificano il comportamento delle varie chiamate di
sistema, chiamate di libreria e comandi in queste circostanze.
IMPORTANTE: Fare attenzione quando si trasferisce in rete un file con voci facoltative,
oppure quando si modifica un file remoto, perché NFS potrebbe eliminare le voci
facoltative senza preavviso.
6.7 Considerazioni sulla protezione per i file speciali di dispositivo /dev
L'accesso a tutti i dispositivi del sistema è controllato dai file speciali di dispositivo, che
abilitano i programmi ad essere indipendenti dal dispositivo. Questi file sono forniti con
autorizzazioni impostate in modo da consentirne l'uso corretto in massima sicurezza.
Se si installano altri file speciali di dispositivo, consultare insf(1M) per impostare
correttamente le autorizzazioni.
Dal momento che i file speciali di dispositivo possono essere vulnerabili alla manomissione
come qualsiasi altro file, osservare le seguenti precauzioni:
•
Archiviare tutti i file speciali di dispositivo nella directory /dev.
•
Proteggere dall'accesso casuale i file di memoria, /dev/mem e /dev/kmem, poiché
questi file contengono dati sensibili dell'utente. Ad esempio, un programma che
controlla il memoria la chiamata del programma login potrebbe copiare la
password dal buffer di login nel momento in cui un utente la digita. Le protezioni
del file devono essere impostate nel modo seguente:
crw-r----crw-r-----
•
1 bin
1 bin
sys
sys
3 0x000001 Jun
3 0x000000 Jun
9
9
2006 /dev/kmem
2006 /dev/mem
Proteggere tutti i file speciali del disco:
— Proteggere dalla scrittura tutti i file speciali del disco, per impedire il
danneggiamento accidentale dei dati da parte degli utenti. Disattivare l'accesso
in scrittura di group e other.
— Proteggere dalla lettura i file speciali del disco per impedirne la divulgazione.
Disattivare l'accesso in lettura per other.
Le protezioni dei file devono essere impostate nel modo seguente:
brw-r----crw-r-----
1 bin
1 bin
sys
sys
31 0x002000 Feb 18
188 0x002000 Aug 3
2004 /dev/dsk/c0t2d0
2004 /dev/rdsk/c0t2d0
6.6 Liste di controllo dell'accesso e NFS
115
brw-r----crw-r-----
1 root
1 root
sys
sys
64 0x000002 Jun 11
64 0x000002 Jun 11
2006 /dev/vg00/lvol2
2006 /dev/vg00/rlvol2
•
Se si consente agli utenti di comunicare con i programmi write o talk, chiunque
potrà scrivere nelle porte dei terminali dei sistemi HP-UX. Concedere l'autorizzazione
in lettura soltanto al proprietario.
•
Non consentire mai ai singoli utenti di avere in proprietà un file speciale di
dispositivo diverso da quelli del terminale o della stampante personale.
•
Prima di mettere in servizio un disco o altri dispositivi montabili di origine ignota,
controllarne i file per rilevare la presenza di file speciali di dispositivo e di programmi
setuid. Vedere la Sezione 6.9.
6.8 Protezione delle partizioni del disco e dei volumi logici
Logical Volume Manager (LVM) è uno strumento di uso comune per la gestione dei dischi.
LVM suddivide il disco in partizioni con maggior facilità e i volumi possono comprendere
più dischi. I volumi sono dispositivi logici visualizzati come una partizione fisica del
disco. È possibile usare un volume come partizione del disco virtuale per applicazioni
come la creazione di un filesystem o un database.
Seguono alcune considerazioni sulla protezione delle partizioni del disco e dei volumi
logici.
•
Accertarsi che i file speciali di dispositivo delle partizioni del disco e dei volumi
logici siano leggibili solo root e, tutt'al più, dall'account utilizzato per i backup del
disco. Vedere la Sezione 6.7.
•
Poiché la proprietà e le autorizzazioni sono archiviati nell'inodo, tutti coloro che
hanno l'autorizzazione in scrittura per una partizione montata potranno impostare
l'ID utente di tutti i file di quella partizione. Il file è soggetto a modifiche
indipendentemente dal proprietario, ignorando la chiamata di sistema chmod() e
gli altri controlli di sicurezza.
Se il file speciale di dispositivo è scrivibile, un utente può aprire il file ed accedere
ai dati non elaborati del disco. L'utente potrà quindi modificare direttamente il
filesystem, leggere i file o modificare le autorizzazioni ed i proprietari dei file.
Accertarsi che le autorizzazioni dei file impediscano l'accesso al file speciale di
dispositivo e consentano solamente l'accesso in lettura all'utente root.
•
Se un programma, come ad esempio un database, richiede l'accesso diretto alla
partizione, questa deve essere riservata esclusivamente al programma. Non montare
una partizione come filesystem se gli utenti possono accedere direttamente ad essa.
Montando una partizione come filesystem, gli utenti possono modificare il filesystem
che essa ospita.
Gli utenti del programma devono essere informati del fatto che la protezione del
file è imposta dalle sue autorizzazioni, piuttosto che dal filesystem HP-UX.
116
Protezione dei filesystem
6.9 Linee guida per il montaggio e lo smontaggio dei filesystem
Il comando mount consente di collegare alla struttura ad albero dei file esistente filesystem
removibili e dischi o partizioni di dischi. Il comando mount usa il file /etc/fstab,
che contiene l'elenco dei filesystem disponibili e i corrispondenti punti di montaggio. Il
file /etc/fstab deve essere scrivibile solo dall'utente root, ma leggibile da tutti gli
altri. Per maggiori informazioni sul montaggio dei filesystem, vedere fstab(4).
Per montare un filesystem o un disco, osservare le seguenti precauzioni:
•
Creare la directory del punto di montaggio (come ad es. /mnt) in cui montare il
nuovo filesystem. Non montare mai un filesystem in una directory che contiene già
dei file, perché questi diverrebbero inaccessibili.
Il punto di montaggio di un filesystem montato acquisisce le autorizzazioni e la
proprietà della directory root del filesystem.
•
Per controllare l'accesso ai dischi, impostare le autorizzazioni e le voci delle liste
di controllo dell'accesso ai nomi di percorso del disco.
•
Per montare il filesystem in sola lettura, usare l'opzione -r del comando mount. I
filesystem fisicamente protetti in scrittura devono essere montati in questo modo.
•
Montando un filesystem nuovo o esterno, dare per scontato che il supporto non sia
sicuro.
— Assicurarsi che la variabile ambientale PATH non contenga “.” (la directory
corrente); in caso contrario, al momento di esaminare il filesystem potrebbe
essere eseguita una versione del comando ls – o di un comando analogo –
che agisce come "cavallo di Troia".
— Eseguire il programma fsck, per controllare che il filesystem non sia
tecnicamente danneggiato. Consultare fsck(1M).
— Eseguire ncheck_hfs -s o ncheck_vxfs -s per cercare file di dispositivo
e programmi setuid e setgid, quindi analizzare ogni risultato sospetto.
L'opzione -s ha lo scopo di individuare le violazioni nascoste dei criteri di
protezione. Per maggiori informazioni, vedere ncheck_hfs(1M) e ncheck_vxfs(1M).
— Creare una directory riservata a root, impostandone le autorizzazioni a 700
(drwx------).
# mkdir /securefile
# chmod 700 /securefile
— Montare in quella ubicazione il filesystem esterno in sola lettura:
#
mount -r /dev/disk1 /securefile
— Controllare tutte le directory per rilevare l'eventuale presenza di programmi
privilegiati e controllare l'identità di ogni programma.
6.9 Linee guida per il montaggio e lo smontaggio dei filesystem
117
— Rimontare le autorizzazioni di lettura e scrittura e rimuovere dai file individuati
nella fase precedente tutti le autorizzazioni setuid e setgid non necessarie.
Queste precauzioni sono importanti soprattutto se un utente chiede il montaggio
di un filesystem personale.
Solamente dopo avere eseguito questi controlli sarà opportuno smontare il filesystem
e rimontarlo nell'ubicazione desiderata.
•
Accertarsi di smontare tutti i filesystem montati da utenti ai quali si sta disabilitando
o eliminando l'account.
Per informazioni sui file montati in ambiente NFS, consultare la Sezione 6.10.2.
6.10 Controllo della protezione dei file in una rete
Dal punto di vista della protezione, i sistemi di rete sono più vulnerabili di quelli
indipendenti. L'esistenza di una rete aumenta l'accessibilità del sistema, ma aggiunge
anche maggiori rischi per la sicurezza.
Anche se non è possibile controllare completamente la protezione nella rete, per limitare
il rischio di intromissioni senza ridurre l'utilità del sistema o la produttività degli utenti è
possibile controllare la protezione di ciascun nodo della rete.
Accertarsi che tutti i programmi per l'amministrazione della rete siano di proprietà di
un account protetto e specifico per la rete, come ad esempio uucp, nso, o daemon,
piuttosto che root.
6.10.1 Esame delle autorizzazioni nei file di controllo di rete
Impostare con cautela modalità, proprietari e gruppi di tutti i file di sistema. Controllare
periodicamente questi file, per individuare eventuali cambiamenti. Annotare e correggere
i cambiamenti avvenuti rispetto ai valori originali.
Prestare particolare attenzione ai file di controllo di rete nella directory /etc. Questi
file sono di particolare interesse per chi desidera accedere al sistema senza
autorizzazione, poiché forniscono accesso alla rete stessa. I file di controllo della rete
non devono mai essere scrivibili da chiunque. Questi file comprendono:
exports
hosts
hosts.equiv
inetd.conf
netgroup
networks
protocols
services
118
Protezione dei filesystem
Elenco dei filesystem esportati nei client NFS
Host di rete e relativi indirizzi
Host remoti con accesso consentito equivalente all'host locale
File di configurazione Internet
Elenco di gruppi comuni a tutta la rete
Nomi di rete e relativi indirizzi
Database dei nomi di protocollo
Database dei nomi di servizio
6.10.2 File montati in ambiente NFS
Un filesystem di rete (NFS) offre i vantaggi seguenti:
•
Risparmiare spazio per i file.
•
Mantenere un utilizzo coerente dei file.
•
Fornire un ambiente utente che favorisca la cooperazione.
NFS semplifica la condivisione di file fra server e sistemi client, controllando l'accesso
attraverso il file /etc/exports. Le voci in /etc/exports forniscono le autorizzazioni
per montare un filesystem esistente nel server, in qualsiasi macchina client o in un elenco
specifico di macchine. Una volta che il filesystem è collocato in /etc/exports, le
informazioni saranno potenzialmente disponibili a chiunque sia in grado di eseguire un
montaggio NFS. Di conseguenza, l'utente di client NFS potrà accedere ai filesystem del
server senza aver eseguito l'accesso al sistema server. Per ulteriori informazioni sul
controllo dell'accesso ai filesystem esportati, consultare exports(4) e per delle linee guida
sulla protezione, vedere la Sezione 6.10.2.3.
6.10.2.1 Vulnerabilità del server
La sicurezza del server è ottenuta impostando autorizzazioni restrittive nel file /etc/
exports. I privilegi di root non saranno mantenuti attraverso NFS. L'avere privilegi di
root in un sistema client non fornirà quindi un accesso speciale al server.
Il server esegue remotamente per i client lo stesso controllo delle autorizzazioni eseguito
localmente per i propri utenti. Il lato server controlla l'accesso dei client al server di file
confrontando ID utente e ID gruppo del client, ricevuti attraverso la rete, con ID utente e
ID gruppo del server di file. Il controllo avviene all'interno del kernel.
Un utente con privilegi in un client NFS potrebbe sfruttare questi privilegi per ottenere
accesso illimitato al server NFS.
NOTA: Non esportare mai dei filesystem in un nodo nel quale il privilegio è concesso
in modo più tollerante rispetto ai propri criteri per i nodi.
6.10.2.2 Vulnerabilità del client
Nelle release iniziali di NFS per workstation, l'inodo /dev doveva trovarsi nel disco
del client. NFS consente ora all'inodo /dev, contenente il numero maggiore e quello
minore dei file speciali di dispositivo montati nel client, di trovarsi nel lato server. Questo
apre la possibilità a qualcuno di creare un "cavallo di Troia", in grado di ignorare le
autorizzazioni impostate per il file speciale di dispositivo montato del client, ottenendo
l'accesso al file speciale di dispositivo attraverso il file e il numero di inodo trovato nel
lato server.
6.10 Controllo della protezione dei file in una rete
119
Anche se privo delle autorizzazioni necessaria a creare un file speciale di dispositivo
nel lato client, un intruso potrebbe creare un file speciale di dispositivo, come /dev/
kmem, che utilizza le autorizzazioni di root nel lato server. Il nuovo file /dev è creato
con lo stesso numero maggiore e minore del dispositivo bersaglio nel lato client, ma con
le seguenti autorizzazioni:
crw-rw-rw-
L'intruso potrebbe quindi raggiungere il client, eseguire l'accesso come utente ordinario
e, utilizzando NFS, aprire il file di dispositivo dal lato server appena creato, utilizzandolo
per scopi illeciti.
6.10.2.3 Tutela dei file montati su NFS
Seguono dei suggerimenti per proteggere i file montati con NFS:
•
Se possibile, controllare che la stessa persona amministri entrambi i sistemi, client
e server.
•
Mantenere uniformità tra ID utente e ID gruppo tra i sistemi server e client.
•
Controllare periodicamente i file /dev che si trovano nei filesystem esportati dal
server.
•
Limitare l'accesso in scrittura ai file /etc/passwd del client.
•
Per un controllo più severo, eseguire l'auditing tutti gli host accessibili attraverso la
rete.
•
Prendere in considerazione l'uso del comando fstab nosuid per proteggere il
sistema dai programmi setuid che possono essere eseguiti come root e
danneggiarlo. L'opzione di montaggio predefinita è suid, che consente ai
programmi montati con autorizzazione setuid di essere eseguiti con le
autorizzazioni dei loro proprietari, indipendentemente da chi li abbia avviati. Di
conseguenza, se un programma con autorizzazione setuid è di proprietà
dell'utente root, sarà eseguito con le autorizzazioni di root, indipendentemente da
chi lo ha avviato.
120 Protezione dei filesystem
7 Compartimenti
Questo capitolo descrive la funzionalità dei compartimenti di HP-UX 11i v3. Questo
capitolo tratta i seguenti argomenti:
•
Panoramica (Sezione 7.1)
•
Pianificazione della struttura dei compartimenti (Sezione 7.2)
•
Attivazione dei compartimenti (Sezione 7.3)
•
Modifica della configurazione dei compartimenti (Sezione 7.4)
•
Componenti dei compartimenti (Sezione 7.5)
•
Regole di compartimento e sintassi (Sezione 7.6)
•
Configurazione delle applicazioni nei compartimenti (Sezione 7.7)
•
Risoluzione dei problemi dei compartimenti (Sezione 7.8)
•
Utilizzo della modalità rilevamento per generare la configurazione iniziale dei
compartimenti (Sezione 7.9)
•
Compartimenti nei cluster di HP Serviceguard (Sezione 7.10)
7.1 Panoramica
I compartimenti sono un metodo per isolare l'uno dall'altro i componenti di un sistema.
Configurati in modo appropriato, sono un metodo efficace per proteggere il proprio
sistema HP-UX e i dati che contiene.
I compartimenti consentono di isolare i processi, o soggetti, l'uno dall'altro ed anche
dalle risorse, o oggetti.
Concettualmente, ogni processo appartiene ad un compartimento e le risorse sono gestite
in uno di due modi.
1. La risorsa è etichettata con il compartimento del processo che la origina. In questo
modo le risorse transitorie, come i punti finali di comunicazione e la memoria
condivisa, sono assegnate ad un compartimento.
2. Le risorse possono essere associate con una lista d'accesso, che specifica il modo
in cui i processi nei vari compartimenti possono accedere alle risorse, in particolare
a quelle permanenti come file e directory. Di conseguenza, i processi possono
accedere alle risorse o comunicare con processi che appartengono ad un
compartimento differente soltanto se esiste una regola che lega questi compartimenti.
I processi che appartengono allo stesso compartimento possono comunicare fra
loro ed accedere alle risorse di quel compartimento senza alcuna regola.
7.1 Panoramica
121
I compartimenti separano i soggetti dagli oggetti. Ciò consente il raggruppamento virtuale
di soggetti e oggetti correlati. È possibile configurare il sistema in modo tale che, se un
servizio eseguito in un compartimento è compromesso, non influisca sui servizi eseguiti
in altri compartimenti. Ciò riduce eventuali danni, limitandoli al compartimento interessato.
7.1.1 Architettura dei compartimenti
I compartimenti isolano un processo ed i suoi processi figlio all'interno di un sistema. La
Figura 7-1 mostra un processo genitore che origina diversi processi handler, i quali
devono accedere alle varie parti del sistema. I compartimenti del sistema sono configurati
in modo che i processi siano in grado di accedere alle risorse necessarie.
Figura 7-1 Architettura dei compartimenti
Compartimento
processo
server_genitore
server_figlio
lan compartimento 1
relazione dei processi
file e/o directory
accesso al file
rete
genitore
IPC
segnali
registratore
Tutti
handler
/
handler
/var/opt/server
logs
handler
a
lettur ttura
ri
/sc ra
a
r
u
u
it t
lett
cr
s
/
ra
tu
t
le
Rete
spool
Nella Figura 7-1, il processo genitore è configurato nel compartimento A. Operando, il
processo genitore origina diversi processi handler in un altro compartimento, il
compartimento B. I processi handler ereditano la configurazione del compartimento del
122
Compartimenti
processo genitore. La scheda di rete che collega il sistema alla LAN è configurata in un
altro compartimento, il compartimento C. Il filesystem è configurato in modo da consentire
pieno accesso al compartimento A, ma consente soltanto l'accesso parziale al
compartimento B. Le comunicazioni fra i componenti del sistema nei loro compartimenti
separati sono configurate nel modo seguente:
•
Tutti i processi handler sono configurati in modo da comunicare con la rete.
•
Il registratore può accedere al filesystem.
•
I processi handler hanno accesso di lettura e lettura/scrittura a parti del filesystem.
•
I processi handler possono comunicare con il processo genitore e con il registratore
utilizzando IPC e i segnali.
•
La rete è isolata dal registratore e dal processo genitore.
Questa configurazione dei compartimenti garantisce protezione al filesystem ed al
registratore. Entrambi sono isolati dai loro compartimenti. Anche se i processi handler
possono comunicare con la rete, il recorder o il processo genitore non possono accedere
ad essa.
7.1.2 Configurazione predefinita dei compartimenti
Quando si abilitano i compartimenti, sarà creato il compartimento predefinito INIT.
All'avvio del sistema, il processo init apparterrà a questo compartimento. Il
compartimento INIT è definito in modo da avere accesso a tutti gli altri compartimenti
e non è definito nel file delle regole di compartimento.
IMPORTANTE: Se si ridefinisce il compartimento INIT creando regole esplicite nel file
delle regole, tutte le caratteristiche speciali del compartimento saranno perse e non sarà
possibile ripristinarle senza riavviare il sistema.
7.2 Pianificazione della struttura dei compartimenti
Pianificare la struttura del compartimento prima di cominciare a definirne le regole.
Per pianificare la struttura del compartimento, rispondere alle seguenti domande:
•
Si desidera isolare diversi gruppi o utenti che accedono al sistema? Ad esempio,
il sistema è utilizzato sia dal settore contabilità sia dal settore risorse umane; è
necessario mantenere separati questi due gruppi di utenti?
•
Si desidera isolare un'interfaccia di rete di questo sistema, che comunica fuori dal
firewall, dal resto del sistema, che comunica soltanto all'interno del firewall?
•
I criteri di protezione riguardano requisiti o problemi che è possibile risolvere
utilizzando i compartimenti?
•
I criteri di protezione specificano o suggeriscono una determinata configurazione
delle regole di compartimento?
7.2 Pianificazione della struttura dei compartimenti
123
Una volta risposto a queste domande, usare le risposte per determinare come assegnare
le varie parti del sistema a specifici compartimenti.
Quando si pianifica la configurazione dei compartimenti, tenere presenti i consigli
seguenti:
•
Archiviare tutti i file di configurazione nella directory /etc/cmpt.
È possibile usare la direttiva #include per creare in una qualsiasi ubicazione del
sistema i file di configurazione dei compartimenti. Tuttavia, HP sconsiglia l'uso di
questa opzione. Invece, è opportuno tenere insieme i file di configurazione dei
compartimenti, per individuarli con facilità.
•
Sviluppare una configurazione separata dei compartimenti per ogni componente
del sistema.
A meno che ci sia una specifica e definita dipendenza software tra due componenti,
non unire le regole per componenti diversi. Un compartimento componente non
contiene regole che fanno riferimento a compartimenti di un altro componente. Se
fosse necessario rimuovere un componente, se le configurazioni dei compartimenti
sono state mantenute separate sarà possibile modificarle più facilmente.
•
Creare un file di configurazione del compartimento per ogni componente software.
Ciò consentirà di rimuovere facilmente la configurazione del compartimento, una
volta rimosso il software dal sistema. Sarà inoltre possibile individuare facilmente
tutte le regole relative al componente software.
•
Alcuni prodotti software sono forniti con regole di compartimento già configurate.
Modificare queste regole è sconsigliato.
Prima di modificare delle configurazioni del compartimento predefinite, accertarsi
di conoscere la configurazione esistente. Leggere la documentazione del prodotto
software ed esaminare con attenzione la configurazione esistente.
ATTENZIONE: Non ridefinire il compartimento INIT esistente. Se si tenta di modificare
o ridefinire il compartimento INIT, tutte le definizioni generate automaticamente saranno
eliminate ed i compartimenti non funzioneranno in modo appropriato.
7.3 Attivazione dei compartimenti
Per attivare le regole di compartimento nel sistema, eseguire queste operazioni:
1.
124
Pianificare le regole di compartimento. Per ulteriori informazioni, vedere la
Sezione 7.2.
Compartimenti
SUGGERIMENTO: HP consiglia di pianificare con cura la configurazione delle
regole di compartimento. Dopo avere modificato ed implementato la configurazione
in un sistema di produzione, sarà difficile modificarla. Quando si modifica la
configurazione di un compartimento, è necessario modificare le procedure per gli
utenti, gli script e gli strumenti.
2.
3.
Creare le regole del compartimento. Per le istruzioni necessarie per completare
questa fase e per una descrizione completa della sintassi delle regole di
compartimento, vedere la Sezione 7.6.
(Facoltativo) Per l'anteprima delle regole di compartimento, digitare il comando
seguente:
# setrules -p
L'opzione -p analizza l'elenco delle regole configurate e segnala eventuali
discrepanze nella sintassi e nella semantica. HP consiglia di eseguire questa
operazione prima di abilitare nel sistema le regole di compartimento.
4.
5.
(Facoltativo) Fare copie di backup dei file di configurazione dei compartimenti.
Collocare questi file fuori dalla directory /etc/cmpt, oppure omettere il suffisso
.rules. Fare ciò consentirà di ripristinare facilmente la situazione di partenza in
caso di problemi durante la modifica.
Abilitare la funzionalità dei compartimenti digitando il comando seguente:
# cmpt_tune -e
6.
Riavviare il sistema. Questa operazione è obbligatoria.
SUGGERIMENTO: Conservare i file di backup; ciò agevolerà il ripristino di una
configurazione precedente.
7.4 Modifica della configurazione dei compartimenti
È possibile creare nuovi compartimenti e modificare quelli esistenti senza riavviare il
sistema. Abilitando o disabilitando la funzionalità dei compartimenti, oppure rimuovendo
completamente un compartimento, sarà necessario riavviare il sistema. Tuttavia, se si
rimuovono tutte le regole associate ad un compartimento e tutti i riferimenti a quel
compartimento, è possibile lasciare il compartimento nel sistema fino al riavvio successivo.
Per maggiori informazioni sulle implicazioni della modifica al nome di un compartimento,
vedere la Sezione 7.4.2.
È possibile aggiungere nuove regole di compartimento, eliminare le regole non necessarie
e modificare quelle esistenti. È inoltre possibile modificare i nomi dei compartimenti
esistenti.
Le sezioni seguenti descrivono come modificare la configurazione dei compartimenti.
7.4 Modifica della configurazione dei compartimenti
125
7.4.1 Modifica delle regole di compartimento
1.
2.
(Facoltativo) Fare copie di backup temporanee dei file di configurazione che si
prevede di modificare. Collocare questi file fuori dalla directory /etc/cmpt, oppure
omettere il suffisso .rules. Fare ciò consentirà di ripristinare facilmente la situazione
di partenza in caso di problemi durante la modifica.
Per esaminare le regole di compartimento correnti, usare il comando seguente:
# getrules
3.
4.
Creare o modificare le regole del compartimento. Per le istruzioni necessarie per
completare questa fase e per una descrizione completa della sintassi delle regole
di compartimento, vedere la Sezione 7.6.
(Facoltativo) Per l'anteprima delle regole di compartimento, digitare il comando
seguente:
# setrules -p
L'opzione -p analizza l'elenco delle regole configurate e segnala eventuali
discrepanze nella sintassi e nella semantica. HP consiglia di eseguire questa
operazione prima di abilitare nel sistema le regole di compartimento.
5.
6.
(Facoltativo) Fare copie di backup dei file di configurazione dei compartimenti.
Per caricare le regole configurate, eseguire il comando setrules:
# setrules
7.4.2 Modifica del nome del compartimento
È possibile modificare il nome dei compartimenti. Tuttavia, cambiare il nome di un
compartimento può influire sulle applicazioni già configurate con i nomi dei compartimenti
esistenti. Modificando il nome di un compartimento, sarà necessario riconfigurare anche
le applicazioni configurate in quel compartimento.
NOTA: Rinominando un compartimento, in sostanza si crea un nuovo compartimento
e si rimuove il compartimento con il vecchio nome. Per vedere il nuovo compartimento
sarà necessario modificare tutti i riferimenti. Il vecchio compartimento continuerà ad
esistere nel sistema fino al riavvio.
7.5 Componenti dei compartimenti
La funzionalità dei compartimenti comprende un insieme di file di configurazione e di
comandi per configurare e gestire i compartimenti. Come guida per l'utilizzo delle
funzionalità dei compartimenti, sono fornite le manpage. Questi componenti sono elencati
nelle sezioni seguenti:
126
Compartimenti
7.5.1 File di configurazione dei compartimenti
La Tabella 7-1 descrive brevemente i file utilizzati con i componenti dei compartimenti.
Tabella 7-1 File di configurazione dei compartimenti
File di configurazione
Descrizione
/etc/cmpt
La directory in cui si trovano i file delle regole di
compartimento.
/etc/cmpt/*.rules
Il file che contiene le regole di compartimento configurate
per il sistema.
/etc/cmpt/hardlinks/
hardlinks.config
Il file che contiene i punti di montaggio validi da analizzare
per il controllo di coerenza delle regole di compartimento
per i file con collegamenti hardware multipli che puntano a
loro.
7.5.2 Comandi dei compartimenti
La Tabella 7-2 contiene i comandi utilizzati per gestire i compartimenti.
Tabella 7-2 Comandi dei compartimenti
Comando
Descrizione
cmpt_tune
Interroga, abilita e disabilita la funzionalità dei compartimenti.
setfilexsec
Imposta gli attributi di protezione dei file binari, compreso l'attributo
del compartimento.
getfilexsec
Visualizza gli attributi di protezione associati ai file binari eseguibili,
compreso l'attributo del compartimento.
getprocxsec
Visualizza gli attributi di protezione dei processi, compreso l'attributo
del compartimento.
getrules
Visualizza le regole del compartimento attive nel kernel.
setrules
Attiva nel kernel le regole nuove o modificate.
Con l'opzione -p, visualizza le regole modificate per esaminarle senza
trasmetterle al kernel.
vhardlinks
Controlla la coerenza delle regole di compartimento per i file che hanno
più collegamenti hardware, per accertarsi che non ci siano regole di
accesso in conflitto fra loro.
7.5 Componenti dei compartimenti
127
7.5.3 Manpage dei compartimenti
La Tabella 7-3 contiene le manpage relative ai compartimenti.
Tabella 7-3 Manpage dei compartimenti
Manpage
Descrizione
compartments(4)
Descrive la sintassi delle regole di compartimento.
compartments(5)
Fornisce una panoramica della funzionalità dei compartimenti e descrive
l'uso delle regole di compartimento.
cmpt_tune(1M)
Descrive le funzionalità e la sintassi di cmpt_tune.
setfilexsec(1M)
Descrive le funzionalità e la sintassi di setfilexsec.
getfilexsec(1M)
Descrive le funzionalità e la sintassi di getfilexsec.
getprocxsec(1M)
Descrive le funzionalità e la sintassi di getprocxsec.
getrules(1M)
Descrive le funzionalità e la sintassi di getrules.
setrules(1M)
Descrive le funzionalità e la sintassi di setrules.
vhardlinks(1M)
Descrive le funzionalità e la sintassi di vhardlinks.
7.6 Regole di compartimento e sintassi
Un compartimento è costituito da un nome e da un insieme di regole. Questa sezione
descrive i quattro tipi di regole di compartimento:
•
Regole per i filesystem
•
Regole per IPC
•
Regole per la rete
•
Regole varie
Aggiungere regole ad un file creato nella directory /etc/cmpt. È possibile modificare
questo file usando vi o un editor di testo simile. Il file delle regole deve avere l'estensione
.rules.
Per ulteriori informazioni, vedere compartments(5).
7.6.1 Definizione dei compartimenti
Definire i compartimenti configurando un nome per ciascuno di essi ed associando al
nome una o più regole di compartimento. È possibile specificare le regole in qualsiasi
ordine.
La sintassi di una definizione di compartimento è la seguente:
[sealed] [discover] compartment nome_nuovo_compartimento { regole }
dove:
128
Compartimenti
sealed
discover
compartment
nome_nuovo_compartimento
{}
(Facoltativo) Un processo in questo compartimento
non può ottenere privilegi o cambiare
compartimento chiamando execve().
(Facoltativo) Rileva ed aggiunge automaticamente
le regole, in modo da ignorare le violazioni del
compartimento. Questa è una funzionalità in via
di sviluppo per determinare le regole necessarie
e non dovrebbe essere utilizzata in un sistema di
produzione. Per ulteriori informazioni su questa
parola chiave, vedere la Sezione 7.9.
Indica che la regola è una definizione di
compartimento.
L'etichetta associata al nuovo compartimento.
Questa etichetta fa distinzione tra lettere
maiuscole e minuscole. Ad esempio,
compartimento_a e Compartimento_A sono
compartimenti diversi.
Racchiude le regole di questo compartimento.
Ad esempio:
sealed compartment server_figlio {
/* Nega l'accesso a qualsiasi oggetto del filesystem ... */
permission none /
}
NOTA: Il nome del compartimento INIT non fa distinzione tra lettere maiuscole e
minuscole. INIT, init e Init sono considerati dal sistema come lo stesso
compartimento.
Le specificazioni dei compartimenti sono preelaborate da cpp() prima che inizi la loro
analisi. Questo è il motivo per cui per organizzare e documentare i file delle regole
sono utilizzate le direttive cpp(), come #include, #define, #ifdef, ed commenti
nella sintassi C.
7.6.2 Regole per i filesystem
Le regole per i filesystem governano l'accesso dei processi ai file ed alle directory del
sistema. Le regole per i filesystem sono trasmesse dalla directory di livello superiore a
tutte le sottodirectory ed ai file in essa contenuti, a meno che una regola esplicita consenta
di ignorare questa ereditarietà.
Per impostazione predefinita, se non sono state specificate delle autorizzazioni un oggetto
del filesystem le otterrà tutte.
La sintassi delle regole per i filesystem è la seguente:
7.6 Regole di compartimento e sintassi
129
(permission|perm) elenco_autorizzazioni oggetto_file
dove:
permission o perm
elenco_autorizzazioni
oggetto_file
Imposta le autorizzazioni di un file o di una directory.
I tipi di autorizzazione che è possibile applicare ad
un file o ad una directory sono:
•
none: nega tutte le autorizzazioni per un file o
una directory.
•
read: controlla l'accesso in lettura all'oggetto.
Se l'oggetto è un file, sono controllate la lettura
e l'esecuzione di questo file. Se l'oggetto è una
directory, sono controllate la ricerca e
l'elencazione della directory. Inoltre, per motivi
di ereditarietà, è controllata la lettura di tutti i file
in quella directory. Per poterli aprire ed eseguirli,
i file devono avere accesso in lettura.
•
write: controlla l'accesso in scrittura all'oggetto.
Se l'oggetto è un file, è controllata la scrittura nel
file. Se l'oggetto è una directory, per ragioni di
ereditarietà, è controllata la scrittura di tutti i file
nella directory.
•
create: controlla la possibilità di creare oggetti.
Si applica soltanto agli oggetti della directory.
Questa dipendenza è ereditata da tutte le
directory contenute in quella specificata.
•
unlink: controlla la possibilità di eliminare
oggetti. Si applica soltanto agli oggetti della
directory. Questa dipendenza è ereditata da tutte
le directory contenute in quella specificata.
•
nsearch: controlla la capacità di cercare un
elemento se oggetto_file è una directory.
Questo attributo non è ereditato dalle
sottodirectory.
Il percorso completo del file o della directory.
Ad esempio:
/* nega tutte le autorizzazioni salvo quella di lettura nell'intero sistema */
perm read /
/* tranne che per questa directory
*/
perm read,write,create,unlink /var/opt/server
/* solo per leggere e scrivere i file di log, non per crearli */
perm read,write /var/opt/server/logs
130 Compartimenti
NOTA: Per assegnare una qualsiasi autorizzazione ad un oggetto del filesystem, il
compartimento deve avere un numero minimo di autorizzazioni in lettura in tutte le
directory di livello superiore all'oggetto. Ad esempio, per assegnare le autorizzazioni
in lettura e scrittura a /var/opt/tmp/file1, è necessario assegnare le autorizzazioni
in lettura a /var/opt/tmp, /var/opt, /var e /.
7.6.3 Regole per IPC
Le regole per Interprocess communication (IPC) determinano il modo in cui i processi
usano i metodi di comunicazione tra processi fra i compartimenti. I metodi di
comunicazione IPC comprendono la comunicazione diretta da processo a processo o
l'accesso condiviso ad un oggetto IPC. Quando un oggetto è associato ad un processo,
l'oggetto esiste nello stesso compartimento del processo che lo ha creato. Le regole di
compartimento sono definite per descrivere le relazioni fra il processo che accede
all'oggetto e l'oggetto a cui si fa accesso. Quando la regola descrive due processi che
comunicano l'uno con l'altro, il secondo processo è trattato come un oggetto. Il
comportamento predefinito degli oggetti IPC è di proibire tutte le operazioni tra
compartimenti diversi, a meno che una regola le consenta esplicitamente.
Esistono due tipi di regole IPC. La sintassi del primo tipo di regola è la seguente:
(grant|access) (pty|fifo|uxsock|ipc) nome_compartimento
dove:
Accesso
Metodo
Specifica se la regola è centrata sull'oggetto o sul soggetto.
Le opzioni sono:
•
grant: specifica una regola centrata sull'oggetto.
Questa regola consente ai processi del compartimento
nome_compartimento di accedere al meccanismo
IPC specificato nel compartimento corrente.
•
access: specifica una regola centrata sul soggetto.
Questa regola consente ai processi del compartimento
corrente di accedere al meccanismo IPC specificato
del compartimento nome_compartimento.
Specifica il metodo di comunicazione a cui è applicata
questa regola. Le opzioni sono:
•
pty: specifica che la regola si applica al pty usato
nelle comunicazioni tra processi.
•
fifo: specifica che la regola si applica ai FIFO.
•
uxsock: specifica che la regola si applica ai socket
di dominio UNIX.
7.6 Regole di compartimento e sintassi
131
•
nome_compartimento
ipc: specifica che la regola si applica agli oggetti
IPC SYSV e POSIX, come la memoria condivisa, i
semafori e le code messaggi.
Il nome dell'altro compartimento con cui i processi del
compartimento corrente possono comunicare.
Ad esempio:
/* consente al compartimento figlio di accedere ai socket */
/* del dominio UNIX creati dal compartimento padre */
grant uxsock server_figlio
Il secondo tipo di regola IPC determina l'accesso ai processi. La sintassi di questo tipo
di regola è la seguente:
(send|receive) signal nome_compartimento
dove:
Direzione
signal
nome_compartimento
Specifica se i processi del compartimento corrente hanno
accesso per osservare ed alterare il comportamento dei
processi di un altro compartimento specificato. Le opzioni
sono:
•
send: specifica una regola centrata sul soggetto.
Consente ai processi del compartimento corrente di
inviare segnali ed osservare dati del processo nel
compartimento nome_compartimento.
•
receive: specifica una regola centrata sull'oggetto.
Consente ai processi del compartimento
nome_compartimento di inviare segnali ed
osservare dati del processo nel compartimento
corrente.
Specifica che questa regola si applica alla visibilità di
segnali e processi.
Il nome dell'altro compartimento in cui i processi del
compartimento corrente possono accedere per vedere le
informazioni sui processi o dai quali possono essere visti.
Ad esempio:
/* consente al genitore di inviare segnali al figlio */
send signal server_children
132
Compartimenti
7.6.4 Regole per la rete
Le regole per la rete determinano l'accesso alle interfacce di rete. Le regole per la rete
determinano inoltre le comunicazioni tra i processi che usano le comunicazioni di dominio
INET (socket e stream TCP/IP). Il comportamento predefinito è di proibire l'accesso alla
rete.
I punti finali della rete sono considerati come oggetti, etichettati con il compartimento
del processo che li crea. Tuttavia, un punto finale di rete può essere creato da un
processo, quindi trasmesso ad un altro, il quale può essere eseguito in un altro
compartimento. I controlli dell'accesso avvengono nel compartimento che conteneva il
punto finale al momento della creazione di quest'ultimo, non nel compartimento corrente.
Inoltre, il punto finale trasmette la sua configurazione di compartimento ai punti finali
che la accettano quando esso riceve delle nuove connessioni.
I punti finali di dominio INET sono frequentemente utilizzati per le comunicazioni tra
processi. Assicurarsi di configurare i comportamenti in modo di conseguenza.
La sintassi di una regola per la rete è la seguente:
(grant|deny) (server|client|bidir) (tcp|udp|raw [numero_protocollo] )
[port numero_porta] [peer[portporta]] nome_compartimento
dove:
Accesso
Direzione
Consente o nega l'accesso del compartimento al traffico
di rete del compartimento specificato. Le opzioni sono:
•
grant
•
deny
Specifica la direzione alla quale si applica la regola. Le
opzioni sono:
•
server: questa regola si applica soltanto alle richieste
in ingresso. Con TCP, questa regola controlla soltanto
le connessioni in ingresso. Con UDP e RAW, questa
regola si applica a tutti i pacchetti in ingresso.
•
client: questa regola si applica soltanto alle richieste
in uscita. Con TCP, questa regola controlla soltanto
l'inizializzazione delle connessioni. Con UDP e RAW,
questa regola si applica a tutti i pacchetti in uscita.
•
bidir: questa regola si applica alle richieste in
ingresso ed in uscita. Con TCP, questa regola controlla
le connessioni iniziate e ricevute dal punto finale. Con
UDP e RAW, questa regola si applica a tutti i pacchetti
che attraversano il punto finale.
7.6 Regole di compartimento e sintassi
133
Protocollo
numero_protocollo
port
porta
peer
nome_compartimento
Specifica il protocollo di rete a cui si applica questa regola.
Le opzioni sono:
•
tcp: questa regola si applica soltanto al protocollo
TCP.
•
udp: Questa regola si applica al protocollo UDP.
•
raw: questa regola si applica a qualsiasi altro
protocollo nel dominio INET.
Il numero di protocollo specificato per questa regola.
L'opzione numero_protocollo è pertinente soltanto alla
specificazione raw.
(Facoltativo) Specifica che questa regola si applica ad una
porta specifica.
Identifica la porta specificata in questa regola.
(Facoltativo) Le informazioni sulle porte si applicano ai
punti finali paritari interessati alla comunicazione di questa
regola.
Il nome del compartimento associato al punto finale
paritario o all'interfaccia ai quali si applica la regola.
Ad esempio:
/* consente tutte le connessioni TCP in ingresso (qualsiasi porta)
dalle interfacce etichettate lancmpt1 */
grant server tcp lancmpt1
/* consente i lookup dei client DNS (TCP e UDP) tramite l'interfaccia lancmpt1 */
grant client tcp port 53 lancmpt1
grant bidir udp port 53 lancmpt1
/* consente solo le connessioni telnet in uscita tramite
l'interfaccia ifacelan0 */
grant client tcp peer port 23 ifacelan0
/* consente tutto il traffico TCP tranne quello telnet
in ingresso tramite l'interfaccia ifacelan0 */
/* è possibile specificare le due righe seguenti in
qualsiasi ordine */
grant bidir tcp ifacelan0
deny server tcp port 23 ifacelan0
/* consente il traffico in ingresso del server web tramite
l'interfaccia lan1cmpt */
grant server tcp port 80 lan1cmpt
134
Compartimenti
Per ulteriori informazioni sulle regole per la rete, consultare compartments(4).
7.6.5 Regole varie
Alcune regole non appartengono in modo chiaro ad una categoria.
Regole per l'interfaccia di rete Una regola per l'interfaccia di rete specifica il
compartimento al quale appartiene l'interfaccia. Un'interfaccia di rete che non si trova
in un compartimento non potrà essere portata in linea.
NOTA: Per criteri protezione più rigidi, configurare le interfacce di rete in compartimenti
separati da quelli assegnati ai processi. Definire di conseguenza le regole per l'accesso
di rete di ogni compartimento. I compartimenti uguali hanno sempre pieno accesso l'uno
all'altro.
La sintassi della regola per l'interfaccia di rete è la seguente:
compartment nome_compartimento {
interface interfaccia_o_ip[,interfaccia_o_ip][...]
}
dove:
interface
Specifica che questa è una definizione di
interfaccia.
interfaccia_o_ip[,interfaccia_o_ip][...] Elenco dei nomi d'interfacce, indirizzi IP o
intervalli di indirizzi IP, separati da virgole. È
possibile specificare gli intervalli o gli indirizzi IP
come indirizzi IPv4 o IPv6, con una maschera
facoltativa.
Ad esempio:
compartment iface0 {
/* Definisce il compartimento dell'interfaccia di rete lan0 */
interface lan0
/* Tutti gli indirizzi nell'intervallo 192.168.0.0-192.168.0.255 */
interface 192.160.0.0/24
}
compartment other_ifaces {
/* Definisce il compartimento di due delle altre interfacce */
interface lan1,lan5
Regole per la restrizione dei privilegi Una regola per la restrizione dei privilegi controlla
l'ereditarietà dei privilegi. Non è possibile ottenere i privilegi indicati nella regola per
la restrizione con execve(2).
La sintassi delle regole per la restrizione dei privilegi è:
disallowed privileges
privilegio[,privilegio[...]]
dove:
7.6 Regole di compartimento e sintassi
135
Specifica che questa è una regola per la
restrizione dei privilegi.
privilegio[,privilegio[...]] Elenco di privilegi separati da virgole. È possibile
utilizzare le seguenti parole chiave aggiuntive:
disallowed privileges
•
all: nega tutti i privilegi
•
none: consente tutti i privilegi
•
!: indica un'eccezione
Ad esempio:
/* Nega tutti i privilegi, tranne mount. */
disallowed privileges all,!mount
/* Nega solamente mount. */
disallowed privileges none,mount
Se non sono state specificate delle regole per la restrizione dei privilegi di un
compartimento, in ciascun compartimento la restrizione predefinita dei privilegi è
basicpolicy,mknod, tranne per quello INIT. La restrizione predefinita dei privilegi
del compartimento INIT è none.
7.6.6 Esempio di file di regole
Un esempio di file di regole si trova in /etc/cmpt/examples/sendmail.example.
7.7 Configurazione delle applicazioni nei compartimenti
È possibile configurare un'applicazione in modo che sia eseguita in un compartimento
particolare. Per configurare l'attributo del compartimento di un file binario, usare il
comando setfilexsec. Ad esempio, per configurare l'applicazione apple nel
compartimento fruit, digitare il comando seguente:
# setfilexsec -c fruit apple
In alternativa, è possibile usare HP-UX RBAC per configurare un'applicazione da eseguire
in un compartimento. Vedere la Sezione 9.5.5.
7.8 Risoluzione dei problemi dei compartimenti
Nel caso qualcosa non funzioni nel sistema e si ritenga che il problema sia dovuto alla
struttura dei compartimenti, è possibile controllare le regole dei compartimenti nel modo
seguente.
Problema 1: L'accesso non è controllato in base alle regole del compartimento
configurate. Soluzione: le regole potrebbero non essere state impostate nel kernel.
Per controllare se le regole sono state impostate nel kernel, seguire questa procedura:
1.
Elencare le regole del compartimento valide nel kernel utilizzando il comando
seguente:
# getrules
136
Compartimenti
2.
Elencare tutte le regole configurate nel sistema, comprese le regole che non sono
state caricate nel kernel, utilizzando il comando seguente.
# setrules -p
3.
Confrontare l'output dei due comandi. Se sono uguali, tutte le regole sono caricate
nel kernel. Se l'output è diverso, sarà necessario caricare nel kernel le regole
mancanti.
4.
Per caricare le regole nel kernel, usare il comando seguente:
# setrules
Problema 3: L'accesso ad un file non funziona in modo appropriato. Soluzione: se a
questo file puntano più collegamenti hardware, la configurazione delle regole del
compartimento potrebbe contenere regole di accesso al file incoerenti. Per controllare
la presenza di eventuali incoerenze, seguire questa procedura:
1.
Eseguire il comando seguente:
# vhardlinks
Se l'output mostra un'incoerenza, andare al punto 2.
2.
Modificare le regole per eliminare l'incoerenza. Seguire la procedura descritta in
Sezione 7.4.
Problema 4: Le regole per il server di rete non sono presenti nell'output di
getrules. Soluzione: a causa della modalità con cui sono gestite internamente, le regole
per un server di rete di un dato compartimento potrebbero essere elencate nell'output
del compartimento di destinazione del comando getrules.
Ad esempio:
/* Regola per un compartimento telnet che consente le richieste telnet
in ingresso tramite il compartimento ifacelan0 */
grant server tcp port 23 ifacelan0
Se è stata specificata questa regola, sarà elencata nell'output del compartimento
ifacelan0 con getrules.
ACCESS
Grant client
PROTOCOL
tcp
SRCPORT
0
DESPORT
23
DESCMPT
telnet
7.9 Utilizzo della modalità rilevamento per generare la configurazione
iniziale dei compartimenti
La definizione di un compartimento può essere etichettata con la parola chiave discover.
Vedere la Sezione 7.6.1. La parola chiave discover indica al sistema di rilevare tutte
le regole necessarie per il corretto funzionamento dell'applicazione. Questa funzionalità
è prevista per essere utilizzata solo in un ambiente di prova.
7.9 Utilizzo della modalità rilevamento per generare la configurazione iniziale dei compartimenti
137
Per usare la modalità discover, contrassegnare un compartimento come discover
ed eseguire l'applicazione come si farebbe normalmente. Il sistema identificherà tutti gli
accessi alle risorse e creerà le regole necessarie.
Dopo l'esecuzione iniziale dell'applicazione, usare il comando getrules –m
nome_compartimento per generare una versione delle regole leggibile dalla macchina.
Le regole generate dal sistema sono necessarie per per il corretto funzionamento
dell'applicazione in un ambiente di prova, ma potrebbe essere necessario generalizzarle.
Ad esempio, il sistema potrebbe generare una regola che interessa un numero di porta
all'interno di un intervallo non specificato, in cui il kernel, e non l'applicazione, sceglie
il numero della porta. Eseguendo nuovamente l'applicazione, il numero di porta risultante
potrebbe essere diverso e richiedere una regola differente. Potrebbe essere necessario
generalizzare la regola in modo da specificare tutte le porte o almeno quelle comprese
nell'intervallo non specificato.
7.10 Compartimenti nei cluster di HP Serviceguard
Se si usano i compartimenti con HP Serviceguard, sarà necessario configurare tutti i
daemon di Serviceguard nel compartimento predefinito INIT. Tuttavia, sarà possibile
configurare i pacchetti di Serviceguard in altri compartimenti. Per i daemon necessari
a Serviceguard ed alle estensioni di Serviceguard per Real Application Cluster (RAC) di
Oracle, consultare le edizioni più recenti di Managing Serviceguard e Using Serviceguard
Extension for RAC.
I pacchetti di Serviceguard possono appartenere a compartimenti specifici. Anche la
applicazioni monitorate in quanto parte di un pacchetto Serviceguard possono essere
configurate in compartimenti specifici. Quando si imposta il compartimento per un
pacchetto, accertarsi che le risorse necessarie al pacchetto – come i gruppi di volumi, i
filesystem, gli indirizzi di rete e così via – siano accessibili da tale compartimento. Le
regole per il compartimento sono specifiche per il nodo e non saranno trasportate durante
le operazioni di failover di Serviceguard. Per garantire il corretto funzionamento dopo
un failover, in tutti i nodi nel cluster i compartimenti devono avere la stessa configurazione.
Quando un'interfaccia di LAN primaria esegue il failover in un'interfaccia LAN in standby,
l'etichetta del compartimento dell'interfaccia primaria sarà copiata automaticamente in
quella in standby, fintanto che quest'ultima non è in linea. Se l'interfaccia in standby è
già stata configurata in linea, affinchè sia possibile il failover l'interfaccia in standby e
quella primaria devono essere state configurate nello stesso compartimento. Se
l'interfaccia in standby è stata configurata in un compartimento diverso da quello
dell'interfaccia primaria, ma non è in linea al momento del failover, al momento del
failover dell'interfaccia primaria quella in standby sarà aggiornata secondo la
configurazione del compartimento dell'interfaccia primaria.
Per garantire il corretto funzionamento di Serviceguard quando si mettono in attività i
compartimenti nei nodi o nei pacchetti di HP Serviceguard:
•
138
Non modificare in alcun modo le specifiche del compartimento INIT.
Compartimenti
•
Accertarsi che inetd sia eseguito nel compartimento INIT.
•
Accertarsi che tutti i daemon di Serviceguard in un cluster siano eseguiti nel
compartimento INIT. Ad esempio, i daemon per Serviceguard versione A.11.16
comprendono cmclconfd, cmcld, cmlogd, cmlvmd, cmomd e cmsnmpd. Per
l'elenco completo dei daemon Serviceguard, vedere Managing Serviceguard.
•
Accertarsi che tutti i cluster di Serviceguard soddisfino i requisiti per le estensioni
Serviceguard dei cluster RAC. Inoltre, i cluster che utilizzano Serviceguard Extension
for RAC versione A.11.16 richiedono che il daemon cmsmgd sia in esecuzione nel
compartimento INIT. I processi RAC devono avere accesso alla libreria libnmapi2
e devono comunicare con cmsmgd. Per i daemon e le librerie necessari, vedere
Using Serviceguard Extension for RAC.
•
Non configurare interfacce LAN in standby in un compartimento
•
Configurare i compartimenti e le regole in modo identico in tutti i nodi del cluster.
I compartimenti e le regole sono specifici per un sistema e non saranno trasportati
durante il failover di un sistema.
NOTA: Se un'interfaccia in standby è stata configurata in un compartimento,
l'esecuzione del comando setrules applicherà questo compartimento all'interfaccia
in standby anche se è stato trasferito da un'interfaccia primaria. Se il compartimento
configurato per l'interfaccia in standby non corrisponde a quello dell'interfaccia primaria,
eseguendo setrules il compartimento dell'interfaccia primaria sarà sovrascritto. Ciò
può causare violazioni della protezione.
Gli script di Serviceguard non sono stati modificati per facilitare l'uso di compartimenti,
dei privilegi ad alta definizione, o di RBAC.
7.10 Compartimenti nei cluster di HP Serviceguard
139
140
8 Privilegi ad alta definizione
Questo capitolo descrive la funzionalità dei privilegi ad alta definizione di HP-UX 11i.
Questo capitolo tratta i seguenti argomenti:
•
Panoramica (Sezione 8.1)
•
Componenti dei privilegi ad alta definizione (Sezione 8.2)
•
Privilegi disponibili (Sezione 8.3)
•
Configurazione delle applicazioni con privilegi ad alta definizione (Sezione 8.4)
•
Protezione e privilegi ad alta definizione (Sezione 8.5)
•
Privilegi ad alta definizione nei cluster Serviceguard (Sezione 8.6)
•
Risoluzione dei problemi dei privilegi ad alta definizione (Sezione 8.7)
8.1 Panoramica
Il sistema operativo UNIX usa tradizionalmente un modello di privilegi "tutto o niente",
in cui i superutenti – coloro che dispongono effettivamente di UID=0, come l'utente root
– hanno poteri virtualmente illimitati, mentre gli altri utenti hanno pochi privilegi speciali
o ne sono del tutto privi.
HP-UX offre numerosi metodi legacy per delegare prerogative limitate, fra cui la versione
limitata di smh(1M), i gruppi di privilegi descritti in privgrp(4), il file shutdown.allow
descritto in shutdown(1M) ed il file cron.allow descritto in crontab(1).
Questi metodi legacy possono essere sostituiti dall'uso dei privilegi ad alta definizione
e dalla struttura per il controllo dell'accessi di HP-UX RBAC.
Il modello dei privilegi ad alta definizione di HP-UX suddivide le prerogative dei
superutenti in un insieme di privilegi. I privilegi ad alta definizione sono attribuiti ai
processi. Ogni privilegio garantisce al processo che lo possiede il diritto ad un certo
insieme di servizi riservati offerti dal kernel.
Per ulteriori informazioni, vedere privileges(5).
8.2 Componenti dei privilegi ad alta definizione
La funzionalità dei privilegi ad alta definizione di HP-UX 11i comprende file di
configurazione, comandi e manpage. È possibile usare questi componenti per configurare
e gestire i privilegi ad alta definizione.
8.2.1 Comandi
La Tabella 8-1 descrive brevemente i comandi dei privilegi ad alta definizione.
8.1 Panoramica
141
Tabella 8-1 Comandi dei privilegi ad alta definizione
Comandi
Descrizione
setfilexsec
Imposta gli attributi di protezione dei file binari. Questi attributi
comprendono i privilegi conservati, i privilegi permessi, il
compartimento e il flag di avvio privilegiato.
getfilexsec
Visualizza gli attributi di protezione associati ai file binari eseguibili.
Gli attributi comprendono i privilegi conservati, i privilegi permessi, il
compartimento e i flag dell'attributo di protezione.
getprocxsec
Visualizza gli attributi di protezione associati ai processi in esecuzione.
Gli attributi comprendo l'insieme effettivo dei privilegi, l'insieme dei
privilegi conservati, l'insieme dei privilegi permessi, l'euid e il nome
del compartimento.
8.2.2 Manpage
La Tabella 8-2 descrive brevemente le manpage relative ai privilegi ad alta definizione.
Tabella 8-2 Manpage dei privilegi ad alta definizione
Manpage
Descrizione
privileges(5)
Panoramica dei privilegi di HP-UX.
privileges(3)
Descrive le interfacce dei privilegi ad alta definizione.
setfilexsec(1M)
Descrive le funzionalità e la sintassi di setfilexsec.
getfilexsec(1M)
Descrive le funzionalità e la sintassi di getfilexsec.
getprocxsec(1M)
Descrive le funzionalità e la sintassi di getprocxsec.
8.3 Privilegi disponibili
I privilegi ad alta definizione sono principalmente destinati agli sviluppatori. Tuttavia,
un amministratore potrebbe avere la necessità di conoscere i privilegi per comprendere
il funzionamento di quelle applicazioni e per scoprire se delle applicazioni non
autorizzate abbiano ottenuto dei privilegi.
La Tabella 8-3 elenca i privilegi ed i loro scopi principali.
Tabella 8-3 Privilegi disponibili
142
Privilegio
Descrizione
PRIV_ACCOUNTING
Consente ad un processo di controllare il sistema di conteggio dei
processi.
PRIV_AUDCONTROL
Consente ad un processo di avviare, modificare ed arrestare il
sistema di auditing.
PRIV_CHANGECMPT
Consente ad un processo di cambiare il suo compartimento.
Privilegi ad alta definizione
Tabella 8-3 Privilegi disponibili (segue)
Privilegio
Descrizione
PRIV_CHANGEFILEXSEC
Consente ad un processo di attribuire privilegi a file binari.
PRIV_CHOWN
Consente ad un processo di accedere alle chiamate di sistema
chown().
PRIV_CHROOT
Consente ad un processo di cambiare la sua directory root.
PRIV_CHSUBJIDENT
Consente ad un processo di cambiare il suo ID utente, l'ID gruppo
e l'elenco dei gruppi. Consente inoltre ad un processo di lasciare
impostati nel file i bit suid o sgid quando è utilizzata la chiamata
di sistema chown().
PRIV_CMPTREAD
Consente ad un processo di aprire un file o una directory per
leggere, eseguire o eseguire una ricerca, ignorando le regole di
compartimento che altrimenti non consentirebbero queste operazioni.
PRIV_CMPTWRITE
Consente ad un processo di scrivere in un file o in una directory,
ignorando le regole di compartimento che altrimenti non
consentirebbero questa operazione.
PRIV_COMMALLOWED
Consente ad un processo di ignorare le regole di compartimento
nei sottosistemi IPC e di rete.
PRIV_DACREAD
Consente ad un processo di ignorare tutte le restrizioni discrezionali
di lettura, esecuzione e ricerca.
PRIV_DACWRITE
Consente ad un processo di ignorare tutte le restrizioni discrezionali
di accesso in scrittura.
PRIV_DEVOPS
Consente ad un processo di compiere operazioni amministrative
specifiche di un dispositivo, come la formattazione di un nastro o
di un disco.
PRIV_DLKM
Consente ad un processo di caricare un modulo del kernel, ottenere
informazioni su un modulo del kernel caricato e cambiare i percorsi
globali di ricerca di un modulo del kernel caricabile dinamicamente.
PRIV_FSINTEGRITY
Consente ad un processo di eseguire operazioni con un disco, come
rimuovere o modificare la dimensione o i limiti delle partizioni di
dischi, oppure di importare ed esportare un gruppo di volumi LVM
all'interno del sistema.
PRIV_LIMIT
Consente ad un processo di impostare i limiti delle risorse e delle
priorità oltre i valori massimi del limite.
PRIV_LOCKRDONLY
Consente ad un processo di usare la chiamata di sistema lockf()
per bloccare i file aperti con autorizzazione in sola lettura.
PRIV_MKNOD
Consente ad un processo di creare file speciali a caratteri o di
blocco, usando la chiamata di sistema mknod().
PRIV_MLOCK
Consente ad un processo di accedere alla chiamata di sistema
plock.
8.3 Privilegi disponibili
143
Tabella 8-3 Privilegi disponibili (segue)
Privilegio
Descrizione
PRIV_MOUNT
Consente ad un processo di montare o smontare un filesystem,
usando le chiamate di sistema mount() e umount().
PRIV_MPCTL
Consente ad un processo di cambiare il vincolo dei processori, il
vincolo dei domini o i criteri di di avvio.
PRIV_NETADMIN
Consente ad un processo di eseguire operazioni amministrative di
rete, tra cui la configurazione delle tabelle di routing di rete e di
richiedere le informazioni dell'interfaccia.
PRIV_NETPRIVPORT
Consente ad un processo di essere vincolato ad una porta
privilegiata. Per impostazione predefinita, le porte da 0 a 1023
sono quelle privilegiate.
PRIV_NETPROMISCUOUS
Consente ad un processo di configurare un'interfaccia in modo che
sia in ascolto in modalità promiscua.
PRIV_NETRAWACCESS
Consente ad un processo di accedere ai protocolli raw per le reti
Internet.
PRIV_OBJSUID
Consente ad un processo di impostare in qualsiasi file i bit suid
o sgid se il processo ha il privilegio OWNER. Consente inoltre ad
un processo di cambiare la proprietà di un file senza eliminare i
bit suid o sgid, purché al processo sia consentito di cambiare la
proprietà del file.
PRIV_OWNER
Consente ad un processo di ignorare tutte le restrizioni relative alla
corrispondenza dell'ID utente con il proprietario del file o della
risorsa.
PRIV_PSET
Consente ad un processo di modificare la configurazione pset del
sistema.
PRIV_REBOOT
Consente ad un processo di eseguire le operazioni di riavvio.
PRIV_RTPRIO
Consente ad un processo di accedere alla chiamata di sistema
rtprio().
PRIV_RTPSET
Consente ad un processo di controllare gli insiemi di processori
RTE.
PRIV_RTSCHED
Consente ad un processo di impostare le priorità POSIX.4 in tempo
reale.
PRIV_RULESCONFIG
Consente ad un processo di aggiungere e modificare le regole di
compartimento in un sistema.
PRIV_SELFAUDIT
Consente ad un processo di generare record di auditing per se
stesso usando la chiamata di sistema audwrite().
144 Privilegi ad alta definizione
Tabella 8-3 Privilegi disponibili (segue)
Privilegio
Descrizione
PRIV_SERIALIZE
Consente ad un processo di usare la chiamata di sistema
serialize() per forzare l'esecuzione seriale del processo di
destinazione insieme ad altri processi contrassegnati la
serializzazione.
PRIV_SPUCTL
Consente ad un processo di svolgere determinate operazioni di
gestione del prodotto Instant Capacity.
PRIV_SYSATTR
Consente ad un processo di gestire gli attributi di sistema, tra cui
l'impostazione dei parametri sintonizzabili, la modifica del nome
host, del nome di dominio e delle quote utente.
PRIV_SYSNFS
Consente ad un processo di eseguire delle operazioni NFS, come
esportare un filesystem, la chiamata di sistema getfh(), il blocco
dei file NFS, la revoca delle autorizzazioni NFS e la creazione di
un thread del daemon del kernel NFS.
PRIV_TRIALMODE
Consente ad un processo di registrare nel file syslog le informazioni
della modalità di prova.
8.4 Configurazione delle applicazioni con privilegi ad alta definizione
Le applicazioni scritte o modificate per supportare i privilegi ad alta definizione sono
chiamate applicazioni in grado di rilevare i privilegi. È necessario registrare le
applicazioni in grado di rilevare i privilegi usando il comando setfilexsec. Una
volta registrate, gli attributi di protezione associati ad un file binario sono archiviati in
un file di configurazione e conservano la persistenza dopo i riavvii. Ciò avviene
normalmente quando le applicazioni in grado di rilevare i privilegi sono installate e
configurate con le utility SD-UX.
Le applicazioni HP-UX di vecchia data, o applicazioni legacy, non sono in grado di
rilevare i privilegi. È possibile configurare le applicazioni legacy con UID=0 in modo
che siano eseguite con privilegi ad alta definizione. Per configurare le applicazioni
legacy con HP-UX RBAC, vedere la Sezione 9.5.4.
SUGGERIMENTO: HP consiglia di usare HP-UX RBAC per configurare le applicazioni
che richiedono privilegi variabili per essere eseguite.
Per configurare gli attributi di protezione di un'applicazione in grado di rilevare i privilegi,
usare il comando setfilexsec nel modo seguente:
# setfilexsec [opzioni] nome_file
Il comando setfilexsec ha lo scopo di assegnare privilegi a file binari in un filesystem
locale. Non devono essere assegnati privilegi ai file binari ottenuti da un filesystem di
rete (NFS), perchè, se il file è modificato da un altro sistema (direttamente nel server
NFS), non saranno rimossi gli attributi estesi impostati da setfilexsec.
8.4 Configurazione delle applicazioni con privilegi ad alta definizione
145
Le opzioni di setfilexsec sono le seguenti:
-d
-D
-r
-R
-p
-P
-f
Elimina dal file di configurazione e dal kernel le informazioni di protezione di
questo file.
Elimina soltanto dal file di configurazione le informazioni di protezione di questo
file. È utilizzato per cancellare le informazioni di protezione di un file che è stato
eliminato.
Aggiunge o modifica i privilegi minimi conservati.
Aggiunge o modifica i privilegi massimi conservati.
Aggiunge o modifica i privilegi minimi permessi.
Aggiunge o modifica i privilegi massimi permessi.
Imposta i flag di un attributo di protezione.
Il comando getfilexsec visualizza gli attributi estesi di un file binario, impostati con
il comando setfilexsec.
# getfilexsec nome_file
8.4.1 Modello dei privilegi
A ciascun processo sono associati tre insiemi di privilegi:
•
Insieme dei privilegi permessi
L'insieme massimo di privilegi che un processo può ottenere. Il processo può
rinunciare a qualsiasi privilegio dell'insieme, ma non può aggiungerne di nuovi. È
possibile aggiungere all'insieme dei privilegi effettivi del processo dei privilegi di
questo insieme.
•
Insieme dei privilegi effettivi
L'insieme dei privilegi attivi di un processo al momento corrente. In un determinato
momento, un processo in grado di rilevare i privilegi può modificare l'insieme dei
privilegi effettivi per utilizzare soltanto quelli necessari all'interno dell'insieme. Il
processo può rimuovere dall'insieme dei privilegi effettivi qualsiasi privilegio, ma
può aggiungere soltanto privilegi dell'insieme dei privilegi effettivi.
L'insieme dei privilegi effettivi è sempre un sottoinsieme dell'insieme dei privilegi
permessi.
•
Insieme dei privilegi conservati
L'insieme dei privilegi conservati quando un processo esegue la chiamata di sistema
execve(). Il processo può rimuovere un qualsiasi privilegio di questo insieme, ma
non può aggiungerne di nuovi.
L'insieme dei privilegi conservati è sempre un sottoinsieme dell'insieme dei privilegi
permessi.
146
Privilegi ad alta definizione
Il primo processo, init, inizia con un insieme ridotto di privilegi. Crea quindi degli
altri processi, che eseguono altri file binari usando le chiamate della famiglia exec
(execv, execve, e così via). Durante la chiamata exec, gli attributi estesi del file
binario, impostati con il comando setfilexsec, possono far sì che questi processi
ottengano privilegi che il loro processo genitore non ha, o perdano privilegi che il loro
processo genitore possiede. Ad esempio, se un file binario ha un minimo permesso di
DACREAD (con file binario è stato eseguito setfilexsec –p DACREAD), il nuovo
processo avrà il privilegio DACREAD, indipendentemente dal fatto che il processo genitore
lo abbia o no. Tuttavia, se un processo ha già il privilegio DACREAD, ma esegue un file
binario che non ha questo privilegio nel massimo permesso (ad esempio, con il file è
già stato eseguito setfilexsec -P none ...), il processo perderà il privilegio
come effetto secondario dell'esecuzione del file binario.
8.4.2 Privilegi composti
I privilegi composti sono una scorciatoia per specificare un insieme predefinito di privilegi
semplici.
Quelli seguenti sono privilegi composti:
•
BASIC
Per impostazione predefinita, tutti i processi hanno privilegi di base. I processi
possono rinunciare ad uno o più privilegi di questo insieme.
•
BASICROOT
Privilegi di base e privilegi che forniscono prerogative solitamente associate con
UID=0.
•
POLICY
Policy ignora i privilegi e i privilegi di configurazione dei criteri. Policy ignora i
privilegi e le regole di compartimento. I privilegi di configurazione Policy controllano
come sono configurati i privilegi.
Per un elenco completo dei privilegi di ogni privilegio composto, vedere privileges(5).
8.5 Protezione e privilegi ad alta definizione
I privilegi ad alta definizione non sono propagati tra i sistemi distribuiti; sono applicati
soltanto al sistema locale. Ad esempio, un processo in un sistema che ha PRIV_DACREAD
e PRIV_DACWRITE non potrà ignorare le restrizioni discrezionali di accesso in lettura
e scrittura ad un file di un altro sistema.
8.5 Protezione e privilegi ad alta definizione
147
8.5.1 Aumento dei privilegi
In alcune situazioni, attribuendo ad un processo un certo privilegio o insieme di privilegi,
quel processo potrà ottenere dei privilegi aggiuntivi che non gli erano stati concessi
esplicitamente. Ciò è chiamato aumento dei privilegi. Ad esempio, un processo che ha
il privilegio PRIV_DACWRITE può sovrascrivere file critici di sistema e, nel corso
dell'operazione, attribuire a se stesso privilegi ad alta definizione.
8.6 Privilegi ad alta definizione nei cluster Serviceguard
Le applicazioni in grado di rilevare i privilegi possono essere monitorate da
HP Serviceguard. I file di configurazione dei pacchetti Serviceguard o le funzionalità di
amministrazione dei pacchetti Serviceguard non sono stati modificati per supportare i
privilegi ad alta definizione. Gli script di Serviceguard non sono stati modificati per
facilitare l'uso dei privilegi ad alta definizione.
Per garantire il corretto funzionamento di Serviceguard quando si mettono in attività i
privilegi ad alta definizione di HP-UX 11i nei nodi o nei pacchetti di Serviceguard:
•
Accertarsi l'utente root – UID=0 – abbia privilegi completi nel compartimento INIT.
•
Accertarsi che le implementazioni dei privilegi ad alta definizione non creino rischi
di protezione per i cluster Serviceguard.
8.7 Risoluzione dei problemi dei privilegi ad alta definizione
Nel caso qualcosa non funzioni nel sistema e si ritenga che il problema sia dovuto ai
privilegi ad alta definizione, è possibile controllare la configurazione dei privilegi ad
alta definizione nel modo seguente.
Problema 1: Nonostante siano stati assegnati privilegi ad alta definizione ad un file
binario, i processi che usano exec() per accedere al file binario non ricevono i privilegi
ad alta definizione assegnati. Soluzione: controllare se si tratta di una delle situazioni
seguenti.
•
Il file in questione è uno script?
Tutti i privilegi ad alta definizione assegnati agli script della shell sono ignorati.
•
Dopo l'assegnazione dei privilegi ad alta definizione, il file è stato modificato?
Quando un file è modificato, i suoi attributi dei privilegi ad alta definizione saranno
perduti. Prima o dopo aver modificato il file, eseguire il comando seguente:
# setfilexsec -d nome_file
Quindi, aggiungere gli attributi dei privilegi che si desidera assegnare al file.
Per maggiori informazioni sulla risoluzione dei problemi dei privilegi ad alta definizione,
vedere setfilexsec(1M).
148
Privilegi ad alta definizione
Problema 2: Un processo ha privilegi che non dovrebbe avere, o non ha i privilegi che
dovrebbe avere. Soluzione: utilizzare il comando getprocxsec per determinare
quali privilegi ha un processo:
# getprocxsec -per id_processo
Questo comando visualizza gli insiemi di privilegi permessi, effettivi, e conservati del
processo. Per ulteriori informazioni, consultare getprocxsec(1M).
Se il processo non ha i privilegi corretti, configurare il file binario che ha creato quel
processo con i privilegi appropriati. Per ulteriori informazioni, vedere “Configurazione
delle applicazioni con privilegi ad alta definizione”.
8.7 Risoluzione dei problemi dei privilegi ad alta definizione
149
150
Parte III Protezione dell'identità
Nelle aziende moderne, attive a livello globale, la gestione delle identità non è un compito
facile, in particolare perché i suoi requisiti crescono ed interessano dipendenti, appaltatori,
partner e fornitori di numerose nazioni, che regolano la protezione della privacy con leggi
differenti. HP-UX 11i semplifica la gestione dell'autenticazione e dell'accesso degli utenti,
eseguendo l'auditing di tutte le azioni privilegiate eseguite.
Questa sezione tratta i seguenti argomenti:
•
HP-UX Role-based Access Control (Capitolo 9)
•
Amministrazione dell'auditing (Capitolo 10)
151
152
9 HP-UX Role-based Access Control
Le informazioni contenute in questo capitolo descrivono HP-UX Role-Based Access Control
(HP-UX RBAC). Questo capitolo tratta i seguenti argomenti:
•
Panoramica (Sezione 9.1)
•
Aspetti fondamentali del controllo dell'accesso (Sezione 9.2)
•
Componenti di HP-UX RBAC (Sezione 9.3)
•
Pianificazione della messa in attività di HP-UX RBAC (Sezione 9.4)
•
Configurazione di HP-UX RBAC (Sezione 9.5)
•
Uso di HP-UX RBAC (Sezione 9.6)
•
Risoluzione dei problemi di HP-UX RBAC (Sezione 9.7)
9.1 Panoramica
La protezione, in particolare quella delle piattaforme, è sempre stata una preoccupazione
importante delle infrastrutture aziendali. Nonostante ciò, in passato molte aziende spesso
hanno trascurato e sottovalutato i concetti relativi alla protezione, come le responsabilità
individuali ed i privilegi minimi. Tuttavia, la legislazione entrata in vigore di recente
negli Stati Uniti, che comprende Health Insurance Portability and Accountability Act
(HIPAA) e Sarbanes-Oxley Act, ha contribuito a mettere in rilievo l'importanza di questi
concetti legati alla protezione.
La gran parte delle aziende dispone di sistemi amministrati da più utenti. Solitamente,
ciò avviene fornendo agli amministratori una password per accedere ad un account
comune, condiviso, conosciuto come root. L'account root semplifica la gestione del
controllo degli accessi, consentendo agli amministratori che dispongono della password
di root di eseguire tutte le operazioni, ma presenta allo stesso degli ostacoli alla gestione
del controllo dell'accesso, ad esempio:
•
Una volta fornita la password di root agli utenti, non esiste un modo semplice per
limitare ulteriormente le loro prerogative.
•
Nella migliore delle ipotesi, revocare l'accesso ad un singolo amministratore richiede
la modifica della password comune e la notifica del cambiamento agli altri
amministratori. Più realisticamente, limitarsi a modificare la password potrebbe non
essere sufficiente a revocare effettivamente l'accesso, poiché potrebbero già essere
stati implementati dei meccanismi alternativi.
•
La responsabilità individuale di un account root condiviso è virtualmente impossibile
da ottenere. Di conseguenza, è più difficile, e in alcuni casi impossibile, svolgere
un'analisi appropriata dopo un problema di protezione.
9.1 Panoramica
153
La funzionalità Role-Based Access Control (RBAC) di HP-UX consente di superare questi
ostacoli, offrendo la capacità di assegnare insiemi di operazioni ad account ordinari,
purché configurati in modo appropriato. HP-UX RBAC inoltre contribuisce a diminuire il
carico gestionale collegato all'assegnazione ed alla revoca delle autorizzazioni
individuali ai singoli utenti.
HP-UX RBAC offre le seguenti funzionalità:
•
File di configurazione predefiniti specifici per HP-UX, per una messa in attività rapida
e facile
•
Riautenticazione flessibile mediante Plugable Authentication Module (PAM), per
consentire limitazioni ai singoli comandi
•
Integrazione con il sistema di auditing HP-UX, per produrre un'unica sequenza di
auditing
•
Architettura modulare per personalizzare le decisioni relative al controllo dell'accesso
9.2 Aspetti fondamentali del controllo dell'accesso
L'obiettivo di un sistema per il controllo dell'accesso è di limitare l'accesso alle risorse
in base ad un insieme di restrizioni. Solitamente, queste restrizioni e gli attributi ad esse
associati appartengono alle categorie seguenti:
•
Soggetto: l'entità che tenta di accedere alla risorsa. Nel contesto di un sistema
operativo, il soggetto solitamente è un utente o un processo associato ad un utente.
•
Operazione: l'azione eseguita con una risorsa. Un'operazione può corrispondere
direttamente ad un'applicazione o ad un comando. Nel caso di HP-UX RBAC,
l'operazione è una stringa gerarchica, separata da punti, come hpux.user.add.
•
Oggetto: l'obiettivo dell'operazione, che spesso è il medesimo della risorsa finale,
ma in alcuni casi può essere differente.
Una richiesta di controllo dell'accesso può essere rappresentata come una domanda
che combina gli elementi precedenti, la risposta alla quale – solitamente il permesso o
il divieto – determina la possibilità di accesso alla risorsa. Ad esempio:
L'utente claudio è autorizzato ad eseguire l'operazione hpux.fs.mount relativa
all'oggetto/dev/dsk/c0t1d0?
Spesso, il termine autorizzazione è utilizzato come sinonimo di controllo dell'accesso.
In HP-UX RBAC, l'autorizzazione si riferisce alla capacità di eseguire un'operazione con
un oggetto. Come mostrato nella Tabella 9-1, un utente può disporre di un gruppo di
autorizzazioni, ognuna delle quali consente l'accesso ad una risorsa.
154 HP-UX Role-based Access Control
Tabella 9-1 Esempio di autorizzazione di un utente
Componente operativa
dell'autorizzazione
Utenti
claudio
lisa
gianni
anna
hpux.user.password.modify
•
•
•
•
hpux.network.nfs.start
•
hpux.network.nfs.stop
•
hpux.network.nfs.config
•
hpux.fs.backup
•
•
hpux.fs.restore
•
•
hpux.user.add
hpux.user.delete
hpux.user.modify
NOTA: La Tabella 9-1 mostra soltanto l'elemento operazione delle autorizzazioni, non
il loro elemento oggetto.
9.2.1 Semplificazione del controllo dell'accesso mediante i ruoli
Oltre ai principi fondamentali del controllo degli accessi presentati nella panoramica
precedente, questa sezione tratta il modo in cui sono rappresentati i criteri di controllo
dell'accesso e la procedura decisionale.
La panoramica precedente del controllo degli accessi non tratta il modo in cui sono
rappresentati i criteri di controllo dell'accesso e le procedure decisionali. Uno degli
approcci si limita a conservare un elenco di utenti ed autorizzazioni – coppie operazione
ed oggetto — concesse ad ognuno di loro. Questo approccio ha il vantaggio della
flessibilità, poiché l'insieme delle autorizzazioni di un utente può essere completamente
diverso da quello di altri utenti.
Purtroppo, questo approccio è anche difficile da gestire, perché, aggiungendo nuovi
utenti sarà necessario determinare con esattezza quali autorizzazioni attribuire ad
ognuno di loro. Inoltre, durante le operazioni di auditing sarà necessario esaminare
ogni singolo utente per determinare le autorizzazioni ad esso associate.
HP-UX RBAC gestisce questi aspetti raggruppando in ruoli gli utenti con esigenze di
autorizzazione comuni. I ruoli sono un meccanismo di raggruppamento che semplifica
la concessione e l'auditing delle autorizzazioni. Invece di assegnare le autorizzazioni
direttamente ad un utente, sono assegnate direttamente ai ruoli. Aggiungendo utenti al
sistema, si assegna loro un insieme di ruoli, che determina le azioni che potranno eseguire
e le risorse alle quali potranno accedere.
9.2 Aspetti fondamentali del controllo dell'accesso
155
Confrontare la Tabella 9-2, che elenca le autorizzazioni assegnate ai ruoli, con la
Tabella 9-1, che elenca le autorizzazioni assegnate a ciascun utente. Confrontando
queste due tabelle, è possibile vedere come i ruoli semplifichino l'attribuzione delle
autorizzazioni.
Tabella 9-2 Esempio di autorizzazioni di un ruolo
Componente operativa
dell'autorizzazione
Ruolo
UserAdmin
NetworkAdmin
BackupOper
Admin
hpux.user.add
•
•
hpux.user.delete
•
•
hpux.user.modify
•
•
•
hpux.user.password.modify
hpux.network.nfs.start
•
•
hpux.network.nfs.stop
•
•
hpux.network.nfs.config
•
•
hpux.fs.backup
•
•
hpux.fs.restore
•
•
NOTA: La Tabella 9-2 mostra soltanto l'elemento operativo delle autorizzazioni, non
il loro elemento oggetto.
9.3 Componenti di HP-UX RBAC
Di seguito è riportato l'elenco dei principali componenti HP-UX RBAC:
comando wrapper privrun
comando privedit
156
HP-UX Role-based Access Control
In base alle autorizzazioni associate ad un utente,
privrun avvia le applicazioni legacy con
privilegi esistenti, dopo aver svolto i controlli delle
autorizzazioni e, facoltativamente, aver
riautenticato l'utente, senza modificare
l'applicazione.
Il comando privedit, sulla base delle
autorizzazioni associate ad un utente, consente
agli utenti di modificare i file che normalmente
sarebbero a loro interdetti a causa delle
autorizzazioni dei file o delle liste di controllo
dell'accesso.
Access Control Policy Switch (ACPS)
Modulo Access Control Policy
comandi di amministrazione
Determina se un soggetto è autorizzato ad
eseguire un'operazione con un oggetto.
Valuta i file dei database di HP-UX RBAC ed
applica i criteri di mappatura, per soddisfare le
richieste di controllo dell'accesso.
Modificano e convalidano i file del database di
HP-UX RBAC.
Le sezioni seguenti descrivono con maggior dettaglio i componenti di HP-UX RBAC.
9.3.1 Access Control Policy Switch di HP-UX RBAC
Access Control Policy Switch di HP-UX RBAC è un'interfaccia personalizzabile tra le
applicazioni che devono prendere decisioni sul controllo dell'accesso e i moduli criteri
di controllo dell'accesso che forniscono le risposte decisionali, dopo aver interpretato
le informazioni sui criteri contenute nei database RBAC. Come mostrato nella Figura 9-1,
dalla sua ubicazione nell'architettura HP-UX RBAC, ACPS offre un'interfaccia tra i moduli
dei criteri di controllo dell'accesso e le applicazioni che prendono le relative decisioni.
ACPS ha le seguenti interfacce, descritte in dettaglio nelle rispettive manpage:
•
Interfaccia di programmazione delle applicazioni (API) di ACPS
•
Interfaccia del provider di servizi (SPI) di ACPS
•
/etc/acps.conf
L'interfaccia di amministrazione per ACPS è il file di configurazione /etc/acps.conf.
Il file di configurazione /etc/acps.conf determina quali moduli dei criteri sono
consultati da ACPS, l'ordine in cui i moduli sono consultati e le regole per combinare le
risposte dei moduli, per fornire un risultato alle applicazioni che richiedono decisioni
sul controllo dell'accesso. Questa implementazione di ACPS consente di creare un modulo
che applica un criterio personalizzato senza modificare le applicazioni esistenti che
controllano l'accesso in base al ruolo.
NOTA: Per maggiori informazioni su ACPS e le sue interfacce, consultare acps(4),
acps.conf(4), acps_api(3) e acps_spi(3).
9.3.2 File di configurazione di HP-UX RBAC
La Tabella 9-3 elenca e descrive brevemente i file di HP-UX RBAC.
Tabella 9-3 File di configurazione di HP-UX RBAC
File di configurazione
Descrizione
/etc/rbac/auths
File di database che contiene tutte le autorizzazioni valide.
/etc/rbac/cmd_priv File di database di privrun contenente le autorizzazioni e i privilegi di file e
comandi.
9.3 Componenti di HP-UX RBAC
157
Tabella 9-3 File di configurazione di HP-UX RBAC (segue)
File di configurazione
Descrizione
/etc/rbac/role_auth File di database che definisce le autorizzazioni per ogni ruolo.
/etc/rbac/roles
File di database che definisce tutti i ruoli configurati.
/etc/rbac/user_role File di database che definisce i ruoli per ogni utente.
/etc/acps.conf
File di configurazione per ACPS.
/etc/rbac/aud_filter File di filtro per l'auditing, che identifica ruoli, operazione ed oggetti specifici
di HP-UX RBAC che devono essere sottoposti ad auditing.
9.3.3 Comandi di HP-UX RBAC
La Tabella 9-4 elenca e descrive brevemente i comandi di HP-UX RBAC.
Tabella 9-4 Comandi di HP-UX RBAC
Comando
Descrizione
privrun
Avvia un'applicazione legacy con privilegi, dopo aver svolto i controlli delle autorizzazioni
e, facoltativamente, riautenticato l'utente.
privedit
Consente agli utenti autorizzati di modificare file sottoposti al controllo dell'accesso.
roleadm
Modifica le informazioni dei ruoli nei file /etc/rbac/user_role,
/etc/rbac/role_auth e /etc/rbac/roles.
authadm
Modifica le informazioni delle autorizzazioni nei file /etc/rbac/role_auth e
/etc/rbac/roles.
cmdprivadm Modifica le autorizzazioni ed i privilegi dei comandi nel database /etc/rbac/cmd_priv.
rbacdbchk
Controlla le autorizzazioni e la sintassi nei file di database di HP-UX RBAC e di privrun.
9.3.4 Manpage di HP-UX RBAC
La Tabella 9-5 elenca e descrive brevemente le manpage di HP-UX RBAC.
Tabella 9-5 Manpage di HP-UX RBAC
158
Manpage
Descrizione
rbac(5)
Descrive le funzionalità di HP-UX RBAC.
acps(3)
Descrive ACPS e le sue interfacce.
acps.conf(4)
Descrive il file di configurazione di ACPS e la sua sintassi.
acps_api(3)
Descrive l'interfaccia di programmazione per applicazioni di ACPS.
acps_spi(3)
Descrive l'interfaccia del provider di servizi di ACPS.
HP-UX Role-based Access Control
Tabella 9-5 Manpage di HP-UX RBAC (segue)
Manpage
Descrizione
privrun(1m)
Descrive le funzionalità e la sintassi di privrun.
privedit(1m)
Descrive le funzionalità e la sintassi di privedit.
roleadm(1m)
Descrive le funzionalità e la sintassi di roleadm.
authadm(1m)
Descrive le funzionalità e la sintassi di authadm.
cmdprivadm(1m)
Descrive le funzionalità e la sintassi di cmdprivadm.
rbacdbchk(1m)
Descrive le funzionalità e la sintassi di rbacdbchk.
9.3.5 Architettura di HP-UX RBAC
Il componente principale di HP-UX RBAC è il comando privrun, che avvia i comandi,
le applicazioni e gli script esistenti. Il comando privrun usa il sottosistema ACPS per
eseguire le richieste di controllo dell'accesso. Una richiesta di accesso è autorizzata o
respinta in base ad un insieme di file di configurazione che definiscono le mappature
utente-ruolo e ruolo-autorizzazione.
Se la richiesta di accesso è autorizzata, privrun avvia il comando di destinazione
con privilegi aggiuntivi, che possono comprendere uno o più fra ID utente, ID gruppo,
privilegi ad alta definizione e compartimenti. I privilegi sono configurati per abilitare
l'esecuzione effettiva del comando di destinazione.
La Figura 9-1 presenta l'architettura di HP-UX RBAC.
9.3 Componenti di HP-UX RBAC
159
Figura 9-1 Architettura di HP-UX RBAC
/usr/sbin/
cmdprivadm
Database di privilegi,
comandi,
autorizzazioni
privrun
applicazione che
rileva il controllo
dell'accesso
privedit
PAM, nome switch
di servizio
applicazione che
rileva il controllo
dell'accesso
API ACPS
Access Control Policy Switch (ACPS)
Moduli di
servizio
PAM
Informazioni utente
(ad esempio /etc/passwd )
SPI ACPS
Altro criterio ACPM
RBAC locale
ACPM
Chiave
:
Comandi con wrapper
dei privilegi
Switch di controllo
dell'accesso
Utente
Database
dei ruoli
Ruoli di
sistema validi
Ruolo
Database delle
autorizzazioni
Autorizzazioni
di sistema
valide
RBAC
Future
Componenti esistenti
/usr/sbin/
rbacdbck
/usr/sbin/
roleadm
/usr/sbin/
authadm
9.3.6 Esempio di utilizzo e di operatività di HP-UX RBAC
La Figura 9-2 e le relative note a piè pagina mostrano un esempio di uso del comando
privrun e i file di configurazione utilizzati da privrun per determinare se un utente
è autorizzato ad eseguire un comando.
160 HP-UX Role-based Access Control
Figura 9-2 Esempio di operazione dopo aver avviato privrun
Autorizzazioni
Utenti
MOLTI:MOLTI
Ruoli
/etc/rbac/user_role
MOLTI:MOLTI
Operazioni
MOLTI:MOLTI
Oggetti
/etc/rbac/role_auth
comando, argomenti,
UID
2
4
S
ACP
mi
te
AC
PS
Comando
,
privilegio
/etc/rbac/cmd_priv
ite
tram
tra
Processo
(shell )
1:1
Privrun
3
Rinuncia a tutti i
privilegi tranne
quelli definiti
Comando
con
privilegi
5
1
1.
2.
3.
4.
5.
Un processo, specificamente una shell, associato all'utente esegue privrun, allo
scopo di eseguire un comando di destinazione con privilegio elevato.
La riga dei comandi di destinazione – comando ed argomenti – è trasmessa
esplicitamente a privrun, mentre l'ID dell'utente che ha avviato l'operazione è
trasmessa implicitamente dal contesto del processo.
privrun tenta di trovare nel database /etc/rbac/cmd_priv un elemento
corrispondente – o un insieme di elementi corrispondenti – per la riga dei comandi
specificata. Ogni voce corrispondente specifica inoltre un'autorizzazione necessaria
– coppia operazione ed oggetto – ed i privilegi che ne derivano nel caso l'utente
disponga dell'autorizzazione specificata.
privrun esegue una chiamata ad ACPS, per ogni voce corrispondente di
/etc/rbac/cmd_priv. Il backend HP-UX RBAC di ACPS consulta i database
/etc/rbac/user_role e /etc/rbac/role_auth, per determinare se l'utente
ha l'autorizzazione specificata, quindi ritrasmette il risultato a privrun.
Presumendo che l'utente associato al processo abbia l'autorizzazione necessaria,
specificata nel database /etc/rbac/cmd_priv per il comando richiesto, privrun
tralascerà tutti i privilegi tranne quelli specificati dalla voce /etc/rbac/cmd_priv
ed eseguirà il comando richiesto. Il comando privrun è impostato con UID=0 ed
è avviato con tutti i privilegi necessari.
9.4 Pianificazione della messa in attività di HP-UX RBAC
Prima di mettere in attività HP-UX RBAC, eseguire queste operazioni di pianificazione:
1.
2.
3.
Pianificare i ruoli degli utenti.
Pianificare le autorizzazioni degli utenti.
Pianificare le mappature autorizzazione-comando.
Le sezioni seguenti descrivono queste fasi con maggior dettaglio.
9.4 Pianificazione della messa in attività di HP-UX RBAC
161
9.4.1 Pianificazione dei ruoli
La pianificazione di un insieme appropriato di ruoli per gli utenti di un sistema è la
prima, importante, fase della messa in attività di HP-UX RBAC. In alcune imprese, questo
insieme di ruoli esiste già e sarà possibile riutilizzarlo configurando HP-UX RBAC.
Solitamente, però, sarà necessario definire i ruoli in base ai compiti esistenti, associati
agli utenti amministrativi del sistema.
Quando si definiscono i ruoli, tenere presente le linee guide seguenti:
•
Il numero dei ruoli deve essere considerevolmente inferiore al totale degli utenti del
sistema. Se ogni utente richiede un ruolo speciale, la semplificazione della gestione
ottenuta usando i ruoli non avrà più effetto.
•
I ruoli devono essere correlati al ruolo aziendale effettivo degli utenti.
•
Gli utenti possono avere ruoli multipli, di conseguenza è possibile definire alcuni
ruoli al semplice scopo di raggruppare le autorizzazioni comuni ai diversi ruoli
aziendali. Con questo approccio, sarà possibile definire i ruoli gerarchicamente in
modo da comprendere ruoli differenti, includendo le loro autorizzazioni.
9.4.2 Pianificazione delle autorizzazioni per i ruoli
Dopo aver definito i ruoli, sarà possibile pianificare le autorizzazioni associate ad ogni
ruolo. Se i ruoli sono allineati con la gerarchia delle operazioni preesistente,
l'assegnazione delle autorizzazioni sarà molto semplice. Per elencare tutte le
autorizzazioni definite nel sistema, digitare il comando seguente:
# authadm list sys
Se la gerarchia esistente delle autorizzazioni non rispecchia i ruoli, la definizione delle
autorizzazioni associate ad ogni ruolo sarà più complessa. A questo scopo è possibile
usare la seguente procedura:
1.
2.
3.
Elencare i comandi del sistema usati comunemente da ogni ruolo.
Confrontare questi comandi con quelli del database /etc/rbac/cmd_priv.
Dopo aver eseguito le operazioni precedenti, se si individuano voci corrispondenti,
utilizzarle come guida per l'assegnazione delle autorizzazioni.
Ad esempio, si presuma che uno dei ruoli desiderati sia UserOperator, che comunemente
esegue comandi come useradd, usermod, userdel e così via. Per stabilire quali
autorizzazioni potrebbero essere adeguate a questo ruolo, eseguire il seguente comando:
# grep useradd /etc/rbac/cmd_priv
/usr/sbin/useradd:dflt:(hpux.user.add,*):0/0//:dflt:dflt:dflt:
In questo esempio, il comando /usr/sbin/useradd necessita dell'autorizzazione
hpux.user.add. È possibile assegnare l'autorizzazione direttamente, oppure assegnare
hpux.user.* come autorizzazione.
Fare attenzione quando si utilizzano caratteri jolly assegnando le autorizzazioni. In
realtà, questa operazione assegna più autorizzazioni:
162
HP-UX Role-based Access Control
# grep hpux.user. /etc/rbac/cmd_priv
/usr/sbin/pwgrd:dflt:(hpux.user.cache.admin,*):0/0// :dflt :dflt :dflt :
/usr/sbin/userdel:dflt:(hpux.user.delete,*):0/0// :dflt :dflt :dflt :
/usr/sbin/groupdel:dflt:(hpux.user.group.delete,*):0/0// :dflt :dflt :dflt :
/usr/sbin/useradd:dfl:(hpux.user.add,*):0/0//:dflt:dflt:dflt:
/usr/sbin/usermod:dflt:(hpux.user.modify,*):0/0// :dflt :dflt :dflt :
/usr/sbin/groupadd:dflt:(hpux.user.group.add,*):0/0// :dflt :dflt :dflt :
/usr/sbin/groupmod:dflt:(hpux.user.group.modify,*):0/0// :dflt :dflt :dflt :
/usr/sbin/vipw:dflt:(hpux.user.modify,*):0/0// :dflt :dflt :dflt :
9.4.3 Pianificazione della mappatura dei comandi
Definire i comandi comunemente usati da uno dei ruoli definiti ma che non esistono nel
file predefinito /etc/rbac/cmd_priv. Il file /etc/rbac/cmd_priv definisce la
mappatura fra autorizzazioni e comandi. Per ogni comando, accertare gli elementi
seguenti:
•
Percorso completo del comando
•
L'autorizzazione necessaria da controllare prima dell'esecuzione del comando
•
Eventuali privilegi speciali necessari al comando, ad esempio euid=0
Le stringhe di testo che costituiscono le voci operazione ed oggetto nel file
/etc/rbac/cmd_priv sono arbitrarie, ma dovrebbero corrispondere logicamente ad
un comando o ad un insieme di comandi. Quando si pianifica la mappatura
autorizzazione-comando in /etc/rbac/cmd_priv, tenere presenti le seguenti linee
guida:
•
Definire le operazioni in gruppi logici, per facilitare l'assegnazione delle operazioni
ai ruoli.
•
Non creare rami di operazioni con troppi (più di 10) o troppo pochi (1) elementi
figlio. L'intera struttura ad albero non deve essere eccessivamente ampia, poiché
renderebbe difficile assegnare i gruppi di operazioni, o eccessivamente alta, con
nomi di singole operazioni troppo lunghi e difficili da usare.
•
Terminare l'ultimo elemento del nome dell'operazione con un'azione (verbo).
•
Definire le operazioni in modo che sia possibile inserire chiaramente i nuovi comandi
quando saranno aggiunti.
Per la procedura necessaria per configurare ulteriori comandi, consultare “Configurazione
di privilegi ed autorizzazioni per comandi aggiuntivi”.
9.4 Pianificazione della messa in attività di HP-UX RBAC 163
9.4.4 Limiti e restrizioni di HP-UX RBAC
Quell seguente è l'elenco degli aspetti da considerare prima della messa in attività di
HP-UX RBAC:
•
HP-UX RBAC non supporta la modalità utente singolo, di conseguenza l'account
root deve essere disponibile nelle situazioni in sarà necessario utilizzarla.
•
Serviceguard non supporta l'uso di HP-UX RBAC e di privrun per consentire
l'accesso ai comandi di Serviceguard. Per ulteriori informazioni su HP-UX RBAC e
i cluster di Serviceguard, vedere la Sezione 9.6.1.1.
•
Come tutte le altre applicazioni, HP-UX RBAC è soggetto alle regole che governano
i compartimenti (vedere il Capitolo 7). Quando si utilizza HP-UX RBAC con i
compartimenti, tenere conto dei seguenti aspetti:
— Non è possibile eseguire privedit con un file che ha restrizioni imposte da
una definizione di compartimento.
— Per attribuire ad un'applicazione dei privilegi ad alta definizione, il comando
privrun deve essere eseguito con gli stessi privilegi da attribuire
all'applicazione. Per impostazione predefinita, privrun è configurato per
essere eseguito con tutti i privilegi (per maggiori informazioni, vedere
getfilexsec(1M)). Tuttavia, talvolta potrebbe essere necessario limitare questo
insieme di privilegi predefiniti. Ad esempio, se un compartimento è stato
configurato per non consentire privilegi, questa specificazione impedisce a
privrun di attribuire i privilegi all'applicazione in quel compartimento, perché
lo stesso privrun non dispone di quei privilegi. Per impostazione predefinita
i compartimenti sigillati sono configurati per non consentire il privilegio composto
POLICY.
— Affinchè sia in grado di avviare un'altra applicazione in un compartimento,
privrun deve disporre del privilegio CHANGECMPT. Se privrun non dispone
del privilegio CHANGECMPT, ad esempio, nel caso in cui il compartimento sia
configurato per non consentire i privilegi, privrun non sarà eseguibile. Questo
comportamento è voluto e predisposto per rafforzare il concetto di compartimento
sigillato.
9.5 Configurazione di HP-UX RBAC
La configurazione di HP-UX RBAC è una procedura in tre fasi:
1.
2.
3.
Configurazione dei ruoli.
Configurazione delle autorizzazioni.
Configurazione di eventuali comandi aggiuntivi.
164 HP-UX Role-based Access Control
IMPORTANTE: Le autorizzazioni sono integrate (hard-coded) nei comandi di gestione
di HP-UX RBAC e non possono essere configurate. Tuttavia, è possibile configurare quali
ruoli e quali utenti hanno le autorizzazioni necessarie ai comandi di gestione di HP-UX
RBAC.
Ai comandi di gestione HP-UX RBAC non è necessario applicare il wrapping con il
comando privrun, dato che sono impostati come setuid=0. I comandi di gestione
di HP-UX RBAC sono eseguiti con privilegi uguali a root, indipendentemente da chi li
esegue. Il controllo dell'accesso limita chi potrà utilizzare i comandi di gestione di HP-UX
RBAC.
Per maggiori informazioni sulle loro autorizzazioni, vedere la sezione Authorization in
ogni manpage dei comandi di gestione HP-UX RBAC.
Questa Sezione 9.5 utilizza il risultato della pianificazione e gli utenti dell'esempio della
Tabella 9-6 per dimostrare l'uso dei comandi di gestione HP-UX RBAC e la procedura
di configurazione.
Tabella 9-6 Esempio del risultato della pianificazione
Utenti
Ruoli
Autorizzazioni
Comando tipico
(Nota: si presume che gli oggetti
siano *)
alessandra, UserOperator
roberto
hpux.user.*
/usr/sbin/useradd
hpux.security.*
/usr/sbin/usermod
claudio,
lisa
NetworkOperator
hpux.network.*
/sbin/init.d/inetd
luca
Administrator
hpux.*
/opt/comando_personalizzato
società.autorizzazione_personalizzata
9.5.1 Configurazione dei ruoli
La configurazione dei ruoli per gli utenti è una procedura in due fasi:
1.
2.
Creazione dei ruoli.
Assegnazione dei ruoli agli utenti ed ai gruppi.
9.5.1.1 Creazione dei ruoli
Usare il comando roleadm per creare ruoli ed assegnarli ad utenti o gruppi. Occorre
innanzitutto aggiungere i ruoli che ancora non esistono, quindi assegnare gli utenti a
questi ruoli. La sintassi del comando roleadm è la seguente:
9.5 Configurazione di HP-UX RBAC
165
roleadm add ruolo [commenti]
| delete ruolo
| modify vecchio_nome_ruolo nuovo_nome_ruolo
| assign utente ruolo
| assign "&gruppo" ruolo
| revoke utente [ruolo]
| revoke "&gruppo" [ruolo]
| list [user=nome_utente][role=nome_ruolo][sys]
Segue l'elenco ed una breve descrizione degli argomenti del comando roleadm:
add
delete
modify
assign
revoke
list
NOTA:
Aggiunge il ruolo all'elenco dei ruoli di sistema in /etc/rbac/roles.
Elimina il ruolo dell'elenco dei ruoli di sistema in /etc/rbac/roles.
Cambia il nome dei ruoli in tutti i tre file di database correlati ai ruoli:
/etc/rbac/roles, /etc/rbac/user_role e /etc/rbac/role_auth.
Assegna un ruolo ad un utente o ad un gruppo ed aggiorna
/etc/rbac/user_role.
Revoca un ruolo ad un utente o ad un gruppo ed aggiorna
/etc/rbac/user_role.
Elenca i ruoli validi del sistema (sys), o le mappature utente-ruolo.
Per ulteriori informazioni, vedere la manpage roleadm(1m).
Seguono due esempi del comando roleadm per aggiungere nuovi ruoli:
# roleadm add UserOperator
roleadm: added role UserOperator
# roleadm add NetworkOperator
roleadm: added role NetworkOperator
NOTA: I file di configurazione predefiniti forniti con HP-UX RBAC contengono un unico
ruolo preconfigurato: Administrator. Per impostazione predefinita, il ruolo Administrator
è assegnato a tutte le autorizzazioni di sistema HP-UX (hpux.*, *) ed è associato
all'utente root.
Dopo aver definito dei ruoli validi, sarà possibile assegnarli ad uno o più utenti o gruppi.
Se si tenta di assegnare agli utenti un ruolo che non è ancora stato creato, sarà
visualizzato un messaggio di errore che indica che quel ruolo non esiste.
9.5.1.2 Assegnazione dei ruoli agli utenti
Il separare la creazione dei ruoli dalla loro assegnazione offre i vantaggi seguenti:
•
Richiedere che i ruoli siano creati prima della loro assegnazione consente di
individuare durante l'assegnazione dei ruoli eventuali errori di battitura al momento
della definizione dei nomi
•
Consente a utenti differenti di eseguire ciascuna operazione. Ad esempio, non è
necessario che sia lo stesso utente a creare i ruoli ed ad assegnarli.
166 HP-UX Role-based Access Control
Dopo aver creato ruoli validi, usare il comando roleadm per assegnarli agli utenti
appropriati, come mostrano gli esempi seguenti:
# roleadm assign luca Administrator
roleadm assign done in /etc/rbac/user_role
# roleadm assign roberto UserOperator
roleadm assign done in /etc/rbac/user_role
Dopo aver usato il comando roleadm assign per assegnare i ruoli agli utenti, per
controllare che siano stati assegnati correttamente sarà possibile usare il comando
roleadm list, ad esempio:
# roleadm list
root: Administrator
luca: Administrator
roberto: UserOperator
NOTA: HP-UX RBAC consente di aggiungere al database /etc/rbac/user_role
un utente speciale chiamato DEFAULT. Assegnando un ruolo all'utente DEFAULT, si
assegna quel ruolo a qualsiasi utente che non esiste in quel sistema.
9.5.1.3 Assegnazione dei ruoli ai gruppi
HP-UX RBAC consente anche di assegnare ruoli ai gruppi. Per gestire gruppi e ruoli, è
possibile usare le opzioni del comando roleadm che utilizzano il valore utente come
roleadm assign utente ruolo e roleadm revoke utente ruolo.
Assegnare, revocare o elencare le informazioni di gruppo e di ruolo con il comando
roleadm inserendo la "e commerciale" (&) all'inizio del valore dell'utente e racchiudendo
il tutto tra virgolette. Per essere interpretati da roleadm, il valore del nome del gruppo
e la "e commerciale" (&) devono essere utilizzare il carattere di escape della shell oppure
essere racchiusi tra virgolette. Ad esempio:
# roleadm assign "&nome_gruppo" ruolo
9.5.2 Configurazione delle autorizzazioni
La configurazione delle autorizzazioni è simile alla creazione ed all'assegnazione dei
ruoli. Tuttavia, le autorizzazioni contengono due elementi: un'operazione ed un oggetto.
Il carattere jolly * – l'oggetto usato più comunemente – è l'oggetto implicitamente utilizzato
se non ne è specificato uno, quando si avvia il comando authadm. In molti casi, l'oggetto
non è specificato di proposito, in modo che l'operazione sia applicata a tutti gli oggetti.
Lasciare l'oggetto non specificato è un metodo frequentemente utilizzato nelle
autorizzazioni per i comandi in wrapping, perchè potrebbe essere difficile determinare
la destinazione di un'azione in base al nome del comando.
Un esempio di questa ambiguità relativa agli oggetti è il comando /usr/sbin/passwd.
Il comando passwd può operare con un gran numero di archivi, ad esempio il file
/etc/passwd file, una tabella NIS e una voce LDAP. Non è possibile determinare
9.5 Configurazione di HP-UX RBAC
167
l'oggetto reale osservando la riga dei comandi, quindi è più facile richiedere che l'utente
sia in grado di eseguire operazioni con tutti gli oggetti, ad esempio:
(hpux.security.passwd.change, *).
NOTA: È possibile configurare un valore per l'oggetto predefinito. Per impostazione
predefinita, non specificandone uno, HP-UX RBAC userà come oggetto il carattere jolly
*. Tuttavia, se è stato configurato un valore per il parametro RBAC_DEFAULT_OBJECT=
in /etc/default/security, HP-UX RBAC userà come oggetto predefinito quel valore
invece del carattere jolly *.
Usare il comando authadm per modificare le informazioni sulle autorizzazioni nei
database HP-UX RBAC. La sintassi di authadm è simile a quella di roleadm. La sintassi
del comando authadm è la seguente:
authadm add operazione[oggetto[commenti]]
| delete operazione[oggetto]
| assign ruolo operazione[oggetto]
| revoke [role=nome][operation=nome[object=nome]]
| list [role=nome][operation=nome[object=nome][sys]
Segue l'elenco ed una breve descrizione degli argomenti del comando authadm:
add
delete
assign
revoke
list
Aggiunge un'autorizzazione all'elenco delle autorizzazioni valide nel sistema
in /etc/rbac/auths.
Elimina un'autorizzazione dall'elenco delle autorizzazioni valide nel sistema
in /etc/rbac/auths.
Assegna un'autorizzazione ad un ruolo ed aggiunge una voce a
/etc/rbac/role_auth.
Revoca un'autorizzazione ad un ruolo ed aggiorna /etc/rbac/role_auth.
Elenca le autorizzazioni valide per sistema o ruolo ed elenca i ruoli associati
all'operazione specificata.
IMPORTANTE: Tenere presente che quando si assegna un'autorizzazione che contiene
il carattere asterisco *, questo carattere jolly deve essere racchiuso tra virgolette per
impedire alla shell di interpretarlo, come dimostrano gli esempi seguenti.
Quelli seguenti sono alcuni esempi di creazione ed assegnazione delle autorizzazioni
in base alla Tabella 9-6:
# authadm add 'società.autorizzazione_personalizzata.*'
authadm added auth: (società.autorizzazione_personalizzata.*,*)
# authadm assign Administrator 'società.autorizzazione_personalizzata.*'
authadm added auth for role Administrator
Usare l'argomento list con il comando authadm per controllare l'assegnazione delle
autorizzazioni, ad esempio:
# authadm list
Administrator: (hpux.*, *) (società.autorizzazione_personalizzata.*, *)
168 HP-UX Role-based Access Control
9.5.3 Configurazione di privilegi ed autorizzazioni per comandi aggiuntivi
Sarà necessario definire quei comandi aggiuntivi che non sono disponibili nella
configurazione predefinita. Le autorizzazioni necessarie per eseguire i comandi devono
già esistere ed essere assegnate ad un ruolo. Se non fosse già stato fatto, il comando
sarà configurato, ma nessun utente disporrà dell'autorizzazione appropriata per
utilizzarlo.
Usare il comando cmdprivadm per modificare le informazioni sull'autorizzazione ed
i privilegi di un comando. Il comando cmdprivadm opera in modo simile a roleadm
e authadm, ma consente soltanto l'aggiunta e l'eliminazione di un'autorizzazione e di
un privilegio relativi ad un comando nel database di privrun.
La sintassi del comando cmdprivadm è la seguente:
cmdprivadm add cmd=percorso_completo_comando | percorso_completo_file
|[op=operazione]|[object=oggetto]
|[ruid=ruid]|[euid=euid]
|[rgid=rgid]|[egid=egid]
|[compartment=etichetta_compartimento]
|[privs=elenco_privilegi_separati_da_virgole]
|[re-auth=nome_servizio_pam]
|[privs=elenco_flag_separati_da_virgole]
cmdprivadm delete cmd=percorso_completo_comando | percorso_completo_file
|[op=operazione]|[object=oggetto]
|[ruid=ruid]|[euid=euid]
|[rgid=rgid]|[egid=egid]
|[compartment=etichetta_compartimento]
|[privs=elenco_privilegi_separati_da_virgole]
|[re-auth=nome_servizio_pam]
|[privs=elenco_flag_separati_da_virgole]
Segue l'elenco ed una breve descrizione degli argomenti del comando cmdprivadm:
add
delete
Aggiunge le informazioni sull'autorizzazione di un comando (o di un file)
nel database /etc/rbac/cmd_priv.
Elimina le informazioni sull'autorizzazione di un comando (o di un file) dal
database /etc/rbac/cmd_priv.
L'esempio seguente dimostra l'uso degli argomenti più comuni del comando
cmdprivadm:
#
cmdprivadm add cmd=/opt/customcmd \
op=nome_società.comando_personalizzato ruid=0 euid=0 flags=edit \
/opt/comando_personalizzato::(nome_società.comando_personalizzato,*):0/0/-1/-1::::edit
cmdprivadm added the entry to /etc/rbac/cmd_priv
Come mostrato dall'esempio precedente, il file del database di cmd_priv contiene un
campo per i valori dei flag. Accertarsi di tenere conto del valore di cmdprivadm flags
quando si configurano le informazioni relative alle autorizzazioni ed ai privilegi dei
comandi o dei file.
9.5 Configurazione di HP-UX RBAC
169
Il comando privrun riconosce un flag definito, KEEPENV. Se il flag KEEPENV è
impostato nel file cmd_priv per un particolare comando, nessuna delle variabili
ambientali sarà interessata quando privrun applicherà il wrapping a quel particolare
comando.
Con privedit, è possibile specificare valori di flag indicanti se privedit può o non
può modificare un file. È possibile specificare ulteriori valori di flag per indicare se
privrun può eseguire un comando. I valori di flag supportati sono i seguenti:
flag=vuoto o qualsiasi altro token
flag=edit
flag=noexec
Indica che il file può essere soltanto eseguito e
non modificato.
Indica che il file può essere eseguito e modificato.
Questo flag è previsto principalmente per gli
script.
Indica che il file non può essere eseguito e può
essere modificato soltanto con privedit.
NOTA: Per le informazioni su tutti gli argomenti di cmdprivadm, vedere
cmdprivadm(1M). Gran parte degli argomenti sono facoltativi: nel caso non siano
specificati, saranno sostituiti da impostazioni predefinite ragionevoli.
NOTA: Per modificare una voce esistente nel file /etc/rbac/cmd_priv, è necessario
innanzitutto eliminare la voce, quindi aggiungere la versione aggiornata. Usando
cmdprivadm per eliminare le voci, gli argomenti operano come filtri. Ad esempio,
specificando il comando cmdprivadm delete op=foo saranno eliminate tutte le
voci in cui l'operazione è foo. Di conseguenza, usando cmdprivadm per eliminare
delle voci, accertarsi di specificare un numero sufficiente di argomenti per identificare
con certezza le voci da eliminare.
9.5.4 Configurazione di HP-UX RBAC con privilegi ad alta definizione
Le applicazioni comunicano con le risorse di sistema utilizzando chiamate di sistema,
che consentono al sistema operativo di accedere alle risorse. Per consentire
all'applicazione di accedere a sistema operativo e hardware di sistema, alcune chiamate
richiedono privilegi speciali, elevati.
Prima che fossero disponibili i privilegi ad alta definizione, UID=0 soddisfava i privilegi
speciali, elevati, di alcune chiamate di sistema. Se l'ID utente non era 0, la chiamata di
sistema era respinta e l'applicazione restituiva un errore.
HP-UX RBAC ed in particolare il comando wrapper privrun, consentono agli utenti
non di root di ottenere il livello di privilegi speciali, o UID=0, necessari per eseguire
alcune applicazioni. Oltre ad attribuire UID=0 ad un utente non di root per l'esecuzione
di una particolare applicazione in alcune circostanze, HP-UX RBAC può anche utilizzare
i privilegi ad alta definizione per eseguire applicazioni con privilegi ulteriori, ma senza
UID=0.
170
HP-UX Role-based Access Control
È possibile usare HP-UX RBAC per configurare comandi da eseguire soltanto con un
insieme selezionato di privilegi e con insiemi di privilegi differenti per utenti diversi, tutti
senza UID=0. Ad esempio, un amministratore potrebbe dover eseguire il comando
foobar con più privilegi, mentre un utente normale potrebbe necessitare di un numero
di privilegi assai inferiore per utilizzare foobar.
I privilegi ad alta definizione possono essere considerati come "chiavi per il controllo
dell'accesso alle chiamate di sistema". Invece di controllare UID=0, la chiamata di
sistema controllerà un particolare privilegio. Questi privilegi ad alta definizione
consentono di "bloccare" le chiamate di sistema e di controllare l'accesso delle
applicazioni alle risorse del sistema operativo e dell'hardware. Inoltre, suddividendo le
autorizzazioni in privilegi ad alta definizione, per essere eseguite le applicazioni non
richiedono tutti i privilegi, ma soltanto uno specifico oppure un insieme di privilegi. Nel
caso in cui dovesse risultare compromesso il processo di un'applicazione eseguito con
un insieme particolare di privilegi, il danno potenziale sarà assai inferiore a a quello
che si sarebbe verificato se fosse stato eseguito con UID=0.
NOTA:
Per maggiori informazioni sui privilegi ad alta definizione, vedere privileges(5).
Usare il comando cmdprivadm e l'opzione privs per configurare i comandi di
privrun per applicare il wrapping ed eseguirli soltanto con i privilegi specificati. Quello
seguente è un esempio del comando cmdprivadm che configura il comando
/usr/bin/ksh in modo che sia eseguito con il privilegio composto BASICROOT,
richiedendo anche l'autorizzazione (hpux.adm.mount, *):
# cmdprivadm add cmd=/etc/mount op=hpux.adm.mount object='*' privs=BASICROOT
Il comando cmdprivadm precedente crea una voce nel file /etc/rbac/cmd_priv,
nel modo seguente:
#----------------------------------------------------------------------------------# Command
: Args
:Authorizations
:U/GID :Cmpt
:Privs
:Auth :Flags
#-----------:--------:---------------------:------:-------:----------:------:------/etc/mount :dflt
:(hpux.adm.mount,*)
:///
:dflt
:BASICROOT :dflt :
Dopo aver creato la voce usando cmdprivadm e privrun per il wrapping del
comando,/etc/mount sarà eseguito con il privilegio elevato BASICROOT, un privilegio
composto ad alta definizione, e senza UID=0, nel caso l'utente disponga
dell'autorizzazione (hpux.adm.mount, *).
Come descritto in Sezione 9.6.1, l'opzione del comando privrun -p confronta soltanto
le voci nel file di database /etc/rbac/cmd_priv che hanno i privilegi specificati
dall'opzione -p. Quando si specifica un privilegio usando l'opzione privrun -p,
tenere presente che l'opzione privrun confronterà tutte le voci che contengono il
privilegio specificato, compresi i gruppi di privilegi e quelli composti che comprendono
il privilegio specificato con -p. Il comando privrun sarà eseguito in base alla prima
voce corrispondente individuata in /etc/rbac/cmd_priv. Quello seguente è un
9.5 Configurazione di HP-UX RBAC
171
esempio del comando privrun -p ed un elenco di voci che il comando confronterà
in /etc/rbac/cmd_priv:
Il comando:
# privrun -p MOUNT /etc/mount
riconosce le seguenti voci in /etc/rbac/cmd_priv:
#----------------------------------------------------------------------------------------------------# Command
: Args
:Authorizations
:U/GID :Cmpt :Privs
:Auth
:Flags
#-----------:--------:-------------------:------:------:----------------------------------:-----:----/etc/mount :dflt
:(hpux.adm.mount,*) :///
:dflt :PRIV_CHOWN, MOUNT
:dflt :
/etc/mount :dflt
:(hpux.*,nfs)
:///
:dflt :MOUNT, PRIV_RTPRIO, PRIV_MLOCK
:dflt :
/etc/mount :dflt
:(hpux.adm.*,*)
:///
:dflt :BASICROOT
:dflt :
NOTA: Il comando privrun -p MOUNT /etc/mount soddisfa il privilegio
BASICROOT perché il privilegio semplice di MOUNT fa parte del privilegio composto
predefinito BASICROOT. Per maggiori informazioni sui privilegi semplici e composti,
consultare la manpage privileges(5).
IMPORTANTE: La sequenza di voci in /etc/rbac/cmd_priv è importante, perché
privrun sarà eseguito secondo la prima voce esplicita che riconoscerà. Nel'esempio
precedente, anche se il comando privrun riconosce tutte le tre voci, privrun eseguirà
la prima. Tenere presente la sequenza delle voci quando si configurano i comandi e le
autorizzazioni. Lo strumento cmdprivadm aggiunge voci al fondo del file
/etc/rbac/cmd_priv.
9.5.5 Configurazione di HP-UX RBAC con i compartimenti
HP-UX RBAC può anche utilizzare i compartimenti per configurare le applicazioni da
eseguire in un compartimento particolare. Con i compartimenti, è possibile suddividere
logicamente un sistema in compartimenti, in modo che un processo non sia in grado di
comunicare o accedere a risorse al di fuori del suo compartimento (a meno che una
regola del compartimento lo consenta).
Quello che segue è un esempio del comando cmdprivadm che configura il comando
/sbin/init.d/hpws_apache in modo che sia eseguito soltanto nel compartimento
apache, definito dalla regola del compartimento /etc/cmpt/apache.rules:
# cmdprivadm add cmd='/sbin/init.d/hpws_apache -a start' \
op=hpux.network.service.start object=apache compartment=apache
Il comando cmdprivadm precedente crea una voce nel file /etc/rbac/cmd_priv,
nel modo seguente:
#-------------------------------------------------------------------------------------------------------------# Command
: Args
:Authorizations
:U/GID
:Cmpt
:Privs :Auth
:Flags
#-------------------------:--------:------------------------------------:--------------:--------:-------:-----/sbin/init.d/hpws_apache :start
:(hpux.network.service.start,apache) :///
:apache :dflt :dflt
:
172
HP-UX Role-based Access Control
Dopo aver creato la voce usando cmdprivadm e usando privrun per applicare il
wrapping al comando, gli utenti autorizzati potranno eseguire il comando
/sbin/init.d/hpws_apache -start, che sarà eseguito soltanto nel compartimento
apache. Il tag dei compartimenti del processo è stato cambiato in apache e le proprietà
del processo seguiranno le regole definite per il compartimento apache.
NOTA: Per configurare i compartimenti dei comandi, usare soltanto il comando
cmdprivadm. Non modificare il file del database /etc/rbac/cmd_priv senza
utilizzare cmdprivadm.
Per modificare una voce esistente nel file /etc/rbac/cmd_priv, è necessario
innanzitutto eliminare la voce, quindi aggiungere la versione aggiornata. Usando
cmdprivadm per eliminare le voci, gli argomenti operano come filtri. Ad esempio,
specificando il comando cmdprivadm delete op=foo saranno eliminate tutte le
voci in cui l'operazione è foo. Di conseguenza, usando cmdprivadm per eliminare
delle voci, accertarsi di specificare un numero sufficiente di argomenti per identificare
con certezza le voci da eliminare.
9.6 Uso di HP-UX RBAC
Questa sezione spiega come eseguire i comandi privrun e privedit per operare
HP-UX RBAC.
9.6.1 Uso del comando privrun per eseguire applicazioni con privilegi
Il comando privrun consente ad un utente di eseguire applicazioni legacy con privilegi
differenti, in base alle autorizzazioni associate all'utente. L'utente avvia privrun,
specificando nella riga dei comandi l'applicazione legacy come argomento. Quindi,
privrun consulterà il database /etc/rbac/cmd_priv per determinare quale
autorizzazione è necessaria per eseguire il comando con privilegi aggiuntivi. Se l'utente
ha l'autorizzazione necessaria, privrun eseguirà il comando specificato dopo aver
cambiato il suo UID e/o GID, come indicato nel database /etc/rbac/cmd_priv.
La sintassi del comando privrun è:
privrun [opzioni] comando [argomenti]
| [-u eUID|nome_utente]
| [-g eGID|nome_gruppo]
| [-U rUID|nome_utente]
| [-G rGID|nome_gruppo]
| [-a (operazione, oggetto)]
| [-c compartimento]
| [-p privilegio[,privilegio,privilegio...]]
| [-x]
| [-v [-v]]
| [-h]
| [-t]
L'elenco seguente descrive le opzioni del comando privrun:
9.6 Uso di HP-UX RBAC
173
-u
-g
-U
-G
-a
-c
-p
-x
-v
-h
-t
Riconosce soltanto le voci che contengono l'ID utente effettivo (EUID) corrispondente
all'EUID specificato oppure a quello associato al nome utente.
Riconosce soltanto le voci che contengono l'ID effettivo di gruppo (EGID)
corrispondente all'EGID specificato oppure a quello associato al nome del gruppo.
Riconosce soltanto le voci che contengono l'ID utente effettivo (RUID) corrispondente
al RUID specificato oppure a quello associato al nome utente.
Riconosce soltanto le voci che contengono l'ID effettivo di gruppo (RGID)
corrispondente al RGID specificato oppure a quello associato al nome del gruppo.
Riconosce soltanto le voci che richiedono l'autorizzazione specificata.
L'autorizzazione è definita come coppia (operazione, oggetto) nel file di database
/etc/rbac/cmd_priv. L'autorizzazione specificata deve corrispondere
esattamente all'autorizzazione presente nel file /etc/rbac/cmd_priv; i caratteri
jolly non sono supportati.
Riconosce il compartimento specificato nel file di database /etc/rbac/cmd_priv.
Il compartimento specificato deve corrispondere esattamente a quello presente nel
file /etc/rbac/cmd_priv.
Confronta i privilegi specificati con quelli nel file di database
/etc/rbac/cmd_priv. È possibile specificare più di un privilegio. Quando sono
specificati più privilegi, separarli con una virgola. Quando si specifica un privilegio
usando l'opzione privrun -p, tenere presente che l'opzione privrun confronterà
tutte le voci che contengono il privilegio specificato, compresi i gruppi di privilegi
e quelli composti che comprendono il privilegio specificato con -p. Il comando
privrun sarà eseguito in base alla prima voce corrispondente individuata in
/etc/rbac/cmd_priv.
Usa una modalità di transizione che modifica il comportamento di privrun solo
nel caso in cui non riesca il controllo di un'autorizzazione o di un'autenticazione.
Il comando di destinazione sarà eseguito, invece di restituire un messaggio di
errore, ma senza alcun privilegio aggiuntivo. Il comando di destinazione sarà
eseguito come se l'utente lo avesse eseguito direttamente, senza utilizzare privrun.
Avvia privrun in modalità dettagliata. Il livello di dettagli aumenterà specificando
due opzioni -v. Un livello superiore di dettagli restituirà un maggior numero di
informazioni.
Stampa le informazioni della guida di privrun.
Utilizza la modalità di prova, che esegue tutti normali controlli delle autorizzazioni
ed autenticazioni in base ai file di configurazione, per accertarsi che sia possibile
eseguire privrun come desiderato. L'unica differenza è che invece di eseguire
il comando, in caso positivo privrun -t si limita a restituire un messaggio. Usare
questa anteprima per controllare se sarà possibile eseguire una data chiamata di
privrun.
Quello seguente è un esempio dell'uso basilare di privrun: applicare il wrapping ad
un'applicazione legacy. In questo caso, il comando ipfstat è eseguito come argomento
174
HP-UX Role-based Access Control
del comando privrun, poiché deve essere eseguito in base alle autorizzazioni associate
all'utente:
# privrun ipfstat
Presumendo che l'utente abbia l'autorizzazione necessaria, definita in
/etc/rbac/cmd_priv il comando wrapper privrun eseguirà il comando legacy
con i privilegi (UID e GID) definiti nella voce di /etc/rbac/cmd_priv.
Possono esistere più voci per lo stesso comando, potenzialmente con autorizzazioni
necessarie differenti e privilegi risultanti differenti. In questo caso, privrun cerca
ripetutamente e sequenzialmente nel database /etc/rbac/cmd_priv, eseguendo il
primo comando per il quale l'utente è autorizzato.
In alcuni casi, questa soluzione potrebbe non essere indicata. Ad esempio, potrebbe
essere consentito a tutti gli utenti di eseguire il comando passwd per modificare la loro
password, ma un amministratore potrebbe avere la necessità di eseguirlo con il privilegio
di modificare la password di altri utenti. Se la voce di tutti gli utenti normali è elencata
prima della voce degli utenti amministratori, sarà eseguita per prima e impedirebbe agli
amministratori di eseguire la versione con maggiori privilegi.
In casi come questi, privrun dispone di opzioni che consentono agli utenti di specificare
i privilegi desiderati. Sono utilizzate soltanto le voci che corrispondono ai privilegi
specificati (ad esempio UID). Nel caso che nessuna voce corrisponda ai privilegi
desiderati, privrun restituirà un messaggio di errore.
Quello seguente è un esempio di chiamata di privrun, che riconosce soltanto le voci
che hanno UID pari a 0:
# privrun -u 0 ipfstat
NOTA: Per maggiori informazioni sull'uso del comando privrun, consultare le
manpage privrun(1M) e rbac(5).
9.6.1.1 HP-UX RBAC nei cluster Serviceguard
Serviceguard non supporta l'uso di HP-UX RBAC e di privrun per consentire l'accesso
ai comandi di Serviceguard. La versione A.11.16 di Serviceguard ha implementato un
proprio controllo dell'accesso basato sui ruoli, specificando dei criteri di controllo
dell'accesso tramite i file di configurazione di pacchetti e cluster, offrendo dei criteri che
riconoscono i cluster per le operazioni di Serviceguard. Per le operazioni di controllo
dell'accesso basato sui ruoli di Serviceguard è necessario utilizzare le funzionalità di
Serviceguard. Per maggiori dettagli sui criteri di controllo dell’accesso di Serviceguard,
consultare la versione più recente del documento Managing Serviceguard.
È possibile utilizzare HP-UX RBAC in un cluster Serviceguard, con comandi che non di
Serviceguard. Le stesse regole HP-UX RBAC dovrebbero essere applicate a tutti i nodi
del cluster.
9.6 Uso di HP-UX RBAC
175
9.6.2 Uso del comando privedit per modificare i file sottoposti al controllo dell'accesso
Il comando privedit consente agli utenti autorizzati di modificare i file che normalmente
sarebbero loro interdetti a causa delle autorizzazioni del file o delle liste di controllo
dell'accesso. Dopo aver avviato il comando ed identificato come argomento il file che
si desidera modificare, privedit controllerà il database /etc/rbac/cmd_priv,
così come fa privrun, per determinare l'autorizzazione necessaria a modificare il file
specificato. Se l'utente ha l'autorizzazione per modificare il file, privedit avvierà
l'editor con una copia del file.
NOTA: Quando si usa privedit per avviare un editor e modificare un file, l'editor
è eseguito senza alcun privilegio elevato. Poiché l'editor avviato da privedit non è
eseguito con privilegi elevati, qualsiasi azione tentata, come le azioni di escape della
shell, sarà eseguito con l'insieme di privilegi caratteristici dell'utente (non elevati).
È possibile specificare l'editor usato da privedit per modificare il file, configurando
la variabile ambientale EDITOR. Se la variabile EDITOR non è configurata, privedit
userà l'editor predefinito, vi. Non è possibile trasmettere argomenti all'editor attraverso
al riga dei comandi di privedit. Tuttavia, l'editor riconoscerà e supporterà le variabili
ambientali specifiche degli editor configurate prima dell'avvio di privedit.
Per identificare il file da modificare, usare come argomento di privedit il nome
completamente qualificato. Non utilizzando un nome completamente qualificato,
privedit anteporrà al nome del file specificato la directory di lavoro corrente.
Indipendentemente da come è stato specificato il file da modificare, dopo aver avviato
privedit tutti i nomi di file saranno completamente qualificati. Il comando privedit
inoltre riconosce e supporta i file che sono collegamenti simbolici.
Il comando privedit può modificare soltanto un file alla volta. Specificando come
argomenti di privedit più nomi di file, privedit modificherà il primo file specificato
ed ignorerà quelli successivi. La sintassi del comando privedit è la seguente:
privedit [opzione] nome_file_completamente_qualificato
| [-a (operazione, oggetto)]
| [-v]
| [-h]
| [-t]
| [-x]
Segue l'elenco ed una breve descrizione delle opzioni del comando privedit:
-a autorizzazione
-v
-h
-t
176
HP-UX Role-based Access Control
Riconosce soltanto le voci del file /etc/rbac/cmd_priv
che hanno l'autorizzazione specificata.
Avvia privedit in modalità dettagliata.
Stampa le informazioni della guida di privedit.
Controlla se l'utente ha l'autorizzazione necessaria per
modificare il file e ne restituisce il risultato.
-x
Se il controllo dell'autorizzazione non riesce, il file sarà
modificato in base ai privilegi originali dell'utente.
Quello seguente è un esempio di utilizzo del comando privedit per modificare il file
/etc/default/security con l'autorizzazione specifica di (hpux.sec.edit,
secfile):
# privedit -a "(hpux.sec.edit, secfile)" /etc/default/security
NOTA: Tenere presente che il valore dei flag di ogni voce del database cmd_priv
stabilisce se privedit può modificare un file. Per maggiori informazioni sui flag e
sull'uso del comando privedit, vedere “Configurazione di privilegi ed autorizzazioni
per comandi aggiuntivi” e la manpage privedit(1M).
9.6.3 Personalizzazione di privrun e privedit con ACPS
La funzionalità HP-UX RBAC consente di personalizzare come privrun e privedit
controllano le autorizzazioni degli utenti. Il modulo ACPS è un'interfaccia
personalizzabile, che offre risposte alle applicazioni che devono prendere decisioni in
base alle autorizzazioni. Il file di configurazione di ACPS, /etc/acps.conf, controlla
i seguenti aspetti di ACPS:
•
Quali moduli sono consultati per prendere le decisioni sugli accessi
•
La sequenza nella quale sono consultati i moduli
•
Le regole per combinare le risposte dei moduli e restituire risultati alle applicazioni
Per maggiori informazioni su ACPS, consultare la Sezione 9.3.1 e acps.conf(4), acps(3)
e rbac(5).
9.7 Risoluzione dei problemi di HP-UX RBAC
Quello seguente è l'elenco delle principali procedure di risoluzione dei problemi e debug
di HP-UX RBAC:
•
L'utility rbacdbchk controlla la sintassi del database di HP-UX RBAC.
•
Il comando privrun -v restituisce informazioni aggiuntive e significative.
9.7.1 Strumento per la sintassi del database rbacdbchk
Gli errori più comuni sono causati dalla modifica manuale dei database di HP-UX RBAC,
che determina configurazioni sintatticamente non valide o incoerenze fra i database (ad
esempio, un ruolo in /etc/rbac/user_role non è definito in /etc/rbac/roles).
Per la diagnosi di questi errori comuni, HP-UX RBAC dispone del comando rbacdbchk.
Questo comando legge i database di HP-UX RBAC e restituisce delle avvertenze nel caso
trovi delle voci di configurazioni errate o incoerenti:
9.7 Risoluzione dei problemi di HP-UX RBAC 177
# rbacdbchk
[/etc/rbac/user_role] alessandra: UserOperator
invalid user
The value 'alessandra' for the Username field is bad.
[/etc/rbac/cmd_priv]
/opt/cmd:dflt:(newop,*):0/0//:dflt:dflt:dflt:
invalid command: Not found in the system
The value '/opt/cmd' for the Command field is bad.
[Role in role_auth DB with no assigned user in user_role DB]
Rebooter:(hpux.admin.*, *)
[Invalid Role in user_role DB. Role 'UserOperator' assigned to user 'alessandra' does not exist in
the roles DB]
In un sistema configurato correttamente, il comando rbacdbchk non produrrà output,
indicando così che non ci sono errori.
9.7.2 Informazioni di privrun -v
Il secondo metodo per rilevare eventuali problemi è l'esecuzione del comando privrun
con l'opzione -v (modalità dettagliata). Nella modalità dettagliata, privrun fornisce
informazioni aggiuntive sulle voci che il comando di input ha rilevato e sullo stato del
controllo delle autorizzazioni, insieme ad altri dati significativi. In molti casi, questo
output consentirà di identificare il problema che impedisce il funzionamento di privrun.
È possibile specificare più volte l'opzione -v, per ottenere livelli superiori di dettaglio
dell'output. Quello seguente è un esempio dell'output di privrun -v con il comando
ipfstat:
# privrun -v /sbin/ipfstat
privrun: user root intends to execute command /sbin/ipfstat
privrun: input entry: '/sbin/ipfstat:dflt:(,):///:dflt:dflt::'
privrun: found matching entry: '/sbin/ipfstat:dflt:(hpux.network.filter.readstat,*):0/0//:dflt:dflt::'
privrun: passed authorization check
privrun: attempting to set ruid/euid/rgid/egid to 0/0/-1/-1
privrun: current settings for ruid/euid/rgid/egid are 0/0/3/3
privrun: executing: /sbin/ipfstat
178
HP-UX Role-based Access Control
10 Amministrazione dell'auditing
Lo scopo dell'auditing è la registrazione selettiva degli eventi per analizzare ed
individuare le violazioni della protezione. I dati di audit sono registrati in file di log.
Perciò, il sistema di audit agisce come deterrente per utilizzi malevoli del sistema e rivela
potenziali debolezze di protezione.
Il sistema di audit registra le istanze di accesso agli oggetti nel sistema da parte di
soggetti; individua qualsiasi tentativo (ripetuto) di superare il meccanismo di protezione
o gli usi non consentiti dei privilegi; mette inoltre in rilievo la potenziale vulnerabilità del
sistema.
Quando un utente esegue l'accesso, è generato un ID unico di sessione di auditing, il
"tag di auditing", associato al processo dell'utente. Il tag di auditing resta lo stesso nel
corso di ogni sessione di accesso. Anche se un utente dovesse cambiare identità nel
corso della sessione, tutti gli eventi saranno registrati col medesimo tag di auditing e
fanno riferimento al nome di accesso originale dell'utente.
I dati di auditing sono generati per eventi selezionati relativi alla protezione del sistema.
Ogni dato di auditing contiene informazioni sull'evento, come il tipo, il momento in cui
è avvenuto, l'ID dell'utente o del processo che lo ha causato e così via.
I dati di auditing sono registrati in file/registri eventi di auditing in formato binario. Il
sistema di auditing HP-UX della release HP-UX 11i v3 è in grado di usare più di un
thread di scrittura per registrare i dati in un file. Ogni thread di scrittura scrive in un file
diverso. Tutto ciò serve ad aumentare la quantità di dati trasmessi. Di conseguenza, una
sequenza di auditing è presente nel filesystem sotto forma di directory che contiene più
file di auditing.
I dati delle sequenze di auditing sono compressi per ridurre la dimensione dei file.
Quando un processo è sottoposto per la prima volta ad auditing, nella sequenza di
auditing è scritto un record di identificazione del processo (PIR), che contiene le
informazioni destinate a restare costanti per tutta la durata del processo. Comprendono
ID del processo, ID del processo genitore, tag di auditing, ID utente reale, ID gruppo
reale, ID utente effettivo, ID gruppo effettivo, l'elenco degli ID gruppo, i privilegi effettivi,
permessi e conservati, ID di compartimento e ID di terminale. Il PIR è compilato una volta
soltanto per ogni processo di una sequenza di auditing.
Questo capitolo tratta i seguenti argomenti:
•
Auditing dei componenti (Sezione 10.1)
•
Auditing del proprio sistema (Sezione 10.2)
•
Auditing degli utenti (Sezione 10.3)
•
Eventi oggetto di auditing (Sezione 10.4)
•
Sequenze di auditing (Sezione 10.5)
179
•
Visualizzazione dei registri eventi di auditing (Sezione 10.6)
•
Auto-auditing (Sezione 10.7)
•
Auditing di HP-UX RBAC (Sezione 10.8)
10.1 Auditing dei componenti
La funzionalità di auditing di HP-UX 11i comprende file di configurazione, comandi e
manpage. Questi componenti sono elencati nelle sezioni seguenti.
10.1.1 Comandi
La Tabella 10-1 contiene una breve descrizione di ogni comando di auditing.
Tabella 10-1 Comandi di auditing
Comando
Descrizione
audevent
Modifica o visualizza lo stato di un evento o di una chiamata di sistema.
audisp
Visualizza i record di auditing.
audomon
Imposta il monitoraggio del file di auditing ed i parametri di dimensione.
audsys
Avvia ed arresta l'auditing; imposta e visualizza le informazioni sul file o
sulla directory di auditing.
userdbset
Seleziona gli utenti da sottoporre ad auditing specificando l'opzione
AUDIT_FLAG=1.
10.1.2 File di configurazione dell'auditing
La Tabella 10-2 contiene una breve descrizione di ogni file di configurazione associato
alla funzionalità di auditing.
Tabella 10-2 File di configurazione dell'auditing
File
Descrizione
/etc/audit/audit.conf File contenente le informazioni predefinite sulla classificazione degli eventi.
/etc/audit/
auditr_site.conf
File contenente le informazioni specifiche locali sulla classificazione degli
eventi.
/etc/default/security File contente le impostazioni predefinite di auditing per l'intero sistema.
/var/adm/userdb
Database contenente le informazioni di auditing relative ai singoli utenti.
/etc/rc.config.d/
auditing
File contenente le informazioni di configurazione che inizializzano l'auditing
al riavvio del sistema.
180 Amministrazione dell'auditing
10.1.3 Manpage relative all'auditing
La Tabella 10-3 contiene una breve descrizione di ogni manpage relativa alla funzionalità
di auditing.
Tabella 10-3 Manpage relative all'auditing
Manpage
Descrizione
audevent(1M)
Descrive le funzionalità e la sintassi di audevent.
audisp(1M)
Descrive le funzionalità e la sintassi di audisp.
audomon(1M)
Descrive le funzionalità e la sintassi di audomon.
audsys(1M)
Descrive le funzionalità e la sintassi di audsys.
userdbset(1M)
Descrive le funzionalità e la sintassi di userdbset.
audit.conf(4)
Descrive il file /etc/audit/audit.conf.
audit(5)
Presenta le informazioni introduttive sull'auditing di HP-UX.
10.2 Auditing del proprio sistema
Per pianificare, abilitare e controllare l'auditing del proprio sistema, usare le procedure
seguenti.
10.2.1 Pianificazione dell'implementazione dell'auditing
Per pianificare l'implementazione dell'auditing, eseguire le operazioni seguenti:
1.
2.
Determinare quali utenti sottoporre ad auditing. Per impostazione predefinita, tutti
gli utenti sono selezionati per l'auditing.
Determinare quali eventi o chiamate sottoporre ad auditing. Usare il audevent
per visualizzare un elenco di eventi e chiamate di sistema correntemente selezionate
per l'auditing.
Gli eventi e le chiamate di sistema possono essere raggruppate in profili
3.
4.
Decidere dove si desiderano archiviare, nel sistema, i file di log dell'auditing
(sequenze di auditing). Per ulteriori informazioni sulla configurazione dei file di log,
vedere la Sezione 10.5
Individuare una strategia per archiviare ed eseguire il backup dei file di auditing.
Spesso i file di auditing occupano una grande quantità di spazio su disco e, se la
gestione dei file non è pianificata accuratamente, possono superarlo. Usare l'opzione
-X del comando audomon per automatizzare l'archiviazione.
Per ulteriori informazioni sulle prestazioni e sulla gestione dei sistemi di auditing, utili a
pianificare l'implementazione dell'auditing, vedere la Sezione 10.2.5 e la
Sezione 10.2.6.
10.2 Auditing del proprio sistema
181
10.2.2 Abilitazione dell'auditing
Per abilitare l'auditing nel sistema, eseguire queste operazioni:
1.
2.
Configurare gli utenti che si desidera sottoporre ad auditing con il comando
userdbset. Per ulteriori informazioni sulla configurazione dell'auditing degli utenti,
vedere la Sezione 10.3.
Configurare gli eventi che si desidera sottoporre ad auditing con il comando
audevent. Ad esempio, per svolgere l'auditing in base a criteri_locali, digitare il
comando seguente:
# audevent -P -F -r criteri_locali
Il valore di criteri_locali deve essere definito nel file /etc/audit/
audit_site.conf.
Per visualizzare l'elenco di eventi e chiamate di sistema correntemente configurate
per l'auditing, usare il comando audevent senza opzioni.
Per ulteriori informazioni sulla configurazione dell'auditing degli eventi, vedere la
Sezione 10.4.
3.
Per abilitare il sistema di auditing a mantenere i parametri correnti di configurazione
al momento del riavvio del sistema, impostare i parametri dell'argomento audevent
nel file /etc/rc.config.d/auditing. Ad esempio, per conservare i parametri
configurati al punto 2, impostarli nel modo seguente:
AUDEVENT_ARGS1 = –P –F –r criteri_locali
4.
Avviare il sistema di auditing e definire le sequenze di auditing con il comando
audsys:
#audsys -n -c file_primario_auditing -s 1000
5.
Impostare i file di log ed i loro parametri di sostituzione nel file /etc/
rc.config.d/auditing. Seguire la procedura:
a. Impostare PRI_AUDFILE in base al nome del file primario di log dell'auditing.
b. Impostare PRI_SWITCH alla dimensione massima (in KB) del file primario di
log dell'auditing, raggiunta la quale la registrazione passerà al file di log
ausiliario.
c. Impostare SEC_AUDFILE con il nome del file ausiliario di log.
d. Impostare SEC_SWITCH alla dimensione massima (in KB) del file secondario di
log dell'auditing.
Per ulteriori informazioni sulla configurazione dei file primari ed ausiliari di log
dell'auditing, vedere la Sezione 10.5.
6.
Avviare il daemon audomon, se questo non fosse già in esecuzione. Il daemon
audomon tiene sotto controllo la crescita della sequenza corrente di auditing e, se
necessario, passa ad una sequenza di auditing alternativa. Ad esempio:
#audomon -p 20 -t 1 -w 90 -X "/usr/local/bin/rcp_audit_trail nome_host"
182
Amministrazione dell'auditing
7.
8.
Per ulteriori informazioni sulla configurazione del daemon audomon, consultare la
Sezione 10.5.2
Impostare i parametri dell'argomento audomon nel file /etc/rc.config.d/
auditing, per mantenere le impostazioni correnti dopo il riavvio del sistema.
Impostare il flag di AUDITING a 1 nel file /etc/rc.config.d/auditing per
abilitare automaticamente il sistema di auditing all'avvio del sistema.
10.2.3 Disabilitazione dell'auditing
Per disabilitare l'auditing nel sistema, eseguire queste operazioni:
1. Arrestare l'auditing del sistema utilizzando il comando seguente:
# audsys -f
2.
3.
Impostare il flag di AUDITING a 0 nel file /etc/rc.config.d/auditing per
impedire l'esecuzione del sistema di auditing al riavvio del sistema.
(Facoltativo) Per arrestare il daemon audomon, digitare:
# kill `ps -e | awk '$NFS~ /audomon/ {print $1}'`
Eseguire questa operazione soltanto se si desidera riconfigurare il daemon audomon.
Per riconfigurare e riavviare il daemon audomon, seguire il punto 6 e il punto
7 descritti in Sezione 10.2.2.
10.2.4 Monitoraggio dei file di auditing
Per visualizzare, tenere sotto controllo e gestire i file di auditing, eseguire queste
operazioni:
1.
Visualizzare i file di log dell'auditing con il comando audisp:
# audisp file_auditing
Per informazioni dettagliate sul comando audisp, vedere “Visualizzazione dei
registri eventi di auditing”.
2.
3.
Impostare nel file /etc/rc.config.d/auditing gli argomenti di monitoraggio
dei file di log dell'auditing. Utilizzare gli stessi valori del punto 2.
(Facoltativo) Arrestare l'auditing del sistema utilizzando il comando seguente:
# audsys -f
4.
(Facoltativo) Impostare il flag di AUDIT a 0 nel file /etc/rc.config.d/auditing
per impedire l'esecuzione del sistema di auditing al prossimo riavvio del sistema.
10.2.5 Considerazioni sulle prestazioni
L'auditing aumenta il carico del sistema. Quando le prestazioni sono importanti, è
necessario essere selettivi riguardo il tipo di eventi e utenti da controllare. Ciò può servire
a ridurre le conseguenze dell'auditing sulle prestazioni.
10.2 Auditing del proprio sistema 183
10.2.6 Linee guida per la gestione del sistema di auditing
Osservare le seguenti linee guida per gestire il sistema:
•
controllare i file di log dell'auditing secondo i criteri di protezione. Un file di auditing
in linea dovrebbe essere conservato per almeno 24 ore e tutti i record di auditing
archiviati non in linea dovrebbero essere conservati per almeno 30 giorni.
•
Esaminare i registri eventi di auditing per rilevare attività insolite, come: accessi a
tarda ora, accessi non riusciti, mancato accesso a filesystem e tentativi non riusciti
di eseguire importanti procedure di protezione.
•
Prevenire l'eccessiva crescita del file di auditing archiviandolo giornalmente.
•
Rivedere periodicamente gli eventi selezionabili correnti, soprattutto dopo
l'installazione di nuove release di HP-UX, poiché queste spesso introducono nuove
chiamate di sistema.
•
Esaminare periodicamente gli utenti sottoposti ad auditing.
•
Non seguire alcuno schema o pianificazione per la scelta dell'evento o dell'utente.
•
Impostare linee guida locali. Coinvolgere gli utenti e i dirigenti nella definizione di
queste linee guida.
•
Se si presume che il volume dei dati di auditing sarà elevato, configurare le sequenze
di auditing in un volume logico composto da più dischi fisici e più schede di I/O.
Usare l'opzione -N con il comando audsys per suddividere le sequenze di auditing
in più file.
10.3 Auditing degli utenti
Per impostazione predefinita, quando è attivato l'auditing di sistema, lo stato di auditing
per tutti gli utenti è attivo. Gli utenti aggiunti al sistema saranno automaticamente sottoposti
ad auditing.
È possibile monitorare le attività degli utenti nei sistemi HP-UX mediante l'auditing. Per
cambiare gli utenti sottoposti ad auditing, scegliere una delle seguenti opzioni:
•
Auditing di tutti gli utenti.
Per impostazione predefinita, quando è attivato l'auditing di sistema, lo stato di
auditing è attivo per tutti gli utenti. Gli utenti aggiunti al sistema saranno
automaticamente sottoposti ad auditing.
Se l'auditing è disattivato per tutti gli utenti, impostare AUDIT_FLAG=1 nel file
/etc/default/security.
184 Amministrazione dell'auditing
•
Non sottoporre ad audit alcun utente.
Per disattivare l'auditing per tutti gli utenti, eseguire queste operazioni:
1.
Controllare quali utenti sono già sottoposti ad auditing. Per controllare, eseguire
queste operazioni:
a. Controllare l'impostazione di AUDIT_FLAG nel file /etc/default/
security.
b. Controllare l'impostazione AUDIT_FLAG memorizzata nel database utenti,
usando il comando seguente:
# userdbget -a AUDIT_FLAG
2.
•
Impostare AUDIT_FLAG=0 nel file /etc/default/security.
Auditing di utenti specifici. Per configurare l'auditing per utenti specifici, eseguire
queste operazioni:
1. Disattivare l'auditing per tutti gli utenti, impostando AUDIT_FLAG=0 nel file
/etc/default/security.
2. Configurare l'auditing di uno specifico utente utilizzando il comando seguente:
# /usr/sbin/userdbset -u nome_utente AUDIT_FLAG=1.
Se il sistema di auditing non è già abilitato, usare il comando audsys -n per avviarlo.
Le modifiche all'auditing hanno effetto al successivo accesso dell'utente.
10.4 Eventi oggetto di auditing
Un evento è un'azione con implicazioni per la protezione, come la creazione o l'apertura
di un file, oppure l'accesso ad un sistema. In un sistema HP-UX, è possibile eseguire
l'auditing degli eventi per accrescere la protezione, individuando possibili violazioni.
Tuttavia, più eventi si sceglie di sottoporre ad auditing, più risorse di sistema saranno
necessarie, con un maggiori conseguenze sulle prestazioni del sistema. Il responsabile
della protezione deve determinare quali eventi sottoporre ad auditing in base alle
esigenze aziendali ed alle leggi in vigore.
Per specificare le attività del sistema sottoporre ad auditing (gli eventi da controllare), è
utilizzato il comando audevent. Per una più facile configurazione, gli eventi che possono
essere oggetto di auditing sono classificati in categorie e profili. Una volta selezionata
una categoria o un profilo di evento, saranno selezionati tutte le chiamate di sistema e
gli eventi di auto-auditing associati alla categoria di eventi. Quando si installa il sistema
di auditing, nel file /etc/audit/audit.conf è fornito un insieme predefinito di
classificazione degli eventi. Inoltre, per definire le classificazioni ed i profili locali è
possibile utilizzare il file /etc/audit/audit_site.conf.
10.4 Eventi oggetto di auditing 185
NOTA:
HP consiglia di sottoporre ad auditing almeno questi eventi:
•
eventi dell'amministratore
•
eventi di accesso
•
eventi moddac di auto-auditing
•
execv, execve
•
eventi pset
Questi eventi sono predefiniti come profilo basic nel file /etc/audit/audit.conf.
Configurare gli eventi che si desidera sottoporre ad auditing prima di avviare il sistema
di auditing. La sintassi del comando audevent è la seguente:
# audevent [opzioni]
Le opzioni seguenti sono comunemente utilizzate con il comando audevent:
Tabella 10-4 Opzioni del comando audevent
Opzioni di audevent
Descrizione
-e evento
Specifica l'evento da registrare
-F
Registra gli eventi legati ad operazioni non riuscite
-l
Visualizza l'elenco completo dei tipi di evento e delle chiamate di sistema ad
essi associate
-P
Registra gli eventi legati ad operazioni riuscite
-r profilo
Specifica il profilo degli eventi da registrare. I profili sono definiti nel file
/etc/audit/audit.conf.
-S o -s
Modifica lo stato di un evento o di una chiamata di sistema
chiamata_di_sistema
nessuna opzione
Visualizza lo stato corrente degli eventi selezionati o delle chiamate di sistema
Per configurare admin, login e modaccess per l'auditing, digitare il comando
seguente:
# audevent -P -F -e admin -e login -e moddac
Per configurare gli eventi da sottoporre ad auditing nel profilo di base, usare il comando
seguente:
# audevent -P -F -r basic
Sia Audit Success sia Audit Failure sono impostati come tipi di evento per
monitorare gli eventi riusciti o non riusciti o le chiamate di sistema. Questa è la selezione
minima dei tipi di evento consigliata per eseguire un sistema.
186 Amministrazione dell'auditing
Generalmente, un record è scritto soltanto se è stato selezionato per l'auditing sia il tipo
di evento sia l'utente che ha dato inizio all'evento selezionato. Tuttavia, è possibile che
sia generato qualche record nel momento in cui l'utente inizia e termina una sessione,
anche se l'utente non è selezionato per l'auditing. Questi dati sono considerati
informazioni relative all'intero sistema, basate sulla selezione degli eventi, anzichè su
quella degli utenti. I programmi che eseguono l'auto-auditing possono prendere decisioni
arbitrarie ed ignorare la selezione degli utenti, ma si tratta di una procedura che non è
raccomandata per l'auto-auditing.
10.5 Sequenze di auditing
Tutti i dati di auditing sono scritti in una sequenza di auditing. Tipicamente, una sequenza
di auditing è presente nel filesystem sotto forma di directory ed è costituita uno o più file
di log. Il numero dei file di log dipende da quanti thread di scrittura sono stati usati per
la registrazione dei dati. Soltanto l'intera directory, non uno o più dei suoi file, ha un
significato dal punto di vista dell'analisi o della visualizzazione. Contrariamente al
meccanismo abituale, la release di HP-UX 11i versione 3 offre una modalità di
compatibilità, che consente di generare sequenze di auditing presenti come file singolo.
La modalità di compatibilità è supportata soltanto per ragioni di compatibilità con il
passato e diverrà obsoleta nelle release future che seguiranno HP-UX 11i versione 3.
Per maggiori informazioni, consultare la manpage audsys(1M).
Quando è abilitato il sistema di auditing, deve essere presente almeno una sequenza
di auditing. Con audsys è possibile specificare il nome della sequenza e molti dei suoi
attributi. Quando la sequenza corrente supera la capacità predefinita – la dimensione
di Audit File Switch (AFS) – o quando il filesystem che esegue l'auditing in cui si trova
raggiunge la capacità predefinita – la dimensione di File Space Switch (FSS) – il
sottosistema di auditing visualizzerà un avvertimento. Quando è raggiunta la dimensione
di AFS o FSS della sequenza di auditing corrente, il sottosistema di auditing cercherà
una sequenza ausiliaria. Se ce n'è una disponibile, la registrazione passerà alla sequenza
ausiliaria. Se non è stata specificata un sequenza ausiliaria, il sottosistema di auditing
creerà una nuova sequenza di auditing con lo stesso nome di base, ma una diversa
estensione con indicatore di data ed ora, e inizierà a registrarvi. Dopo il passaggio ad
un'altra sequenza, audomon aprirà la riga dei comandi, per elaborare l'ultima sequenza
di auditing. In base alle esigenze locali, l'elaborazione potrebbe richiedere il backup,
l'archiviazione, lo spostamento, la cancellazione o la trasmissione dei dati sotto forma
di rapporto. Se auto-switch non riesce, saranno visualizzati dei messaggi di
avvertimento, per richiedere interventi appropriati dell'amministratore e la sequenza di
auditing corrente continuerà a crescere.
10.5 Sequenze di auditing
187
NOTA:
1. Con HP-UX 11i versione 3, non è più necessario specificare manualmente ed
esplicitamente una sequenza ausiliaria a cui passare. Il sistema di auditing cambierà
automaticamente le sequenze di auditing.
2. Se il passaggio automatico non riesce e la sequenza corrente di auditing continua
a crescere dopo il punto FSS, potrebbe essere raggiunto il parametro minfree
definito dal sistema. A questo punto, saranno sospese tutte le azioni degli utenti
regolari che possono essere oggetto di auditing. Riportare il sistema allo stato
operativo archiviando i dati di auditing, oppure specificando un nuovo file di log
di auditing in un filesystem con spazio libero sufficiente.
3. Se altre attività occupano spazio nel filesystem, o se lo spazio nel filesystem prescelto
è insufficiente per la dimensione AFS selezionata, il punto File Space Switch potrebbe
essere raggiunto prima di quello Audit File Switch.
Scegliere un filesystem con spazio sufficiente per i propri file di log di auditing. È possibile
calcolare la dimensione del proprio filesystem con il comando bdf. HP consiglia di
configurare i file di log almeno con i seguenti parametri:
•
Il filesystem deve avere più di 5000 KB disponibili per il file di log di auditing
primario.
•
Deve essere disponibile oltre il 20% del proprio spazio totale.
La crescita dei file di log dell'auditing è strettamente monitorata dal daemon monitor di
auditing, audomon, per garantire che nessun dato sia perduto.
10.5.1 Configurazione delle sequenze di auditing
Per specificare il file primario di log e quello (facoltativo) ausiliario per raccogliere i dati
di auditing, utilizzare il comando audsys:
#audsys -n -N2 -c sequenza_auditing -s 5000
Questo esempio avvia il sistema di auditing e registra i dati nella directory
sequenza_auditing, usando due thread di scrittura. La dimensione di AFS è impostata
a 5000 KByte. Per ulteriori informazioni, consultare audsys(1M).
10.5.2 Monitoraggio e gestione delle sequenze di auditing
Il daemon di monitoraggio di auditing (audomon) serve a controllare e gestire le sequenze
di auditing. Il daemon audomon è avviato automaticamente insieme all'auditing, al
momento dell'avvio del sistema (AUDITING=1 in /sbin/init.d/auditing). Anche
da un utente privilegiato può eseguire il daemon audomon. Una volta avviato, il daemon
audomon controlla la capacità della sequenza di auditing corrente e del filesystem in
cui si trova. Quello seguente è un esempio del comando usato per avviare il daemon
audomon:
# audomon -p 20 -t 1 -w 90 -X "/user/local/bin/rcp_audit_trail nome_host"
188 Amministrazione dell'auditing
Questo comando avvia il daemon audomon con il comportamento seguente, presumendo
che il sistema di auditing sia stato avviato con il comando seguente:
# audsys -n -N 2 -c /var/.audit/sequenza_auditing -s 500
•
audomon rimarrà inattivo ad intervalli di almeno un minuto.
•
Quando la dimensione della sequenza di auditing raggiunge 4500 KB, oppure il
filesystem in cui si trova la sequenza di auditing risulta occupato all'80%, il daemon
audomon arresterà la registrazione dei dati nella sequenza di auditing corrente ed
inizierà a registrare una nuova sequenza di auditing: /var/
.sequenza_auditing.aaaammggHHMM
•
Dopo il passaggio alla nuova sequenza di auditing, il daemon audomon attiverà
il seguente comando:
sh -c "/usr/local/bin/rcp_audit_trail nome_host /var/.audit/sequenza_auditing"
Questo script è specifico del sistema ed è possibile utilizzarlo per copiare la vecchia
sequenza di auditing, eseguire il backup dei dati o funzioni di archiviazione e per
creare rapporti di auditing. Per ulteriori informazioni sul daemon audomon,
consultare audomon(1).
ATTENZIONE:
•
Se il filesystem contenente la sequenza di auditing è pieno, tutti i processi non di
root che generano dati di auditing saranno bloccati all'interno del kernel. Inoltre,
se un processo non di root è connesso al terminale di sistema, sarà terminato. Per
ulteriori dettagli consultare la sezione WARNINGS della manpage audsys(1M).
•
Non collocare la sequenza di auditing nel filesystem di root.
SUGGERIMENTO: HP consiglia di scrivere uno script per la gestione della propria
strategia a lungo termine per l'archiviazione dei dati e di trasmetterlo al daemon
audomon usando l'opzione -X.
Il comando hpvmstatus accetta i seguenti argomenti:
-p spazio_libero
La percentuale minima di spazio rimasto nel
filesystem che contiene il file primario di log,
prima che il sistema di auditing trasferisca la
registrazione nel file ausiliario. Il valore
predefinito di spazio_libero è 20%.
-t frequenza_riattivazione L'intervallo minimo di riattivazione, in minuti,
trascorso il quale il sistema visualizza nella
console i messaggi di avvertimento per i punti di
trasferimento del file di log di auditing. Il valore
predefinito di frequenza_riattivazione è
di 1 minuto.
10.5 Sequenze di auditing 189
-w preavviso
-X comando
La percentuale di spazio del file di log
dell'auditing utilizzata, o lo spazio minimo libero
del filesystem raggiunti i quali saranno inviati alla
console dei messaggi di avvertimento. Il valore
predefinito di preavviso è 90%.
Il comando eseguito ogni volta che audomon
cambia la sequenza di auditing.
Per ulteriori informazioni, vedere audomon(1M).
10.6 Visualizzazione dei registri eventi di auditing
L'auditing raccoglie una grande quantità di dati. Per scegliere i dati che si desidera
visualizzare, usare il comando audisp:
#/usr/sbin/audisp sequenza_auditing
Le opzioni seguenti sono utilizzabili con il comando audisp:
-f
-p
-c chiamata_sistema
-t
-s
-u nome_utente
-l nome_terminale
-e nome_evento
> nome_file
Visualizza soltanto gli eventi non riusciti.
Visualizza soltanto gli eventi riusciti.
Visualizza la chiamata di sistema selezionata.
Visualizza gli eventi verificatisi dopo un determinato
momento.
Visualizza gli eventi verificatisi prima di un determinato
momento.
Visualizza le informazioni di un utente specifico.
Visualizza le informazioni di un terminale specifico.
Visualizza le informazioni di un determinato evento.
Scrive l'output nel file specificato.
Quando si lavora con registri eventi di auditing di grande dimensione, potrebbero essere
necessari alcuni minuti per preparare il record per la visualizzazione. Quando si
visualizzano i dati di auditing è necessario fare attenzione alle seguenti anomalie:
•
I dati di auditing potrebbero sembrare imprecisi quando i programmi che utilizzano
le chiamate di sistema oggetto di auditing forniscono parametri errati. I dati di
auditing mostrano cosa è stato trasmesso al kernel dal programma utente. Ad
esempio, eseguendo la chiamata di sistema kill() senza parametri, nella sezione
parametri del record di auditing saranno presenti valori imprevedibili.
•
Le chiamate di sistema che accettano nomi di file come argomenti potrebbero non
aver registrato correttamente le informazioni di dispositivi ed inodi. Se la chiamata
non è stata completata, i valori saranno pari a -1.
•
Eseguendo l'auditing del superutente durante la modifica dei parametri dell'evento
o della chiamata di sistema sarà originato un record di auditing molto lungo. Ad
esempio, quando è aggiunto un tipo di evento da sottoporre ad auditing, sarà
190 Amministrazione dell'auditing
generato un record per ciascun tipo di evento e chiamata di sistema abilitati per
l'auditing, non solo per il tipo di evento che si sta aggiungendo.
10.6.1 Esempi d'utilizzo del comando audisp
Gli esempi seguenti mostrano le informazioni di auditing visualizzate con il comando
audisp:
•
Visualizza sullo schermo l'output del registro eventi:
#/usr/sbin/audisp sequenza_auditing
•
Invia l'output del registro eventi a /tmp/output_registro_auditing:
#/usr/sbin/audisp sequenza_auditing > /tmp/output_registro_auditing
•
Visualizza soltanto gli eventi riusciti:
#/usr/sbin/audisp -p sequenza_auditing
•
Visualizza esclusivamente le attività di proprietà dell'utente gianni:
#/usr/sbin/audisp -u gianni sequenza_auditing
•
Visualizza le attività nel terminale ttypa:
#/usr/sbin/audisp -l ttypa sequenza_auditing
•
Visualizza soltanto gli eventi di accesso:
#/usr/sbin/audisp -e login sequenza_auditing
10.7 Auto-auditing
Alcuni processi attivano una serie di azioni che possono essere sottoposte ad auditing.
Per ridurre la quantità di dati di auditing raccolti per il registro eventi e fornire annotazioni
più significative nei file di log di auditing, alcuni di questi processi sono progettati per
sospendere l'auditing delle azioni da essi eseguite e produrre una singola voce del
registro eventi di auditing che descrive il processo appena concluso. I processi
programmati in questo modo sono definiti programmi di auto-auditing; usando questi
programmi si semplificano i dati dei registri eventi di auditing.
NOTA:
L'elenco dei processi di auto-auditing varia seconda il sistema.
Processi di auto-auditing
I seguenti processi hanno capacità di auto-auditing:
chfn
chsh
login
newgrp
Modifica la voce finger
Modifica la shell di accesso
L'utility di accesso
Modifica il gruppo effettivo
10.7 Auto-auditing
191
passwd
audevent
audisp
audsys
audusr
init
lpsched
fbackup
ftpd
remshd
rlogind
telnetd
privrun
privedit
roleadm
authadm
cmdprivadm
Modifica la password
Seleziona gli eventi da sottoporre ad auditing
Visualizza i dati di auditing
Avvia o arresta il sistema di auditing
Seleziona gli utenti da sottoporre ad auditing
Modifica i livelli di esecuzione, invita a chiudere le sessioni utente
Programma le richieste per la stampante in linea
File flessibile di backup
Daemon del protocollo di trasferimento file
Daemon del server della shell remota
Daemon del server di accesso remoto
Daemon del server telnet
Esegue un'applicazione legacy1
Consente agli utenti autorizzati di modificare i file1
Modifica le informazioni dei ruoli1
Modifica le informazioni di autorizzazione1
Modifica le autorizzazioni ed i privilegi dei comandi1
La maggior parte dei programmi di auto-auditing genera dati di auditing in base a una
singola categoria di eventi. Ad esempio, il comando audsys genera i dati di auditing
relativi all'evento admin. Alcuni comandi generano dati di auditing in base a più
categorie di eventi. Ad esempio, il comando init genera i dati relativi agli eventi
login ed admin.
10.8 Auditing di HP-UX RBAC
I comandi privrun, privedit, roleadm, authadm e cmdprivadm di HP-UX RBAC
generano ognuno dei record di auditing. In ogni record di auditing sono contenuti i
seguenti attributi:
•
Nome utente
•
UID
•
Ruolo
•
Autorizzazioni (operazione, oggetto)
•
Momento dell'evento
•
Risultato dell'evento (riuscito o non riuscito)
1. Per ulteriori informazioni, vedere il Capitolo 9.
192 Amministrazione dell'auditing
10.8.1 Auditing basato sui criteri HP-UX RBAC e sul file /etc/rbac/aud_filter
HP-UX RBAC versione B.11.23.02 e successive, per identificare criteri specifici HP-UX
RBAC da sottoporre ad audit supporta l'uso di un file filtro di auditing. È possibile creare
il file filtro /etc/rbac/aud_filter per identificare ruoli specifici, operazioni e oggetti
per i quali generare record di auditing. I record di auditing sono generati soltanto se
gli attributi di un processo corrispondono a tutte e tre le voci (ruolo, operazione e oggetto)
trovate in /etc/rbac/aud_filter. Se il ruolo di un utente e l'autorizzazione associata
non si trovano nel file o non corrispondono esplicitamente, non saranno generati record
di auditing specifici per ruolo-autorizzazione.
Gli utenti autorizzati possono modificare il file /etc/rbac/aud_filter usando un
editor di testo e specificare il ruolo e le autorizzazioni che devono essere sottoposte ad
auditing. Ogni autorizzazione è specificata sotto forma di coppia operazione-oggetto.
Tutte le autorizzazioni associate ad un ruolo devono essere specificate in una voce
singola. È possibile specificare una sola autorizzazione per ruolo in ogni riga, tuttavia
è supportato il carattere jolly *. Quelle seguenti sono le voci supportate ed il formato
del file /etc/rbac/aud_filter:
ruolo, operazione, oggetto
L'elenco seguente spiega ogni voce di /etc/rbac/aud_filter:
ruolo
operazione
oggetto
Qualsiasi ruolo valido definito in /etc/rbac/roles. Specificando
*, l'operazione potrà accedere a tutti i ruoli.
Un'operazione specifica che è possibile eseguire con un oggetto. Ad
esempio, hpux.printer.add è l'operazione per aggiungere una
stampante. In alternativa, hpux.printer.* è l'operazione per
aggiungere o eliminare una stampante. Specificando *, l'operazione
potrà accedere a tutte le operazioni.
L'oggetto a cui l'utente può accedere. Specificando *, l'operazione
potrà accedere a tutti gli oggetti.
Quelli seguenti sono esempi delle voci di /etc/rbac/aud_filter che specificano
come generare record di auditing per il ruolo SecurityOfficer, con l'autorizzazione
(hpux.passwd, /etc/passwd), e per il ruolo Administrator, con l'autorizzazione
di eseguire l'operazione hpux.printer.add con tutti gli oggetti.
SecurityOfficer, hpux.passwd, /etc/passwd
Administrator, hpux.printer.add, *
NOTA: Usare un editor come vi per modificare direttamente il file /etc/rbac/
aud_filter. I comandi amministrativi di HP-UX RBAC non si interfacciano con /etc/
rbac/aud_filter.
10.8 Auditing di HP-UX RBAC
193
10.8.2 Procedure per l'auditing dei criteri di HP-UX RBAC
I punti seguenti descrivono come configurare nel sistema un processo di auditing per i
criteri HP-UX RBAC:
1.
Configurare il sistema per svolgere l'auditing degli eventi Passed or Failed per gli
eventi Administrator usando il comando seguente:
# audevent -PFe admin
2.
Configurare l'ubicazione e il nome del file di output dell'auditing ed abilitare
l'auditing nel sistema usando il comando seguente:
# audsys -n -c /tmp/aud.out -s 2048
3.
Eseguire un comando di HP-UX RBAC, ad esempio:
# /usr/sbin/authadm add nuova_autorizzazione
4.
Aprire un file di output dell'auditing e cercare i record nel comando authadm
usando il comando seguente:
# audisp /tmp/aud.out |fgrep nuova_autorizzazione
NOTA: Per ulteriori informazioni sull'auditing dei sistemi HP-UX, vedere audit(5),
audevent(1M), audsys(1M) e audisp(1M).
194
Amministrazione dell'auditing
A Sistemi sicuri
Questa appendice spiega come configurare ed amministrare un sistema sicuro. Questa
appendice tratta i seguenti argomenti:
•
Configurazione di un sistema sicuro (Sezione A.1)
•
Auditing di un sistema sicuro (Sezione A.2)
•
Gestione delle password sicure e dell'accesso al sistema (Sezione A.3)
•
Linee guida per il backup ed il ripristino sicuro (Sezione A.4)
NOTA: Trusted Systems è disapprovato. HP-UX 11i v3 è l'ultima release che supporta
questo prodotto.
A.1 Configurazione di un sistema sicuro
Per configurare un sistema sicuro, eseguire le operazioni seguenti:
1. Stabilire dei criteri di protezione globali adatti alla propria sede di lavoro.
2. Controllare tutti i file esistenti nel sistema per rilevare l'eventuale presenza di rischi
per la sicurezza e trovare un rimedio. È importante eseguire questa operazione
prima di passare ad un sistema sicuro. In seguito, esaminare i file periodicamente,
oppure quando si sospetta una violazione della sicurezza. Consultare la Sezione 6.9
nel Capitolo 6.
3. Eseguire il backup del filesystem, per ripristinare successivamente i file utente.
Occorre anche eseguire il backup su nastro del file /etc/passwd prima della
conversione.
È possibile utilizzare uno qualunque dei programmi offerti da HP-UX per il backup
e ripristino iniziale. Dopo avere implementato le funzionalità di protezione, utilizzare
solamente fbackup e frecover, che conservano e ripristinano le liste di controllo
dell'accesso (ACL). Per ulteriori informazioni, vedere fbackup(1M) e frecover(1M).
4.
Conversione in un sistema sicuro. La conversione in un sistema sicuro è un'operazione
reversibile.
Per convertire ad un sistema sicuro, eseguire HP SMH e fare clic su System Security
Policies. Sarà così visualizzato il prompt Convert to trusted system. Potrebbe
essere visualizzato un prompt di conferma. Premere Y per iniziare la procedura di
conversione.
Eseguendo la conversione in un sistema sicuro, il programma di conversione esegue
le azioni seguenti:
•
Crea un nuovo database delle password protetto in /tcb/files/auth/.
•
Sposta le password crittografate dal file /etc/passwd al database protetto
delle password e sostituisce il campo password in /etc/passwd con un
asterisco (*).
A.1 Configurazione di un sistema sicuro
195
•
Obbliga tutti gli utenti ad usare le password.
•
Crea un numero ID di auditing per ciascun utente. L'ID di auditing rimarrà
invariato per l'intero corso della cronologia di un utente. Identifica in modo
unico un utente. L'ID di auditing sta per essere disapprovato, insieme a Trusted
System in HP-UX 11i v3, e sta per essere sostituito dal tag di auditing, assegnato
dinamicamente ogni volta che un utente avvia una nuova sessione di accesso.
Per ulteriori informazioni sui tag di auditing, vedere il Capitolo 10.
•
Attiva il flag di auditing per tutti gli utenti esistenti.
•
5.
6.
Converte i file di input at, batch e crontab per usare l'ID di auditing del
richiedente.
Controllare che i file di auditing si trovino nel sistema:
1. Usare swlist -l fileset per elencare i set di file installati. Cercare il set
di file SecurityMon, che contiene i file del programma di auditing. Per ridurre
l'elenco, digitare il comando seguente: # swlist -l fileset | grep
Security
2. Controllare anche che siano presenti i seguenti file (non specificati in
SecurityMon):
•
/etc/rc.config.d/auditing contiene parametri per controllare
l'auditing. È possibile modificare questo file con SMH o con la procedura
manuale, usando un editor di testo.
•
/sbin/rc2.d/S760auditing è lo script che avvia l'auditing. Non
modificare questo file.
Dopo la conversione in un sistema sicuro, sarà possibile utilizzare il sottosistema di
auditing ed eseguire il sistema HP-UX come sistema sicuro.
NOTA: Con HP-UX 11i v3, il sistema di auditing opera in un sistema anche senza
convertirlo in un sistema sicuro.
Per ulteriori informazioni, vedere il Capitolo 10.
Se è necessario tornare da un sistema sicuro ad uno standard, eseguire HP SMH e
utilizzare la finestra Auditing and Security. Le opzioni Audited Events, Audited System
Calls e Audited Users forniscono tutte la possibilità di riconversione.
SUGGERIMENTO: Un modo per accertare se il sistema è stato convertito in un sistema
sicuro è cercare i file /tcb. Se esistono, il sistema è sicuro.
196
Sistemi sicuri
A.2 Auditing di un sistema sicuro
L'auditing di un sistema sicuro è molto simile all'auditing di un sistema che non è stato
convertito. Per le informazioni sull'auditing, vedere il Capitolo 10. L'unica differenza è
la modalità di selezione degli utenti da sottoporre ad auditing. In un sistema che non è
stato convertito in sistema sicuro, per specificare gli utenti che devono essere sottoposti
ad auditing è utilizzato il comando userdbset. Vedere userbdset(1M) e userdb(4).
L'attributo associato è AUDIT_FLAG ed è descritto in security(4). In un sistema sicuro, il
comando audusr specifica quali utenti devono essere sottoposti ad auditing. Per ulteriori
informazioni, vedere audusr(1M).
A.3 Gestione delle password sicure e dell'accesso al sistema
La password è il simbolo di identificazione più importante per il singolo utente. Con
essa, il sistema autentica l'utente per consentirgli l'accesso. Dato che il loro uso,
archiviazione, o riconoscimento le rende vulnerabili, le password devono essere tenute
sempre segrete.
Per informazioni sulle password, consultare anche il Capitolo 2.
Responsabilità dell'amministratore della sicurezza
L'amministratore della sicurezza e tutti gli utenti del sistema devono condividere la
responsabilità riguardante la protezione delle password. L'amministratore della sicurezza
esegue le seguenti operazioni di protezione:
•
Genera la password temporanea per i nuovi utenti. Questa password deve essere
utilizzata per il primo accesso. Una volta controllato questo numero, al nuovo utente
sarà richiesta una nuova password.
•
Mantiene le autorizzazioni corrette in tutti i file di sistema, compreso il file di
password standard /etc/passwd e i file di database sicuri /tcb/files/auth/
*.
•
Stabilisce la durata della password.
•
Gestisce il riutilizzo della password.
•
Elimina o annulla password scadute, ID utente e password degli utenti che non
hanno più i requisiti necessari per accedere al sistema.
Responsabilità dell'utente
Tutti gli utenti devono osservare le seguenti regole:
•
Ricordare la password e tenerla sempre segreta.
•
Modificare immediatamente la password iniziale; in seguito, cambiarla
periodicamente.
•
Riferire ogni variazione dello stato e tutte le possibili violazioni della sicurezza.
•
Assicurarsi che nessuno osservi l'utente mentre digita la password.
•
Scegliere una password diversa per ogni macchina in cui si dispone di un account.
A.2 Auditing di un sistema sicuro
197
A.3.1 File delle password
Un sistema sicuro mantiene più file delle password: il file /etc/passwd e i file nel
database protetto delle password /tcb/files/auth/ (consultare “Il database
/tcb/files/auth/”). Ogni utente ha una voce in due file e login per autenticare le
richieste di accesso le controlla entrambe.
Dopo l'immissione, tutte le password sono immediatamente crittografate e archiviate in
/tcb/files/auth/car_utente/nome_utente, il file del database protetto delle
password utente. Per i confronti, è utilizzata solamente la password crittografata.
Non consentire la presenza di campi di password vuoti – nulli – in uno dei due file delle
password. Nei sistemi sicuri, il campo della password in /etc/passwd è ignorato. Un
utente con password vuota sarà costretto ad impostarla dopo avere eseguito l'accesso
al sistema sicuro. Tuttavia, anche questo accorgimento non esclude potenziali violazioni
della protezione, perchè chiunque acceda a questo account sarà invitato ad impostare
la password.
Non modificare direttamente i file delle password. Usare HP SMH, useradd, userdel
o usermod per modificare le voci nel file delle password.
A.3.1.1 Il file /etc/passwd
Un sistema sicuro usa il file /etc/passwd per identificare un utente al momento
dell'accesso. Il file contiene una voce per ciascun account nel sistema HP-UX. Ciascuna
voce comprende sette campi, separati da due punti. Una voce tipica di /etc/passwd
in un sistema sicuro ha il seguente aspetto:
robin:*:102:99:Robin Hood,Rm 3,x9876,408-555-1234:/home/robin:/usr/bin/sh
I campi contengono le seguenti informazioni (elencate in ordine), separate da due punti:
1. Nome utente (di accesso), fino ad un massimo di 8 caratteri. (nell'esempio, robin)
2. Campo della password non utilizzato, presenta un asterisco invece della password
effettiva. (*)
3. ID utente, un numero intero compreso fra 0 e MAXINT-1, equivalente a
2.147.483.646, oppure a 231 -2. (102)
4. ID di gruppo, da /etc/group, un numero intero che va da 0 a MAXINT-1. (99)
5. Il campo Comment, utilizzato per informazioni come il nome completo dell'utente,
la sua posizione ed i numeri di telefono. Per ragioni storiche, si chiama anche
campo gecos. (Robin Hood,Rm 3,x9876,408-555-1234)
6. Directory home, la directory per l'accesso iniziale dell'utente. (/home/robin)
7. Il percorso del programma di accesso, eseguito quando l'utente esegue l'accesso.
(/usr/bin/sh)
L'utente può modificare il campo commento (quinto campo) con il comando chfn ed il
percorso del programma di accesso (settimo campo) con il comando chsh.
L'amministratore di sistema imposta i campi rimanenti. L'ID utente deve essere unico. Per
ulteriori informazioni, vedere chfn(1), chsh(1), passwd(1) e passwd(4). L'utente può
modificare la password nel database protetto delle password con passwd.
198 Sistemi sicuri
A.3.1.2 Il database /tcb/files/auth/
Quando un sistema è convertito in sistema sicuro, la password crittografata, contenuta
solitamente nel secondo campo di /etc/passwd, è spostata nel database delle password
protette ed un asterisco prende il suo posto nel file /etc/passwd.
I file del database protetto delle password sono conservati nella gerarchia /tcb/files/
auth/. I profili di autenticazione utente sono conservati in queste directory, in base alla
prima lettera del nome dell'account utente. Ad esempio, il profilo di autenticazione per
l'utente davide è archiviato nel file /tcb/files/auth/d/davide.
Nei sistemi sicuri, gli elementi chiave di protezione sono conservati nel database protetto
delle password, accessibile soltanto ai superutenti. Per configurare le voci delle password,
usare HP SMH. I dati delle password che non sono stati impostati per un determinato
utente saranno portati ai valori predefiniti di sistema, archiviati nel file /tcb/files/
auth/system/default.
Il database protetto delle password contiene molte voci di autenticazione destinate
all'utente. Per ulteriori informazioni su queste voci, vedere prpwd(4), che comprende:
•
Nome utente ed ID utente
•
Password crittografata
•
Proprietario dell'account
•
Autenticazione all'avvio, per consentire all'utente specificato di avviare il sistema;
vedere security(4).
•
ID di auditing e flag di auditing dell'utente (se l'auditing è attivato o no)
•
Tempo minimo tra le modifiche alla password
•
Lunghezza massima della password
•
Tempo di scadenza della password, dopo il quale deve essere modificata
•
Durata della password, trascorsa la quale l'account è bloccato
•
Ora dell'ultima modifica riuscita e non riuscita della password
•
Tempo assoluto (data) di scadenza dell'account
•
Tempo massimo consentito tra gli accessi prima del blocco dell'account
•
Numero di giorni prima della scadenza in cui sarà visualizzato il preavviso
•
Indicazione se le password sono generate dall'utente o dal sistema
•
Controllo dell'ordinarietà della password, per impedire l'uso di parole troppo comuni
o note
•
Tipo di password generate dal sistema
•
Password nulle
•
ID utente dell'ultima persona che ha modificato la password, se non si tratta del
proprietario dell'account
•
Periodi di tempo in cui questo account può essere utilizzato per l'accesso
Responsabilità dell'utente 199
•
Identificazione di terminale o host remoto associato agli ultimi accessi riusciti e non
riusciti di questo account
•
Numero di tentativi di accesso non riusciti; azzerato dopo un accesso riuscito
•
Numero massimo di tentativi di accesso prima del blocco dell'account
A.3.2 Scelta e creazione della password
Nei sistemi sicuri, sono disponibili le seguenti opzioni per la creazione della password:
•
Password create dall'utente.
È disponibile un'opzione di selezione della password, per controllare l'uso, le
permutazioni e dei palindromi dei nomi di accesso e di gruppo.
La password nuova deve essere diversa da quella vecchia per almeno tre caratteri.
•
Password create dal sistema che usano soltanto una combinazione di lettere.
•
Password create dal sistema che usano una combinazione di lettere, numeri e
punteggiatura.
•
Password create dal sistema che usano sillabe senza senso pronunciabili.
In un sistema è possibile impostare le opzioni di generazione delle password. In
alternativa, è possibile impostare opzioni di generazione delle password in base
all'utente, ignorando le impostazioni predefinite di sistema.
È necessario impostare almeno un'opzione per la creazione della password per ogni
utente. Se l'utente ha a disposizione più di un'opzione, quando modificherà la password
sarà visualizzato un menu per la sua creazione.
A.3.3 Durata della password
È possibile abilitare o disabilitare la durata della password per ciascun utente. Quando
è abilitata la durata della password, il sistema gestisce gli elementi seguenti:
Tempo minimo
L'intervallo minimo di tempo necessario tra le
modifiche alla password. Impedisce agli utenti di
modificare la password e riportarla subito dopo al
valore precedente, per evitare di doverne
memorizzare un'altra.
Data ed ora di scadenza
Momento dopo il quale l'utente deve modificare
una password all'accesso.
Periodo di preavviso
Periodo prima della scadenza in cui sarà
visualizzato il preavviso.
Durata
Momento in cui l'account associato alla password
sarà bloccato se non si modifica la password. Una
volta bloccato, solo l'amministratore di sistema
potrà sbloccare l'account. Una volta sbloccato,
prima di eseguire l'accesso all'account l'utente
dovrà modificare la password.
200 Sistemi sicuri
I valori della data di scadenza e della durata sono reimpostati quando è modificata la
password. Il valore zero indica l'assenza di durata della password; in questo caso gli
altri valori di durata della password non avranno effetto.
A.3.4 Cronologia e riutilizzo della password
È possibile abilitare la funzionalità della cronologia della password in tutto il sistema,
per scoraggiare gli utenti dal riutilizzo di password precedenti.
Il controllo del riutilizzo della password è abilitato definendo l'attributo
PASSWORD_HISTORY_DEPTH nel file /etc/default/security:
PASSWORD_HISTORY_DEPTH=n
dove n è un numero intero che specifica il numero di password precedenti da controllare.
Quando un utente modifica la propria password, sarà controllata quella nuova,
confrontandola con n password precedenti, iniziando da quella corrente. Se il sistema
trova una corrispondenza, rifiuterà la nuova password. Assegnando a n il valore 2 si
impedisce agli utenti di passare alternativamente da una password all'altra.
Per ulteriori informazioni, vedere passwd(1) e security(4).
A.3.5 Controllo dell’accesso basato sull'orario
Nei sistemi sicuri, è possibile specificare gli orari ed i giorni della settimana in cui ciascun
utente potrà eseguire l'accesso. Quando un utente tenta di eseguire l'accesso al di fuori
dell'orario consentito, l'evento sarà registrato – se è abilitato l'auditing degli accessi
non riusciti o riusciti – e l'accesso sarà interrotto. Un superutente può eseguire l'accesso
al di fuori dell'orario consentito, ma l'evento sarà registrato. Gli orari d'accesso consentito
sono archiviati nel database protetto delle password degli utenti ed è possibile
configurarlo con HP SMH. Le sessioni degli utenti ancora in corso al termine dell'intervallo
non saranno interrotte.
A.3.6 Controllo dell'accesso basato sul dispositivo
È possibile specificare un elenco di utenti autorizzati all'accesso per ciascuna porta MUX
e DTC dedicata di un sistema sicuro. Quando l'elenco di un dispositivo è vuoto, l'accesso
è consentito a tutti gli utenti.
Le informazioni di accesso al dispositivo sono archiviate nel database di assegnazione
del dispositivo, /tcb/files/devassign, che contiene una voce per ciascun dispositivo
terminale nel sistema sicuro. Un campo nella voce elenca gli utenti autorizzati ad accedere
al dispositivo.
Le informazioni di accesso del terminale in un sistema sicuro sono archiviate nel database
di controllo dei terminali, /tcb/files/ttys, che per ciascun terminale fornisce i
seguenti dati:
•
Nome del dispositivo
•
ID dell'ultimo utente che ha eseguito un accesso riuscito nel terminale
•
Data e ora dell'ultimo accesso riuscito al terminale
Responsabilità dell'utente 201
•
Data e ora dell'ultimo accesso non riuscito per il terminale
•
Numero di accessi non riusciti consecutivi prima del blocco del terminale
•
Flag di blocco del terminale
Solo i superutenti possono accedere a questi database del sistema sicuro ed impostare
le voci con HP SMH. Vedere devassign(4) e ttys(4).
A.3.7 Manipolazione dei database del sistema sicuro
Per accedere alle informazioni nei file delle password e nei database del sistema sicuro
è possibile utilizzare le routine di libreria descritte nelle seguenti manpage:
getdvagent(3)
Manipola le voci dei dispositivi in /tcb/files/devassign
getprdfent(3)
Manipola le impostazioni predefinite di sistema in /tcb/files/
auth/system/default
getprpwent(3)
Ottiene le voci della password da /tcb/files/auth/
getprtcent(3)
Manipolazione del database di controllo del terminale, /tcb/
files/ttys
getpwent(3C)
Ottiene le voci della password da /etc/passwd
putpwent(3C)
Scrive le voci del file della password in /etc/passwd
getspwent(3X)
Ottiene le voci della password da /tcb/files/auth/ (fornito
per compatibilità con il passato)
putspwent(3X)
Scrive le voci della password in /tcb/files/auth/ (fornito per
compatibilità con il passato)
putprpwnam(3)
Scrive le voci dei file della password in /tcb/files/auth/
A.4 Linee guida per il backup ed il ripristino sicuro
Le linee guida per il backup e il ripristino in un sistema sicuro sono le seguenti:
•
Usare soltanto fbackup e frecover per eseguire il backup e ripristinare i file in
modo selettivo. Solo fbackup e frecover conservano le liste di controllo
dell'accesso (ACL). Per eseguire il backup e ripristinare file per sistemi che non
implementano le ACL, usare l'opzione -A di questi comandi. Per ulteriori
informazioni, vedere fbackup(1M) e frecover(1M).
•
Se si prevede di ripristinare i file in un altro sistema, assicurarsi che il nome utente
ed il nome del gruppo in entrambi i sistemi siano coerenti.
•
Ricordare che i supporti di backup sono materiale sensibile. Consentire l'accesso
ai supporti soltanto se è effettivamente necessario.
•
Etichettare i nastri di backup e metterli al sicuro. La conservazione dei supporti in
depositi decentrati fornisce il massimo della sicurezza. Mantenere gli archivi per
un minimo di sei mesi, quindi riciclare i supporti.
•
Usare le procedure appropriate per ripulire i supporti magnetici e rimuovere i dati
dopo il riutilizzo.
202 Sistemi sicuri
•
Eseguire backup giornalieri incrementali e backup completi settimanali.
Sincronizzare la pianificazione dei backup con il flusso di dati della propria
organizzazione. Ad esempio, se il database principale è aggiornato ogni venerdì,
il backup settimanale potrebbe essere eseguito il venerdì sera.
•
Se fosse necessario eseguire il backup pianificato di tutti i file, chiedere a tutti gli
utenti di terminare la propria sessione prima del backup. Tuttavia, fbackup avverte
se un file è modificato mentre è in corso il backup.
•
Esaminare il file di log degli ultimi backup per identificare gli eventuali problemi
correlati. Impostare autorizzazioni rigide per il file di log del backup.
•
Il comando frecover consente di sovrascrivere un file. Tuttavia, quando è eseguito
il backup il file conserva le autorizzazioni e le ACL configurate.
•
È necessario provare in anticipo la procedura di ripristino, per essere sicuri di poter
ripristinare completamente i dati in caso di emergenza.
•
Ripristinando file provenienti da un'altra macchina, se l'utente e il gruppo non sono
ancora presenti nel nuovo sistema, per impostare ID utente e ID gruppo nel sistema
in cui si trovano al momento potrebbe essere necessario dover eseguire il comando
chown. Se i file sono ripristinati in un nuovo sistema privo del gruppo specificato,
i file saranno di proprietà del gruppo della persona che esegue frecover. Se il
nome di proprietario e di gruppo ha un significato diverso in sistemi differenti, il
risultato del ripristino potrebbe imprevisto.
•
L’interruzione della corrente non dovrebbe causare perdita di file. Tuttavia, nel caso
qualcuno segnali la perdita di un file dopo un'interruzione di corrente, prima di
ripristinarlo dal nastro di backup, cercarlo in /lost+found.
•
Per controllare il contenuto del nastro per il ripristino, usare l'opzione -I di
frecover, per visualizzare l'indice dei file sul nastro. Le autorizzazioni esistenti
nel filesystem saranno conservate dal backup; frecover impedisce di leggere il
file se sue autorizzazioni lo proibiscono.
•
Non ripristinare mai direttamente i file critici come /etc/passwd, o quelli contenuti
in /tcb/files. Al contrario, ripristinare il file in una directory temporanea (non
usare /tmp) e fornire a questa directory le autorizzazioni drwx------, che ne
impedirà l'uso ad altri utenti. Confrontare i file ripristinati con quelli da sostituire.
Eseguire tutte le modifiche necessarie.
•
L'auditing non sarà abilitato automaticamente dopo avere ripristinato il sistema.
Accertarsi di attivare l'auditing con il comando audsys.
A.4 Linee guida per il backup ed il ripristino sicuro 203
204
B Altri prodotti per la protezione
Questa appendice fa riferimento ad altri prodotti per la protezione, disponibili per HP-UX.
È possibile scaricare questi prodotti gratuitamente dalla pagina HP Software Depot,
all'indirizzo http://www.hp.com/go/softwaredepot.
B.1 HP-UX HIDS
HP-UX Host Intrusion Detection System (HIDS) consente ai responsabili della protezione
di controllare, rilevare e rispondere attivamente agli attacchi in una rete, nel modo
seguente:
•
Protegge dai metodi di attacco già conosciuti e da alcuni di quelli che non sono
ancora noti. Individua comportamenti ripetuti che potrebbero indicare violazioni
della protezione, esaminando le informazioni sull'attività del sistema ottenute da
diverse fonti. Queste attività illecite possono comprendere: un hacker che tenta di
accedere al sistema o di danneggiarlo, attività illecite di personale interno, o di
qualcuno che tenti di diffondere un virus.
•
Rileva i prodotti che incrementano la sicurezza locale a livello di host nella propria
rete. Controlla automaticamente ogni sistema host configurato nella rete, per
individuare possibili segnali di intrusioni indesiderate e potenzialmente dannose.
L'assenza di questo controllo potrebbe portare all'indisponibilità di sistemi chiave
o alla compromissione dell'integrità del sistema. HP-UX HIDS genera messaggi di
avvertimento per molti tipi di eventi illeciti.
•
Offre una costante protezione dai metodi di attacco già conosciuti e da quelli che
non sono ancora noti, a differenza di altri sistemi per l'individuazione delle intrusioni.
Individua le intrusioni usando dei modelli di rilevamento. I modelli di rilevamento
servono ad identificare i tipi principali di attività di sistema non autorizzata o gli
attacchi alla protezione più comuni fra quelli compiuti ai danni delle reti aziendali.
•
Notifica le attività sospette che potrebbero precedere un attacco. Al contrario, altri
sistemi per individuare le intrusioni fanno completo affidamento sull'analisi dei file
di log di sistema svolta da un operatore. Solitamente l'operatore analizza i file di
log del sistema alla fine della giornata. Questo ritardo dell'analisi dell'attacco offre
un intervallo di tempo considerevole per danneggiare il sistema.
B.2 Patch di protezione
HP-UX Software Assistant (SWA) è uno strumento basato sulla riga dei comandi che
consolida e semplifica la gestione delle patch e dei bollettini di protezione nei sistemi
HP-UX. Lo strumento SWA è una novità delle release di HP-UX a partire da gennaio
2007; sostituisce Security Patch Check (SPC) ed è l'utility consigliata da HP per conservare
la conformità con i bollettini di protezione pubblicati da HP per il software HP-UX.
HP fornisce le patch software aggiornate per i problemi di protezione noti, che
consentirebbero l'accesso di root non autorizzato al sistema. Per ulteriori informazioni,
vedere il Capitolo 1.
B.1 HP-UX HIDS 205
B.3 HP-UX IPFilter
HP-UX IPFilter è un firewall di sistema che filtra i pacchetti IP, per controllarne il flusso
verso l'interno e l'esterno della macchina. Opera come protezione a difesa, riducendo
il numero di punti esposti della macchina.
B.4 HP-UX Secure Shell
HP Secure Shell usa metodi hash per garantire l'integrità dei dati e consentire l'uso di
canali protetti, del port forwarding e di agente SSH che conserva le chiavi private nel
client.
HP-UX Secure Shell consente di accedere in modo protetto ad un altro sistema attraverso
la rete, di eseguire comandi in un sistema remoto e di spostare file da un sistema ad un
altro. HP-UX Secure Shell consente la sostituzione di comandi poco sicuri, come rlogin,
rsh, rcp, ftp e telnet. HP-UX Secure Shell inoltre protegge la rete dai seguenti rischi
per la protezione:
Spoofing IP
Tecnica usata per ottenere accesso non autorizzato ai computer.
Un intruso invia messaggi ad un computer con un indirizzo IP
che indica la provenienza del messaggio da un host affidabile.
Intercettazioni
Cercare in un sistema password, numeri di carta di credito o
segreti industriali.
Dirottamento
Tecnica usata per assumere il controllo delle comunicazioni di
rete e consentire all'attaccante di esaminare e modificare i dati
trasmessi dalle parti che comunicano.
206 Altri prodotti per la protezione
Glossario
3DES
Standard per la tripla crittografia dei dati. Algoritmo di crittografia a blocchi a
chiave simmetrica che codifica i dati tre volte, usando ogni volta una diversa
chiave a 56 bit (168 bit per le chiavi). 3DES è adatto alla cifratura di grandi
volumi di dati.
ACL
Lista di controllo dell'accesso. Elenco o database che definisce a quali risorse
gli utenti o altri responsabili possono accedere ed il tipo di accesso.
AES
Advanced Encryption Standard. Un algoritmo di crittografia a blocchi a chiave
simmetrica. HP-UX IPSec supporta AES con una chiave a 128 bit. AES è adatto
alla cifratura di grandi volumi di dati.
AH
Intestazione di autenticazione. AH garantisce l'integrità dei dati, l'autenticazione
a livello di sistema e può fornire protezione antireplay. AH fa parte della suite
del protocollo IPsec.
attacco "man-in-the-middle"
Vedere attacco da parte di terzi.
attacco con
overflow del
buffer
Metodo di attacco dei sistemi che causa errori di un processo, o che costringe
un processo ad eseguire codice illecito. questo risultato è normalmente ottenuto
con sovraccaricando l'input nel buffer dello stack. Questo provoca la violazione
della memoria o un altro errore, che termina il processo, oppure lo costringe ad
eseguire del codice illecito. Vedere anche attacco con overflow del buffer dello
stack.
attacco con
overflow del
buffer dello
stack
Metodo per attaccare un sistema, costringendo un processo ad eseguire codice
illecito. Solitamente, provoca l'overflow del buffer dello stack per inserire codice
illecito, modificando quindi il puntatore di stack in modo da eseguirlo. Vedere
anche attacco con overflow del buffer.
attacco da
parte di terzi
In un attacco da parte di terzi, l'attaccante intercetta i pacchetti scambiati dalle
due parti attaccate, A e B. A e B presumono di scambiare messaggi l'una con
l'altra, ma in realtà stanno scambiando messaggi con un terzo. L'attaccante
assume l'identità di A per scambiare messaggi con B, ed assume l'identità di B
per scambiare messaggi con A. Chiamato anche attacco "man-in-the-middle".
attacco di
negazione del
servizio
Attacco in cui si impedisce ad sistema di rispondere ai pacchetti di rete, in modo
che non sia in grado di soddisfare le richieste che riceve. Gli attacchi di
negazione del servizio possono essere realizzati inviando ad un sistema
vulnerabile un gran numero di false richieste che consumano un'ingente quantità
di risorse. Gli attacchi di negazione del servizio spesso sono utilizzati insieme
allo spoofing di un host, per impedire all'host che ha subito lo spoofing (l'host
con l'indirizzo IP utilizzato dall'attaccante) di partecipare allo scambio tra chi
esegue lo spoofing e il sistema a cui quest'ultimo tenta di accedere.
auditing
Registrazione selettiva degli eventi allo scopo di analizzare e rilevare le violazioni
della protezione. Il sistema di auditing di HP-UX fornisce un meccanismo per il
controllo di utenti e processi.
autenticazione
Procedura di controllo dell'identità di un soggetto (utente, host, dispositivo o altra
entità in una rete informatica). L'autenticazione è spesso un prerequisito per
consentire l'accesso alle risorse di sistema. In alternativa, la procedura di controllo
dell'integrità dei dati, o dell'identità della parte che ha trasmesso i dati.
207
autenticazione challenge-response
Forma di autenticazione in cui chi la esegue invia un valore casuale, detto
challenge, all'utente o al responsabile di sistema che deve essere autenticato.
L'utente invia una risposta basata sul valore challenge e su un valore segreto
comune, stabilito in precedenza insieme a chi esegue l'autenticazione, come un
valore hash MD5.
A differenza di un normale scambio di password, l'interazione challenge-response
può variare, in modo che sia impossibile per un intruso ripetere la risposta
dell'utente per ottenere l'autenticazione.
Autorità di
certificazione
Vedere CA.
autorizzazione
Procedura di valutazione delle informazioni di controllo dell'accesso, per
determinare se un soggetto (utente, host, dispositivo, o altra entità in una rete
informatica) è autorizzato a svolgere un'operazione con una particolare risorsa
o oggetto. L'autorizzazione avviene solitamente dopo che è stata autenticata
l'identità del soggetto.
Nel contesto RBAC, l'autorizzazione si riferisce specificamente alla coppia
formata da un'operazione ed un oggetto, ed è anche definita autorizzazione.
Vedere RBAC.
208 Glossario
bastion host
Sistema di computer che protegge una rete interna dagli intrusi. Vedere anche
firewall e sistema rafforzato.
CA
Autorità di certificazione. Società o organizzazione terza di fiducia che autentica
gli utenti e rilascia i certificati. Oltre a stabilire un vincolo di fiducia tra la chiave
pubblica dell'utente e le altre informazioni relative alla protezione di un certificato,
l'autorità di certificazione pone una firma digitale al certificato utilizzando la
sua chiave privata.
certificato
Certificato di protezione che associa (o vincola) una chiave pubblica ad un
responsabile – una determinata persona, un sistema, un dispositivo o un'altra
entità. Il certificato di protezione è rilasciato da un ente, che gli utenti giudicano
affidabile, chiamato autorità di certificazione (CA – Certificate Authority), che
garantisce o conferma l'identità del titolare (persona, dispositivo o altra entità)
della chiave privata corrispondente. L'autorità di certificazione pone la firma
digitale al certificato con la sua chiave privata, in modo che sia possibile
controllarlo con la chiave pubblica dell'autorità di certificazione. Il formato più
comunemente utilizzato per i certificati a chiave pubblica è lo standard
International Organization for Standardization (ISO) X.509, versione 3.
Certificato di
protezione
Vedere certificato.
chiavi manuali
Chiavi crittografiche configurate manualmente per IPSec. Alternativa all'uso del
protocollo Internet Key Exchange (IKE), per generare chiave crittografiche ed
altre informazioni per le Security Associations (SA) di IPSec.
chiavi
precondivise
Valore crittografico concordato da due sistemi per la crittografia o
l'autenticazione. La chiave è scambiata prima della comunicazione tramite
computer, solitamente attraverso uno scambio di chiavi fuori banda (come uno
scambio verbale, faccia a faccia). Vedere anche crittografia a chiave condivisa.
compartimenti
Metodo per isolare l'uno dall'altro i componenti di un sistema. Configurati in
modo appropriato, i compartimenti sono un metodo efficace per proteggere il
proprio sistema HP-UX e i dati che contiene.
contenimento
Meccanismo o insieme di meccanismi per limitare il diritto d'accesso dei processi.
Nel contesto RBAC, il contenimento è una combinazione di controllo dell'accesso
obbligatorio e privilegi ad alta definizione. Vedere RBAC.
criterio IPSec
I criteri IPSec specificano le regole in base alle quali i dati sono trasferiti in modo
protetto. I criteri IPSec generalmente contengono informazioni di filtro dei pacchetti
e un'azione. Il filtro dei pacchetti è usato per scegliere un criterio per un pacchetto
e l'azione è applicata ai pacchetti usando quel criterio.
crittografia
Processo di codifica di dati normali (o in chiaro) in modo che siano decifrabili
solamente da chi possiede informazioni specifiche.
crittografia
Processo che converte dati, per ragioni di riservatezza, da un formato leggibile
ad un formato non leggibile. Le funzioni di crittografia solitamente utilizzano
come input i dati ed una chiave crittografica (valore o sequenza di bit).
crittografia a
chiave
asimmetrica
Vedere crittografia a chiave pubblica.
crittografia a
chiave
condivisa
Metodo crittografico in cui due parti usano la stessa chiave (le due parti
condividono la stessa chiave) per crittografare o autenticare dei dati. Per
consentire la riservatezza o l'autenticazione dei dati, soltanto le due parti devono
conoscere il valore della chiave (la chiave deve essere privata). Per crittografare
i dati, la crittografia a chiave condivisa è più efficace di quella a chiave
pubblica/privata, è quindi sovente utilizzata per la cifratura di grandi volumi di
dati. Tuttavia, la distribuzione o la definizione di una chiave condivisa richiede
uno scambio fuori banda (come uno scambio verbale faccia a faccia), uno
scambio Diffie-Hellman o un altro meccanismo.
Chiamata anche crittografia a chiave privata o crittografia a chiave simmetrica.
crittografia a
chiave privata
Vedere crittografia a chiave condivisa.
crittografia a
chiave
pubblica
Metodo crittografico che usa due chiavi matematicamente correlate (ad esempio,
chiave_1 e chiave_2) in modo che sia possibile decifrare i dati crittografati con
la chiave_1 soltanto con la chiave_2. Inoltre, gran parte degli algoritmi garantisce
che soltanto il proprietario della chiave_1 può cifrare correttamente i dati
decifrabili con la chiave_2.
Una chiave deve essere privata (nota soltanto al proprietario), ma la seconda
chiave può essere nota (pubblica), il che rende facilmente gestibile la distribuzione
delle chiavi. La crittografia a chiave pubblica utilizza una gran quantità di risorse
del computer, non è quindi pratica per la cifratura di grandi volumi di dati. La
crittografia a chiave pubblica è usata solitamente per autenticare i dati.
Chiamata anche crittografia a chiave asimmetrica (le due chiavi non sono uguali)
o crittografia a chiave pubblica/privata.
crittografia a
chiave
pubblica/privata
Vedere crittografia a chiave privata.
209
crittografia a
chiave
simmetrica
Vedere crittografia a chiave condivisa.
CRL
Elenco dei certificati revocati. I certificati rilasciati hanno una validità limitata nel
tempo, definita da una data/ora di inizio e da una data/ora di scadenza.
Tuttavia possono verificarsi casi, come la compromissione di un valore chiave,
che impongono la revoca del certificato. In questo caso, l'autorità di certificazione
può revocare il certificato. Ciò avviene inserendo il numero di serie del certificato
nell'elenco dei certificati revocati, aggiornato e pubblicato a scadenze regolari
dall'autorità di certificazione, e trasmesso agli utenti dei certificati. Vedere CA.
Data
Encryption
Standard
Vedere DES.
DES
Standard per la crittografia dei dati. Usa una chiave a 56 bit per la crittografia
a blocchi a chiave simmetrica. DES è adatto alla cifratura di grandi volumi di
dati.
DES è stato forzato (i dati codificati con DES sono stati decifrati da terzi).
Diameter Base
Protocollo che offre servizi di autenticazione, autorizzazione e gestione degli
account (AAA) basati sul protocollo RADIUS. Il protocollo Diameter offre la stessa
funzionalità di RADIUS, con maggior affidabilità, migliore protezione ed
un'infrastruttura più solida. Vedere anche RADIUS.
Diffie-Hellman
Metodo a chiave pubblica per generare una chiave simmetrica, con il quale due
parti possono scambiare valori pubblicamente e generare la stessa chiave
simmetrica. Inizia con un numero primo p ed un generatore g, che possono essere
noti pubblicamente (solitamente si tratta di numeri di un gruppo Diffie-Hellman).
Ogni parte sceglie un valore privato (a e b) e genera un valore pubblico (g**a
mod p) e (g**b mod p). Quindi si scambiano i valori pubblici. Ogni parte usa
quindi il proprio valore privato e quello pubblico dell'altra parte per generare
la stessa chiave simmetrica, (g**a)**b mod p e (g**b)**a mod p, che
valutano entrambe g**(a*b) mod p per le comunicazioni future.
Per impedire attacchi "man-in-the-middle" o di terzi (spoofing), il metodo
Diffie-Hellman deve essere combinato con l'autenticazione. Ad esempio,
Diffie-Hellman può essere utilizzato con l'autenticazione con certificati o chiavi
precondivise.
210
Glossario
EAP
Extensible Authentication Protocol. Protocollo che offre una struttura per l'uso di
più metodi e protocolli di autenticazione, tra cui password, Kerberos e protocolli
challenge-response.
Elenco dei
certificati
revocati
Vedere CRL.
Encapsulating
Security
Payload
Vedere ESP.
ESP
Encapsulating Security Payload. Fa parte della suite del protocollo IPsec. ESP
garantisce la riservatezza (crittografia) ed un servizio antireplay. Deve essere
usato insieme all'autenticazione, con il campo facoltativo di autenticazione ESP
(ESP autenticato) o annidata nell'intestazione del messaggio di autenticazione.
ESP autenticato inoltre consente l'autenticazione dell'origine dei dati e l'integrità
senza connessione. Usato in modalità canale, ESP consente inoltre di ottenere
la riservatezza caratteristica di un flusso di traffico limitato.
evento
Azione come la creazione di un file, l'apertura di un file o l'accesso ad un sistema.
Extensible
Authentication
Protocol
Vedere EAP.
filtro
Meccanismo per individuare oggetti non desiderati, o i parametri che specificano
gli oggetti ai quali è concesso o negato l'accesso. Solitamente, si utilizza un filtro
per individuare pacchetti di rete indesiderati (un filtro dei pacchetti).
filtro dei
pacchetti
Filtro usato per selezionare o limitare i pacchetti di rete. I filtri dei pacchetti
specificano le caratteristiche dei pacchetti di rete. I filtri dei pacchetti solitamente
specificano gli indirizzi IP di origine e destinazione, i protocolli del livello
superiore (come TCP o UDP) ed i numeri di porta TCP o UDP. I filtri dei pacchetti
possono anche definire altri campi dei pacchetti, come il tipo di intestazione
IPv6, il tipo di messaggio di livello superiore (ad esempio, il tipo di messaggio
ICMP) e gli stati delle connessioni TCP.
filtro per i
pacchetti di
stato
Tipo di filtro per i pacchetti, che utilizza i campi del protocollo dei livelli superiori
e le informazioni di stato, come gli stati delle connessioni TCP.
firewall
Uno o più dispositivi o sistemi informatici usati come barriera per proteggere una
rete da utenti indesiderati o da applicazioni dannose o intrusive. Vedere anche
bastion host e sistema rafforzato.
firma digitale
Le firme digitali sono una variante degli algoritmi hash a chiave, che usano
coppie di chiavi pubblica/privata. Chi trasmette usa la sua chiave privata ed i
dati come input per creare un valore di firma digitale.
HMAC
Hashed Message Authentication Code. Vedere anche MAC.
IKE
Internet Key Exchange (IKE) fa parte della suite del protocollo IPsec. IKE è usato
prima degli scambi del protocollo IPsec ESP o AH, per determinare quali servizi
di crittografia e/o di autenticazione saranno utilizzati. IKE inoltre gestisce la
distribuzione e l'aggiornamento delle chiavi crittografiche simmetriche (condivise)
usate da ESP e AH. Vedere anche ESP ed AH.
intestazione di
autenticazione
Vedere AH.
jail di chroot
Metodo per limitare i file e le directory a cui possono accedere un processo e
gli utenti di quel processo. Il processo inizia in una directory di base specificata
(root) e non può accedere a directory o file situati ad un livello superiore a quello
della directory root.
Kerberos
Protocollo di autenticazione, progettato per offrire una rigida autenticazione
delle applicazioni client o server. Kerberos consente agli utenti di autenticarsi
senza trasmettere in rete password non crittografate.
Lightweight
Directory
Access Protocol
(LDAP).
Il protocollo LDAP consente l'accesso alle directory di rete. LDAP usa una struttura
di directory simile al servizio di directory OSI X.500, ma archivia i dati come
stringhe ed usa lo stack di rete TCP/IP invece dello stack di rete OSI.
MAC
Il codice di autenticazione del messaggio (MAC) è un tag di autenticazione di
un messaggio, detto anche checksum, derivato dall'applicazione di un algoritmo
211
di autenticazione, insieme ad una chiave segreta. I MAC sono calcolati e
controllati con la stessa chiave, in modo da poter essere controllati soltanto da
chi deve riceverli, a differenza delle firme digitali.
I MAC basati su funzioni hash (HMACS) usano una o più chiavi insieme ad una
funzione hash per produrre un checksum allegato al messaggio. Un esempio è
il metodo di autenticazione dei messaggi a chiave MD5.
I MAC possono essere anche derivati da cifrature a blocchi. I dati sono
crittografati usando blocchi di messaggi DES CBC e il blocco finale del testo
crittografato è utilizzato come checksum. Lo standard DES-CBC MAC è largamente
diffuso negli Stati Uniti ed a livello internazionale.
212
Glossario
MD5
Message Digest-5. Algoritmo d'autenticazione sviluppato da RSA. MD5 genera
una firma digitale di 128 bit usando una chiave a 128 bit. IPSec tronca la firma
digitale a 96 bit.
NAT
Network Address Translation. Metodo che consente a più sistemi in una rete
privata interna di condividere un indirizzo IP Internet pubblico. Un gateway NAT
quando indirizza i pacchetti dalla rete interna ad Internet, sostituisce (traduce)
gli indirizzi IP interni e le porte interne con i loro indirizzi IP pubblici ed esegue
l'operazione inversa per il percorso di ritorno.
oggetto
Macchina o risorsa di rete come un sistema, un file, una stampante, un terminale,
il record di un database. Nel contesto dell'autorizzazioni, l'autorizzazione è
concessa all'operazione che un soggetto compie con un oggetto.
operazione
Modalità specifica di accesso ad uno o più oggetti. Ad esempio, la scrittura in
un file. Nel contesto dell'autorizzazioni, l'autorizzazione è concessa
all'operazione che un soggetto compie con un oggetto.
PAM
Pluggable Authentication Module. Struttura d'autenticazione, che consente agli
amministratori di sistema di configurare i servizi d'autenticazione, la gestione
degli account, delle sessioni e delle password per le utility HP-UX, come quella
per l'accesso al sistema.
password
shadow
Struttura per offrire ulteriore protezione alle password degli utenti. La struttura
della password shadow (spwd) contiene le password degli utenti crittografate
ed altre informazioni usate con la struttura passwd. La struttura della password
shadow è archiviata in un file solitamente leggibile soltanto da utenti privilegiati.
Perfect
Forward
Secrecy (PFS)
Con Perfect Forward Secrecy, l'esposizione di una chiave consente l'accesso
soltanto ai dati protetti da quella chiave.
Pluggable
Authentication
Module
Vedere PAM.
privilegi ad
alta definizione
Autorizzazione ad eseguire un'operazione specifica, di basso livello (ad esempio
l'autorizzazione per eseguire una specifica chiamata di sistema).
privilegio
Autorizzazione per eseguire un'azione in un sistema informatico.
RADIUS
Il protocollo Remote Authentication Dial-In User Service (RADIUS) è ampiamente
utilizzato ed implementato per gestire l'accesso ai servizi di rete. Definisce uno
standard per lo scambio di informazioni fra un dispositivo d'accesso alla rete e
un server d'autenticazione, autorizzazione e gestione degli account (AAA), allo
scopo di eseguire operazioni di autenticazione, autorizzazione e gestione degli
account. Un server RADIUS AAA può gestire i profili degli utenti per
l'autenticazione (controllo di nome utente e password), le informazioni di
configurazione che specificano il tipo di servizio che deve essere fornito ed i
criteri da applicare che possono limitare l'accesso degli utenti.
Il protocollo RADIUS offre soltanto la struttura per lo scambio di autenticazione
e può essere usato con numerosi metodi di autenticazione.
RBAC
Controllo dell’accesso basato sui ruoli. Meccanismo di HP-UX per fornire privilegi
ad alta definizione alle risorse di sistema, ai comandi ed alle chiamate di sistema.
Agli utenti sono assegnati dei ruoli ed i privilegi per l'accesso sono assegnati
agli utenti in base a questi ruoli.
relazioni di
fiducia
transitive
Estensione delle relazioni di fiducia ad altre entità affidabili. Se A e B ritengono
entrambe affidabile C, A e B possono usare una relazione di fiducia transitiva
nei confronti di C. In una struttura gerarchica, A e B possono stabilire una
relazione transitiva di fiducia se possono stabilire una relazione di fiducia che
le lega ad una root comune.
responsabile
Persona, sistema, dispositivo o altra entità.
Role-Based
Access Control
Vedere RBAC.
RSA
Rivest, Shamir, and Adelman. Sistema crittografico a chiave pubblica/privata
che può essere usato per la riservatezza (crittografia) e l'autenticazione (firme).
Per la crittografia, il sistema A può inviare i dati crittografati con la chiave
pubblica del sistema B. Soltanto la chiave privata del sistema B può decifrare i
dati. Per l'autenticazione, il sistema A invia i dati insieme ad una firma digitale,
un firma o hash cifrati con la chiave privata del sistema A. Per controllare la
firma, il sistema B usa la chiave pubblica del sistema A per decifrare la firma e
confrontare l'hash o il valore decifrati con quelli calcolati dal sistema B per il
messaggio.
ruolo
Una funzione operativa, nel contesto di un'organizzazione, con associate delle
semantiche che riguardano l'autorità e la responsabilità attribuita agli utenti
assegnati a quel ruolo.
SASL
Simple Authentication and Security Layer. Protocollo usato per aggiungere servizi
di autenticazione alle applicazioni di rete basate sulla connessione. L'API di SASL
offre una struttura flessibile, che consente ai programmatori di usare un'interfaccia
comune per accedere a più servizi di autenticazione.
scambio di
chiavi fuori
banda
Scambio di chiavi che usa un canale protetto all'esterno dei normali canali di
comunicazione del computer, come un incontro fra due persone o una telefonata.
secure shell
Vedere SSH.
Secure Sockets
Layer
Vedere SSL.
Server AAA
Server per l'autenticazione, l'autorizzazione e gli account. Un server AAA offre
servizi di autenticazione, autorizzazione e gestione degli account per l'accesso
degli utenti nei punti di ingresso della rete. HP-UX offre server AAA basati sul
protocollo RADIUS e sul protocollo Diameter Base.
SHA1
Secure Hash Algorithm-1. Algoritmo di autenticazione, che genera una firma
digitale a 160 bit usando una chiave a 160 bit.
213
214
Glossario
sistema
rafforzato
Sistema informatico con un numero minimo di funzionalità del sistema operativo,
di utenti e di applicazioni, usato come barriera per proteggere una rete da utenti
indesiderati o da applicazioni dannose o intrusive. Chiamato anche bastion host.
soggetto
Utente, host, dispositivo o altra entità in una rete di computer. Nel contesto delle
autorizzazioni, chi origina un'operazione con un oggetto che richiede la decisione
riguardo ad un'autorizzazione.
SSH
Secure Shell. Insieme di servizi di rete, che consente l'accesso remoto protetto,
il trasferimento protetto di file e l'esecuzione protetta remota di comandi. SSH
inoltre consente l'uso di canali protetti, il port forwarding e dispone di un agente
SSH che conserva le chiavi private nel client.
SSL
Secure Sockets Layer. Protocollo usato per crittografare i dati di rete. Il protocollo
SSL è situato in cima a TCP nello stack dei dati. SSL usa chiavi pubbliche/private
per autenticare i responsabili e scambiare una chiave privata (condivisa). SSL
quindi usa la chiave privata per crittografare i dati.
VPN
Virtual Private Network. Rete privata all'interno di una rete pubblica, come Internet.
Una VPN è virtuale perché usa dei canali per creare all'interno di una rete fisica
una rete logica effettivamente separata. Una VPN è privata perché gli utenti
esterni non possono vedere o modificare i dati trasmessi. Le VPN che usano
l'autenticazione dell'identità dell'host offrono anche protezione contro lo spoofing
degli indirizzi IP.
Indice
Simboli
/etc/d_passwd, file
controllo degli accessi con, 54
/etc/default/security, 21
/etc/dialups, file
controllo degli accessi con, 54
/etc/group, file, 198
/etc/pam_user.conf, file, 32
/etc/pam.conf, file, 32
configurazione dell'intero sistema con, 34
/etc/passwd file
account utente per applicazioni, 27
/etc/passwd, file, 195, 197–198
account limitati, 27
esempio di pseudoaccount in, 42
formato, 40
modifica, 39
ripristino, 24
/etc/rbac/aud_filter, 193
/etc/rbac/cmd_priv, 170
voci di, 172
/etc/security.dsc, file, 44
/etc/shadow, file delle password shadow, 40
/sbin/rc2.d/S760auditing, 196
/tcb/files/auth/, database delle password protette, 197–198
/tcb/files/auth/*/*, 195, 199, 201–202
/tcb/files/ttys, 201
/tmp, 203
/var.adm/userdb, file, 45, 71
A
Access Control Policy Switch, 157
interfacce, 157
personalizzazione, 177
accesso
accesso basato sul dispositivo, 201
accesso basato sull'orario, 200–201
controllo del terminale, 200
password, 200
accesso ai file
impostazione delle autorizzazioni di accesso, 99
accesso al sistema
linee guida di protezione per quello remoto, 53
accesso al terminale, 200
accesso alle directory
protezione, 99
accesso con modem
linee guida di protezione, 53
accesso del superutente
esame, 58
limitazione con SMH Builder, 57
monitoraggio, 57
protezione, 56
accesso di root
esame, 58
limitazione con SMH Builder, 57
monitoraggio, 57
ottenere, 20
accesso remoto
linee guida di protezione per la gestione, 53
accesso utente
gestione, 25
account di gruppo
amministrazione, 27
account guest
monitoraggio, 26
account root
protezione, 56
account temporaneo
disabilitazione, 26
account utente
limitato, 27
ACL
backup/ripristino di sistemi sicuri, 202
confronto di JFS e HFS, 113
e NFS, 115
esempio di modifica di un JFS minimo, 109
impostazione, 101
impostazione in HFS, 102
impostazione in JFS, 106
voci predefinite per JFS, 111
ACL per HFS
comandi e chiamate che funzionano con, 104
confrontata con l'ACL per JFS, 113
e NFS, 115
ACL per JFS
confrontata con l'ACL per HFS, 113
e NFS, 115
esempio di modifica minima, 109
modifica con il comando setacl, 112
uso delle voci predefinite, 111
AES (Advanced Encryption Standard), 207
affidabile, 200
AH (Authentication Header)
definizione, 207
amministrazione di rete, 83
controllo della protezione dei file, 118
gestione di un dominio amministrativo, 83
amministrazione di sistema
auditing degli utenti, 179
autenticazione dell'utente con PAM, 31
autenticazione dell'utente durante l'accesso, 28
controllo della protezione dei file in una rete, 118
definizione degli attributi di protezione, 43, 70
215
gestione dei programmi setuid e setgid, 47
gestione dell'accesso remoto, 53
gestione delle password, 37
gestione di un dominio amministrativo, 83
impostazione delle opzioni di protezione al momento
dell'installazione, 21
installazione delle patch di protezione, 22
montaggio e smontaggio sicuro di un filesystem, 117
prevenzione degli attacchi con overflow del buffer dello stack,
50
protezione dei servizi Internet, 75
protezione del filesystem di HP-UX, 97
protezione dell'accesso di root, 56
protezione delle intestazioni d'accesso, 55
protezione di FTP, 76
protezione di inetd, 80
protezione di workstation e terminali incustoditi, 51
sicurezza nell'installazione di HP-UX, 19
utilizzo dell'autenticazione all'avvio per prevenire accessi
non autorizzati, 21
violazioni della protezione, 20
amministrazione di sistemi
gestione dell'accesso degli utenti, 25
linee guida per il backup, 23
linee guida per l'auditing, 184
anonimo, FTP
protezione, 77
at, comando, 196
attributi di protezione
definizione, 43, 70
audisp, comando
visualizzazione del file di log di auditing con, 190
auditing
abilitazione, 180
attivazione dopo il ripristino, 24
comandi, 180
profilo di base, 186
utenti, 179
autenticazione, 197
con PAM, 31
durante l'accesso, 28
esempio di accesso con PAM, 36
usata da SSH, 89
utilizzo all'avvio, 21
autenticazione all'avvio
utilizzo, 21
autenticazione basata su chiave pubblica
ed autenticazione basata su host, 90
usata da SSH, 90
autenticazione basata su host
ed autenticazione basata su chiave pubblica, 90
usata da SSH, 90
authadm, 168
esempi, 168
sintassi, 168
autorizzazioni, 154
configurazione, 167
216
Indice
esame del file di controllo della rete, 118
esame per il file di controllo della rete, 83
oggetto, 154
operazione, 154
avvio
prevenzione delle intrusioni durante l'avvio, 20
B
backup
linee guida di protezione per, 23
sistema sicuro, 202
sistemi sicuri, 195
Bastille (vedere HP-UX Bastille)
Bastion Host, 59
batch, 196
bit sticky
impostazione, 99
blocco dello schermo
configurazione, 52
btmp, file
controllo degli accessi non riusciti con, 29
C
CA (autorità di certificazione)
definizione, 208
campo crittografato della password, 198–199
CDE Login Manager
accesso con, 28
chfn, 198
chiamata di procedura remota
Vedere RPC, 82
chiavi precondivise
definizione, 208–209, 212–213
chmod, comando
effetti sulle voci di classe, 108
modifica delle autorizzazioni di accesso ai file con, 99
chown, 23, 198, 203
chsh, 198
cmdprivadm, 169
esempi, 169
sintassi, 169
comando
login, 198
swlist, 196
compartimenti, 121
attivazione, 124
creazione delle regole, 128
modifica delle regole, 128
pianificazione della struttura, 123
regole IPC, 131
regole per i filesystem, 129
regole per l'interfaccia di rete, 135
regole per la restrizione dei privilegi, 135
regole per la rete, 133
risoluzione dei problemi, 136, 148
connessioni mobili
protezione, 54
controllo dell'accesso basato sul dispositivo, 201
controllo dell'accesso basato sull'orario, 201
criterio IPSec
definizione, 209
crittografia
definizione, 209–211
cronologia
password, 201
crontab, 196
D
daemon Internet
vedere inetd, daemon, 79
data di scadenza
password, scadenza, 200
database delle password protette
/tcb/files/auth/, 197–198
database delle password sicure, 202
database di assegnazione dei dispositivi
sistema sicuro, 202
database di controllo dei terminali
sistema sicuro, 202
DES (Data Encryption Standard), 207, 209–210
Diffie-Hellman, 210
gruppo, 210
dominio
amministrativo, gestione, 83
dominio amministrativo
gestione, 83
durata
scadenza della password, 200
E
Elenco dei certificati revocati (CRL), 209–210
esame delle autorizzazioni nel file di controllo della rete, 83
ESP (Encapsulating Security Payload)
definizione, 210
/etc/ftpd/ftpusers, 78
/etc/inetd.sec, 81
/etc/passwd, 24
evento di auditing, 185
tipo, 186
F
fbackup, comando, 23
backup sicuro, 202
file
/etc/group, 198
/etc/passwd, 195, 197–198
file /etc/ftpd/ftpusers
modifica dell'accesso con, 78
file /etc/inetd.sec, 81
file /var/adm/inetd.sec
configurazione, 80
file danneggiati
individuazione e correzione con il comando fsck, 100
file di controllo degli accessi, 29
file di controllo della rete
esame delle autorizzazioni, 118
esame delle autorizzazioni in, 83
file di dispositivo dei terminali
protezione, 52
file di log
auditing, 187
file di log dell'auditing
semplificazione dei dati, 191
file di log di auditing, 187
sovrascrittura, 189
visualizzazione, 190
file di log di auditing ausiliario, 188
file di log di auditing primario, 188
file speciali /dev
considerazioni sulla protezione dei, 115
filesystem
linee guida di protezione per montaggio e smontaggio, 117
filtro
definizione, 211–212
flag di auditing, 200
frecover, comando, 23
ripristino sicuro, 202
fsck, comando
correzione dei file danneggiati con, 100
FTP
anonimo, protezione, 77
protezione, 76
funzione
getdvagent, 202
getprdfent, 202
getprpwent, 202
getprtcent, 202
getpwent, 202
getspwent, 202
putprpwnam, 202
putpwent, 202
putspwent, 202
G
generatore di numeri casuali, 92
gestione dell'accesso ai file, 97
gestione delle password, 37
gestore di blocco CDE
configurazione, 53
getacl, comando
visualizzazione delle ACL con, 108
getdvagent, funzione, 202
getfilexsec, comando, 127, 142
getprdfent, funzione, 202
getprocxsec, comando, 127, 142
getprpwent, funzione, 202
getprtcent, funzione, 202
getpwent, funzione, 202
getspwent, funzione, 202
217
GSS-API
SSH, 90
H
HFS, 101
HFS, ACL
impostazione, 102
High Performance File System
Vedere HFS, 101
HP-UX Bastille, 59
annullamento delle modifiche, 65
da fare, elenco
esecuzione, 62
uso, 65
deviazione
accesso al file di deviazione della configurazione, 66
bastille_drift, uso, 60
confronto dello stato, 60
download, 60
file
ubicazione e descrizione, 65
visualizzazione dei registri eventi, 64
file di configurazione
creazione, 60, 63
duplicazione, 60
installazione, 60
interattivo, uso, 61
non interattivo, uso, 62
rapporti
accesso ai file, 66
generazione, 60
rimozione, 68
suggerimenti e risoluzione dei problemi, 67
uso
interattivo, 61
non interattivo, 62
HP-UX installazione
prevenzione delle intrusioni durante l'avvio, 20
HP-UX RBAC
architettura, 159
auditing, 192
comandi, 158
wrapping, 165
componenti, 156
configurazione nei compartimenti, 172
file di configurazione, 157
manpage, 158
operazioni, 160
risoluzione dei problemi, 177
utente predefinito, 167
HP-UX, installazione
considerazioni sulla sicurezza, 19
consigli sulla protezione dopo l'installazione, 23
impostazione delle opzioni di protezione al momento
dell'installazione, 21
218
Indice
I
ID auditing (aid), 198
ID di auditing (aid), 196, 200
ID gruppo (gid), 198
ID utente (uid), 198, 200
IKE (Internet Key Exchange)
protocollo, 211
impostazione di un programma con ID di gruppo
Vedere setgid, programmi, 47
impostazione di un programma con ID utente
Vedere setuid, programmi, 47
inetd, daemon
panoramica, 79
protezione, 80
wrapper TCP e, 81
installazione delle patch
con Software Assistant, 22
installazione delle patch di protezione
con Software Assistant, 22
installazione di HP-UX
considerazioni sulla sicurezza, 19
consigli sulla protezione dopo l'installazione, 23
impostazione delle opzioni di protezione al momento
dell'installazione, 21
installazione delle patch di protezione, 22
installazione delle patch di protezione dopo la, 22
prevenzione delle intrusioni durante l'avvio, 20
interruzione dell'alimentazione, 24
perdita di file, 24
interruzione della corrente, 203
intestazioni d'accesso
protezione, 55
J
jail di chroot, 93
JFS, 101
JFS, ACL
impostazione, 106
Journaled File System
Vedere JFS, 101
L
last, comando
esempi di utilizzo, 30
libreria PAM, 32
liste di controllo dell'accesso
Vedere ACL, 101
livello di esecuzione
controllo dell'accesso con, 51
modifica, 51
livello di esecuzione del sistema
controllo dell'accesso con, 51
modifica, 51
livello di protezione
scelta durante l'installazione, 21
Logical Volume Manager
Vedere LVM, 116
login, comando, 28, 198
lost+found, directory, 24, 203
LVM, 116
M
MAC, 211
modalità utente singolo
avvio in, 20
modulo del servizio PAM, 31
montaggio sicuro di un filesystem, 117
N
NFS, 119
e le ACL, 115
protezione dei file montati con NFS, 120
protezione del client, 119
protezione del server, 119
NIS
protezione delle password archiviate in, 43
nome utente
creazione di un unico, 28
numero di autorizzazione, 197
O
operazioni
linee guida per la creazione, 163
P
PAM
autenticazione degli utenti con, 31
configurazione nell'intero sistema, 34
panoramica di, 31
PAM, autenticazione
esempio di accesso, 36
parametro
PASSWORD_HISTORY_DEPTH, 201
partizioni di disco
considerazioni sulla protezione di, 116
passwd, comando, 198
esempi, 39
password, 200
autenticazione
usata da SSH, 91
campo crittografato, 198–199
criteri per, 38
crittografia, 198
cronologia, 201
database, 195, 197, 199
/tcb/files/auth/, 197–198
file
campi, 198
database delle password protette, 195, 197, 199
generazione, 200
gestione, 37
integrità, 197
protezione, 197
riutilizzo, 201
scadenza, 197–198, 200
data di scadenza, 200
durata, 200
tempo minimo, 200
shadow, 40
tipi, 200
voce
modifica, 202
password affidabile, 200
PASSWORD_HISTORY_DEPTH, parametro, 201
patch di protezione
installazione, 22
Perfect Forward Secrecy (PFS)
definizione, 212
privedit, 176
opzioni, 176
sintassi, 176
privilegi ad alta definizione, 141
configurazione, 170
privrun, 173
-p, 172
esempi, 175
operazioni, 160
opzioni, 173
sintassi, 173
procedura di accesso
spiegazione, 28
procedura di avvio
ottenere, 20
programma di auto-auditing, 191
proprietà dei file
impostazione, 99
protezione contro l'overflow del buffer dello stack, 50
protezione dei file
considerazioni sui file speciali /dev, 115
controllo dell'accesso ai file, 97
controllo in una rete, 118
protezione dei file degli account utente, 100
protezione dei file montati con NFS, 120
protezione delle partizioni di disco e di volumi logici, 116
protezione del sistema
definizione degli attributi di protezione, 43, 70
protezione delle sessioni remote, 84
protezione per l'utente
gestione, 25
protocollo SSH-1, 91
protocollo SSH-2, 91
prpwd, 199
pseudoaccount
esempio, 42
putprpwnam, funzione, 202
putpwent, funzione, 202
putspwent, funzione, 202
219
R
rafforzamento della protezione (vedere HP-UX Bastille)
ripristino
linee guida di protezione per, 23
riutilizzo
password, 201
roleadm, 165
esempi, 166
sintassi, 165
root
svantaggi di, 153
RPC
e wrapper TCP, 82
rsh, comando
limitazione dell'accesso con, 26
ruoli
configurazione, 165
gruppi, 167
impostazioni predefinite, 166
linee guida per la creazione, 162
S
scelta e generazione, 200
Sec00Tools, livello di protezione, 21
Sec20MngDMZ, livello di protezione, 21
Sec30DMZ, livello di protezione, 21
Secure Shell
Vedere SSH, 84
SecurityMon, file, 196
server di directory LDAP
protezione delle password archiviate in, 43
server ftpd, 78
servizi di accesso remoto, 75
panoramica, 75
servizi Internet, 75
panoramica, 75
sessioni remote
protezione con SSH, 84
set di file
SecurityMon, 196
setacl, comando
modifica delle ACL con, 108
modifica delle ACL per JFS con, 112
setfilexsec, comando, 127, 142
setgid, programmi, 23, 203
gestione, 47
setuid, programmi, 23, 203
gestione, 47
shadow, password, 40
SIS, 82
sistema crittografico RSA, 212–213
sistema sicuro
database, 202
sistemi sicuri
conversione, 195
conversione da, 196
220 Indice
smontaggio sicuro di un filesystem, 117
Software Assistant
uso, 22
spoofing
definizione, 78
protezione utilizzando wrapper TCP, 81
SSH, 43
autenticazione, 85, 89
autenticazione basata su chiave pubblica, 90
autenticazione con password, 91
componenti software, 86
crittografia, 85
esecuzione, 87
esecuzione del client scp, 88
esecuzione del client sftp, 87
esecuzione del client ssh, 87
esecuzione in modalità privilegiata, 88
funzionalità, 85
GSS-API, 90
port forwarding, 85
protezione delle sessioni remote, 84
sistema HP-UX, 91
strong random number generator, 92
supporto per wrapper TCP, 93
tecnologie correlate, 92
strong random number generator, 92
strumento di blocco (vedere HP-UX Bastille)
supporto per il backup
protezione, 202
swlist, comando, 196
T
telefono
protezione, 54
tempo minimo
scadenza della password, 200
terminali
configurazione del blocco dello schermo, 52
protezione di quelli incustoditi, 51
U
umask, comando
modifica delle autorizzazioni predefinite dei file con, 99
unico, nome utente
importanza, 28
userdbset, comando
esempi di definizione di attributi per gli utenti, 46
utente, autenticazione
con PAM, 31
durante l'accesso, 28
esempio di accesso con PAM, 36
V
/var/adm/inetd.sec, 80
variabile TMOUT
configurazione, 52
volume logico
considerazioni sulla protezione di, 116
W
who, comando
ottenere informazioni dell'accesso di utenti con, 30
workstation
protezione di quelle incustodite, 51
wrapper TCP
e SSH, 93
protezione contro lo spoofing con, 81
wtmp, file
controllo degli accessi riusciti con, 29
WU-FTPD, 78
221