Questo documento proverà a spiegare alcune procedure e il software usato comunemente per migliorare la sicurezza del proprio sistema Linux. È importante, prima di cominciare, discutere alcuni dei concetti di base e descrivere i fondamenti della sicurezza informatica.
Nel mondo continuamente in movimento delle comunicazioni globali, delle connessioni ad Internet gratuite, e del veloce sviluppo del software, la sicurezza sta diventando sempre più un fattore da considerare. La sicurezza è un requisito basilare perché l'informatizzazione globale è intrinsecamente inaffidabile. Mentre i dati vanno dal punto A al punto B su Internet, per esempio, possono passare attraverso molti altri punti lungo il tragitto, lasciando ad altri la possibilità di intercettarli e persino alterarli. Anche altri utenti sul vostro sistema possono maliziosamente trasformare i vostri dati in qualcosa che non vorreste. Degli intrusi, detti "cracker", possono ottenere l'accesso al sistema, e poi usare le loro approfondite conoscenze per impersonare altri utenti, rubare informazioni o anche negare l'accesso alle proprie stesse risorse. Se ci si sta chiedendo qual'è la differenza fra un "Hacker" e un "Cracker", si veda il documento di Eric Raymond "How to Become A Hacker" ("Come Diventare Un Hacker"), reperibile presso http://www.catb.org/~esr/faqs/hacker-howto.html.
Prima di tutto, si tenga a mente che nessun sistema informatico potrà mai essere completamente sicuro. Tutto quello che si può fare è rendere sempre più difficile per gli altri compromettere il sistema. Per l'utente medio di un sistema Linux casalingo non serve molto per tenere a bada un cracker occasionale. Al contrario, per sistemi Linux di alto profilo (banche, compagnie di telecomunicazioni, etc), è necessario molto più impegno.
Un altro fattore da tenere in considerazione è che più il sistema è sicuro, più la sicurezza diventa intrusiva. Si deve decidere a quale punto di equilibrio il sistema sarà ancora utilizzabile ma sicuro, relativamente all'uso che se ne fa. Per esempio, si può esigere che chiunque tenti di fare un login via telefono col vostro sistema usi un modem che lo richiami a casa. Questo dà più sicurezza, ma se questo qualcuno non è a casa sarà difficile che possa connettersi. Si potrebbe anche configurare il sistema Linux senza rete o connessione a Internet, ma questo ne limiterebbe l'utilità.
Se si è un organizzazione di dimensioni medio-grandi, si dovrebbe stabilire una politica di sicurezza che definisca quanto deve essere sicuro il sito e quale verifica effettuare per controllarla. Si può trovare un famoso esempio di politica di sicurezza su http://www.faqs.org/rfcs/rfc2196.html. Il documento è stato recentemente aggiornato e contiene un'ottima struttura per stabilire una politica di sicurezza per la propria organizzazione.
Prima di tentare di rendere sicuro il sistema, si dovrebbe determinare contro che livello di attacco ci si vuole proteggere, quali rischi si dovrebbero correre o meno e quanto vulnerabile ne risulterebbe il sistema. Lo si dovrebbe analizzare per sapere cosa si sta proteggendo, perché lo si sta proteggendo, quanto vale e chi ne ha la responsabilità.
Il rischio è la possibilità che un intruso riesca nel tentativo di accedere al computer. Un intruso può leggere o scrivere file, o eseguire programmi che potrebbero fare danno? Può cancellare dei dati importanti? Può bloccare il proprio lavoro e quello della organizzazione? Da non dimenticare: qualcuno che ha accesso al vostro account, o al sistema, può anche impersonarvi.
Inoltre, avere un account insicuro nel sistema può compromettere l'intera rete. Se si permette anche ad un solo utente di fare login usando un file .rhosts o di usare un servizio insicuro come tftp, si rischia di far mettere ad un intruso "il piede nella porta". Una volta che costui ha un account sul sistema, o su quello di qualcun altro, può usarlo per avere accesso ad un altro sistema, o ad un altro account.
Una minaccia viene tipicamente da qualcuno con un movente per cercare di ottenere un accesso non autorizzato alla rete o al computer. Si deve decidere di chi ci si può fidare e che tipo di pericolo potrebbe rappresentare.
Ci sono diversi tipi di intrusi, ed è utile tenere a mente le loro caratteristiche quando si configurano le difese del sistema.
Il Curioso - Questo tipo di intruso è principalmente interessato a scoprire che tipo di dati e di sistema si hanno.
Il Malizioso - Questo tipo di intruso tenta di mettere fuori uso il sistema, o di modificare la pagina web, o altrimenti di far perdere tempo e denaro per riparare i danni che causa.
L'intruso di Alto Profilo - Questo tipo di intruso tenta di usare il sistema per guadagnare popolarità o fama. Potrebbe usare il sistema di alto profilo per pubblicizzare le sue abilità.
La Concorrenza - Questo tipo di intruso ha interesse per i dati che si hanno sul sistema. Potrebbe essere qualcuno che pensa che si abbia qualcosa di cui potrebbe beneficiare, finanziariamente o in altro modo.
Lo Sfruttatore - Questo tipo di intruso è interessato a sfruttare il sistema e ad usare le sue risorse per i propri fini. In genere eseguirà server di chat o irc, siti con archivi porno o addirittura server DNS.
Il giocatore di cavallina - Questo tipo di intruso è interessato al sistema solo per usarlo come trampolino per entrare in altri. Se il sistema ha una buona connessione o è il passaggio verso molti altri host, è probabile che ci si trovi ad affrontare questo tipo di intruso.
La vulnerabilità esprime quanto bene il computer è protetto dalle altre reti, e la possibilità che qualcuno ottenga accesso non autorizzato.
Cosa è in gioco se qualcuno entra nel sistema? Ovviamente le preoccupazioni di un utente casalingo con un IP dinamico saranno diverse da quelle di una società che connette le proprie macchine ad Internet o ad un'altra grande rete.
Quanto tempo richiederebbe recuperare/ricreare dei dati andati persi? Un investimento di tempo ora può far risparmiare dieci volte tanto in seguito, se si dovessero ricreare dati perduti. È stato controllato il vostro sistema di backup recentemente e sono stati verificati i dati?
Si crei una strategia semplice e generica per il sistema che gli utenti possano facilmente capire e seguire. Dovrebbe proteggere, oltre ai dati a cui si tiene, anche la privacy degli utenti. Alcune cose che si potranno considerare sono: chi ha accesso al sistema (Il mio amico può usare il mio account?), chi è autorizzato a installare programmi sul sistema, chi possiede quali dati, recupero di "disastri" e uso appropriato del sistema.
Una strategia di sicurezza generalmente approvata comincia col motto:
"Quello che non è permesso è proibito"
Questo significa che a meno che non si sia dato ad un utente l'accesso ad un servizio, quell'utente non dovrebbe usarlo finché non gli viene permesso. Ci si assicuri che la strategia funzioni davvero sull'account dell'utente normale. Dire, "Ah, non riesco a risolvere questo problema di privilegi, lo farò da root." può portare a buchi nella sicurezza evidenti, o persino ad altri che non sono ancora stati scoperti.
rfc1244 è un documento che spiega come creare una propria strategia di sicurezza di rete.
rfc1281 è un documento che mostra una strategia di esempio con descrizioni dettagliate di ogni passo.
Infine si potrebbe dare un'occhiata all'archivio politiche COAST presso ftp://coast.cs.purdue.edu/pub/doc/policy per vedere come sono fatte delle strategie applicabili alla pratica.
Questo documento discuterà diversi mezzi con cui si può mettere al sicuro la struttura per la quale si è duramente lavorato: la propria macchina locale, i dati, gli utenti, la rete e persino la propria reputazione. Cosa succederebbe alla propria reputazione se un intruso cancellasse dati degli utenti? O modificasse il sito? O pubblicasse il piano corporativo della società per la prossima stagione? Se si sta pianificando l'installazione di una rete, ci sono diversi fattori da considerare prima di aggiungerle una singola macchina.
Anche se si ha un solo account PPP, o solo un piccolo sito, non significa che gli intrusi non saranno interessati a voi. Grandi sistemi di alto profilo non sono i soli bersagli -- molti intrusi vogliono solo superare la sicurezza di più siti possibile, ignorando le loro dimensioni. Inoltre, possono usare un buco nella sicurezza del sistema per riuscire ad entrare in altri siti a cui si è connessi.
Questi individui hanno tutto il tempo che vogliono, e possono evitare di cercare di indovinare come è stato protetto il sistema semplicemente provando tutte le possibilità. C'è inoltre una serie di ragioni per cui un intruso può interessarsi ai propri sistemi, che discuteremo più avanti.
Forse l'area di sicurezza sulla quale gli amministratori si concentrano di più è quella basata sui singoli host. Questo in genere implica l'assicurarsi che il proprio sistema sia sicuro, e sperare che tutti gli altri nella rete facciano lo stesso. Scegliere buone password, rendere sicuri i servizi di rete del proprio host locale, tenere buoni log degli account, e aggiornare i programmi con ben noti buchi di sicurezza, sono fra le cose di cui un amministratore è responsabile. Anche se questo è assolutamente necessario, può diventare un compito pesante quando la rete diventa più estesa di qualche macchina.
La sicurezza della rete è necessaria quanto quella dei singoli host. Con centinaia, migliaia, o più computer nella stessa rete, non si può sperare che ognuno di essi sia sicuro. Assicurarsi che solo utenti autorizzati possano accedere al sistema, costruire firewall, usare la crittografia forte e essere certi che non vi siano macchine "vagabonde" (cioè insicure) sono tutti compiti dell'amministratore della sicurezza di rete.
Questo documento discuterà alcune delle tecniche usate per rendere sicuro il sito e mostrerà alcuni modi per impedire che un intruso riesca ad accedere a quello che si sta tentando di proteggere.
Un tipo di sicurezza che deve essere discusso è la "sicurezza tramite oscurità". Questo significa, per esempio, spostare un servizio che è notoriamente "fragile" per la sicurezza su di una porta non standard, nella speranza che chi attacca non noti che è lì. Sicuramente verrà trovato e sfruttato. La sicurezza tramite oscurità non è assolutamente sicurezza. Semplicemente perché si ha un piccolo sito, o di profilo relativamente basso, non significa che un intruso non sarà interessato a quello che si ha. Discuteremo cosa proteggere nelle prossime sezioni.
Questo documento è stato diviso in una serie di sezioni. Trattano diversi argomenti riguardanti la sicurezza. Il primo, la Sezione 3, spiega come proteggere fisicamente la macchina dalle manomissioni. Il secondo, la Sezione 4, descrive come proteggere il sistema dalle manomissioni degli utenti locali. Il terzo, la Sezione 5, mostra come configurare il filesystem e i privilegi sui file. Il successivo, la Sezione 6, discute come usare la crittografia per rendere più sicura la propria macchina e la rete. la Sezione 7 discute quali opzioni del kernel si dovrebbero attivare o conoscere per un sistema più sicuro. la Sezione 8, descrive come rendere il sistema Linux più difficile da attaccare via rete. la Sezione 9, discute come preparare le macchine prima di metterle in rete. Quindi, la Sezione 10, tratta cosa fare quando si scopre una compromissione in atto o una successa recentemente. In la Sezione 11, sono citate alcune importanti risorse per la sicurezza. La sezione D e R la Sezione 13, risponde ad alcune domande frequenti, e infine troverete una conclusione in la Sezione 14
I due punti principali da tenere a mente leggendo questo documento sono:
Essere consapevoli del proprio sistema. Si controllino i log, come /var/log/messages si tenga d'occhio il sistema, e
lo si tenga aggiornato assicurandosi di avere installato l'ultima versione dei software e di averli aggiornati in seguito ad allarmi di sicurezza. Fare semplicemente questo, sarà di aiuto per rendere il sistema decisamente più sicuro.