Archive for the ‘Networking’ Category

RIP e configurazione su router Cisco

Il Routing Information Protocol (RIP) è un protocollo distance vector che può essere utilizzato nella versione 1 (RIPv1 o Classful Routing Protocol) o nella versione 2  (RIPv2 o Classless Routing Protocol). Il RIPv2 apporta delle caratteristiche importanti alla precedente versione come la possibilità gestire informazioni addizionali di routing, introduce dei meccanismi di autenticazione per rendere sicuri gli update della routing table e supporta le subnet mask a lunghezza variabile (variable-length subnet mask o VLSM). Il RIP usa l’hop count come metrica per la scelta del percorso. Il numero massimo di hop nel percorso è di 15, poi la rete viene posta come irraggiungibile. Di default, i routing updates vengono inviati ogni 30 secondi in broadcast.

Vediamo adesso come si configura il RIP sui router Cisco. Il primo comando da utilizzare è router rip e, successivamente, si utilizza il comando network per indicare al router le interfacce sulle quali inviare e ricevere i routing updates. Tali reti sono direttamente connesse al router. Facciamo un esempio con un router che è direttamente connesso alle reti 10.0.0.0 e 192.168.10.0, i comandi saranno:

Router(config)#router rip
Router(config-router)#network 10.0.0.0
Router(config-router)#network 192.168.10.0

Cosa accade se si inviano pacchetti verso una subnet sconosciuta? Il pacchetto viene scartato; per ovviare a ciò sui Cisco è abilitato di default il comando ip classless che inoltra il pacchetto di una subnet sconosciuta alla migliore supernet route. La supernet route è una rotta che copre un ampio range di subnet con una singola entry (per disabilitarlo bisogna inserire il comando no ip classless in configuration mode).

Come indicato nel precedente articolo, il RIP è un protocollo distance vector che soffre dei problemi di routing loops e count-to-infinity che portano a inconsistenza delle tabelle di routing dovute e una lenta convergenza del protocollo. Per ovviare a ciò il RIP utilizza le seguenti tecniche:

  • Split horizon
  • Poison reverse
  • Holddown counters
  • Triggered updates

Alcuni di questi servizi possono richiedere configurazione. Il RIP permette un massimo di 15 hop, quindi l’utilizzo del RIP è limitato nelle reti di grosse dimensioni. Inoltre, in alcuni casi, è necessario poter disabilitare lo split horizon; tale operazione va fatta direttamente sull’interfaccia interessata tramite il comando:

Router(config-if)#no ip split-horizon

E’ possibile modificare l’holddown timer che di default è di 180 secondi, per farlo basta digitare il comando:

Router(config-router)#timers basic update invalid holddown flush [sleeptime]

l’impostazione di default è

Router(config-router)#timers basic 30 180 180 240

Il valore del timer può essere diminuito, ma ciò va effettuato con cautela. Il valore ideale per il timer è leggermente maggiore del tempo massimo possibile per l’update sulla rete. L’intervallo di update può essere aumentato, rispetto al default pari a 30 secondi, per risparmiare banda o diminuito per migliorare la convergenza. E’ inoltre possibile disabilitare l’invio degli update su una specifica interfaccia tramite il comando:

Router(config-router)#passive-interface interface

La scelta di disabilitare gli update su talune interfacce risiede nel fatto che il RIP invia gli update in broadcast ed è necessario disabilitarli quando bisogna inviare degli update a reti non broadcast come ad esempio il Frame Relay.

Il tipo RIP da utilizzare si imposta con il comando:

Router(config-router)#version {1|2}

Di default i router cisco ricevono gli update sia del RIPv1 che del RIPv2, ma inviano solamente update di RIPv1. Il tipo di invio può essere settato con comandi appositi per inviare update di RIPv1, RIPv2 o di entrambi i tipi direttamente sull’interfaccia d’uscita:

Router(config-if)#ip rip send version {1 | 2 | 1 2}

la medesima cosa può essere fatta con la ricezione veicolando la ricezione di update RIP di una o entrambe le versioni:

Router(config-if)#ip rip receive version {1 | 2 | 1 2}

Abbiamo così concluso la trattazione sulla configurazione del RIP su Router Cisco, per effettuare la verifica della configurazione ci avvaliamo di 2 comandi: show ip route e show ip protocols. Il primo viene utilizzato in particolare per verificare che vengano ricevuti gli update degli altri router e che le route ricevute dai router vicini siano installate nella routing table; il secondo da molte informazioni sulla configurazione, ovvero se il RIP è attivo, se le interfacce inviano e ricevono correttamente gli update e se il router emette gli aggiornamenti verso le reti giuste.

Distance vector e routing loop

Abbiamo visto nei precedenti articoli le caratteristiche principali dei protocolli che utilizzano l’algoritmo di routing distance vector e in particolare che ogni router invia periodicamente la sua intera tabella di routing ai router adiacenti compreso il costo totale del percorso (metrica) e l’indirizzo del primo router del cammino nel percorso (detto next hop). Tuttavia l’algoritmo distance vector soffre di una problematica: i loop.

I routing loop si possono verificare se le routing table non sono aggiornate o sono inconsistenti a causa di una lenta convergenza del protocollo. Facciamo un esempio con la figura di seguito riportata.

Distance vector routing loop

Distance vector routing loop

In questa situazione può capitare che se una tratta diventa isolati; quando la rete 1 si guasta il router E emette un updateverso A. Il router A blocca l’instradamento verso la rete 1, ma i router B, C e D continuano ad inviare pacchetti verso A perché ancora non sono aggiornati sul guasto della rete 1. Appena A emette gli updateverso B e D questi bloccano le emissioni verso la rete 1. In questa situazione, il router C ancora vede la rete 1 come raggiungibile attraverso il router B; il router C manda un update verso D indicando che il path verso la rete 1 è attraverso B. Il router D aggiorna la sua routing table e propaga questa informazione verso il router A. Il router A rilancerà l’update verso i router B ed E. A questo punto ogni pacchetto emesso da C destinato alla rete 1 seguirà un looptra i router C, B, A e D.

Gli update non validi relativi alla rete 1 continueranno fino a che un altro processo non fermerà il loop. Questa situazione, detta Count-to-Infinity, è creata dalla propagazione di informazioni di routing non valide. Per evitare il count-to-infinity, i protocolli distance vector definiscono “infinity” uno specifico numero massimo (self-correcting); con tale approccio il routing protocol permette al loop di continuare sino a che la metrica non eccede il massimo valore permesso. Quando il valore della metrica eccede il massimo valore la rete è considerata non raggiungibile.

In poche parole, i loop avvengono quando gli update non corretti contraddicono gli update corretti. Per evitare questa situazione si è implementato lo Split Horizon, ovvero le informazioni di rete irraggiungibile da parte di un router non possono tornare indietro allo stesso router da parte degli adiacenti. Con questa tecnica si riducono sia le informazioni errate che il tempo necessario alla convergenza della rete.
Un ulteriore metodo per aumentare la convergenza della rete è utilizzare il route poisoning, ovvero si fa in modo che il primo router (nella figura il router E) che identifica la rete come irraggiungibile modifica la metrica di tale rete al numero massimo (e quindi la pone subito come irraggiungibile anche per i router adiacenti). Un ulteriore passo di convergenza è l’invio di update appena si verifica l’irraggiungibilità (trigger update) senza aspettare l’update periodico. I triggered update, usati in congiunzione con il route poisoning, assicurano che tutti i router sappiano delle route indisponibili nel piùbreve tempo possibile.

L’ultima tecnica per evitare i routing loop è l’holddown timer, vediamone il funzionamento. Quando un router riceve un update da un vicino che gli indica che una rete prima accessibile adesso non lo è più, il router marca la rete come tale e fa partire un holddown timer. Se arriva un update prima che tale timer si esaurisca dallo stesso vicino indicando che la rete in questione è di nuovo accessibile allora il timer è rimosso e la rete marcata come accessibile. Se un update arriva da un router vicino diverso con una metrica migliore di quella originale allora il router marca la rete come accessibile e ferma l’holddown timer. Se prima che l’holddown timer scada si riceve un update da un router vicino diverso dal primo, con una metrica peggiore, l’update è ignorato; ignorare un update di tale tipo ha lo scopo di dare più tempo all’informazione di irrangiugibilità della rete di propagarsi.

CountGli updatenon validi relativi alla rete 1 continueranno fino a che un altro processo non fermeràil loopQuesta situazione, detta CounttoInfinity, ècreata dalla propagazione di informazioni di routingnon validePer evitare il counttoinfinity, i protocolli distancevectordefiniscono “infinity”uno specifico numero massimo (self-correcting)Con tale approccio il routingprotocolpermette al loopdi continuare sino a che la metrica non eccede il massimo valore permessoQuando il valore della metrica eccede il massimo valore la rete èconsiderata non raggiungibile

IGP, BGP e caratteristiche dei protocolli di routing

In questo articolo faremo una panoramica sui principali algoritmi di routing e ne descriveremo brevemente le caratteristiche.

I protocolli Interior Gateway Protocol (IGP) sono quei protocolli che lavorano all’interno dello stesso sistema autonomo (AS) per determinare il percorso migliore su cui inviare un pacchetto usando come parametro principale la metrica e il modo in cui tale metrica viene calcolata.
I protocolli exterior routing protocol come il Border Gateway Protocol (BGP) vengono usati per collegare reti differenti appartenenti a diverse organizzazione e, quindi, diversi AS. E’ usato ad esempio tra ISP (internet service provider). Vediamo le caratteristiche di alcuni protocolli, prima IGP e, poi, del BGP.

Il primo protocollo IGP che vedremo è il RIP (Routing Information Protocol) che è un protocollo distance vector che usa come metrica il numero di hop (ovvero di router) che si attraversano per arrivare fino a destinazione. Gli aggiornamenti sulle tabelle di routing vengono inviate di default ogni 30 secondi e, nella prima versione del protocollo, la metrica massima è di 15 hop.
L’Interior Gateway Routing Protocol (EIGRP) è un protocollo distance vector proprietario Cisco. Esso invia di default gli aggiornamenti sulle tabelle di routing e la metrica è calcolata in maniera più complessa rispetto al RIP tenendo in considerazione diversi fattori della rete come la banda, il carico, il ritardo e l’affidabilità.
L’OSPF (Open Shortest Path First) è, al contrario dei primi 2, un protocollo link state. E’ un protocollo non propietario e aperto che utilizzalo l’SPF (Shortest Path First) per calcolare il percorso a costo minimo fino a destinazione. Gli aggiornamenti sulla topologia vengono inviati solamente quando vi sono variazioni della stessa.

L’ultimo protocollo IGP che vediamo in questo breve articolo è l’Enhanced Interior Gateway Routing Protocol (EIGRP) che è anch’esso un protocollo proprietario Cisco e apporta delle migliorie al protocollo IGRP. E’ un protocollo di routing distance vector migliorato in quanto ha delle caratteristiche prese dai protocolli link state; per questo motivo usa un particolare algoritmo per il calcolo per percorso migliore che prende il nome di Diffusing Update Algorithm (DUAL). Gli aggiornamenti di routing vengono inviati in multicast e solamente quando vi sono variazioni della rete.
Concludiamo vedendo le caratteristiche del BGP. Esso è un protocollo distance vector adattato per l’exterior routing protocol usato nelle comunicazioni tra ISP e ISP o tra ISP e clienti. Ha il compito di indirizzare il traffico internet tra i sistemi autonomi.

Nei prossimi articoli parleremo più in dettagli dei vari protocolli IGP vedendone la configurazione sui route Cisco.

Introduzione ai protocolli di routing: AS, distance vector e link state

Un protocollo di routing è un processo di comunicazione tra router per scambiarsi informazioni; tali informazioni andranno a formare la tabella di routing (routing table). L’invio del traffico utente è affidato, invece, ai protocolli routed.I protocolli di routing stanno alla base del routing dinamico.

Esempi di protocolli di routing sono:

  • RIP (Routing Information Protocol)
  • IGRP (Interior Gateway Routing Protocol)
  • EIGRP (Enhanced Interior Gateway Routing Protocol)
  • OSPF (Open Shortest Path First)

Esempi di protocolli routed sono:

  • IP (Internet Protocol)
  • IPX (Internetwork Packet Exchange)

In questo articolo vedremo in maniera teorica la distinzione tra i protocolli di routing e in particolare tra 2 categorie di algoritmi utilizzabili: distance vectorlink state. Prima però diamo la definizione di sistema autonomo (autonomous system o AS). Un AS è un insieme di reti che stanno sotto la supervisione di uno stesso amministratore di rete e che condividono strategie di routing comuni.
Lo scopo dei protocolli di routing è mantenere aggiornata la tabella di routing in base alle variazioni della topologia della rete. Una convergenza veloce delle rete a informazioni aggiornate nella routing è senza dubbio desiderabile in quanto si riduce il periodo di tempo in cui i router prendono decisioni di routing non corrette. In questo ambito si inseriscono gli AS che dividono l’internetwork globale in piccole reti che sono così molto più gestibili.

Passiamo ora ad esaminare l’algoritmo distance vector. L’algoritmo di routing distance vector invia periodicamente copie della propria tabella di routing da un router ad un altro per comunicare le variazioni sulla topologia della rete;  gli invii avvengono tra router adiacenti direttamente connessi. L’algoritmo utilizzato è anche conosciuto come algoritmo di Bellman-Ford.
Ogni router confronta la tabella di router che gli è stata inviata con la sua, se vi sono variazioni nella topologia della rete la propria viene aggiornata. Ogni router invia interamente la propria tabella di routing ai router adiacenti. La tabella di routing include informazioni circa la metrica (costo totale del percorso). Non si conoscono con tale algoritmo informazioni riguardanti reti o router distanti.

L’algoritmo link state è anche chiamato algoritmo di Dijkstra o shortest path first (SPF). Tale algoritmo mantiene una complessa tabella con le informazioni sulla topologia della rete e ha conoscenza totale dei router distanti da esso e le reti a essi interconnesse.

Un protocollo link state ha le seguenti caratteristiche:

  • LSA (link state advertisement), un piccolo pacchetto contenente le informazioni di routing;
  • topological database, l’insieme delle informazioni raccolte tramite i LSA;
  • algoritmo SPF, effettua i calcoli in base alle informazioni contenute nel database;
  • routing table, la tabella contenente la lista dei percorsi e delle interfacce conosciute.

I router che utilizzano protocolli basati su link state hanno bisogno di maggiore memoria e potenza di calcolo di altri che utilizzano protocolli basati su distance vector. La maggiore memoria è dovuta al fatto di dover immagazzinare informazioni sui vari database, sulla topologia della rete e i dati della routing table.
Vediamo in breve il funzionamento.  Inizialmente avviene il processo di scoperta (discovery process) attraverso il flooding (letteralmente, inondazione) di pacchetti link state tramite pacchetti LSA a tutti gli altri router. Questo processo inonda la rete di pacchetti LSA riducendone temporaneamente la banda disponibile per il traffico utente. Dopo questa fase iniziale, però, i protocolli link state richiedono generalmente poca banda per inviare i LSA che verranno inviati solo quando vi saranno delle variazioni della topologia della rete.

Concludiamo dicendo che i router hanno 2 funzioni di base:

  • determinazione del percorso;
  • funzioni di switching.

A livello rete vi è la funzione di calcolo del percorso, che consente al router di calcolare il percorso di un pacchetto fino a destinazione e stabilisce quale sia la via migliore. Per effettuare tali scelte viene utilizzata la tabella di routing.
La funzione di switching è una funzione interna del router che ha il compito di inviare un pacchetto ricevuto su una interfaccia ad un’altra interfaccia dello stesso. Il compito principale dello switching è quello di incapsulare in maniera appropriata il pacchetto in base alla rete che ci si trova sulla porta di uscita.

Routing e rotte statiche

Il Routing è il processo usato da un router per inviare i pacchetti fino a destinazione e utilizza come metodo decisionale l’indirizzo IP di destinazione. La decisione per l’invio di pacchetti a una rete remota può avvenire in maniera statica o in maniera dinamica. In questo articolo vedremo come configurare sui router cisco le rotte in maniera statica (static routing) ovvero configurando manualmente le informazioni sulle reti remote. Ovviamente, essendo configurate manualmente, l’amministratore di rete deve aggiungere o rimuovere rotte statiche ogni volta ci sia una variazione della topologia della rete.

Sui router cisco il comando da utilizzare per inserire una rotta statica è il comando ip route seguito da 3 parametri obbligatori che sono: rete remota, maschera della rete e ip d’uscita (o l’interfaccia d’uscita). Facciamo un esempio. Si voglia inserire la rotta statica alla rete 192.168.10.0 con maschera 255.255.255.0 da un router che ha come interfaccia d’uscita una seriale (ipotizziamo la seriale1) che ha IP 192.168.4.1; possiamo definirla tramite 2 comandi equivalenti:

- Router(config)#ip route 192.168.10.0 255.255.255.0 s1

oppure

- Router(config)#ip route 192.168.10.0 255.255.255.0 192.168.4.1

poiché basta indicare o l’interfaccia d’uscita o il suo IP.

Un parametro opzionale è la distanza amministrativa (o administrative distance) che indica l’affidabilità di una rotta: una distanza amministrativa minore indica un’affidabilità maggiore. Essa può assumere un valore compreso tra 0 e 255; nelle rotte statiche, se non esplicitamente indicato, il valore della distanza amministrativa è 1.
Spesso la distanza amministrativa viene modificata per creare delle rotte statiche di backup nel caso in cui le rotte dinamiche (o dynamic routing) falliscano l’apprendimento. In questo caso bisogna indicare la rotta statica con un valore della distanza amministrativa più alta di quella del dynamic routing utilizzato. Ad esempio:

- Router(config)#ip route 192.168.10.0 255.255.255.0 s1 150

La default route è la rotta utilizzata per instradare i pacchetti che hanno una destinazione che non coincide con nessuna delle rotte che si trovano nella routing table. La default route è un tipo speciale di rotta statica che si scrive nel seguente modo:

- Router(config)#ip route 0.0.0.0 0.0.0.0 s1
oppure
- Router(config)#ip route 0.0.0.0 0.0.0.0 192.168.4.1

ovvero inserendo come ip e maschera di destinazione a 0 e inserendo alla fine l’interfaccia d’uscita.

La verifica della configurazione avviene tramite i comandi show running-config e show ip route in modalità privilegiata. Ovviamente, per ritrovarsi la configurazione dopo il riavvio del router bisogna salvare la configurazione sulla configurazione d’avvio con il comando show running-config startup-config.

Ripristinare file nascosti dopo essere stati infetti da virus

Spesso e volentieri un pc infetto da virus non visualizza i file e cartelle nascoste. Questo è un meccanismo che il virus attua per impedire la rimozione manuale del file infetto che però si ripercuote anche dopo aver effettuato la bonifica dei virus in questione! Nella maggior parte dei casi basta andare a modificare delle chiavi nel registro di sistema in 2 percorsi diversi. Procediamo con ordine.

Entriamo nel registro di sistema tramite la procedura:  Start->esegui->regedit. Digitando il comendo regedit verrà visualizzato l’Editor del Registro del Sistema che ci permetterà di modificare alcune chiavi del registro che fanno al caso nostro. La prima chiave da modificare si trova nel percorso:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced

si chiama Hidden, è di tipo REG_DWORD e deve essere impostato a 1 (se messo a 0 il sistema non visualizza i file nascosti). Se vi è una stessa chiave di tipo REG_SZ si deve cancellare.
La seconda chiave da modificare è:

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Folder\Hidden\SHOWALL

si chiama CheckValue, è sempre di tipo REG_DWORD va impostata a 1 qualsiasi sia il suo valore. Se tale chiave è presente con tipo REG_SZ va eliminata.

Se dopo tali modifiche non vedete ancora i file nascosti vi è una buona probabilità che avete ancora qualche virus in giro nel vostro hard disk. In tal caso provvedete a una disinfezione tramite i vari programmi scaricabili (malwarebyte’s, combofix, ecc…) o le numerose scansioni online.

Rimozione peak protection 2010

Mi è capitato recentemente di trovarmi di fronte a un pc “infetto” da un programma che si spaccia per software di sicurezza: il peak protection 2010. Tale software lancia delle scansioni fasulle con esito prevedibile…. ovvero il pc infetto! Nella realtà l’infezione è proprio tale software che tenta di far acquistare all’utente una falsa licenza per poter “disinfettare” il proprio pc. Ovviamente non dovete acquistare niente, vi descrivo il metodo con cui l’ho rimosso senza troppi intoppi.

Scaricate i programmi Malwarebytes e Process Explorer (quest’ultimo potrebbe comunque non essere necessario). Installate il primo e fate partire il pc in modalità provvisoria con rete così da evitare che si blocchi l’avvio di Malwarebytes dovuto al peak protection 2010. Se anche così non riusciste ad avviare il programma lanciate Process Explorer e killate i processi antispy.exe, defender.exe e tmp.exe.
Fatto ciò dovreste poter eseguire Malwarebytes (come amministratore) per eseguire un scansione completa per eliminare l’ospite sgradito.

Nota: Malwarebytes deve aggiornarsi prima di effettuare tale operazione; è possibile che il peak protection abbia modificato i parametri per la connessione ad internet  e, quindi, questa operazione potrebbe non essere eseguita. In tal caso lanciate explorer->strumenti->opzioni internet->connessioni->Impostazioni LAN e spuntare la dicitura rileva automaticamente impostazioni mentre dovete togliere eventuali altre opzioni che risultano spuntate.

Una volta terminata la scansione e disinfettato il pc potrete riavviare e ritornare al normale funzionamento.