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