[Articolo] Il comando netstat in Windows: come interpretare le connessioni

Analizziamo oggi il comando netstat, uno dei principali comandi per fare troubleshooting delle reti in ambiente Windows e per controllare quali connessioni sono stabilite.

Vediamo i 5 casi di utilizzo più importanti e da tenere sott’occhio. […]

Difficoltà articolo (0->10): 6

Analizziamo oggi il comando netstat, uno dei principali comandi per fare troubleshooting delle reti in ambiente Windows e per controllare quali connessioni sono stabilite.

Vediamo i 5 casi di utilizzo più importanti e da tenere sott’occhio.

1 – Lista connessioni e porte in ascolto: netstat -an

Questo è il caso più semplice di utilizzo del comando che elenca tutte le connessioni comprese quelle attive (stato ESTABLISHED), e quelle con una porta in ascolto (stato LISTENING). L’opzione n non è essenziale, ma è secondo me utile perché effettua un DNS lookup andando a mostrare indirizzo IP al posto di ogni hostname. I possibili stati in cui una connessione può trovarsi sono quelli mostrati nella tabella seguente.

Stato Descrizione
CLOSED Indica che il server ha ricevuto dal client un messaggio ACK e la connessione è chiusa.
CLOSE_WAIT Indica che il server ha ricevuto dal client il primo FIN e la connessione è in fase di chiusura.
ESTABLISHED Indica che il server ha ricevuto dal client un SYN e la sessione è stata stabilita.
FIN_WAIT_1 Indica che la connessione è ancora attiva ma al momento non è usata e verrà chiusa.
FIN_WAIT_2 Indica che il client ha ricevuto l’ACK del server, dopo che il server ha ricevuto il primo FIN dal client.
LAST_ACK Indica che il server sta per inviare il proprio messaggio FYN.
LISTENING Indica che il server è in ascolto e pronto ad accettare una nuova connessione.
SYN_RECEIVED Indica che il server ha ricevuto il SYN inviato dal client.
SYN_SEND Indica che la connessione è attiva.
TIME_WAIT Indica che la connessione è in fase di chiusura, ma è ancora attiva.
screen_netstat1
netstat -an

Tutti zero nella colonna “Foreign” significa che ancora non ci sono indirizzi remoti, e pertanto la linea rappresenta un servizio in ascolto. Nel momento in cui un servizio riceve una connessione in ingresso, allora verrà stabilita una nuova connessione e dunque verrà mostrata una linea specifica all’interno della lista di connessioni.

Su questo sito si trova un’ottima spiegazione degli stadi e delle transizioni nel protocollo TCP, e il diagramma mostrato è veramente ben fatto:

TCP-StateTransitionDiagram-NormalTransitions

2 – Fully qualified domain name: netstat -f

Con questo parametro il comando mostra il nome intero (FQDN) di ogni indirizzo IP, risolvendolo internamente o se possibile esternamente.

netstat -f
netstat -f

3 – Tabella di routing: netstat -r

L’opzione permette di mostrare la tabella di routing del sistema, ed è l’analogo del comando route print.

netstat -r
netstat -r

4 – Processo per ogni porta: netstat -aon oppure nestat -b

In questo modo per ogni porta aperta nel sistema vengono elencati lo stato e l’identificativo del processo (PID) che ha aperto la porta. L’opzione b è migliore perché mostra direttamente l’eseguibile del processo in esecuzione ma richiede i permessi di amministratore per poter essere eseguita.

netstat -aon
netstat -aon

5 – Statistiche di rete: netstat -s -p IP

Mostra le statistiche di rete relative al livello 3, ossia IP. E’ possibile in questo modo vedere eventuali errori o problemi di connessione.

netstat -s -p IP
netstat -s -p IP

Sono utili anche la possibilità di mantenere la lista aggiornata ad un certo intervallo (ad esempio ogni 5 secondi):

nestat -an 5

e quella di salvare l’output del comando in un file:

netstat -an >> C:\connections_list.txt

roghan

Script per modificare MAC address in Linux

Ho scritto uno script bash che permette in Linux di manipolare l’indirizzo MAC di una scheda di rete, la cui operazione in gergo viene detta spoofing. Lo script può essere usato su tutte le principali distribuzioni e permette di cambiare l’indirizzo MAC con uno generato casualmente oppure con uno indicato dall’utente. Le istruzioni per eseguire lo script sono le seguenti: […]

Ho scritto uno script bash che permette in Linux di manipolare l’indirizzo MAC di una scheda di rete, la cui operazione in gergo viene detta spoofing. Lo script può essere usato su tutte le principali distribuzioni e permette di cambiare l’indirizzo MAC con uno generato casualmente oppure con uno indicato dall’utente. Le istruzioni per eseguire lo script sono le seguenti:

Usage: macs.sh [OPTIONS]
Spoof your wired or wireless network adapter with a new MAC address.
Options:
-r <interface>: spoof an interface with a random MAC address
-s <interface> <address>: spoof an interface with a new MAC address
-o <interface>: restore an interface with the original MAC address
-v <interface>: show the MAC address and the vendor of an interface
-p <vendor>: show the MAC prefix of a vendor
-a: show the MAC address of every network interface
-h: show this help

—————————————————————-
Examples:
sh macs.sh -r eth0
sh macs.sh -s wlan1 001122334455
sh macs.sh -s eth3 00:1C:39:FB:6C:88
sh macs.sh -o eth0
sh macs.sh -p IBM
sh macs.sh -p Microsoft

Tra le funzionalità vi è anche quella di visualizzare il vendor della scheda di rete, e tutti i prefissi MAC proprietari di uno specifico vendor.

Si tratta di uno script bash, dunque deve essere lanciato con l’interprete sh e con i privilegi di root. Vediamo alcuni esempi:

# sh macs.sh -r eth1 modifica l’indirizzo dell’interfaccia eth1 con uno random
# sh macs.sh -s eth1 00:0C:29:FB:6C:4B modifica l’indirizzo di eth1 con 00:0C:29:FB:6C:4B
# sh macs.sh -o eth3 ripristina l’indirizzo MAC reale di eth3
# sh macs.sh -v eth2 visualizza l’indirizzo MAC e vendor di eth2
# sh macs.sh -a visualizza gli indirizzi MAC e vendor di tutte
# sh macs.sh -p Microsoft visualizza i prefissi MAC proprietari Microsoft

Lo script è rilasciato con licenza GNU GPL v3, ed è scaricabile a questi link:

roghan

Come risolvere i problemi di connessione – parte 1

Spesso capita che la rete non funzioni, e ci chiediamo quale e dove possa essere il problema. E’ il nostro sistema che non va? E’ il server che non risponde? E’ la trasmissione che non funziona? Insomma ci sono sempre tante domande e non sempre è immediato trovare la risposta, e finiamo per cambiare parametri e impostazioni nel tentativo di ripristinare la connessione! Gli utenti più inesperti poi finisco per installare svariati tipi di software che promettono di ripristinare la connessione e di sistemare tutto, come questo Connectivity fixer. Non ci sono programmi più inutili e magari dannosi (chi ha detto spyware?! Io no ;-)…). […]

Spesso capita che la rete non funzioni, e ci chiediamo quale e dove possa essere il problema. E’ il nostro sistema che non va? E’ il server che non risponde? E’ la trasmissione che non funziona? Insomma ci sono sempre tante domande e non sempre è immediato trovare la risposta, e finiamo per cambiare parametri e impostazioni nel tentativo di ripristinare la connessione! Gli utenti più inesperti poi finisco per installare svariati tipi di software che promettono di ripristinare la connessione e di sistemare tutto, come questo Connectivity fixer. Non ci sono programmi più inutili e magari dannosi (chi ha detto spyware?! Io no ;-)…).

Questo post rappresenta invece la prima parte di un altro post che avevo scritto qualche tempo fa, in cui spiegavo come fare troubleshooting della rete e verificare il collegamento ad Internet. In questo articolo invece esaminiamo il problema partendo dalla connessione alla rete locale, e senza far uso di risoluzioni DNS.

 

Prendiamo come esempio l’architettura di rete visibile in figura, e supponiamo di essere il sistema Bob con indirizzo IP 172.17.10.3 e di voler contattare la macchina Server con indirizzo 172.17.30.2. Nell’immagine non ho specificato le subnet per semplificare il tutto e renderlo fruibile anche a chi può avere meno conoscenze informatiche, comunque possiamo assumere che la subnet sia /24, uguale per ogni indirizzo.

diagramma_rete
Diagramma di rete

Come è visibile dal grafico si tratta di una piccola rete, tuttavia il problema può facilmente essere esteso ad una rete molto più grande come anche ad Internet (semplicemente non ci sarà un solo router tra sorgente e destinazione ma una serie di N dispositivi, come backbone, …). Vediamo i passi da fare per controllare il funzionamento della rete dal punto di vista di Bob:

  1. Test del loopback. Apriamo un terminale (prompt cmd in Windows, shell in Linux e MacOS) e facciamo ping verso 127.0.0.1.
    $ ping 127.0.0.1
    PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
    64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.773 ms
    64 bytes from 127.0.0.1: icmp_req=2 ttl=64 time=0.125 ms
    64 bytes from 127.0.0.1: icmp_req=3 ttl=64 time=0.080 ms
    64 bytes from 127.0.0.1: icmp_req=4 ttl=64 time=0.083 ms
    --- 127.0.0.1 ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3001ms
    rtt min/avg/max/mdev = 0.080/0.265/0.773/0.293 ms

    Questo è l’indirizzo di loopback e se il risultato è positivo significa che lo stack TCP/IP è stato inizializzato correttamente. In caso invece di fallimento il servizio che gestisce lo stack TCP/IP deve essere ripristinato all’interno del sistema operativo. Per effettuare il ripristino dello stack in Windows è possibile consultare questo link, mentre per Linux quest’altro.

  2. Test della scheda di rete. Adesso facciamo ping verso l’indirizzo IP del sistema locale, nell’esempio 172.17.10.3.
    $ ping 172.17.10.3
    PING 172.17.10.3 (172.17.10.3) 56(84) bytes of data.
    64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.111 ms
    64 bytes from 127.0.0.1: icmp_req=2 ttl=64 time=0.079 ms
    64 bytes from 127.0.0.1: icmp_req=3 ttl=64 time=0.080 ms
    64 bytes from 127.0.0.1: icmp_req=4 ttl=64 time=0.078 ms
    --- 127.0.0.1 ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3001ms
    rtt min/avg/max/mdev = 0.078/0.087/0.111/0.013 ms

    Se con il ping vengono ricevute le risposte significa che la NIC funziona correttamente così come i driver/moduli di sistema, ma ciò non indica che la rete è esente da problemi quali cavi rotti o collegamenti interrotti. Un esito invece negativo potrebbe essere indice di scheda di rete guasta o di driver/moduli non installati correttamente. Provate a riavviare il sistema e, su Windows, a reinstallare i driver, mentre su Linux ad aggiornare il kernel e riavviare moduli e servizi secondo le istruzioni a questo link.

  3. Test del gateway. Ora è in turno del gateway/router. Effettuate il ping verso il default gateway per testare la comunicazione nella rete locale, nell’esempio 172.17.10.1.
    $ ping 172.17.10.1
    PING 172.17.10.1 (172.17.10.1) 56(84) bytes of data.
    64 bytes from 192.168.139.2: icmp_req=1 ttl=128 time=0.255 ms
    64 bytes from 192.168.139.2: icmp_req=2 ttl=128 time=0.237 ms
    64 bytes from 192.168.139.2: icmp_req=3 ttl=128 time=0.241 ms
    64 bytes from 192.168.139.2: icmp_req=4 ttl=128 time=0.219 ms
    --- 192.168.139.2 ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3004ms
    rtt min/avg/max/mdev = 0.219/0.238/0.255/0.012 ms

    Un esito negativo significa che c’è un problema o nella trasmissione dei dati (cavo rotto/scollegato), o nel default gateway che non è in grado di elaborare le richieste, oppure un blocco delle richieste da parte di un firewall o altro dispositivo interconnesso tra Bob e il default gateway (switch, hub, AP, …).

  4. Test del server remoto. Infine, se tutti i 3 punti precedenti hanno avuto esito positivo, testiamo la connessione verso il server remoto, nel nostro esempio  172.17.30.2.
    $ ping 172.17.30.2
    PING 172.17.30.2 (172.17.30.2) 56(84) bytes of data.
    64 bytes from 172.20.0.1: icmp_req=1 ttl=128 time=1.46 ms
    64 bytes from 172.20.0.1: icmp_req=2 ttl=128 time=0.913 ms
    64 bytes from 172.20.0.1: icmp_req=3 ttl=128 time=2.40 ms
    64 bytes from 172.20.0.1: icmp_req=4 ttl=128 time=0.714 ms
    --- 172.20.0.1 ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3005ms
    rtt min/avg/max/mdev = 0.714/1.375/2.407/0.657 ms

    Se l’esito è negativo significa che il problema è da ricercarsi nella rete remota. Inoltre, nel caso in cui sia possibile raggiungere la rete remota con il ping, sarebbe ideale poter replicare i test partendo dal server remoto verso il sistema sorgente.

Nel caso di connessione a Internet (e non locale) anche se tutti e 4 i punti hanno avuto esito positivo la comunicazione potrebbe non funzionare. In questo caso il problema potrebbe essere il servizio DNS, e rimando alla seconda parte dell’articolo.

roghan

[Articolo] Vantaggi di uno switch layer 2/3

In questo articolo vedremo le differenze che c’è tra uno switch che supporta solo il livello 2 e uno che supporta anche le funzionalità del livello 3, e soprattutto in quali circostanze è consigliato usare l’uno e in quali l’altro.

Difficoltà articolo (0->10): 4

In questo articolo vedremo le differenze che c’è tra uno switch che supporta solo il livello 2 e uno che supporta anche le funzionalità del livello 3, e soprattutto in quali circostanze è consigliato usare l’uno e in quali l’altro.

Prima di addentrarci nell’argomento è bene ricordare brevemente cosa sono le VLAN. Il termine VLAN è acronimo di Virtual Local Area Network, ed indica una rete locale di dispositivi raggruppati in modo logico, ossia senza alcun legame specifico con la posizione fisica. Ad esempio possono appartenere ad una stessa VLAN dispositivi connessi a switch differenti. Inoltre le VLAN operano a livello 2, mentre con le LAN si opera a livello 3.

Nel momento in cui viene fatto il design di un ambiente con VLAN, è opportuno che i dispositivi di una stessa VLAN facciano parte anche della stessa subnet. Questo però non significa che una VLAN è una subnet, e che una subnet è una VLAN! Infatti come ho detto prima, le VLAN sono un concetto relativo al livello 2, mentre le subnet al livello 3 ossia a quello IP. E’ abbastanza ragionevole il fatto che gli stessi device all’interno di una VLAN debbano appartenere anche alla stessa subnet affinché possano comunicare tra di loro.

Studiamo adesso la seguente figura, e supponiamo che un computer della VLAN 10 voglia comunicare con uno della VLAN 20. E’ da notare che i computer delle VLAN si trovano correttamente anche su subnet diverse.

VLAN

Il pc nella VLAN 10, prima di inviare il pacchetto controlla se il destinatario è nella stessa subnet oppure no, e poiché si trova su una differente, il pacchetto deve essere inviato al default router. In pratica il pacchetto viene inviato allo switch, e poi inoltrato al router. A sua volta il router analizza il pacchetto controllando il destinatario, ricostruisce il pacchetto e lo invia indietro allo switch fino al destinatario della VLAN 20.

Come è facile immaginare, quando i pacchetti inviati sono tanti questo processo è oneroso sia in termini di banda utilizzata sia in termini di latenza. E’ qui che entrano in gioco gli switch di livello 3, o meglio di livello 2 e 3, chiamati anche switch multilivello. Questi sono difatti in grado di operare scelte di routing, supportando svariati tipi di protocolli (RIP, OSPF, BGP, …). In una rete con switch di questo tipo infatti i pacchetti non vengono inviati al router per decidere l’instradamento, ma è lo switch stesso ad avere la logica decisionale e a sapere dove inviare i messaggi. Nel mondo Enterprise ormai quasi ogni switch supporta praticamente anche il livello 3, o quantomeno ha le funzionalità al suo interno, a volte utilizzabili dopo aver acquistato la relativa licenza.

L’utilizzo degli switch di vecchio stampo che supportano solo il livello 2 è pertanto relegato ad ambienti piccoli/casalinghi, dove non si hanno necessità particolari e dove i dispositivi interconnessi sono pochi. In questo caso solitamente non si ha bisogno neppure di particolari performance, e l’aumento della latenza o una minimale perdita di banda non costituiscono grandi problemi, diversamente da ambienti critici e di fascia medio/alta.

Dunque riepilogando ecco i pro e i contro per l’utilizzo di switch di livello 2 o 2/3:

switch di “solo” livello 2:

  • pro:
    • prezzo competitivo
    • configurazione minimale
  • contro:
    • calo prestazionale al crescere della dimensione della rete
    • sicurezza minore avendo una rete piatta con tutti i dispositivi tra loro interconnessi

switch di livello 2/3:

  • pro:
    • prestazione maggiori con una suddivisione e configurazione accorta della rete (VLAN, subnet, …)
    • maggiore sicurezza di tutta la rete
  • contro:
    • è richiesta una maggiore conoscenza delle reti e più tempo per la configurazione di tutto
    • costo degli apparati maggiore

roghan

Confronto tra i principali protocolli di routing

Ho messo a confronto in un file excel, e riassunto, le caratteristiche principali dei seguenti protocolli di routing: RIP, RIPv2, IGRP, EIGRP, e OSPF.

Potete scaricare liberamente il file:

download diretto

roghan

Reti locali e scelta degli indirizzi IP

L’idea di questo articolo nasce da una discussione iniziata su un noto forum del web. In particolare vedremo in che modo devono essere scelti gli indirizzi IP all’interno di una LAN e il perché di questa scelta. Tipicamente all’interno di una rete locale vengono impiegati quegli indirizzi che sono chiamati “privati”, appartenenti ad una delle 3 categorie […]

L’idea di questo articolo nasce da una discussione iniziata su un noto forum del web. In particolare vedremo in che modo devono essere scelti gli indirizzi IP all’interno di una LAN e il perché di questa scelta. Tipicamente all’interno di una rete locale vengono impiegati quegli indirizzi che sono chiamati “privati”, appartenenti ad una delle 3 categorie:

  • 10.0.0.0-10.255.255.255
  • 172.16.0.0-172.31.255.255
  • 192.168.0.0-192.168.255.255

Per una descrizione sul funzionamento degli indirizzi IP e sulla differenza tra indirizzi pubblici e privati leggete quest’altro articolo.

lan

Tutti noi che abbiamo in casa un router ADSL, sia wireless che con connessione via cavo, facciamo inconsapevolmente uso degli indirizzi IP privati. Infatti spesso i router assegnano ai dispositivi connessi gli indirizzi compresi tra 192.168.1.0 e 192.168.1.255 (estremi esclusi), mentre per la connessione di management del router viene utilizzato il canonico 192.169.1.1. Ovviamente non tutti i router utilizzano esattamente questo range, infatti potrebbe essere invece utilizzato 192.168.0.0-192.168.0.255, o altri ancora comunque sempre facenti parte delle 3 categorie di indirizzi privati. Vediamone adesso il motivo.

Quali implicazioni ci sarebbero ad usare un range differente da quello degli  indirizzi privati? Ad esempio cosa succede se in una LAN vengono assegnati ai PC gli indirizzi nel range 17.18.1.0-17.18.1.255? Se la LAN non è connessa ad Internet teoricamente tutto potrebbe funzionare tranquillamente, in quanto il dialogo tra i dispositivi della LAN avverrebbe come con qualunque altro indirizzo IP (privato o non). Il problema nasce al momento che  la LAN viene connessa ad Internet. Riprendendo il nostro esempio, se la LAN con indirizzi nel range 17.18.1.0-17.18.1.255 accedesse ad Internet, non sarebbe in grado di collegarsi ai dispositivi sul web che hanno veramente quegli indirizzi. Supponiamo che un PC della LAN, con indirizzo 17.18.1.10 voglia accedere ad un server su Internet con IP 17.18.1.200: a livello di routing, il PC che effettua la richiesta crederà di essere già all’interno della subnet del server, quindi tutte le richieste rimarranno nella rete locale senza essere inviate su Internet dal router.

Conclusione: dovendo assegnare indirizzi IP ad una rete locale è bene usare solamente gli indirizzi IP privati, in modo da non complicarsi la vita, anche se teoricamente in una LAN scollegata da Internet potrebbero essere usati anche indirizzi appartenenti ad altri range diversi da quelli privati. Più in generale, quest’ultimo caso lo consiglio solo per ambienti di test, e quando si vogliono fare esperimenti con le reti ;-), ma non per un uso prolungato.

roghan

1000 download per il mio manuale sull’anonimato!!!

Anonimato

E’ stata appena superata la soglia dei 1000 download per il mio manuale sull’anonimato in rete, “Come nascondere l’identità in Rete”! Grazie davvero a tutti!!!!!! Anche se rispetto ai numeri che si trovano solitamente sul web è un valore minimale, è per me una grande soddisfazione :-)!! Per chi fosse interessato, lo può liberamente scaricare da questo link:

Download manuale

Matteo

Modalità promiscua sotto i riflettori

In questo articolo spiegherò cos’è la modalità promiscua, come funziona, in quali situazioni ha senso utilizzarla, e quando invece è del tutto inutile.

Vediamo innanzitutto cos’è un indirizzo MAC e come funziona la modalità promiscua. Ogni scheda di rete (o NIC) di un pc/server ha associato direttamente nell’hardware un codice alfanumerico chiamato indirizzo MAC (Media Access Control), che è costituito da 48 bit univoci definiti dal produttore della scheda di rete. Di default, ogni scheda è configurata in modo tale da accettare solamente i pacchetti che sono destinati alla scheda stessa, rifiutando tutti quelli destinati ad indirizzi MAC differenti. E’ adesso che entra in gioco la modalità promiscua :-). Questa è una tecnica che permette di abilitare una scheda di rete alla ricezione di TUTTI i pacchetti in transito sulla rete a cui è collegata, non solo quelli destinati alla scheda di rete in oggetto. Mettere la propria scheda in modalità promiscua, e più in generale osservare il traffico in transito all’interno di una rete, prende il nome nel gergo informatico di sniffing (sniffare in italiano), tradotto letteralmente con “annusare, fiutare”. Da notare però che questa modalità è sempre disattivata al momento che una scheda di rete esce di fabbrica (per ovvie ragioni ;-)).

In questo articolo spiegherò cos’è la modalità promiscua, come funziona, in quali situazioni ha senso utilizzarla, e quando invece è del tutto inutile.

Vediamo innanzitutto cos’è un indirizzo MAC e come funziona la modalità promiscua. Ogni scheda di rete (o NIC) di un pc/server ha associato direttamente nell’hardware un codice alfanumerico chiamato indirizzo MAC (Media Access Control), che è costituito da 48 bit univoci definiti dal produttore della scheda di rete. Di default, ogni scheda è configurata in modo tale da accettare solamente i pacchetti che sono destinati alla scheda stessa, rifiutando tutti quelli destinati ad indirizzi MAC differenti. E’ adesso che entra in gioco la modalità promiscua :-). Questa è una tecnica che permette di abilitare una scheda di rete alla ricezione di TUTTI i pacchetti in transito sulla rete a cui è collegata, non solo quelli destinati alla scheda di rete in oggetto. Mettere la propria scheda in modalità promiscua, e più in generale osservare il traffico in transito all’interno di una rete, prende il nome nel gergo informatico di sniffing (sniffare in italiano), tradotto letteralmente con “annusare, fiutare”. Da notare però che questa modalità è sempre disattivata al momento che una scheda di rete esce di fabbrica (per ovvie ragioni ;-)).

Spesso si pensa che sniffare il traffico possa rientrare nei crimini informatici, anzi in molti contesti viene proprio etichettato come “attacco hacker”. Tuttavia, l’azione di osservare il traffico può al massimo rientrare nella categoria di attacchi passivi, se proprio vogliamo essere pignoli, ed è del tutto legale. E’ un po’ come se una persona si mettesse davanti alla casa di qualcuno ad aspettare: ogni volta che arriva il postino osserva la posta prima che venga imbucata. E’ chiaro che se la posta ricevuta è chiusa in una busta, il curioso non potrà leggere niente, ma se ci sono delle cartoline ad esempio tutto quello che vi è scritto potrà essere tranquillamente letto. Ciò che invece è illegale è quando si penetra in un sistema, spesso dopo aver prima sniffato i dati e aver ottenuto le credenziali di accesso. In definitiva può star tranquillo chiunque abbia usato almeno una volta nella sua vita qualche software per sniffare il traffico come Wireshark.

Adesso che sapete cosa permette di fare la modalità promiscua, vediamo in quali contesti ha senso utilizzarla, e in quali invece è del tutto inutile.

Come detto, la modalità promiscua permette di catturare tutti i pacchetti in transito in una rete, e poiché il protocollo MAC opera a livello 2, ha senso utilizzarla solamente nella stessa sottorete in cui ci troviamo (in linguaggio tecnico, nello stesso dominio di broadcast). Ciò significa che se vogliamo sniffare il traffico ci dobbiamo trovare necessariamente all’interno di una LAN, in cui saranno presenti dispositivi switch/hub ad esempio, mentre non è possibile sniffare traffico su una rete di dimensioni maggiori come Internet. In parole povere, per sniffare il traffico dobbiamo essere fisicamente “vicini” alla vittima o alle vittime, cosa tipicamente verificata in una rete locale.

In realtà già con uno switch la sola modalità promiscua è praticamente inutile (a meno di aggiungere tecniche di attacco come l’ARP poisoning). Lo switch, rispetto ad un hub che invia ogni pacchetto ad ogni porta, memorizza dinamicamente al suo interno le porte su cui sono presenti determinati indirizzi MAC, o meglio associa ogni porta ad uno o più indirizzi MAC “permessi”. Il traffico diretto ad un particolare host viene quindi indirizzato sulla specifica porta in modo che il dominio di collisione non corrisponda più all’intera rete. In questo caso ogni host collegato allo switch riceve solo il proprio traffico al quale può sommarsi qualche raro pacchetto inviato in broadcast per determinare la corrispondenza tra indirizzo MAC e porta dello switch. Dunque una scheda di rete in modalità promiscua in uno scenario come questo serve a ben poco, senza l’aggiunta, come già detto, di altre tecniche. Da tener conto che anche attacchi di ARP poisoning possono avere esiti diversi a seconda della grado di sofisticazione e della configurazione dello switch (un conto è uno switch Cisco, un altro uno switch acquistato all’Ipercoop :-().

In linea generale si può dire che una cosa analoga valga anche per le VLAN. Sono possibili attacchi di ARP poisoning all’interno di una stessa VLAN, mentre è decisamente più improbabile un attacco che permetta di compromette un host appartenente ad una VLAN diversa. In definitiva, la messa in ascolto di una scheda di rete con il solo uso della modalità promiscua è utile solo con dei semplici ed obsoleti hub, ed è invece del tutto inutile con gli switch.

Per approfondimenti, consiglio di visitare i link seguenti:

roghan

Lavorare nel settore “sicurezza informatica”

Da quando ho finito l’università e mi sono laureato ho iniziato seriamente ad interessarmi al settore della sicurezza in rete, o più in generale della sicurezza informatica. Non che prima non mi interessasse questo ambito, anzi, mi attirava molto il mondo un po’ underground degli hacker, degli worm e dei cavalli di troia, quello visto nei film in cui il ragazzino adolescente riesce in pochi attimi ad entrare in qualche mega computer della CIA. Il problema è che non avevo mai avuto veramente il tempo ma anche la voglia durante tutto il periodo universitario di interessarmi a questo mondo, dato che il carico di studio era davvero moooooooolto elevato! Solo con la tesi finale sono riuscito a scegliere un argomento che mi interessasse davvero (strumenti per l’anonimato in Rete), e da lì ho capito quale sarebbe stato il mio futuro :-D… Finita l’università ho deciso poi di cercare un master/corso che avesse come argomento principale proprio la sicurezza, ma data l’impossibilità di frequentare un master a Roma o Milano (quota dai 6000/7000 euro in su più i soldi necessari per vitto e alloggio!) ho optato per un corso disponibile a Firenze: il Cisco CCNA Security. […]

(in costante aggiornamento)

Da quando ho finito l’università e mi sono laureato ho iniziato seriamente ad interessarmi al settore della sicurezza in rete, o più in generale della sicurezza informatica. Non che prima non mi interessasse questo ambito, anzi, mi attirava molto il mondo un po’ underground degli hacker, degli worm e dei cavalli di troia, quello visto nei film in cui il ragazzino adolescente riesce in pochi attimi ad entrare in qualche mega computer della CIA.

Il problema è che non avevo mai avuto veramente il tempo ma anche la voglia durante tutto il periodo universitario di interessarmi a questo mondo, dato che il carico di studio era davvero moooooooolto elevato! Solo con la tesi finale sono riuscito a scegliere un argomento che mi interessasse davvero (strumenti per l’anonimato in Rete), e da lì ho capito quale sarebbe stato il mio futuro :-D… Finita l’università ho deciso poi di cercare un master/corso che avesse come argomento principale proprio la sicurezza, ma data l’impossibilità di frequentare un master a Roma o Milano (quota dai 6000/7000 euro in su più i soldi necessari per vitto e alloggio!) ho optato per un corso disponibile a Firenze: il Cisco CCNA Security. Solo dopo aver iniziato il corso però ho compreso due cose: la prima è che il corso era rivolto unicamente agli amministratori di rete, in modo da fornire loro delle basi relative alla sicurezza sui router/switch; secondo che era necessaria la certificazione CCNA per sostenere quella relativa alla security :-O, e in più la notevole difficoltà che ho incontrato a seguire il corso! Le conoscenze fornitemi dalla laurea non erano proprio sufficienti :-(, e ho dovuto faticare non poco per sostenere l’esame per la certificazione… Comunque ora che ho iniziato a muovere i primi passi nel settore IT posso cercare di fare una lista di quelle che sono le figure principali che ruotano attorno al settore della sicurezza informatica:

  • (Network) Security Administrator: è la persona che lavora parallelamente all’amministratore di rete, e si occupa di rendere sicura una certa rete configurando firewall/ACL, gestendo le autenticazioni degli utenti, crittografando le connessioni, e più in generale opera sulle configurazioni di router/switch/server/pc al fine di rendere la rete sicura. Una scheda che descrive il profilo (anche se orientato a soluzioni Microsoft) è disponibile al link profilo Security Administrator.
  • (Network) Security Manager:  è colui che si occupa di configurare  l’infrastruttura di rete e di applicare le procedure di sicurezza definite dall’azienda per cui lavora e conformi alle misure normative italiane. Inoltre deve garantire la sicurezza e la disponibilità dei dati, monitorare le performance, i database e gli eventi sospetti. E’ una figura centrale nell’infrastruttura informatica aziendale in quanto si occupa di gestire trasversalmente le procedure e le diverse soluzioni implementate con il compito specifico di assicurare quotidianamente l’affidabilità e la sicurezza dell’intero sistema informatico. Rispetto al Network Security Aministrator è una figura dalla preparazione più ampia (non solo configurazione di router/server).
  • Penetration Tester: è colui che determina il reale grado di sicurezza di una rete, cercando di violarla con una grande varietà di attacchi e non. L’obiettivo è quello di individuare eventuali vulnerabilità sfruttabili da terzi per ottenere accessi non autorizzati ai servizi e ai sistemi analizzati. Oltre ai problemi di sicurezza, devono essere rilevati, quali possibili punti deboli, i problemi relativi alla configurazione, che incidono sulla robustezza e le performance del sistema, e gli errori di progettazione della rete. A volte una cattiva configurazione è più pericolosa di un bug. Una descrizione di questo profilo e di cosa sono i penetration test è al link Penetration Tester.
  • (Network) Security Consultant: è il libero professionista, o colui che lavora assieme ad un piccolo team di persone (in genere da 2 a 4) o anche come dipendente di un’azienda, che viene ingaggiato da terze parti per configurare e gestire la sicurezza delle reti o dei sistemi.

Inoltre ci sono altre figure che possono operare a stretto contatto con la sicurezza, come:

  • System Administrator: è l’esperto di sistemi, come Linux e Windows, generalmente lato server, con buone conoscenze spesso anche di ambienti virtualizzati, di networking, e di sicurezza. Si occupa di amministrare i sistemi in questione, configurandone spesso anche gli aspetti di networking e hardening.
  • Network Administrator: è colui che gestisce tutto ciò che riguarda le reti, dalla configurazione di router e switch, a quella dei server, dei proxy, dei firewall, sia dal lato LAN che WAN. Oltre a ciò, molto spesso si occupa anche della parte di sicurezza inerente alle reti che gestisce, o comunque lavora a stretto contatto con le figure che si occupa di sicurezza di rete.

roghan

Configurare la rete

Sotto Linux, i due comandi principali che permettono di controllare e configurare i parametri di rete sono due: ifconfig e route. Altri due comandi utili, che però non verranno trattati in questo howto, sono iwconfig, per la gestione specifica delle schede di rete wireless, e il comando ip, che è una sorta di comando universale con funzionalità simile a ifconfig e route. Vediamo in dettaglio cosa permettono di fare ifconfig e route.
Il comando ifconfig serve sia per ottenere informazioni sulle configurazioni delle schede di rete, sia per configare le schede stesse. Per visualizzare le configurazioni è necessario digitandorlo da solo senza alcun parametro. […]

Sotto Linux, i due comandi principali che permettono di controllare e configurare i parametri di rete sono due: ifconfig e route. Altri due comandi utili, che però non verranno trattati in questo howto, sono iwconfig, per la gestione specifica delle schede di rete wireless, e il comando ip, che è una sorta di comando universale con funzionalità simili a ifconfig e route. Vediamo in dettaglio cosa permettono di fare ifconfig e route.

Il comando ifconfig serve sia per ottenere informazioni sulle configurazioni delle schede di rete, sia per configare le schede stesse. Per visualizzare le configurazioni è necessario digitandorlo da solo senza alcun parametro. Un esempio di output è il seguente

# ifconfig
eth0 Link encap:Ethernet HWaddr 00:1B:24:27:59:84
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)
Memory:da000000-da020000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:41 errors:0 dropped:0 overruns:0 frame:0
TX packets:41 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4740 (4.6 KiB) TX bytes:4740 (4.6 KiB)
wlan1 Link encap:Ethernet HWaddr 00:1B:77:22:CD:2D
inet addr:172.20.100.77 Bcast:172.20.100.255 Mask:255.255.255.0
inet6 addr: fe80::21b:77ff:fe22:cd2d/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2805 errors:0 dropped:0 overruns:0 frame:0
TX packets:2720 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1993718 (1.9 MiB) TX bytes:477093 (465.9 KiB)

Come è visibile nell’esempio precedente, solitamente le interfacce mostrate da ifconfig sono le seguenti:

  • eth0, eth1, … sono le schede di rete presenti sulla macchina;
  • wlan1, … sono le interfacce wireless;
  • lo è l’interfaccia logica, denominata anche di loopback, e a cui è assegnato l’indirizzo IP 127.0.0.1. Questa interfaccia indica la macchina stessa e deve essere sempre attiva, anche se il sistema non è collegato ad alcuna rete.

Nel caso in cui si voglia usare ifconfig per la configurazione di una scheda di rete, è necessario prima disattivare la scheda che si vuole andare a modificare, e solo dopo inserire i nuovi parametri. La sintassi è la seguente:

# ifconfig <interfaccia> <indirizzo_ip> down
# ifconfig <interfaccia> <indirizzo_ip> netmask <subnet_mask> broadcast <indirizzo_broadcast>

Il comando route invece serve per gestire l’instradamento dei dati, sia per visualizzare le impostazioni correnti del sistema, sia per definirne di nuove. Senza alcun parametro, o con il parametro n (per avere in output dei valori numerici), mostra le tabelle di instradamento attuali. Ecco un esempio:

# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
172.20.100.0 0.0.0.0 255.255.255.0 U 2 0 0 wlan1
0.0.0.0 172.20.100.254 0.0.0.0 UG 0 0 0 wlan1

Importante, nonché utile, è l’opzione con cui si può definire un nuovo default gateway (per tutti gli indirizzi):

# route add default gw <indirizzo_ip>

Di seguito viene mostrato un semplice esempio. Supponiamo di voler configurare la scheda di rete eth0 con l’indirizzo IP 192.168.1.4, maschera di rete 255.255.255.0, e gateway 192.168.1.1. I comandi da digitare sono i seguenti:

# ifconfig eth0 down
# ifconfig eth0 192.168.1.4 netmask 255.255.255.0 broadcast 192.168.1.255
# ifconfig eth0 up
# route add default gw 192.168.1.1

Con pochi e semplici comandi è possibile configurare una qualsiasi scheda di rete. Dopo aver apportato delle modifiche è buona norma riavviare il servizio che si occupa delle rete, anche se non è sempre necessario. Ecco come fare sulle distro Red Hat-like:

# service network restart

e sulle distro Debian-like:

# /etc/init.d/networking restart

Link di approfondimento:

http://www.coresis.com/extra/linuxcorsobase/12-1.htm

http://www.firenze.linux.it/~piccardi/corso/netadmin/node12.html

roghan