DESCRIPTION Information Security: definizioni e contesti Live Discussion - Skill: 1- NOVICE
La sicurezza informatica è un argomento vasto che può essere considerato da diversi punti di vista e richiede un approccio globale e sistematico.
La necessità di proteggere un sistema informatico ha le stesse motivazioni di quella richiesta per edifici, documenti, oggetti e presenta aspetti simili.
Il tipo di problematiche da fronteggiare, a prescindere dal valore e dalla natura di quanto si intende proteggere, sono raggruppabili in poche categorie:
- Accesso a dati, documenti, oggetti, edifici e informazioni da parte di persone non autorizzate a farlo (concorrenti, governi stranieri, nemici, curiosi...). In questi casi le problematiche a cui si va incontro riguardano il controllo degli accessi e la verifica dell'identità di chi è autorizzato.
- Integrità di dati o oggetti, per evitare la manomissione, la modifica o la distruzione degli stessi. Per garantirla si deve avere la fiducia nelle persone autorizzate alle modifiche e la protezione da parte di estranei o persone non autorizzate (che potrebbero al contempo avere diritti e necessità di consultazione o accesso).
- Disponibilità dei dati, delle strutture che li forniscono, degli oggetti e di qualsiasi cosa che per essere utilizzata deve essere, in primo luogo, disponibile. Per questi compiti ci si deve difendere anche da elementi naturali o accidentali (terremoti, incendi, inondazioni, black out...).

In campo informatico la sicurezza riguarda essenzialmente dati disponibili su computer. La capacità di leggerli, modificarli e lo stessa possibilità di accedere ad essi grazie alla funzionalità dei sistemi in cui sono tenuti.
Una prima basilare distinzione va fatta fra computer in rete e computer accessibili solo direttamente.
In entrambi i casi l'accesso fisico alla console dei computer è un punto importante ma su macchine non in rete è una conditio sine qua non. Per sistemi in rete le problematiche aumentano notevolmente e se questi sono su Internet diventano particolarmente estese e varie, in quanto si deve provvedere a difendersi da maggiori quantità e diverse qualità di minacce possibili.

Per sistemi su Internet, in particolare, le minacce e il tipo di ostilità da cui difendersi sono:
- Virus, worm e altri agenti automatici, che si diffondono autonomamente su sistemi non aggiornati, senza volontà e intervento umano e possono causari danni di entità variabili;
- Scan su larga scala alla ricerca indiscriminata di sistemi vulnerabili sfruttando buchi di sicurezza generalmente noti. Questi scan possono essere fatti da script kiddies (individui normodotati che usano programmi noti, non particolarmente complicati) o cracker più esperti allo scopo di individuare rapidamente sistemi da violare ed utilizzare per svariati scopi (deposito di warez, host di appoggio per attacchi o scan ad altri server, defacing di siti web...).
- Attacchi mirati determinati alla penetrazione di uno o più host di un entità specifica per modalità varie (spionaggio industriale, furto di numeri di carta di credito, rappresaglia politica, vendetta... ). Sono insidiosi e i più pericolosi, perchè se effettuati da cracker capaci e determinati possono compromettere anche sistemi ben protetti.

Le protezioni e quindi le policy di sicurezza da adottare hanno diversi livelli di complessità e approfondimento: se è relativamente semplice difendersi dai primi due tipi di minacce, impostando una struttura che espone solo i servizi strettamente necessari e tenendo aggiornato il software che gestisce questi servizi, diventa molto più impegnativo realizzare una struttura estremamente sicura, in grado di resistere agli attacchi più smaliziati, sia tramite Internet che per vie indirette, come la stessa manomissione da parte di personale autorizzato, a vari livelli, all'accesso ai sistemi.


DESCRIPTION Introduzione al design di una infrastruttura di rete sicura Live Discussion - Skill: 2- JUNIOR
Non esistono certezze nel campo dell'Information Security, non esiste un sistema in rete sicuro al 100%: di un software che oggi appare sicuro, domani potranno essere trovati buchi sfruttabili per intrusioni esterne; una rete per quanto protetta deve essere amministrabile e chi la amministra o la utilizza con privilegi particolari, può essere esso stesso una minaccia.
Per quanto le problematiche di sicurezza siano quindi vaste e abbiano fattori diversi (accesso fisico ai sistemi, livello di fiducia nelle persone che li amministrano, potenziale insicurezza dei software usati...) si possono definire alcune linee guida minime per disegnare una rete il più possibile protetta da quelle che di fatto sono le maggiori minacce: l'intrusione di ignoti da Internet.
L'accesso da remoto ad un sistema può avvenire quasi esclusivamente tramite una porta TCP o UDP aperta su un host in rete, per cui a livello di networking il controllo e l'attenzione vanno posti su quali porte lasciare accessibili e come.
Realizzare una rete con un design di base sicuro richiede l'applicazione di alcune semplici regole di base, che vanno adattate ai diversi contesti specifici:
- Chiudere le porte su IP pubblico non utilizzate
Ogni tentativo di intrusione remoto può avvenire solo tramite eventuali porte aperte su un host. La prima, fondamentale, comoda e utile procedura da adottare per iniziare a proteggere il proprio network è quella di non lasciare varchi inutili ai potenziali intrusori.
La chiusura delle porte può essere fatta sia a livello dei singoli host (consigliata in ogni caso), rimuovendo tutti i servizi che non servono, sia a livello di firewall perimetrale, con un rigoroso packet filtering.
Le due soluzioni non sono alternative, anzi possono tranquillamente coesistere: sull'host si rimuovono i servizi inutili, sul firewall si possono gestire quali indirizzi IP sorgenti possono accedere a determinati servizi.
Questo si ricollega al secondo punto chiave:

- Centralizzare i punti di controllo del traffico
Tipicamente una rete aumenta la sua complessità con la sua naturale crescita, ma se non viene strutturata dall'inizio in modo lungimirante, rischia di diventare una matassa di router e firewall su cui si deve intervenire in caso di problemi o "aperture di porte".
Centralizzare i punti di routing e firewalling aiuta a implementare più facilmente modifiche alle configurazioni esistenti e a dignosticare problemi di rete, oltre a ridurre i point of failure della nostra infrastruttura.
Il firewall perimetrale (lo trattiamo come entità unica, ma può essere tranquillamente una coppia o una "nuvola" di firewall in failover) dovrebbe, di default, bloccare ogni tipo di pacchetto dall'esterno e prevedere regole specifiche per ogni server in produzione. Queste regole possono essere di 2 tipi:
- regole che aprono una determinata porta di un dato host a tutta Internet. Queste sono quelle necessarie per i servizi pubblici in produzione (server web, server di posta, DNS ecc.) ed è bene che "aprano" sono le porte strettamente necessarie e non tutto un indirizzo IP (anche se su questo risponde una macchina con tutti i servizi inutili disattivati). Sui firewall che gestiscono regole di filtraggio in modo sequenziale (le catene di iptables, le ACL del Cisco IOS o del PIX...) è sempre meglio mettere per prime le regole che riguardano i flussi di traffico maggiori, per diminuire l'impatto sulle risorse evitando inutili controlli su regole di filtering poco usate.
- regole che aprono l'accesso a determinate porte e IP da specifici IP sorgenti. Possono essere necessarie per aprire l'accesso FTP a dei data feed provider o permettere l'accesso in VPN da una determinata sede o l'accesso ad un database da un server remoto. Queste tipicamente tendono a rendere più verbosa e complicata la configurazione di un firewall, dal momento che devono adattarsi a IP sorgenti specifici, ma visto che sono necessarie è opportuno centralizzarle.
Nell'applicare simili regole, che tendono per il loro numero ad appesantire il firewall, si consiglia buon senso e tendenza al raggruppamento: se ci sono più IP da "aprire" della stessa subnet, si può considerare l'apertura dell'intera subnet, se ci sono più porte da aprire (sopratutto porte che di fatto permettono l'accesso al sistema, come telnet e ssh) può aver senso aprire l'accesso all'intero IP dell'host di destinazione, senza specificarne le singole porte.

- Controllare tutti i punti di accesso
In termini di sicurezza informatica, l'anello debole, quello meno controllato e sicuro, riduce la sicurezza di tutta l'infrastruttura. Per questo motivo è fondamentale identificare e ponderare ogni punto di accesso ai nostri sistemi da remoto. Questo include router e linee di partner, clienti e fornitori, macchine per permettono l'accesso via modem alla rete da proteggere ma anche dipositivi meno comuni come gateway X25 per pagamenti elettronici.
A prescindere quindi da tutte le protezioni del caso da prendere sia a livello fisico, che a livello dei client degli utenti (sviluppatori, sistemisti, redattori ecc) che in qualche modo possono accedere in modo privilegiato alla nostra rete, vanno verificati anche tutti i punti di entrata accessibili pubblicamente.
Come sempre, se questi prevedono un accesso via password, la coppia login-password dovrebbe non essere facilmente intuibile e il relativo traffico dovrebbe essere criptato.

- Design multilayer in caso di reti complesse
Se la rete da gestire comprende decine di host, di diversi utilizzi (macchine in produzione di front-end, cioè che devono interagire direttamente con Internet, macchine di backend come database o sistemi di monitoring, macchine di stage e pre-produzione, macchine di sviluppo, client di sistemisti e sviluppatori ecc) è opportuno valutare una suddivisione della nostra rete in più livelli, cercando di proteggere quelli più interni e delicati (il backend) e limitando allo stretto necessario l'accesso a queste macchine da parte di altre macchine più esposte (per esempio i server pubblici di front-end, i server di sviluppo, i client vari).
In strutture complesse, inoltre, le macchine di frontend, se possibile, non dovrebbero avere accesso in scrittura ai dati: un web server per esempio non dovrebbe poter scrivere sulla directory in cui sono contenute le sue pagine web, eventualmente generate da un Content Management System sul backend.
Con reti più semplici è comunque buona norma cercare di limitare allo stretto necessario le possibilità di comunicazione di una macchina con qualciasi altra macchina del nostro network, in modo da limitare i potenziali danni su tutti i sistemi dopo l'intrusione in uno degli host.

- Diversificare le difese
Il Tipico Esperto di Sicurezza, per definizione, solleva una quantità di problematiche enormi, non del tutto ingiustificate invero, e arriva ad analizzare molteplici aspetti, dalla sicurezza fisica al training del personale, dal logging di ogni bit sospetto alla gestione di un verbosissimo IDS, che nella realtà spesso diventano di difficile attuazione.
Un'altra delle Tipiche Raccomandazioni del suddetto Esperto è la diversificazione delle difese: non basta il firewall, non basta l'IDS, non basta la password sul Bios: ogni possibile mezzo per rendere difficile la vita ad un cracker è un buon mezzo, anche se a volte rende la vita difficile anche ad un sysadmin.
Un esempio tipico è la rimozione di ogni programma non strettamente necessario da un server in produzione: nessun comando per scaricare un file da remoto (wget, ftp, lynk, irc, curl ecc), nessun compilatore che permetta ad un intrusore di compilarsi i suoi sorgenti maligni direttamente sul nostro sistema, sistema di Mandatory Access Control che impedisca ad un qualsiasi processo di fare qualcosa di diverso da quello che è stato configurato per fare.
Dal punto di vista della sicurezza sono tutti buoni mezzi che aumentano la solidità del sistema e al contempo ne aumentano la difficoltà di gestione.
Come al solito, nel mezzo e nelle nostre specifiche esigenze, sta la soluzione ideale.

A queste indicazioni generali, che si applicano considerando solo a livello di rete le nostre problematiche di sicurezza si affiancano tutte le altre procedure volte a rendere sicuri i servizi che si lasciano aperti in rete.
Questo è un argomento ben più complesso e articolato, che riguarda i singoli sistemi operativi, i software utilizzati e le proprie implementazioni specifiche.
Come si è potuto intravedere, quindi, realizzare un sistema estremamente sicuro è complicato e richiede sforzi e risorse notevoli, ma realizzare una struttura di rete "ragionevolmente" sicura, che ci possa proteggere dalla maggior parte delle insidie non è eccessivamente gravoso e si può riassumere, semplificando all'estremo, in tre principi fondamentali:
- ridurre al massimo le porte esposte a Internet;
- avere software aggiornati in ascolto sulle porte esposte;
- non configurare in modo scorretto i servizi pubblici.


DESCRIPTION Definizioni e termini comuni nell'information security Live Discussion - Skill: 1- NOVICE
Previos Slide Next Slide Espandi Docs Seminario Linux Security
Quando si inizia a parlare di sicurezza il gergo informatico si fa particolarmente pittoresco e rigoglioso, al punto che può essere utile definire in modo chiaro alcuni termini comuni.
Quando si parla di minacce possibili, si possono incontrare termini quali:

Virus
Un pezzo di codice in grado di diffondersi e duplicarsi in modo autonomo, legandosi ad un programma, ad una libreria condivisa, ad un messaggio di posta elettronica ecc. Esistono migliaia di virus diversi, raggruppabili in alcune categorie base. In comune hanno la capacità di duplicarsi automaticamente, la possibilità di eseguire operazioni potenzialente dannose sui sistemi infetti, la possibilità di attivarsi in contesti o momenti determinati.
Un antivirus è un software in grado di intercettare un virus prima che entri sulla macchina locale (via posta elettronica, tramite un flopppy disk infetto, tramite una condivisione di rete...) e di controllare ed eventualmente riparare i file infetti presenti sul computer.

Worm
Un worm ha caratteristiche simili ad un virus: si duplica automaticamente e può farlo in modo estremamente rapido. A differenza di un virus non si attacca ad altri programmi ma tende a mantenersi autonomo e non necessariamente fa danni diretti (tipo cancellare dei file) ma con la sua esistenza può seriamente limitare banda e risorse a disposizione.
Tipicamente, inoltre, un worm si diffonde fra server in rete, sfruttando vulnerabilità note per penetrare in sistemi non protetti.

Trojan Horse
Il cavallo di Troia è un programma modificato che esegue funzioni particolari e potenzialmente nocive all'insaputa del possessore, a cui il programma appare funzionare normalmente. Lo scopo di un Trojan Horse, fedele al mito ellenico, è spesso quello di permettere dall'esterno un accesso, ovviamente non autorizzato, al sistema su cui viene eseguito.

Bomb
Una bomba può essere un virus, un worm o qualcosa di analogo che si attiva in un determinato momento, dando luogo all'azione nociva per cui è stata realizzata. I meccanismi di attivazione possono essere legati ad una data, un giorno della settimana o un'ora specifici (time bomb) o correlati a qualche evento specifico di varia natura (logic bomb).

Back door
Una back door (o trap door) è un meccanismo (incorporato dal momento della creazione in software esistente o introdotto in tempi successivi come un trojan horse su del software locale) con cui si permette l'accesso al sistema a prescindere dai metodi di accesso noti e conosciuti del possessore.
La backdoor può essere inserita dallo sviluppatore di un programma per operazioni di manutenzione o, in visione hollywoodiana, per ricattare chi ne fa uso, oppure, più comunemente di questi tempi, può essere predisposta su un sistema esistente da parte di un intrusore, che dopo aver violato la macchina sfruttando una vulnerabilità non protetta, vuole garantirsi la possibilità di rientrare sul sistema per vie autonome, senza dover riutilizzare la vulnerabilità usata la prima volta.

I personaggi che popolano l'underground informatico hanno nomi quali:

Hacker
Da sempre, in gergo informatico, l'hacker è lo smanettone ingenioso e curioso che affronta un oggetto o un problema da un punto di vista diverso da quello inizialmente previsto riuscendo a farne un utilizzo nuovo.
Meno estesamente, un hacker è un programmatore o tecnico informatico in grado di realizzare software particolarmente innovativo o valido.
Nonostante questa definizione tutt'altro che maligna, i media hanno spesso abusato del termine hacker per indicare un "pirata informatico", che penetra su sistemi remoti o sprotegge software protetto da diritti d'autore.
Un termine più corretto per questa definizione è cracker.

Cracker
Chi attacca sistemi remoti al fine di violarne le protezione e prenderne il controllo o chi rimuove le protezione di un software o, ancora, coerentemente con il significato della parola inglese, chi riesce a "rompere" e superare una qualsiasi forma di protezione informatica.

Script kiddie
Si definisce tale, con nemmeno molto velato spregio, il ragazzino (anagraficamente o mentalmente) che utilizzando strumenti e software comuni nell'ambiente underground attacca sistemi remoti in modo sistematico.
Tradizionalmente lo script kiddie (letteralmente ragazzino da script) non ha le capacità tecniche di un cracker esperto, ma può essere ugualmente pericoloso per il carattere sistematico su larga scala dei suoi "scan" automatizzati.

Lamer, loozer, l0zer...
Termini generici e molto soggettivi per indicare un "perdente", un ignorante o comunque una persona da poco. Il tutto ovviamente è strettamente relativo a chi utilizza il termine e alla sua scala di valori e metri di valutazione.
All'opposto di ciò che è lame c'è il cool, kewl o simili variazioni sintattiche sullo stesso fonema.
Anche in questo caso ciò che è "cool" per qualcuno può non esserlo per altri, ma a prescindere dal merito, "lame" è aggettivo con forte connotazione negativa e "cool" ha connotazione positiva.

Azioni tipiche da cracker sono:

Spoofing
L'atto di modificare una connessione o un passaggio di dati in modo da far credere al destinatario di comunicare con un'entità diversa da quella che crede. Tipicamente lo spoofing viene fatto sull'indirizzo IP sorgente, inviano pacchetti ad un dato destinatario che si presentano con un IP sorgente arbitrario o scelto appositamente per bypassare firewall e controlli di accesso. La risposta a simili IP, ovviamente, viene fatta all'IP sorgente "spoofato" per cui, per portare avanti una connessione, l'attaccante deve poter essere in grado di intercettare anche le risposte.

Sniffing
Il controllo e il monitoraggio del contenuto di pacchetti che transitano su una rete. Tramite lo sniffing tutte le informazioni che vengono inviate in plain text sono visibili, quindi se si tratta di informazioni sensibili come una login e una password, possono essere visualizzate.

Defacing
La modifica dell'home page, o di altre pagine, di un sito web, da parte di un cracker dopo un intrusione eseguita con successo. Può essere una azione dimostrativa volta a veicolare un messaggio di qualsiasi tipo o una semplice esibizione delle proprie capacità e di essere riusciti a craccare un sistema.

Scanning
L'analisi di un sistema remoto finalizzata all'individuazione di vulnerability note.
La forma di scanning più basilare è quella rivolta all'individuazione delle porte aperte sul sistema remoto, a sua volta, è possibile eseguire degli scanning più specifici alla ricerca di vulnerabilità sui servizi disponibili sulle porte aperte trovate.

Altri termini che si incontrano spesso quando si parla di sicurezza informatica:

Plaintext - cleartext
Un testo in chiaro, leggibile così come è stato scritto. Se qualcuno è in grado di accedere a questo testo è quindi in grado di leggerne il contenuto.

Cipher text
Un testo criptato, il cui contenuto deve essere decriptato per essere leggibile. In termini generici di sicurezza usare delle connessioni o dei messaggi cifrati è raccomandabile in quanto anche nel caso in cui il testo giunga ad occhi non autorizzati a leggerlo, questi non potranno decodificarlo senza le opportune chiavi di decriptazione.
La lunghezza delle chiavi di crittazione è direttamente proporzionale al tempo computazionale necessario per decriptare un file usando tentativi brutali e sistematici.

Access Control List - ACL
Un elenco di regole volte a individuare dei pacchetti secondo diverse caratteristiche (IP sorgente, porta di destinazione, IP destinazione ecc.) al fine di eseguire determinate azioni come permetterne il flusso o interromperlo. Vengono tipicamente implementate su dei firewall ma si possono riferire in ogni contesto in cui l'accesso ad una data risorsa è limitata in qualche modo.

Trusted
"Fidato". E' un aggettivo che si riferisce a qualsiasi elemento in rete (Indirizzo IP sorgente, host, network...) da cui ci si possono aspettare connessioni non ostili. Tipicamente da certe sorgenti fidate si permette l'accesso a servizi di un host che sono impediti a tutti gli altri indirizzi IP.

Vulnerability
Una vulnerability è un bug nell'implementazione di un protocollo o di un software che permette azioni ostili che possono intaccare la sicurezza di un sistema. Le vulnerabilità possono essere "note", cioè descritte in mailing list o su appositi archivi, oppure anche ignote, cioè non comunemente conosciute ma già scoperte ed eventualmente utilizzate da qualche cracker.
Molti prodotti di security scanning si basano proprio sugli archivi delle vulnerabilità note.

Buffer overflow
E' una tecnica di hacking che consiste nell'inserire, in qualsiasi contesto possibile (una GET http, il campo di un form html, le dimensioni di un pacchetto o di un campo della sua intestazione ecc) una grande quantità di caratteri in modo da cercare di mettere in difficoltà il programma che deve gestirli qualora non preveda meccanismi di controllo sulla lunghezza delle variabili che gestisce. Quello che può accadere è che, da un certo byte in poi, il testo in eccesso venga scritto in locazioni arbitrarie di memoria.
Questo può essere sfruttato in vari modi e può causare dal crash del software ad una intrusione vera e propria.

Rootkit
E' un insieme di tool e programmi che vengono utilizzati da un cracker dopo un intrusione allo scopo di cancellare le proprie tracce e assicurarsi la possibilità di ritornare sul sistema violato anche senza dover riutilizzare la vulnerability usata la prima volta.

--- LINK The on-line hacker Jargon File - Url: http://www.antionline.com/jargon/