Catturare traffico di rete su Vmware


A volte è necessario catturare il traffico di un’interfaccia di rete per fare debugging ma non è possibile accedere direttamente alla VM o non è possibile installare del software di cattura.

Grazie a degli strumenti messi a disposizione del virtualizzatore è possibile catturare il traffico a livello di host ESXi. La cosa è semplice basta attivare SSH collegarsi all’host (via SSH) e usare questi comandi.

Supponiamo di dover catturare il traffico di rete generato e destinato alla VM chiamata portale01.

esxcli network vm list restituisce la lista delle virtual machine accese sull’host con il relativo World ID. World ID ci serve per recuperare il port id associato ad una scheda di rete virtuale.

[root@hostesxi01:~] esxcli network vm list
World ID  Name                     Num Ports  Networks
--------  -----------------------  ---------  -------------------------------------------------
 3793931  client_w10                       1  dvportgroup-157
 3767983  srv01                      	   1  dvportgroup-248
 3712391  myvm01	                   1  dvportgroup-248
 3483210  client_w7	                   1  dvportgroup-248
 3672782  portale01                        1  dvportgroup-248
 3463560  portale02		           1  dvportgroup-248

esxcli network vm port list ci restituisce il port id partendo dal World ID che abbiamo ottenuto dal comando precedente. Aggiungiamo al comando l’opzione -w seguita dal World ID associato alla VM portale01.

[root@hostesxi01:~] esxcli network vm port list -w 3463560
   Port ID: 47106373
   vSwitch: dvsGestione
   Portgroup: dvportgroup-248
   DVPort ID: 6374
   MAC Address: 00:50:56:82:ab:12
   IP Address: 0.0.0.0
   Team Uplink: vmnic2
   Uplink Port ID: 67108168
   Active Filters:

Qui possiamo notare che il port id è 47106373, quindi possiamo finalmente usare questo numero per avviare la cattura dei dati che verranno messi in un file chiamato portale02-dump.pcap che si troverà nella directory /tmp dell’host esxi:

pktcap-uw --switchport 47106373 -o /tmp/portale02-dump.pcap

Il comando può essere interrotto premendo la combinazione di tasti CTRL +C. Poi il file può essere prelevato con un programma come Filezilla o Winscp e analizzato con Wireshark o altri strumenti.

Miniedit, l’interfaccia grafica per Mininet

Mininet è uno strumento utile a costruire, su un computer oppure su una virtual machine, una rete virtuale realistica composta da host, switch e programmi vari. Uno degli ambiti in cui Mininet è molto usato è la sperimentare di sistemi OpenFlow e Software-Defined Networking (SDN).
MiniEdit, invece, è un’interfaccia grafica basata su Python e TK che consente di disegnare delle reti da usare con Mininet usando un tool con interfaccia grafica.

Il software può essere installato e configurato sullo stesso sistema in cui c’è Mininet. Nel nostro caso, Mininet è installato su Ubuntu 20.04 e oltre alle dipendenze di quest’ultimo è necessario installare alcuni pacchetti aggiuntivi come python-tk:

sudo apt install python-tk

Qualora non lo avessimo già fatto precedentemente in fase di installazione di Mininet, è opportuno installare anche openvswitch-testcontroller e creare un link per poter testare la nostra topologia personalizzata.

sudo apt-get install openvswitch-testcontroller
sudo ln /usr/bin/ovs-testcontroller /usr/bin/controller

Poi per lanciare MiniEdit, si può usare il comando python2 (attualmente python3 non funziona):

sudo python2 ~/mininet/examples/miniedit.py

Per disegnare una semplice rete, basta selezionare dal menù laterale gli oggetti: host, switch, controller e altro, da collegare con un link. Per esempio questo è il risultato della progettazione di una semplice rete.

Per modificare lo script del disegno che si potrà esportare, basta andare nel menù Edit, Preferences e cambiare qua le varie impostazioni:

E’ possibile optare per una configurazione che supporti versioni più recenti di OpenFlow, oppure uno switch diverso dal classico Open vSwitch, nonchè aggiungere il supporto per un controller di rete esterno a Mininet. E’ utile attivare la casella Start CLI.

Per esportare la configurazione in uno script python, andare nel menù, File e selezionare Export level 2 script.

Ora per lanciare il tool mininet con la topologia personalizzata è sufficiente lanciare il comando:

sudo python2 miatopologia.py

Assegnare un IP statico in Debian Jessie


Un indirizzo IP statico è un indirizzo IP che non viene assegnato dinamicamente ad un’interfaccia di rete ma è viene salvato nella configurazione del sistema in modo che ogni volta che il computer viene accesso, tale indirizzo riamnga sempre quello.

Nella maggior parte delle situazioni non è importante che lo stesso IP address rimanga associato a una ben determinata scheda di rete (e quindi al PC che la ospita), ma in alcuni casi è necessario.

Basta pensare ad un server che ospita un database come Oracle, il quale cambio di IP della scheda di rete implica una lista di operazioni da svolgere non indifferente.
Anche un web server che ospita siti web si troverebbe in difficoltà: bisognerebbe variare tutti i DNS dei siti ogni volta che cambia indirizzo. Continua a leggere

Esporre servizi Docker all’esterno


Nel precedente articolo abbiamo visto come è semplice installare Docker su Debian Jessie. Abbiamo altresì installato e avviato il nostro primo container.

Ora vogliamo usare Docker in modo più “intelligente” e utile. Supponiamo di aver installato un web server o di aver attivato un servizio da esporre all’esterno tramite connessione tcp o Internet. Qui le cose si complicano perché Docker non permette di esporre servizi esterni di default (out-of-box).

Docker essenzialmente crea un’interfaccia virtuale chiamata docker0 che affianca la più nota eth0.

Continua a leggere

Configurare un IP fisso per il Raspberry Pi

Il Raspberry Pi è un computer di dimensioni carta di credito che si collega al televisore e una tastiera. Si tratta di un piccolo computer che può essere utilizzato in modi molto differenti. C’è chi lo usa come centro multimediale per guardare film o ascoltare musica, chi lo adopera per imparare a programmare o ad utilizzare Linux.

Raspbian è un sistema operativo (OS) libero basato su Debian ottimizzato per l’hardware Raspberry Pi. Raspbian fornisce più di un semplice OS: viene distribuito con oltre 35.000 pacchetti software pre-compilati in un bel formato per una facile installazione sul Raspberry Pi.

L’impostazione iniziale prevede che Raspberry Pi prenda un indirizzo di rete automatico tramite DHCP. Tuttavia questa soluzione potrebbe non essere la migliore per un uso intensivo del dispositivo.

Continua a leggere

Installazione di Nagios


Nagios è una suite di strumenti che sono veramente utili per tenere sotto controllo il funzionamento di parecchi servizi e demoni: è possibile monitorare server web, database, dischi sia su Linux sia su Windows.

Check_MK è un plug-in, relativamente nuovo, di Nagios per il recupero dei dati che permette di limitare l’uso del processore sulla macchina che ospita Nagios e fa un inventario automatico degli elementi da controllare sui vari host. Questo componente è interessante specialmente per chi ha un elevato numero di servizi da sorvegliare.
Continua a leggere

OSPF


OSPF, acronimo di Open shortest path first, è uno dei protocolli di instradamento più utilizzati in reti di medie e grandi dimensioni.

Essendo un protocollo di routing dinamico, OSPF prevede lo scambio di messaggi per la condivisione delle rotte e delle informazioni sulla topologia della rete.

L’uso dell’algoritmo Dijkstra, per la creazione della tabella di routing, rende OSPF un protocollo link-state: ogni router conosce l’intera topologia della rete e tutti i costi dei vari percorsi di instradamento. Continua a leggere

Iptables e Vps, messa in sicurezza


Perché proteggere una macchina virtuale? Siamo su una rete pubblica ed aperta ad attacchi di ogni tipo.
Le principali difese da attuare riguardano attacchi di tipo SYN e ping flood. Un attacco di ping flood richiederebbe un’ulteriore protezione di tipo hardware, ma qualora il nostro fornitore di Vps non ne fosse provvisto, il metodo più valido per difendersi è utilizzare Iptables.
Quale tipo di traffico necessita di protezione? Il traffico in entrata necessita di essere regolato per prevenire gli attacchi, il traffico in uscita richiede attenzione per evitare che un’eventuale compromissione della macchina possa replicare i suoi effetti sulla rete adiacente. Continua a leggere