Fedora 18 Guida alla Sicurezza Guida alla protezione di Fedora Linux Johnray Fuller John Ha David O'Brien Scott Radvan Eric Christensen Adam Ligas Guida alla Sicurezza Fedora 18 Guida alla Sicurezza Guida alla protezione di Fedora Linux Edizione 18.0.1 Autore Johnray Fuller [email protected] Autore John Ha [email protected] Autore David O'Brien [email protected] Autore Scott Radvan [email protected] Autore Eric Christensen [email protected] Autore Adam Ligas [email protected] Copyright © 2007-2012 Fedora Project Contributors. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. The original authors of this document, and Red Hat, designate the Fedora Project as the "Attribution Party" for purposes of CC-BY-SA. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. For guidelines on the permitted uses of the Fedora trademarks, refer to https://fedoraproject.org/wiki/ Legal:Trademark_guidelines. Linux® is the registered trademark of Linus Torvalds in the United States and other countries. Java® is a registered trademark of Oracle and/or its affiliates. XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries. All other trademarks are the property of their respective owners. La Guida alla Sicurezza intende assistere gli utenti Fedora ad apprendere i processi e le pratiche di messa in sicurezza di workstation e server da attività sospette, attacchi ed intrusioni, sia locali che remoti. La Guida, dedicata a sistemi Fedora, affronta concetti e tecniche valide su tutti i sistemi Linux, mostrando piani e gli strumenti necessari per creare un ambiente sicuro in postazioni domestiche, negli uffici e in centri di elaborazione dati. Con una gestione e un controllo adeguato, i sistemi Linux possono essere sia pienamente funzionali sia sicuri dai più comuni metodi di attacco e di intrusione. Prefazione vii 1. Convenzioni del documento ........................................................................................... vii 1.1. Convenzioni tipografiche ..................................................................................... vii 1.2. Convenzioni del documento ................................................................................ viii 1.3. Note ed avvertimenti ............................................................................................ ix 2. Inviateci i vostri commenti! .............................................................................................. x 1. Panoramica sulla Sicurezza 1 1.1. Introduzione alla Sicurezza ........................................................................................... 1 1.1.1. Cosa s'intende per Sicurezza Informatica? .......................................................... 1 1.1.2. SELinux ............................................................................................................ 3 1.1.3. Controlli di Sicurezza ......................................................................................... 3 1.1.4. Conclusione ...................................................................................................... 4 1.2. Attaccanti e Vulnerabilità .............................................................................................. 5 1.2.1. Una breve storia degli Hacker ............................................................................ 5 1.2.2. Minacce alla sicurezza di rete ............................................................................ 6 1.2.3. Minacce alla sicurezza server ............................................................................ 6 1.2.4. Minacce alla sicurezza di workstation e PC di casa ............................................. 8 1.3. Analisi della vulnerabilità .............................................................................................. 9 1.3.1. Pensare come il nemico .................................................................................... 9 1.3.2. Analisi e Test .................................................................................................. 10 1.3.3. Valutazione degli strumenti ............................................................................... 11 1.4. Rischi e Attacchi comuni ............................................................................................ 14 1.5. Aggiornamenti di sicurezza ......................................................................................... 16 1.5.1. Aggiornare i pacchetti ...................................................................................... 17 1.5.2. Verificare la firma dei pachetti .......................................................................... 17 1.5.3. Installare pacchetti firmati ................................................................................. 18 1.5.4. Applicare i cambiamenti ................................................................................... 18 2. Guida base all'hardening 21 2.1. Principi generali .......................................................................................................... 21 2.2. Perchè è importante? ................................................................................................. 21 2.3. Sicurezza fisica .......................................................................................................... 21 2.4. Perchè è importante ................................................................................................... 22 2.5. Cos'altro posso fare? .................................................................................................. 22 2.6. Networking ................................................................................................................. 22 2.6.1. iptables ........................................................................................................... 22 2.6.2. IPv6 ................................................................................................................ 22 2.7. Mantenere il software aggiornato ................................................................................. 23 2.8. Servizi ....................................................................................................................... 23 2.9. NTP ........................................................................................................................... 23 3. Proteggere la rete locale 25 3.1. Workstation Security ................................................................................................... 25 3.1.1. Analizzare la sicurezza di una workstation ........................................................ 25 3.1.2. Protezione del BIOS e del Boot Loader ............................................................. 25 3.1.3. Protezione delle password ............................................................................... 27 3.1.4. Controlli amministrativi ..................................................................................... 33 3.1.5. Servizi di rete disponibili .................................................................................. 39 3.1.6. Firewall personali ............................................................................................. 42 3.1.7. Strumenti di comunicazione che aumentano la sicurezza ................................... 43 3.2. Server Security .......................................................................................................... 44 3.2.1. Proteggere i servizi con TCP Wrapper e xinetd .................................................. 44 3.2.2. Proteggere Portmap ......................................................................................... 47 3.2.3. Proteggere NIS ................................................................................................ 48 iii Guida alla Sicurezza 3.2.4. Proteggere NFS .............................................................................................. 50 3.2.5. Proteggere HTTP Apache ................................................................................ 51 3.2.6. Proteggere FTP ............................................................................................... 52 3.2.7. Proteggere Sendmail ....................................................................................... 55 3.2.8. Controllare le porte in ascolto ........................................................................... 56 3.3. Single Sign-on (SSO) ................................................................................................. 57 3.3.1. Introduzione .................................................................................................... 57 3.3.2. Primo utilizzo di una nuova Smart Card ............................................................ 58 3.3.3. Come funziona la registrazione di una Smart Card ............................................ 60 3.3.4. Come funziona l'accesso via Smart Card .......................................................... 61 3.3.5. Configurare Firefox ad usare Kerberos con SSO ............................................... 62 3.4. Yubikey ...................................................................................................................... 64 3.4.1. Utilizzo di Yubikey con un server centralizzato ................................................... 64 3.4.2. Autenticazione ai siti web con la Yubikey .......................................................... 65 3.5. Pluggable Authentication Modules (PAM) ..................................................................... 65 3.5.1. Vantaggi di PAM .............................................................................................. 66 3.5.2. File di configurazione di PAM ........................................................................... 66 3.5.3. Formato del file di configurazione di PAM .......................................................... 66 3.5.4. Un esempio di file di configurazione di PAM ...................................................... 69 3.5.5. Creare moduli PAM ......................................................................................... 70 3.5.6. Caching delle credenziali PAM ed Amministrative .............................................. 70 3.5.7. Proprietario di PAM e di Dispositivo .................................................................. 72 3.5.8. Ulteriori risorse ................................................................................................ 73 3.6. TCP Wrapper e xinetd ................................................................................................ 74 3.6.1. TCP Wrapper .................................................................................................. 75 3.6.2. File di configurazione di TCP Wrapper .............................................................. 76 3.6.3. xinetd .............................................................................................................. 83 3.6.4. File di configuratione di xinetd .......................................................................... 83 3.6.5. Ulteriori risorse ................................................................................................ 89 3.7. Kerberos .................................................................................................................... 90 3.7.1. Cos'è Kerberos? .............................................................................................. 90 3.7.2. Terminologia Kerberos ..................................................................................... 91 3.7.3. Come funziona Kerberos .................................................................................. 93 3.7.4. Kerberos e PAM .............................................................................................. 94 3.7.5. Configurare un server Kerberos 5 ..................................................................... 94 3.7.6. Configurare un client Kerberos 5 ...................................................................... 96 3.7.7. Associazione tra Dominio e Realm ................................................................... 98 3.7.8. Impostare KDC secondari ................................................................................ 98 3.7.9. Impostare autenticazioni cross realm .............................................................. 100 3.7.10. Ulteriori risorse ............................................................................................ 103 3.8. Firewall .................................................................................................................... 104 3.8.1. Netfilter e IPTables ........................................................................................ 106 3.8.2. Configurazione di un firewall di base ............................................................... 106 3.8.3. Usare IPTables .............................................................................................. 109 3.8.4. Filtraggi IPTables comuni ............................................................................... 111 3.8.5. Regole di FORWARD e NAT ............................................................................. 112 3.8.6. Software maliziosi e indirizzi IP spoofed .......................................................... 114 3.8.7. IPTables e Connection Tracking ...................................................................... 115 3.8.8. IPv6 .............................................................................................................. 116 3.8.9. Ulteriori risorse .............................................................................................. 116 3.9. IPTables ................................................................................................................... 117 3.9.1. Filtraggio pacchetti ......................................................................................... 117 3.9.2. Opzioni di comando di IPTables ...................................................................... 118 3.9.3. Salvataggio delle regole IPTables ................................................................... 127 iv 3.9.4. Script di controllo IPTables ............................................................................. 127 3.9.5. IPTables ed IPv6 ........................................................................................... 130 3.9.6. Ulteriori risorse .............................................................................................. 130 4. Cifratura 131 4.1. Dati a Riposo ........................................................................................................... 131 4.1.1. Completa cifratura del disco ........................................................................... 131 4.1.2. Cifratura basata su file ................................................................................... 131 4.2. Dati in Movimento .................................................................................................... 131 4.2.1. Virtual Private Networks (VPN) ....................................................................... 132 4.2.2. Secure Shell .................................................................................................. 146 4.2.3. Cifratura disco con LUKS ............................................................................... 147 4.2.4. Archivi 7-Zip cifrati ......................................................................................... 150 4.2.5. Usare GNU Privacy Guard (GnuPG) ............................................................... 151 5. Principi generali di Sicurezza dell'Informazione 157 5.1. Consigli, guide e strumenti ........................................................................................ 157 6. Installazione sicura 159 6.1. Partizioni del disco ................................................................................................... 159 6.2. Utilizzo di LUKS ....................................................................................................... 159 7. Manutenzione del software 161 7.1. Installare il software indispensabile ............................................................................ 161 7.2. Pianificare e configurare gli aggiornamenti di sicurezza ............................................... 161 7.3. Regolare gli aggiornamenti automatici ....................................................................... 161 7.4. Installare pacchetti firmati da repository fidati ............................................................. 161 8. Common Vulnerabilities and Exposures 163 8.1. Plugin YUM .............................................................................................................. 163 8.2. Usare yum-plugin-security ......................................................................................... 163 9. Riferimenti 165 A. Standard di crittografia 167 A.1. Crittografia sincrona ................................................................................................. 167 A.1.1. Advanced Encryption Standard - AES ............................................................. 167 A.1.2. Data Encryption Standard - DES .................................................................... 167 A.2. Cifratura a chiave pubblica ....................................................................................... 168 A.2.1. Diffie-Hellman ................................................................................................ 168 A.2.2. RSA .............................................................................................................. 169 A.2.3. DSA .............................................................................................................. 169 A.2.4. SSL/TLS ....................................................................................................... 169 A.2.5. Il sistema Cramer–Shoup ............................................................................... 170 A.2.6. Cifratura ElGamal .......................................................................................... 170 B. Cronologia Revisioni 171 v vi Prefazione 1. Convenzioni del documento Questo manuale utilizza numerose convenzioni per evidenziare parole e frasi, ponendo attenzione su informazioni specifiche. Nelle edizioni PDF e cartacea questo manuale utilizza caratteri presenti nel set Font Liberation1. Il set Font Liberation viene anche utilizzato nelle edizioni HTML se il set stesso è stato installato sul vostro sistema. In caso contrario, verranno mostrati caratteri alternativi ma equivalenti. Da notare: Red Hat Enterprise Linux 5 e versioni più recenti, includono per default il set Font Liberation. 1.1. Convenzioni tipografiche Vengono utilizzate quattro convenzioni tipografiche per richiamare l'attenzione su parole e frasi specifiche. Queste convenzioni, e le circostanze alle quali vengono applicate, sono le seguenti. Neretto monospazio Usato per evidenziare l'input del sistema, incluso i comandi della shell, i nomi dei file ed i percorsi. Utilizzato anche per evidenziare tasti e combinazione di tasti. Per esempio: Per visualizzare i contenuti del file my_next_bestselling_novel nella vostra directory di lavoro corrente, inserire il comando cat my_next_bestselling_novel al prompt della shell e premere Invio per eseguire il comando. Quanto sopra riportato include il nome del file, un comando della shell ed un tasto, il tutto riportato in neretto monospazio e distinguibile grazie al contesto. Le combinazioni di tasti possono essere distinte dai tasti tramite il trattino che collega ogni parte della combinazione. Per esempio: Premere Invio per eseguire il comando. Premere Ctrl+Alt+F2 per smistarsi sul primo virtual terminal. Premere Ctrl+Alt+F1 per ritornare alla sessione X-Windows. Il primo paragrafo evidenzia il tasto specifico singolo da premere. Il secondo riporta due combinazioni di tasti, (ognuno dei quali è un set di tre tasti premuti contemporaneamente). Se si discute del codice sorgente, i nomi della classe, i metodi, le funzioni i nomi della variabile ed i valori ritornati indicati all'interno di un paragrafo, essi verranno indicati come sopra, e cioè in neretto monospazio. Per esempio: Le classi relative ad un file includono filesystem per file system, file per file, e dir per directory. Ogni classe possiede il proprio set associato di permessi. Proportional Bold Ciò denota le parole e le frasi incontrate su di un sistema, incluso i nomi delle applicazioni; il testo delle caselle di dialogo; i pulsanti etichettati; le caselle e le etichette per pulsanti di selezione, titoli del menu e dei sottomenu. Per esempio: 1 https://fedorahosted.org/liberation-fonts/ vii Prefazione Selezionare Sistema Preferenze Mouse dalla barra del menu principale per lanciare Preferenze del Mouse. Nella scheda Pulsanti, fate clic sulla casella di dialogo mouse per mancini, e successivamente fate clic su Chiudi per cambiare il pulsante primario del mouse da sinistra a destra (rendendo così il mouse idoneo per un utilizzo con la mano sinistra). Per inserire un carattere speciale in un file gedit, selezionare Applicazioni Accessori Mappa carattere dalla barra menu principale. Successivamente, selezionare Cerca Trova… dalla barra del menu Mappa carattere, inserire il nome del carattere nel campo Cerca e cliccare Successivo. Il carattere ricercato verrà evidenziato nella Tabella caratteri. Fare un doppio clic sul carattere evidenziato per posizionarlo nel campo Testo da copiare, e successivamente fare clic sul pulsante Copia. Ritornare ora al documento e selezionare Modifica Incolla dalla barra del menu di gedit. Il testo sopra riportato include i nomi delle applicazioni; nomi ed oggetti del menu per l'intero sistema; nomi del menu specifici alle applicazioni; e pulsanti e testo trovati all'interno di una interfaccia GUI, tutti presentati in neretto proporzionale e distinguibili dal contesto. Corsivo neretto monospazio o Corsivo neretto proporzionale Sia se si tratta di neretto monospazio o neretto proporzionale, l'aggiunta del carattere corsivo indica un testo variabile o sostituibile . Il carattere corsivo denota un testo che non viene inserito letteralmente, o visualizzato che varia a seconda delle circostanze. Per esempio: Per collegarsi ad una macchina remota utilizzando ssh, digitare ssh [email protected] al prompt della shell. Se la macchina remota è example.com ed il nome utente sulla macchina interessata è john, digitare ssh [email protected]. Il comando mount -o remount file-system rimonta il file system indicato. Per esempio, per rimontare il file system /home, il comando è mount -o remount / home. Per visualizzare la versione di un pacchetto attualmente installato, utilizzare il comando rpm -q package. Esso ritornerà il seguente risultato: package- version-release. Da notare la parola in Corsivo neretto — nome utente, domain.name, file-system, pacchetto, versione e release. Ogni parola racchiude il testo da voi inserito durante l'emissione di un comando o per il testo mostrato dal sistema. Oltre all'utilizzo normale per la presentazione di un titolo, il carattere Corsivo denota il primo utilizzo di un termine nuovo ed importante. Per esempio: Publican è un sistema di pubblicazione per DocBook. 1.2. Convenzioni del documento Gli elenchi originati dal codice sorgente e l'output del terminale vengono evidenziati rispetto al testo circostante. L'output inviato ad un terminale è impostato su tondo monospazio e così presentato: books Desktop documentation drafts mss photos stuff svn books_tests Desktop1 downloads images notes scripts svgs viii Note ed avvertimenti Gli elenchi del codice sorgente sono impostati in tondo monospazio ma vengono presentati ed evidenziati nel modo seguente: package org.jboss.book.jca.ex1; import javax.naming.InitialContext; public class ExClient { public static void main(String args[]) throws Exception { InitialContext iniCtx = new InitialContext(); Object ref = iniCtx.lookup("EchoBean"); EchoHome home = (EchoHome) ref; Echo echo = home.create(); System.out.println("Created Echo"); System.out.println("Echo.echo('Hello') = " + echo.echo("Hello")); } } 1.3. Note ed avvertimenti E per finire, tre stili vengono usati per richiamare l'attenzione su informazioni che in caso contrario potrebbero essere ignorate. Nota Bene Una nota è un suggerimento o un approccio alternativo per il compito da svolgere. Non dovrebbe verificarsi alcuna conseguenza negativa se la nota viene ignorata, ma al tempo stesso potreste non usufruire di qualche trucco in grado di facilitarvi il compito. Importante Le caselle 'importante' riportano informazioni che potrebbero passare facilmente inosservate: modifiche alla configurazione applicabili solo alla sessione corrente, o servizi i quali necessitano di un riavvio prima di applicare un aggiornamento. Ignorare queste caselle non causa alcuna perdita di dati ma potrebbe causare irritazione e frustrazione da parte dell'utente. Avvertenza Un Avvertimento non dovrebbe essere ignorato. Se ignorato, potrebbe verificarsi una perdita di dati. ix Prefazione 2. Inviateci i vostri commenti! Se individuate degli errori di battitura in questo manuale, o se pensate di poter contribuire al suo miglioramento, contattateci subito! Inviate i vostri suggerimenti tramite Bugzilla: http:// bugzilla.redhat.com/bugzilla/ sul componente Fedora. Quando inviate un bug report, assicuratevi di indicare l'identificatore del manuale: security-guide Se inviate un suggerimento per contribuire al miglioramento della guida, cercate di essere il più specifici possibile. Se avete individuato un errore, indicate il numero della sezione e alcune righe di testo, in modo da agevolare la ricerca dell'errore. x
Description: