Passa ai contenuti principali

Introduzione alle reti 6 - Network Device Security


Come noto, nelle reti la sicurezza riveste un'importanza primaria, e moltissime sono al momento le misure che è possibile adottare in modo efficace per la tutela dei dati. 

Rimandando gli approfondimenti ad un successivo articolo, in questa sede si esamineranno le questioni fondamentali inerenti la sicurezza in rete.   


Si vedrà, in particolare, come già i soli switch e router siano in grado di offrire una adeguata protezione di base nelle situazioni più comuni.



La sicurezza per mezzo degli switch

Per quanto non facilmente immaginabile, molti degli "attacchi" portati in rete riguardano gli switch. 

Studiando il funzionamento degli switch, si è, difatti, detto che questi "apprendono" la topologia circostante mantenendo aggiornata al proprio interno una MAC Address Table. 

In particolare, si è visto che, quando un frame arriva alla porta FastEthernet-n dello switch per la prima volta da un device Device-k connesso, lo switch registra nella propria MAC Address Table la nuova associazione <MAC_Address_Device-k - FastEthernet-n>. Parimenti, quando lo switch deve consegnare un frame per la prima volta al device Device-j connesso alla propria porta FastEthernet-m, lo switch annota nella MAC Address Table la nuova associazione <MAC_Address_Device-j - FastEthernet-m>. A regime, quindi, la MAC Address Table conterrà gli indirizzi fisici di tutti i dispositivi connessi allo switch, e questo consentirà allo switch di implementare trasmissioni di tipo unicast - e non broadcast come è proprio degli hub - ovvero di recapitare i singoli frame esclusivamente ai propri destinatari.    

Purtroppo, però, come sarà chiaro a breve, proprio la MAC Address Table che è alla base del funzionamento di uno switch, ne costituisce il suo principale punto di vulnerabilità.   

In generale, gli attacchi portati ad una rete attraverso le interfacce di uno switch possono classificarsi come segue: 
  • MAC Address Flooding (o MAC Address Overflow): lo switch viene ingannato attraverso l'invio, su tutte le sue porte, di frame sempre nuovi e contenenti MAC Address di origine fittizi. Credendo veri i frame in arrivo, cioè inviati da dispositivi a sé realmente connessi, lo switch continuerà ad aggiungere nuove associazioni nella propria MAC Address Table fino a raggiungere la saturazione. Arrivata a saturazione, la MAC Address Table non sarà più in grado di funzionare correttamente: non potendo registrare nuove associazioni - fra queste anche quelle corrette - lo switch non sarà in grado di risolvere gli indirizzi dei frame in arrivo, quindi la trasmissione sarà necessariamente di tipo broadcast (lo switch prenderà a funzionare come un hub) con conseguente pericolo di broadcast storm
  • Spoofing (lett. inganno): in questo tipo di attacco, allo switch vengono continuamente inviati frame con MAC Address di destinazione fittizio. Nel tentativo di risolvere gli stessi indirizzi, anche in questo caso, lo switch è costretto a ripetute trasmissioni di tipo broadcast, con conseguenti malfunzionamenti a carico di tutta la rete.
  • Attacchi, portati tipicamente via telnet, di Brute Force per la cattura di password, o di tipo DoS (Denial of Service) per impedire all'amministratore della rete il servizio stesso.

Cisco IOS mette a disposizione dell'utente una serie di strumenti mediante i quali proteggere lo switch, di conseguenza l'intera rete. La strategia adottata è fondamentalmente quella di imporre un limite al numero di indirizzi fisici dai quali lo switch possa ricevere frame. Questo può avvenire attraverso modalità differenti come illustrato nelle istruzioni seguenti




(config)#interface <port-id>
(config-if)#switchport mode access
(config-if)#switchport port-security

Viene abilitata la sicurezza sulla porta selezionata: notare che l'interfaccia viene posta in modalità “access”. Tali istruzioni sono obbligatorie  e propedeutiche alle azioni successive. 

(config)#interface <port-id>
(config-if)#switchport mode access
(config-if)#switchport port-security
(config-if)#switchport port-security maximum <n>
Viene imposto il limite (1<n<132) al numero di indirizzi MAC dai quali la porta dello switch indicata può accettare frame, ovvero di dispositivi contemporaneamente connessi alla porta (ad esempio tramite switch). Ove non specificato, tale limite viene posto ad 1. In ogni caso, il superamento di tale limite viene interpretato come violazione dell'interfaccia.

(config)#interface <port-id>
(config-if)#switchport mode access
(config-if)#switchport port-security
(config-if)#switchport port-security mac-address <mac-address>
L'indirizzo fisico indicato viene dichiarato "sicuro", quindi abilitato a trasmettere frame allo switch sull'interfaccia specificata. Tale modalità viene anche detta "statica".



(config)#interface <port-id>
(config-if)#switchport mode access
(config-if)#switchport port-security
(config-if)#switchport port-security maximum <n>
(config-if)#switchport port-security mac-address sticky
In alternativa alla modalità statica, è possibile configurare lo switch per l'”apprendimento sticky” (lett. “adesivo”): solo i primi n indirizzi fisici dai quali lo switch riceve dati vengono dichiarati sicuri e scritti all'interno del running-configuration file.
Se non specificato altrimenti, n assume il valore 1. In ogni caso, il superamento del limite n viene interpretato come violazione dell'interfaccia. 

(config)#interface <port-id>
(config-if)#switchport mode access
(config-if)#switchport port-security
(config-if)#switchport port-security violation {protect|restrict|shutdown}
Vengono impostate le misure da adottare in caso di violazione rilevata su un'interfaccia dello switch:
  • protect: ignorare i frame con indirizzo di origine sconosciuto
  • restricted: ignorare i frame con indirizzo di origine sconosciuto ed incrementare il contatore dei frame invalidi;
  • shutdown (impostazione di default): disabilitare l'interfaccia stessa
#show port-security interface <interface-id>
Mostra la configurazione relativa alla sicurezza di una specifica porta.


Di seguito un esempio di configurazione: l'obiettivo è quello di limitare a 3 il numero di dispositivi connessi allo switch attraverso l'hub. 



Switch(config)#interface fa0/3
Switch(config-if)#switchport mode access
Switch(config-if)#switchport port-security 
Switch(config-if)#switchport port-security maximum 3
Switch(config-if)#switchport port-security mac-address sticky

Questo, inoltre, il contenuto del running-config file dello switch relativo alla porta Fa0/3 (notare i MAC Address dei tre PC connessi all'hub)

interface FastEthernet0/3
 switchport mode access
 switchport port-security
 switchport port-security maximum 3
 switchport port-security mac-address sticky 
 switchport port-security mac-address sticky 0002.168D.1E1A
 switchport port-security mac-address sticky 0060.5C90.2B35
 switchport port-security mac-address sticky 00D0.FFDE.9468

Se qualcuno tentasse di connettersi all'hub, o sostituirsi ad uno dei pc qui connessi, verrebbe immediatamente accertata la violazione e disabilitata di default l'interfaccia. 



I router e le Access Control List (ACL)

In una rete, col termine ACL vengono indicate delle regole atte a definire gruppi di pacchetti in base a: indirizzo logico di origine e/o indirizzo logico di destinazione e/o protocollo di trasporto e/o protocollo applicativo. Attraverso un ACL è, ad esempio, possibile identificare tutti i pacchetti provenienti dai device della rete N1, di tipo TCP e diretti ai Web Server della rete N2.    

Le ACL trovano applicazione in diversi contesti di rete (se ne tornerà, ad esempio, a parlare affrontando il NAT dinamico), ma sono soprattutto utilizzate in ambito sicurezza. Una volta definita, difatti, una ACL può essere applicata, in ingresso o in uscita, ad un'interfaccia di un router: l'effetto è quello di consentire o  vietare l'ingresso o l'uscita al/dal router ai pacchetti identificati dall'ACL, attraverso l'interfaccia detta.

Le ACL sono in definitiva dei filtri che è possibile configurare su ogni singola interfaccia di un router per regolamentarne il flusso dei pacchetti in ingresso e/o in uscita secondo prestabiliti criteri. Per tale motivo, le ACL sono assimilabili ad un firewall (di primo livello) e sono frequentemente applicate ai router principali di una rete: di norma, quelli che mettono in comunicazione le reti locali con le WAN. 

É uso dividere le ACL in due famiglie principali:
  • Standard ACL: "permettono" o "vietano" il traffico proveniente da una certa origine (una rete, un  gruppo di host, un singolo device)  
  • Extended ACL: consentono un controllo più puntuale del flusso dei pacchetti, poiché discriminano in base a: 
    • indirizzo di origine o destinazione dei pacchetti, 
    • porta TCP/UDP di origine o destinazione dei pacchetti (le ACL fanno riferimento al livello 4 della pila OSI) 
    • protocollo in uso.

Come detto, una volta definita, la ACL può essere applicata ad una o più interfacce di un router specificando se la stessa regola debba valere per i pacchetti in ingresso al router o, viceversa, per quelli da questo in uscita attraverso ogni singola porta. Per ogni interfaccia del router, tuttavia, può definirsi al più una ACL in ingresso ed una ACL in uscita.  

Come è intuibile, e come sarà chiaro a breve, una ACL è formulata in termini di condizioni che consentono al router di amministrare il flusso di pacchetti. Al riguardo è di fondamentale importanza valutare l'ordine in cui dette condizioni vengono dichiarate all'interno dell'ACL. Si tenga difatti presente che, per ciascun pacchetto, il router valuta le condizioni di un'ACL fino a quando - e non oltre! - non trova una condizione vera: non appena una condizione dell'ACL viene riscontrata True per il pacchetto in esame, il router esegue l'operazione prescritta e passa immediatamente ad esaminare il pacchetto successivo (senza che le restanti condizioni dell'ACL vengano neppure prese in considerazione). Un simile comportamento è imposto dalla necessità di alleggerire quanto più possibile il carico di lavoro del router che, oltre a questa, dovrà svolgere le normali - onerose - operazioni di instradamento dei pacchetti. Peraltro, anche qualora nessuna delle condizioni di un'ACL venga riscontrata vera, nelle ACL è comunque previsto un Implict Deny di chiusura valido per tutti i pacchetti. In altri termini, ove non disposto diversamente, un'ACL, per motivi di sicurezza, vieta di default l'accesso, in ingresso o in uscita, a tutti i pacchetti.  

Altra questione rilevante è il dove applicare le ACL. Degli esempi chiariranno il problema. Si pensi, dunque, al caso di un router le cui due porte FastEthernet Fa0/0 e Fa0/1 costituiscano il gateway per due LAN, A e B rispettivamente, e la cui porta Seriale Se0/0/0 dia invece accesso ad Internet. Si supponga anche che, mentre gli host della rete A devono poter uscire su Internet, per motivi di sicurezza, gli host della rete B devono poter comunicare al più con gli host della LAN A. In altri termini, si vuole impedire ai pacchetti provenienti dalla rete B di uscire dalla porta seriale del router. Al riguardo è sicuramente possibile definire un ACL ed applicarla ad una porta del router. Il problema, semmai, è: a quale porta del router risulta più conveniente applicare una ACL? A ben vedere, le possibili alternative sono due:

  • imporre una ACLsulla porta Fa0/1 che impedisca l'accesso al router dei pacchetti provenienti dalla rete B e diretti ad Internet, ma che, contestualmente, lasci passare i pacchetti diretti alla rete A; 
  • imporre una ACL sulla porta seriale del router che impedisca l'uscita dal router ai pacchetti provenienti dalla rete B.           

Intuitivamente, si converrà che la seconda ipotesi è da preferirsi alla prima, visto che grava in misura minore sulla CPU del router.  

Si aggiunga ora la condizione per cui, causa la diffusione di un virus introdotto manualmente nella rete B, gli host della rete B non debbano poter comunicare neanche con gli host della rete A. Si pongono, allora, due scelte possibili: imporre un'altra ACL sulla porta Fa0/0 del router che impedisca l'ingresso alla rete A ai pacchetti provenienti dalla rete B, oppure, più semplicemente, un'unica ACL che vieti direttamente l'ingresso al router dalla porta F0/1, ovvero dalla rete B. É evidente che la seconda scelta è in questo caso quella preferibile, dal momento che non crea inutile overhead al router.  

L'indicazione generale è quindi quella di imporre le ACL lì dove minore è l'aggravio di calcolo per il router (si rifletta al fatto che, per quanto i controlli di una ACL possano essere semplici, il numero di verifiche, quindi l'attività di calcolo può divenire significativamente grande, in caso di traffico elevato).  Questo, di norma, si traduce nella seguente indicazione:  porre
  • le ACL Standard più vicino alla destinazione
  • le ACL Estese più vicino alla sorgente

anche se, come visto, ogni caso richiede una propria valutazione.



Standard ACL


Come detto, le ACL standard regolamentano
 l'accesso/uscita dei pacchetti a/da una porta del router in base alla loro provenienza. Il modo principale di definire una ACL Standard risponde alla seguente sintassi: 

Router(config)#access-list <ACL-number{deny|permit}
            {<source> [<wildcard-mask>]|host <ip-addr.>|any}

  • ACL-number: è un identificativo numerico che è possibile attribuire alle singole ACL per poterle distinguere ed eventualmente richiamare; per le ACL Standard, tale identificativo è rappresentato da un valore 1 <= <= 99
  • denypermit: sono le parole chiave che esprimono divieto/consenso nei confronti dei pacchetti provenienti dalla sorgente specificata
  • source: origine del pacchetto che può essere specificata in più modi:
    • indirizzo IP della rete (+ wilcard mask se si vuole limitare la condizione ad uno specifico range di indirizzi) 
    • host + indirizzo di un singolo host
    • any per includere la totalità degli indirizzi 

Di seguito alcuni esempi:
  • La seguente ACL consente l'accesso agli host provenienti dalla rete 192.168.1.0/24 e, a causa dell'implicit deny, lo nega a tutti gli altri.  
      (config)#access-list 10 remark Permit hosts from 192.168.1.0/24
      (config)#access-list 10 permit 192.168.1.0   0.0.0.255
  • Per consentire l'accesso a qualunque host è possibile usare indistintamente:
      (config)#access-list 12 permit any

          oppure

      (config)#access-list 12 permit 0.0.0.0   255.255.255.255
  • Per consentire l'accesso al solo host 192.168.10.10 è possibile scrivere
      (config)#access-list 13 permit host 192.168.10.10

         oppure

      (config)#access-list 13 permit 192.168.10.10   0.0.0.0   
  • Viceversa, per vietare l'accesso al solo host 192.168.10.10 e consentirlo a tutti e soli gli altri host della rete 192.168.10.0/24 (notare l'ordine delle condizioni)
             (config)#access-list 14 deny 192.168.10.10
             (config)#access-list 14 permit 192.168.10.0   0.0.0.255 


É anche possibile assegnare ad un'ACL Standard un nome, piuttosto che un identificativo numerico. In tal caso si parla di Named ACL e la sintassi cambia come segue:


Router(config)#ip access-list standard <ACL-name>
Router(config-std-nacl)#{deny|permit} 
                    {<source> [<wildcard-mask>]|
                     host <ip address>|
                     any}

Ad esempio, 
  • La seguente ACL consente l'accesso agli host provenienti dalla rete 192.168.1.0/24
      (config)#ip access-list standard ACL_Test
      (config-std-nacl)#permit 192.168.1.0   0.0.0.255



Extended ACL 


La sintassi di una Extended ACL riflette una maggiore capacità di controllo sul flusso dei pacchetti. Si ha difatti: 



Router(config)#access-list <ACL-number{deny|permit}
            <protocol>
            {<source> [<wildcard-mask>]|host <ip-addr.>|any}
            {<destin.> [<wildcard-mask>]|host <ip-addr.>|any}
            [eq <port-number|port-name>|established]

il significato è abbastanza evidente a meno di qualche chiarimento:
  • l'identificativo numerico di una ACL estesa è un valore 100 <= <= 199
  • la parola chiave established si riferisce al solo protocollo TCP e indica una connessione instaurata.  
Ad esempio, 
  • la ACL seguente consente l'accesso ai soli pacchetti trasmessi in modalità TCP e provenienti dalla rete 192.168.10.0/24, indipendentemente dalla loro destinazione, purché diretti sulla porta 80 (evidentemente di un web server, dato che 80 è il numero di porta che si riferisce al protocollo HTTP)  
      (config)#access-list 110   permit   tcp   192.168.10.0   0.0.0.255   any   eq 80 

Definire delle Named Extended ACL è del tutto analogo a quanto già visto per le Standard ACL




Router(config)#
ip access-list extended <ACL-name>
Router(config-std-nacl)#{deny|permit}
                <protocol>
                {<source> [<wildcard-mask>]|host <ip-addr.>|any}
                {<destin.> [<wildcard-mask>]|host <ip-addr.>|any}
                [eq <port-number|port-name>|established]



Applicare le ACL alle interfacce del router



Una volta definita, una ACL può essere applicata alle porte del router. Questa la sintassi:

Router(config)#interface <port-id>
Router(config-if)#ip access-group {<ACL-num.>|<ACL-name>} {in|out

Le parole chiave in e out specificano se la regola deve essere applicata in ingresso o in uscita alla porta.
    Ad esempio, 
    • per consentire l'uscita sulla porta S0/0/0 dei pacchetti provenienti dalla rete 192.168.10.0/24 è possibile scrivere:
          (config)#access-list 1 permit 192.168.10.0   0.0.0.255
          (config)#interface S0/0/0
          (config-if)#ip access-group 1 out 
    • Se, viceversa, si fosse voluto impedire l'uscita sulla porta S0/0/0 dei pacchetti provenienti dal solo host 192.168.10.10 nella rete 192.168.10.0/24, si sarebbe dovuto scrivere:
          (config)#access-list 1 deny 192.168.10.10   0.0.0.0
          (config)#access-list 1 permit 192.168.10.0    0.0.0.255
          (config)#interface S0/0/0
          (config-if)#ip access-group 1 out 



    Gestire le ACL

    Definite delle ACL, è possibile:
    • visualizzarle col comando: 
         Router(config)#show access-lists 
    • rimuoverle, a seconda dei casi con:
         Router(config)#no access-lists <ACL-number>

        oppure


          Router(config)#no ip access-list {standard|extended<ACL-name>
    • richiamarle per modifica, a seconda dei casi, con:
         Router(config)#ip access-lists <ACL-number>

        oppure

         Router(config)#ip access-list {standard|extended} <ACL-name>       





    Commenti

    Post popolari in questo blog

    Introduzione alle reti 3 - Switch tecnologies

    In questa sezione verranno esaminate le Virtual LAN, prima espressione della tecnologia LAN Switching.    Virtual Local Area Network (VLAN) Come già detto, uno dei punti di forza di uno switch risiede nella possibilità di creare sotto-reti a basso costo. Le VLAN ( Virtual Local Area Network ) , in particolare,  rappresentano la risposta a quelle situazioni nelle quali, pur non disponendo di grandi risorse, si renda comunque necessario tener distinti due o più ambiti della stessa rete, o, come è usuale dire, suddividere in più parti un dominio di broadcast.  L'esempio tipico è quello di una (piccola) impresa che abbia necessità di tener separati sulla rete i propri device in base alle attività produttive. La rete potrebbe allora pensarsi composta di tante VLAN quante sono le attività aziendali, ciascuna VLAN potendo contenere al proprio interno l'hw destinato ad ogni specifica attività. Dal punto di vista sistemistico, una  VLAN  è costituita da un sottoinsiem

    Switch Commands - istruzioni Cisco HP Extreme "in a nutshell"

    Indirizzamento IP

    Obiettivo di questo articolo, senza pretesa di esaurire l'argomento, è quello di presentare in modo chiaro e comprensibile un argomento alle volte ostico: l'indirizzamento IP.  Questo, fra l'altro, consentirà di affrontare, anche agli utenti meno esperti, operazioni semplici quali   la configurazione di una scheda di rete con maggiore consapevolezza. Gli indirizzi IP Come noto, con IP  ci si riferisce ad uno dei protocolli di comunicazione di rete più affermati nel mondo delle telecomunicazioni:  Internet Protocol .   Un indirizzo IP è, in particolare, un codice binario che identifica univocamente un dispositivo di rete (una scheda ethernet, la porta di uno switch o di un router, etc.) all'interno di una rete di computer.  Di primaria importanza, nell'ambito dell'indirizzamento, è la lunghezza degli indirizzi, ovvero il numero di bit utilizzati per rappresentare un indirizzo di rete. Questo, evidentemente, perché con n bit sarà possibile ind