Raspberry – Zerotruth 4.0

Il seguente paragrafo prende spunto dal manuale redatto da Nello Dalla Costa (http://www.zerotruth.net/download/ZEROTRUTH-4.0.pdf) adattandolo e semplificandolo per usi didattici.

Dove si offre un accesso ad una rete wifi è necessario:

– Autenticazione;

– Registrazione degli accessi nei log;

  • Accounting del traffico, del tempo e dei costi di connessione.

Questi tre servizi vengono offerti in maniera molto efficiente da ZeroTruth.

INSTALLAZIONE

Entrare in Zeroshel, nel pannello di setup selezionare ssh ed attivarla.

cd /DB

wget http://www.zerotruth.net/controldl.php?file=zerotruth-4.0.A.tar.gz

tar zxvf controldl.php?file=zerotruth-4.0.A.tar.gz

cd zerotruth-4.0

./install.sh

alla fine chiederà se attivare o meno l captive portal e rispondere affermativamente.


Posted in Senza categoria | Leave a comment

Protocollo IEEE 802.11

Le comunicazioni di tipo wireless fanno riferimento al protocollo 802.11. Nelle reti wired un indirizzo è messo in relazione con una postazione fissa.

In questo caso l’unità è una stazione (STA). Il livello fisico (PHY) è caratterizzato da:

  • il mezzo utilizzato non ha limiti visibili ossia i frames di rete possono essere trasmessi anche se non si vede la STA
  • non è protetto da segnali esterni
  • la comunicazione è più dificoltosa
  • si hanno topologie diverse di rete
  • la comunicazione diretta tra STA non è in linea di massima possibile
  • si hanno proprietà di comunicazione asimmetriche e tempo varianti.

802.11 si ha l’estensione della comunicazione da stazioni portabili a stazioni mobili.

Le stazioni mobili sono alimentate a batteria quindi per aumentare l’efficienza non si deve pensare ad usare una maggiore potenza del segnale.

ARCHITETTURA

Il servizio viene suddiviso in celle come accade per i servizi di telefonia mobile.

Ogni cella si chiama BBS (Basic Service Set) ed è controllata da un AC (Access Point).

Ogni AC è connessa attraverso una dorsale Ethernet ed anch’essa può essere di tipo wireless.

Si utilizza un Portal per consentire la connessione tra una rete LAN 802.11 ed una rete 802.

LIVELLO MAC – Data Link – Distributed Coordination Function

E’ basato sul meccanismo di accesso multiplo con rilevamento della portante e prevenzione delle collisioni. (Carrier Sense Multiple Access con Collision Avoidance o CSMA/CA). I CSMA sono noti comunemente ma il più conosciuto è Ethernet.

CSMA: una stazione che desidera trasmettere ascolta il canale di comunicazione. Se è occupato la stazione rimanda la sua trasmissione all’istante successivo. Se invece è lbero allora la stazione può trasmettere.

Vi è la possibilità che due stazioni ascoltino il mezzo contemporaneamente e, pesando che sia libero, iniziano a trasmettere: in questo caso si ha una situazione di collisione.

Nel caso Ethernet, questa collisione viene gestita dalla stazione trasmettente usando un algoritmo chiamato Exponential Random Backoff Algorithm che fissa un tempo di ritrasmissione al termine del quale il canale viene nuovamente testato ed il tempo di ritrasmissione viene aumentato esponenzialmente.

Per le LAN questo metodo funziona perfettamente ma per il caso delle reti wired è da escludere perchè:

  • la Collision Detection richiederebbe un ricetrasmettitore di tipo Full Duplex ossia trasmette e riceve contemporaneamente aumentando il prezzo degli apparati
  • non possiamo assumere che tutte le stazioni si ascoltino a vicenda (ipotesi base per lo schema Collision Detection).

Il meccanismo che si adotta è il CA Collision Avoidance (CA) unito ad uno schema di Positive Acknowledge:

  • una stazione ascolta il mezzo. Se il mezzo è occupato rinvia la trasmissione. Se il mezzo è libero in un intervallo di tempo chiamato DIFS) allora ha il permesso di trasmettere
  • la stazione ricevente controlla il CRC (Cyclic Redundancy Checksums) del pacchetto ricevuto e manda un pacchetto di conferma (ACK). La ricezione della conferma denota che non si è verificata alcuna collisione. Comunque vene fissato un tempo massimo di ritrasmissione.

VIRTUAL CARRIER SENSE

Al fine di ridurre la probabilità che si verifichino collisioni tra due stazioni si usa il seguente meccanismo:

  • si trasmette un pacchetto chiamato RTS (Request To Send) che include:
    • sorgente e destinatario
    • a durata della successiva trasmissione

la stazione destinatario risponde con un pacchetto di controlli di replica CTS (Clear to Send) che include le stesse informazioni.

Tutte le stazioni che ricevono RTS o CTS attivano il Virtual Carrier Sense (NAV Natowork Allocation Vector) per un certo periodo di tempo pari a quello indicato nel RTS o CTS.

Questo meccanismo riduce la probabilità di una collisione su un’area di ricezione che è nascosta all’interno dell’intervallo di tempo necessario alla trasmissione del pacchetto RTS. La durata della trasmissione protegge l’area del trasmettitore dalle collisioni.

RTS e CTS sono molto piccoli e vengono riconosciuti molto velocemente.

Fragmentation e Reassembly

In una rete locale si utilizzano pacchetti aventi dimensioni di diverse centinaia di Bytes (pacchetto Ethernet 1518 Bytes). Nel caso della comunicazione radiomobile i pacchetti sono di dimensioni molto minori:

  • Bit Error Rate per un collegamento radio è molto elevata. La probabilità che la trasmissione di un pacchetto non vada a buon fine è proporzionale alla lunghezza.
  • nel caso di un pacchetto alterato ho un overhead più piccolo (il tempo di ritrasmissione)
  • in un sistema Frequency Hopping non è garantita la continuità del mezzo trasmissivo a causa dei salti di frequenza (avvengono ogni 20ms). Riducendo la dimensione del pacchetto diminuisce la probabilità che la trasmissione sia posticipata.

Comunque per consentire la trasmissione di grandi pacchetti si usa un algoritmo Send and wait:

  • la stazione trasmittente non ha il permesso di trasmettere un nuovo pacchetto fono a che non si sia verificata:
    • la ricezione di un ACK precedentemente trasmesso
    • decide che il pacchetto è stato ritrasmesso troppe volte per cui si elemina l’itnero frame.

Lo standard permette alla stazione di trasmettere altri pacchetti (contenti altri indirizzi) prima di eseguire la ritrasmissione. Quindi un AP possiede vari pacchetti in uscita.

METODI DI ACCESSO AD UNA BSS

Quando una stazione vuole accedere ad una BSS esistente la stazione necessita di acquisire la sincronizzazione.

  • Passive Scanning: la stazione aspettadi ricevereun Beacon Frame (frame spedito da AP per il sincronismo dei dati)
  • Active Scanning : la stazione cerca l’access Point trasmettendo un Probe Request Frame .

PROCESSO DI AUTENTICAZIONE e DI ASSOCIAZIONE

AP e stazione di scambiano le password. I DSS ossia l’insieme dei AP sono informati circa la posizione della stazione e capire a quale BSS trasmettere.

ROAMING

E’ il processo che consente lo spostamento di una stazione da una cella ad un’altra senza perdere la connessione.

  • in una rete LAN la transizione da una cella all’altra deve avvenire tra la trasmissione del pacchetto e quello successivo.
  • in un sistema telefonico, una disconnessione non influisce sulla trasmissione mentre in un sistema a pacchetti questo riduce le prestazioni.

Lo standard 802.11 non dice come deve essere implementato il roaming ma il funzionamento i base. Il processo di reassociazione consta di uno scambio di informazioni tra due AP interessati allo scambio attraverso il Distribution System senza appesantire la comunicazione attraverso il canale radio.

Posted in Senza categoria | Leave a comment

C++ – Verifica fine anno scolastico 2018-2019


George Grie

Scrivi un programma che riceve in ingresso una sequenza N di numeri interi con il valore N inserito dall’utente e li memorizza in un vettore vetA. Terminato l’inserimento della sequenza di numeri, il programma deve visualizzare una riga di asterischi per ogni numero inserito in modo che il numero di asterischi nella riga sia pari al valore del numero inserito.

Per esempio, dato il vettore 9 4 6 il programma deve visualizzare:

  • vetA[0]=9 *********
  • vetA[1]:4 ****
  • vetA[2]:6 ******

Valutazione:


OperazionePunteggio
Inserimento commenti1
uso di funzioni prototipo1.5
uso di namespace personalizzabili3
uso di funzioni non prototipo1
consegna nei tempi stabiliti al termine dell’ora0.5
correttezza delle specifiche del programma3

Posted in Senza categoria | Leave a comment

TPSIT – Fault Tolerance

La tolleranza ai guasti (o fault-tolerance, dall’inglese) è la capacità di un sistema di non subire avarie (cioè interruzioni di servizio) anche in presenza di guasti. La tolleranza ai guasti è uno degli aspetti che costituiscono l’affidabilità. È importante notare che la tolleranza ai guasti non garantisce l’immunità da tutti i guasti, ma solo che i guasti per cui è stata progettata una protezione non causino fallimenti.

Robustezza

La robustezza è la proprietà di quei sistemi che assicurano una rapida rilevazione degli errori e che ne consentono il confinamento.

Studi statistici hanno mostrato che almeno due errori su tre sono dovuti a richieste illegali di operazioni su oggetti, cioè proprio a quelle richieste che i controlli di protezione prevengono.

Misurazioni della tolleranza ai guasti

Una tipica misurazione della tolleranza ai guasti è costituita dal calcolare il tempo medio che intercorre tra due fallimenti del sistema (in inglese Mean Time Between Failures, MTBF).

Tempo medio fra i guasti

Il tempo medio fra i guasti (in inglese mean time between failures, spesso abbreviato in MTBF), è un parametro di affidabilità applicabile a dispositivi meccanici, elettrici ed elettronici e ad applicazioni software.

Il MTBF è il valore medio tra un guasto ed il successivo; la sua misura ha importanza in moltissimi ambiti; ad esempio:

  • la valutazione della vita media di un dispositivo elettronico, o di un componente meccanico, nell’ambito della progettazione
  • la valutazione del tempo di attesa in coda di un semilavorato, se il guasto è riferito ad una macchina utensile in un processo di produzione industriale

Per MTBF (Mean Time Between Failures) si intende la somma di due tempi: MTTF (Mean Time To Failure) e MTTR (Mean Time To Repair).

In generale MTTF è definito come il valore atteso della funzione di distribuzione statistica dei guasti.

calcolare il valore atteso di variabili aleatorie discrete

Calcolare il valore atteso di variabili aleatorie assolutamente continue

Nel caso in cui la distribuzione dei guasti sia di tipo esponenziale come la variabile casuale esponenziale negativa, ossia è caratterizzata da tasso di guasto lambda

costante nel tempo, allora in termini matematici il MTTF è semplicemente il reciproco del tasso di guasto

Posted in Senza categoria | Leave a comment

Test su elementi di economia


Vladimir Kush

GPOI – Elementi di economia

You must specify a text.
You must specify a text.
You must fill out this field.
You must specify a date.

Posted in Senza categoria | Leave a comment

TPSIT – RAID

Parlare di RAID significa parlare di continuità di servizio, significa cercare di limitare gli INEVITABILI malfunzionamenti di un sistema a causa del normale ciclo di vita dei componenti. RAID è acronimo di Redundant Array of Independent Disks.

La tecnologia RAID nasce per effettuare la copia o il controllo degli errori degli hard disk presenti in un host o in un server. A seconda del tipo di controllo o di ridondanza si parla di varie tipologie di RAID.

Le modalità più diffuse sono RAID 0, 1, 5 e 10. La 3 e la 4 sono state praticamente soppiantate dalla 5. Alcuni sistemi usano modalità nidificate come la 10 o altre modalità proprietarie.

RAID 0

Divide i dati equamente tra due o più dischi, tipicamente tramite sezionamento (o striping), ma senza mantenere alcuna informazione di parità o ridondanza che aumenti l’affidabilità (la dicitura RAID, ancorché diffusa, è pertanto impropria). RAID 0 è usato generalmente per aumentare le prestazioni di un sistema, o per la comodità di usare un grande numero di piccoli dischi fisici come se fossero un piccolo numero di grandi dischi virtuali.

Vantaggi costo di implementazione basso; alte prestazioni in scrittura e lettura, grazie al parallelismo delle operazioni I/O dei dischi concatenati.

Svantaggi impossibilità d’utilizzo di dischi hot-spare (il disco hot-spare viene lasciato dormiente fino al momento di un guasto degli altri dischi) ; affidabilità drasticamente ridotta, anche rispetto a quella di un disco singolo.

FONDAMENTALE

Raid 0 significa che i dati vengono sezionati e scritti su dischi diversi. La rottura del disco farà sì che i dati presenti in quel disco si perdano mentre rimangono quelli dell’altro disco.

RAID 1

detta anche mirror, mantiene una copia esatta di tutti i dati su almeno due dischi.

È utile quando la ridondanza sia ritenuta un’esigenza più importante rispetto allo sfruttamento ottimale della capacità di memorizzazione dei dischi.

L’insieme, infatti, limita il suo volume a quello del disco di taglia inferiore. D’altro canto, visto che un sistema con n dischi è in grado di resistere alla rottura di n-( “n”-1 ) componenti, l’affidabilità aumenta linearmente al numero di dischi presenti.

A livello prestazionale, il sistema RAID 1 aumenta tipicamente i risultati per le operazioni di lettura, perché molte implementazioni sono in grado di effettuare diverse operazioni in parallelo: mentre la lettura di un blocco è ancora in corso su un disco, cioè, possono effettuarne un’altra su un disco diverso.

In ogni caso, la velocità di lettura raggiunge quella del disco più veloce in presenza di dispositivi di memorizzazione con prestazioni diverse: una singola operazione di lettura è richiesta inizialmente e contemporaneamente su tutti i dischi, ma si conclude nel momento della prima risposta ricevuta.

Viceversa, la velocità di scrittura scende a quella del disco più lento, perché questo tipo di azione richiede il compimento della replica della stessa operazione su ogni disco dell’insieme.

Vantaggi affidabilità, cioè resistenza ai guasti, che aumenta linearmente con il numero di copie; velocità di lettura (in certe implementazioni e sotto certe condizioni).

Svantaggi bassa scalabilità; costi aumentati linearmente con il numero di copie; velocità di scrittura ridotta a quella del disco più lento dell’insieme.

RAID 2

Divide i dati al livello di bit (invece che di blocco) e usa un codice di Hamming per la correzione d’errore che permette di correggere errori su singoli bit e di rilevare errori doppi.

Questi dischi sono sincronizzati dal controllore, in modo tale che la testina di ciascun disco sia nella stessa posizione in ogni disco. Questo sistema si rivela molto efficiente in ambienti in cui si verificano numerosi errori di lettura o scrittura, ma in ambienti più prestanti, data l’elevata affidabilità dei dischi, il RAID 2 non viene utilizzato

Si notino quindi la presenza di sette dischi esattamente come il codice di Hamming (7,4) studiato. Con stripe si intende il singolo bit.

Il numero minimo di dischi è 7.

RAID 3

Usa una divisione al livello di byte con un disco dedicato alla parità.

Il RAID-3 è estremamente raro nella pratica.

Uno degli effetti collaterali del RAID-3 è che non può eseguire richieste multiple simultaneamente. Questo perché ogni singolo blocco di dati ha la propria definizione diffusa tra tutti i dischi del RAID e risiederà nella stessa posizione, così ogni operazione di I/O richiede di usare tutti i dischi.

Con stripe si intende un byte. Il byte è generato nella fase di scrittura, memorizzato nel disco di parità e ricontrollato in fase di lettura.

Il numero minimo di dischi è 3:
utilizza un minimo di due dischi per i dati, più un disco dedicato alla memorizzazione dei Byte di parità.

Le prestazioni in scrittura peggiorano, poiché per ogni operazione eseguita sui dati necessita del calcolo della parità, da scrivere sul disco dedicato a questa funzione.
Inoltre, poiché il disco dedicato alla parità è unico, questo costituisce anche una specie di collo di bottiglia che può limitare ulteriormente le prestazioni in scrittura (infatti mentre i dati sono scritti su vari dischi, la parità viene scritta, per ogni operazione di scrittura, sempre sullo stesso disco).
Per assurdo, aumentando i dischi, le prestazioni in lettura migliorano e quelle in scrittura possono addirittura peggiorare.

In caso di guasto, si accede al disco di parità e i dati vengono ricostruiti.

Si utilizza XOR

Una volta che il disco guasto viene rimpiazzato, i dati mancanti possono essere ripristinati e l’operazione può riprendere. La ricostruzione dei dati è piuttosto semplice. Si consideri un array di 5 dischi nel quale i dati sono contenuti nei dischi X0, X1, X2 e X3 mentre X4 rappresenta il disco di parità.

La parità per l’i-esimo bit viene calcolata come segue:

X4(i) = X3(i) ⊕ X2(i) ⊕ X1(i) ⊕ X0(i)

Si supponga che il guasto interessi X1.

Se eseguiamo l’OR esclusivo di X4(i) ⊕ X1(i) con entrambi i membri della precedente equazione otteniamo: X1(i) = X4(i) ⊕ X3(i) ⊕ X2(i) ⊕ X0(i)

Così, i contenuti della striscia di dati su X1 possono essere ripristinati dai contenuti delle strisce corrispondenti sugli altri dischi dell’array.

Questo principio persiste nei livelli RAID superiori.

RAID 4

Usa una divisione dei dati a livello di blocchi e mantiene su uno dei dischi i valori di parità, in maniera molto simile al RAID 3, dove la suddivisione è a livello di byte. Questo permette ad ogni disco appartenente al sistema di operare in maniera indipendente quando è richiesto un singolo blocco.

Se il controllore del disco lo permette, un sistema RAID 4 può servire diverse richieste di lettura contemporaneamente. In lettura la capacità di trasferimento è paragonabile al RAID 0, ma la scrittura è penalizzata, perché la scrittura di ogni blocco comporta anche la lettura del valore di parità corrispondente e il suo aggiornamento.

Il RAID 4 utilizza la tecnica dello striping e per la sicurezza utilizza la tecnica del controllo di parità.
E’ in pratica la stessa configurazione del RAID 3, con la differenza che lo striping viene eseguito a livello di blocchi e non di singoli Byte.
Allo stesso modo il calcolo della parità viene eseguito a livello di blocco e scritto di conseguenza.

RAID 5

Un sistema RAID 5 usa una suddivisione dei dati a livello di blocco, distribuendo i dati di parità uniformemente tra tutti i dischi che lo compongono. È una delle implementazioni più popolari, sia in software, sia in hardware, dove praticamente ogni dispositivo integrato di storage dispone del RAID-5 tra le sue opzioni.

La differenza fondamentale, che lo distingue dal RAID 4, è che in questa configurazione non esiste il disco dedicato alla scrittura della parità, ma su tutti i dischi vengono scritti indifferentemente i dati o il corrispondente calcolo di parità.
N.B.: la parità viene comunque scritta su disco diverso da quello dei dati, altrimenti il checksum non avrebbe senso; in pratica il blocco di parità viene trattato come un blocco dati qualsiasi e distribuito su un disco qualsiasi.
Non si ha vantaggio in termini di spazio occupato dalla parità, in quanto lo spazio totale “sottratto” ai dati risulta essere sempre l’equivalente di un disco, ma si ottiene un miglioramento delle prestazioni in fase di scrittura eliminando il percorso obbligato, su unico disco, per la scrittura della parità.
Per questo motivo è forse la più popolare delle configurazioni RAID in striping, tenendo anche conto che alcune MB avanzate implementano controller con il supporto RAID 5.

Per la ricostruzione dei dati in caso di guasto del disco, valgono le stesse considerazioni del RAID 3.

RAID 10

Un sistema RAID 1+0, chiamato anche RAID 10 i livelli RAID sono usati in senso invertito.

RAID 50

Posted in Senza categoria | Leave a comment

Impostazione Raspberry per interfacciarsi con Zeroshell

Parto configurando il server o il raspberry che dovrà fornire la connessione di rete al raspberry in cui installerò zeroshell.

Nel post
Raspberry – bridge wifi – ethernet

la configurazione della rete mi aveva portato a definire il file interfaces nella seguente maniera:

allow-hotplug eth0
iface eth0
inet static address 10.0.0.1
netmask 255.255.255.0
network 10.0.0.0
broadcast 10.0.0.255
auto wlan0
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp

Tale configurazione non permette la possibilità di connettersi in ssh o con l’interfaccia web con Zeroshell in quanto esso risponde all’indirizzo 192.168.0.75.

Quindi ho modificato:

address 192.168.0.1

network 192.0.0.0
broadcast 192.0.0.255

Quindi ho modificato il file dnsmasq nella seguente maniera:

nano /etc/dnsmasq.conf

interface=eth0 # Use interface eth0
listen-address=192.168.0.1 # Specify the address to listen on
bind-interfaces # Bind to the interface
server=208.67.222.222 # Use OpenDNS
domain-needed # Don’t forward short names
bogus-priv # Drop the non-routed address spaces.
dhcp-range=192.168.0.10,192.168.0.50,12h # IP range and lease time

tutto il resto della configurazione rimane invariata.

Per installare Zeroshell ho scaricato l’ultima versione dal sito:

https://zeroshell.org/download

e quindi scelta l’ultima versione.

Poi salvando il file .gz lo scompatto attraverso Winzip se sono sotto Windows.

a questo punto utlizzo w32diskimager per copiare l0immagine nella mia microsd da cui partirà il sistema operativo.

Quindi collego il raspberry nel quale ho installato Zeroshell.

E dal browser del raspberry o da un qualunque host collegato alla rete il cui server è il raspberry stesso posso digitare sul browser:

https://192.168.0.75 e comparirà la seguente schermata:

login admin

password zeroshell

Per poter permettere di accedere ad internet bisogna impostare il default gateway:

Si accede al Raspberry in cui è installato Zeroshell, si selezione

<I> IP manager

<G> Set Default Gateway

Si inserisce l’indirizzo IP presente nel Raspberry o Router che fa da gateway

Per usare la scheda wifi del raspberry bisogna seguire i seguenti passi:

<W> wifi manager

<N> new subsystemID

invio lasciando il nome di default

<1> Access Point

SSID dare il nome che si vuole alla rete wifi che comparirà nell’elenco delle wifi.

Hide ssid mettere no

per adesso scelgo di non usare la crittografia e lasciare la rete libera.

Attivare ssh per accedere al pannello di controllo

Si entra tramite il browser: https://192.168.0.75

quindi setup e scegliere il menù ssh, attivarlo e salvarlo.

Basta quindi aprire una sessione ssh:

ssh admin@192.168.0.75 e dopo aver immesso la password si è nel sistema.

Creare il bridge tra la WLAN00 e ETH0

sempre dal browser di va su setup e su network, impostare bridge scegliendo le due componenti precedenti.

Attivare il captive portal

Si va su CaptivePortal e si sceglie come interfaccia WLAN00.

Attivare dhcp

Sempre utilizzando l’interfaccia grafica si va su dhcp e si seleziona il bridge precedentemente scelto e come default gateway mettere quello impostato precedentemente (192.168.0.1) ad esempio

Posted in Senza categoria | Leave a comment

Raspberry – Zeroshell

Installare Zeroshell in una rete comporta vari benefici:

  • Bilanciamento e Failover di connessioni multiple a Internet;
  • Connessioni UMTS/HSDPA mediante modem 3G;
  • Server RADIUS per fornire autenticazione e gestione automatica delle chiavi di cifratura alle reti Wireless 802.11b, 802.11g e 802.11a supportando il protocollo 802.1x nella forma EAP-TLS, EAP-TTLS e PEAP; sono supportate le modalità WPA con TKIP e WPA2 con CCMP conforme allo standard 802.11i; il server RADIUS può inoltre, in base allo username, il gruppo di appartenenza o MAC Address del supplicant smistare l’accesso su di una VLAN 802.1Q assegnata ad un SSID;
  • Captive Portal per il supporto del web login su reti wireless e wired. Zeroshell agisce da gateway per la rete su cui è attivo il Captive Portal e su cui gli indirizzi IP (di solito appartenenti a classi private) vengono forniti dinamicamente dal DHCP. Un client che accede a questa network privata deve autenticarsi mediante un web browser con username e password Kerberos 5 prima che il firewall di Zeroshell gli permetta di accedere alla LAN pubblica. I gateway Captive Portal sono utilizzati spesso per fornire accesso a Internet negli HotSpot in alternativa all’autenticazione 802.1X troppo complicata da configurare per gli utenti. Zeroshell implementa la funzionalità di Captive Portal in maniera nativa, senza utilizzare altro software specifico come NoCat o Chillispot;
  • Gestione del QoS (Quality of Service) e traffic shaping per il controllo del traffico su reti congestionate. Si possono imporre vincoli sulla banda minima garantita, sulla banda massima e sulla priorità di un pacchetto (utile nelle connessioni realtime come le VoIP). Tali vincoli potranno essere applicati sulle interfacce Ethernet, sulle VPN, sui point to point PPPoE, sui bridge e sui bonding (aggregati) di VPN. La classificazione del traffico può avvenire anche mediante i filtri Layer 7 che permettono il Deep Packet Inspection (DPI) e quindi di regolare la banda e la priorità da assegnare ai flussi di applicazioni come VoIP e P2P;
  • HTTP Proxy con antivirus open source ClamAV in grado di bloccare in maniera centralizzata le pagine web contenenti Virus. Il proxy, realizzato con HAVP, potrà funziona in modalità transparent proxy, intendendo con ciò, che non è necessario configurare i web browser degli utenti per utilizzare il server proxy, ma, le richieste http verranno automaticamente reindirizzate a quest’ultimo. È ovvio, che in questo caso, la macchina che fa da proxy deve essere anche un gateway (router IP o bridge);
  • Supporto per la funzionalità di Wireless Access Point con Multi SSID utilizzando schede di rete WiFi basate sui chipset Atheros. In altre parole, un box Zeroshell con una di tali schede WI-FI può funzionare come Access Point per le reti IEEE 802.11 supportando i protocolli 802.1X, WPA per l’autenticazione e la generazione di chiavi dinamiche. Ovviamente l’autenticazione avviene tramite EAP-TLS o PEAP sfruttando il server RADIUS integrato;
  • VPN host-to-lan con protocollo L2TP/IPsec in cui L2TP (Layer 2 Tunneling Protocol) autenticato con username e password Kerberos v5 viene incapsulato all’interno di IPsec autenticato mediante IKE con certificati X.509;
  • VPN lan-to-lan con incapsulamento delle trame Ethernet in tunnel SSL/TLS, con supporto per VLAN 802.1Q e aggregabili in load balancing (incremento di banda) o fault tollerance (incremento di affidabilità);
  • Router con route statiche e dinamiche (RIPv2 con autenticazione MD5 o plain text e algoritmi Split Horizon e Poisoned Reverse);
  • Bridge 802.1d con protocollo Spanning Tree per evitare loop anche in presenza di percorsi ridondati;
  • Firewall Packet Filter e Stateful Packet Inspection (SPI) con filtri applicabili sia in routing sia in bridging su tutti i tipi di interfaccia di rete comprese le VPN e le VLAN;
  • Controllo mediante Firewall e Classificatore QoS del traffico di tipo File sharing P2P;
  • NAT per utilizzare sulla LAN indirizzi di classi private mascherandoli sulla WAN con indirizzi pubblici;
  • TCP/UDP port forwarding (PAT) per creare Virtual Server, ovvero cluster di server reali visti con un unico indirizzo IP (l’indirizzo del Virtual Server). Le richieste sul server virtuale saranno smistate sui server reali in Round-Robin (ciclicamente) preservando le connessioni e le sessioni già esistenti. Si può così ottenere il load balancing su web farm, cluster SQL e farm di calcolo;
  • Server DNS multizona e con gestione automatica della Reverse Resolution in-addr.arpa;
  • Server DHCP multi subnet con possibilità di assegnare l’indirizzo IP in base al MAC Address del richiedente;
  • Virtual LAN 802.1Q (tagged VLAN) applicabili sulle interfacce Ethernet, sulle VPN lan-to-lan, sui bonding di VPN e sui bridge composti da interfacce Ethernet, VPN e bond di VPN;
  • Client PPPoE per la connessione alla WAN tramite linee ADSL, DSL e cavo (richiede MODEM adeguato);
  • Client DNS dinamico che permette la rintracciabilità su WAN anche quando l’IP è dinamico. Gestione dinamica del record dns MX per l’instradamento SMTP della posta elettronica su mail server con IP variabile;
  • Server e client NTP (Network Time Protocol) per mantenere gli orologi degli host sincronizzati;
  • Server syslog per la ricezione e la catalogazione dei log di sistema prodotti da host remoti quali sistemi Unix, router, switch, access point WI-FI, stampanti di rete e altro compatibile con protocollo syslog;
  • Autenticazione Kerberos 5 mediante un KDC integrato e cross autenticazione tra domini;
  • Autorizzazione LDAP, NIS e RADIUS;
  • Autorità di certificazione X.509 per l’emissione e la gestione di certificati elettronici;
  • Integrazione tra sistemi Unix e domini Windows Active Directory in un unico sistema di autenticazione e autorizzazione mediante LDAP e Kerberos 5 cross realm authentication.

Ho riportato per semplicità le informazioni presenti nel sito http://www.zeroshell.net/

All’interno di esso vi è il link verso i possibili download.

Posted in Senza categoria | Leave a comment

GPOI – Le metriche del software – Fase 4 – complessità di FP

Dato che alcune delle funzionalità possono essere più complesse di altre e quindi richiedono più tempo per essere sviluppate, il metodo di conteggio IFPUG prevede che le occorrenze di queste funzionalità siano pesate da chi effettua il conteggio.

Si utilizzano delle tabelle di riferimento operando in due passi:

un primo giudizio di complessità che può essere basso, medio ed alto

un secondo passo che assegna un punteggio che varia da 3 a 5

Per valutare la complessità si usano i seguenti indicatori:

  • DET Data Element type: un campo non ripetuto, riconoscibile dall’utente
  • RET Record Element type: un sottogruppo di dati riconoscibili dall’utente all’interno di un ILF/EIF
  • FTR File Type referrenced: si tratta di un file logico interno (ILF) letto o mantenuto dalla funzione, oppure un file esterno (EIF) letto dalla funzione (da EI/EQ/EO)

Input Esterni EI External Inputs

Per ogni EI si conta il numero di file FTR che utilizza e il numero di DET che questi file hanno al loro interno da utilizzarsi come coordinate per determinare il valore della complessità.

FTR/DET1-45-1516
0-1BassaBassaMedia
2BassaMediaAlta
3MediaAltaAlta

Il valore ottenuto di complessità (basso, medio o alto) viene convertito in un numero, rispettivamente basso=3, medio=4 e alto=6.

Output Esterni EO – External Outputs

Per ogni EO si conta il numero di file FTR che utilizza il numero di DET che questi file hanno al loro interno da utilizzarsi come coordinate per determinare il valore di complessità della seguente tabella:

FTR/DET1-56-1920
0-1BassaBassaMedia
2-3BassaMediaAlta
4MediaAltaAlta

Il valore ottenuto di complessità (basso, medio o alto) viene convertito in un numero, rispettivamente basso=4, medio=5 e alto=7.

Richieste Esterne EQ External Inquiries

La stessa analisi condotta per gli EI e gli EO può essere condotta per gli EQ ma utilizzando il maggiore degli EI ed EO così come prescritto nel IFPUG counting pratices manual.

File Logici Interni (ILF – Internal Logical Files) e File Esterni di Interfaccia (EIF – External Interface Files)

Per ogni file, sia che si tratti di un file ILF che di un EIF, si conta il numero di file RET che questo definisce e il numero di DET che questi contengono al loro interno da utilizzarsi come coordinate per determinare il valore di complessità della seguente tabella:

FTR/DET1-1920-5051
1BassaMediaAlta
2-5BassaMediaAlta
6BassaMediaAlta

Il valore ottenuto di complessità (basso, medio o alto) viene convertito in un numero utilizzando la seguente tabella:

ComplessitàILFEIF
Bassa75
Media107
Alta1510

Il valore di UFP è dato dalla somma delle 5 componenti funzionali così individuate.

Riprendo l’esempio precedente che riporto per comodità:

1 schermata (cognome, nome, luogo di nascita, data di nascita, CF)

funzioni realizzate: inserimento, modifica, cancella

  • tutti i dati possono essere inseriti, modificati e cancellati dall’utente
  • la ricerca è limitata allo scrolling delle anagrafiche
  • 1 file per la memorizzazione dei dati
  • 1 query per la ricerca degli elementi di una tabella
  • 1 prospetto di stampa su cui sono presenti i dati della schermata e l’età media degli individui censiti nell’anagrafe
Posted in Senza categoria | Leave a comment

TPSIT – VPN

La sicurezza deve seguire le seguenti tre regole:


Confidentiality, Integrity and Availability

Confidenzialità, Integrità e Disponibilità che rappresentano i tre elementi cardine che la sicurezza in ambito IT mira a garantire per quanto concerne i dati.

L’obiettivo dell’utilizzo di una VPN (Virtual Private Network – Rete Private Virtuale) è quello di assicurare, fra le altre cose, almeno due degli elementi della triade: la confidenzialità e l’integrità dei dati in transito.

Quando due entità o due utenti necessitano di dialogare fra loro attraverso una qualsiasi rete, ed in particolar modo su Internet, è possibile stabilire fra di essi un canale virtuale, e fare in modo che all’interno di questo canale “dedicato” i dati transitino in maniera sicura. Pensiamo proprio alla rete Internet e a due persone che devono interloquire fra loro attraverso la rete pubblica: nulla e nessuno potrà garantire che ciò che esse si comunicano non venga intercettato o copiato a loro insaputa, in questo caso vengono in aiuto le VPN. La P di “private” sta ad indicare la privatezza ossia la confidenzialità (e integrità) delle informazioni mentre la V di “virtual” indica il fatto che il canale è solo logicamente instaurato fra i due estremi, senza la necessità di ricorrere a costose linee dedicate. Le VPN, quindi, rispetto alle linee dedicate offrono pertanto due vantaggi essenziali che sono quelli dell’economicità (evitando l’acquisto di linee dedicate appunto) e la scalabilità (n utenti che debbano collegarsi ad uno stesso punto – ad esempio la sede aziendale – sfrutteranno tutti il medesimo canale di accesso, ossia la Internet, ovunque essi si trovino). Le componenti di confidenzialità e integrità offerte dalle VPN si basano essenzialmente sull’utilizzo della crittografia, gli algoritmi crittografici permettono infatti da un lato di rendere intelleggibile ad un eventuale “eavesdropper” il flusso dei dati fra i due capi della VPN e dall’altro garantiscono che quanto viene trasmesso non sia stato in alcun modo manipolato o danneggiato (intenzionalmente o meno).

In maniera molto semplicistica, della parte di confidenzialità si occupano gli algoritmi di cifratura (sia a chiave segreta che a chiave pubblica), mentre per l’aspetto dell’integrità ci si rivolge agli algoritmi di “hashing“.

Protocolli, tecnologie e tipologie di VPN

In questo contributo vorrei concentrarmi essenzialmente su due tipi di VPN:

  • VPN di accesso remoto
  • VPN site-to-site

Esistono poi due differenti tecnologie, ciascuna delle quali opera a differenti livello della pila ISO-OSI:

  • VPN IPsec
  • VPN SSL

A onor del vero questa classificazione è veramente riduttiva seppure – in ottica sicurezza – racchiuda i gruppi e i protocolli fondamentali, in letteratura probabilmente troverete tassonomie molto più estese perché sarebbe possibile parlare di altri tipi ed altre classificazioni delle VPN. Solo per fare un esempio è doveroso accennare alle cosiddette VPN MPLS che in ambito aziendale sono largamente diffuse, ma volendoci concentrare sull’aspetto della sicurezza e considerando il fatto che, di default, le VPN MPLS non forniscono la crittografia dei dati preferisco escluderle dal presente contributo.

Le VPN per l’accesso remoto

Vengono utilizzate nei casi in cui un utente in mobilità, in qualsiasi luogo del globo, debba collegarsi ad una sito remoto (tipicamente una sede aziendale) e desideri farlo in sicurezza, al riparo da intercettazioni. La costruzione del canale virtuale fra l’utente remoto e la sede aziendale, oltre a mettere al sicuro l’utente e l’azienda, permette di estendere la rete aziendale al di fuori dei propri confini geografici rendendo l’utente finale in grado di accedere a risorse interne (file, applicazioni, server, ecc.) altrimenti inaccessibili. Questo tipo di VPN possono basarsi sia sullo standard IPsec che sui protocolli della famiglia SSL (evoluti in TLS).

remote

Le VPN site-to-site

Vengono utilizzate quando sedi o filiali della stessa azienda o di aziende differenti, situate a distanza geografica, hanno necessità di instaurare un canale di comunicazione sicuro (e molto spesso permanente) sfruttando un canale non sicuro come può essere Internet. Tali VPN sfruttano tipicamente lo standard IPsec e vengono realizzate solitamente tramite specifici terminatori delle VPN (router, firewall, server o appliance) a un capo e all’altro del canale. Una volta stabilita la VPN le due entità/organizzazioni entreranno in contatto potendo condividere in maniera sicura i dati che intendono scambiare fra loro (file, flussi, applicazioni, ecc.) senza dover acquistare da un provider una costosa linea dedicata.

vpn2

Non è certo infrequente, nella realtà aziendale di oggi, trovarsi dinanzi a scenari in cui entrambi i tipi di VPN e entrambe le tecnologie (IPsec e SSL) vengono utilizzati allo stesso tempo

vpn3

La crittografia alla base delle VPN

Entrare nei dettagli di come gli algoritmi di cifratura contribuiscano a realizzare le VPN e a renderle sicure va al di là dello scopo di questo articolo, tuttavia, come già accennato, la crittografia (sia simmetrica che asimmetrica) ricopre l’importante ruolo di abilitatore della confidenzialità e integrità dei dati, ma può entrare in gioco anche in un altro importante aspetto delle VPN: l’autenticazione,  qualora quest’ultima faccia uso della crittografia a chiave pubblica, mediante firma digitale RSA.

Ciò che è doveroso specificare è che diversi algoritmi di cifratura (ed in diverse fasi della “vita” di una VPN) entrano in gioco. Gli algoritmi asimmetrici (esempio: RSA e Diffie-Hellman), più onerosi dal punto di vista computazionale, vengono utilizzati per l’autenticazione (RSA) o per lo scambio di chiavi segrete utilizzando un canale insicuro (Diffie-Hellman), mentre gli algoritmi simmetrici (più leggeri e performanti dal punto vista computazionale come 3DES e AES vengono utilizzati per fare il lavoro di cifratura “continua” dei dati una volta che il canale di comunicazione è stabilito.

Un ultimo fondamentale vantaggio delle VPN è il fatto che offrono protezione “anti replay“ ossia rendono impossibile ad un attaccante intercettare i messaggi in transito ed inserire dei messaggi modificati nel flusso dei dati fra sorgente e destinazione, nel caso ciò dovesse avvenire i messaggi modificati verrebbero scartati.

Le soluzioni di mercato

Site-to-site VPN

Per quanto riguarda le VPN site-to-site, la soluzione più diffusa è quella di demandare la realizzazione del tunnel VPN ad apparati di rete capaci di utilizzare lo standard IPsec (che chiameremo terminatori della VPN), che siano essi router o firewall. Occorrerà quindi accordarsi con la controparte (se si tratta di un’azienda esterna) e scegliere i parametri IPsec in modo che il tunnel si attivi con successo, a quel punto i PC o i server attestati ad un capo o all’altro del tunnel potranno “parlarsi” in maniera “trasparente” e sicura allo stesso tempo, lasciando il lavoro di cifratura e decifratura ai terminatori della VPN. I router e firewall più diffusi al mondo, anche non di livello enterprise, supportano lo standard IPSec e ciò rende possibile la protezione dei dati in transito in maniera abbastanza agevole.

VPN di accesso remoto

Per quanto riguarda le VPN per l’accesso remoto, solitamente basate sul protocollo TLS (erede di SSL), sono presenti sul mercato diverse soluzioni. Ciascun vendor potrà proporre la propria implementazione, ma in sostanza si tratta di definire ed installare quello che viene definito “concentratore” delle VPN il quale – esposto su Internet – raccoglierà, dalla rete della sede centrale, le richieste di accesso (tramite il protocollo SSL/TLS) da parte dei client. Le modalità con cui i client potranno realizzare il tunnel VPN sono in sostanza di tre differenti tipi:

  • clientless (basata esclusivamente sul browser del dispositivo)
  • plug-in based (ossia basate su un plug-in del browser che viene installato al momento della prima connessione al concentratore)
  • client-based (quando è prevista l’installazione di un client software ad hoc)

Ciascuna delle soluzioni ha i suoi pro e i suoi contro: certamente la prima, quella clientless, è quella che può essere utilizzata in qualsiasi luogo e su qualsiasi PC che supporti il protocollo SSL. Ciascun vendor poi “colorerà” la propria soluzione in maniera diversa. La scelta di ciascuna azienda, in base alle proprie necessità, ricadrà sulla sfumatura e la soluzione più appropriate.

La prudenza in mobilità e la protezione dei dati aziendali

Un ultimo accenno va certamente fatto ad un altro utilizzo delle VPN che è di grande utilità per chi viaggia spesso, magari anche all’estero, e che fa sovente uso di accessi wi-fi pubblici, erogati da aeroporti o hotel. In questo caso è consigliabile fare ricorso ad un provider di servizi VPN. Esistono infatti sul mercato fornitori di connettività VPN a cifre abbordabili. In maniera molto semplificata, ciò che si ottiene utilizzando questo tipo di servizi ogniqualvolta ci si trovi a doversi collegare ad Internet da luoghi pubblici o “a rischio” è questo: per prima cosa l’utente si collegherà al proprio provider di servizi VPN, da quel momento in poi ogni connessione verso la rete Internet (che sia verso Google, il proprio portale preferito, la propria casella email via web, ecc.) non avverrà in maniera diretta, sarà il server del provider VPN (del quale dobbiamo avere fiducia, s’intende) a fare da tramite fra l’utente e il server di destinazione. Il computer dell’utente e il server VPN comunicheranno attraverso un tunnel interamente cifrato: in tal modo nessun malintenzionato eavesdropper (nella rete dell’albergo o nelle vicinanze se ci sta collegando in wi-fi) potrà interpretare il traffico generato.

Posted in Senza categoria | Leave a comment