Skip to main content
  1. Concetti/

VLAN - Segmentazione Logica e VLAN Hopping

Alessio Barnini
Author
Alessio Barnini
Table of Contents

Cos'e'
#

VLAN (Virtual Local Area Network) divide una rete fisica in piu' reti logiche isolate su un unico switch. Ogni VLAN e' un broadcast domain separato: un dispositivo in VLAN 10 non vede il traffico di VLAN 20, anche se entrambi sono fisicamente connessi allo stesso switch.

switch-vlan-segmentation.webp

VLAN implementa la segmentazione logica della rete a Layer 2, creando broadcast domain isolati sullo stesso hardware fisico per ridurre la superficie di attacco da lateral movement e ottimizzare il traffico.

TL;DR
#

  1. Ogni VLAN e' una subnet IP separata: VLAN 10 (HR) -> 192.168.10.x, VLAN 20 (IT) -> 192.168.20.x.
  2. Un device in VLAN 10 non raggiunge un device in VLAN 20 senza passare da un router o switch L3.
  3. La configurazione e' software: nessun cavo da spostare, solo file di configurazione dello switch.
  4. VLAN 1 e' la VLAN di default su Cisco: non usarla per sicurezza (tutta la gestione ci transita per default).

Access Port vs Trunk Port
#

Le porte di uno switch hanno due modalita' operative distinte. La scelta della modalita' determina quali VLAN transitano sulla porta e come vengono identificate.

Come funziona il tag 802.1Q:

Frame Ethernet standard:
[ DST MAC | SRC MAC | EtherType | Payload | FCS ]

Frame con tag 802.1Q (trunk):
[ DST MAC | SRC MAC | 802.1Q Tag (4 byte) | EtherType | Payload | FCS ]
                        ^
                        TPID (0x8100) + Priority + VLAN ID (12 bit = max 4094 VLAN)

vlan-subnet-schema.webp


Inter-VLAN Routing
#

Device su VLAN diverse non possono comunicare direttamente: il traffico deve passare da Layer 3 (router o switch L3). Questo e' il checkpoint dove si applicano le ACL per il controllo del lateral movement.

PC HR (192.168.10.5) vuole raggiungere DB (192.168.20.8):
  1. PC HR manda pacchetto al suo gateway (192.168.10.1 - subinterface VLAN 10)
  2. Router verifica ACL: "VLAN 10 -> VLAN 20 porta 22 SSH?" → DENY
  3. Router verifica ACL: "VLAN 10 -> VLAN 20 porta 3306 MySQL?" → PERMIT
  4. Router instrada verso 192.168.20.1 (subinterface VLAN 20)
Note

La Tabella di Routing dice dove mandare il pacchetto (il navigatore). Le ACL dicono se mandarlo (il buttafuori). Sono due funzioni separate sullo stesso dispositivo.


Traffico Nord-Sud vs Est-Ovest
#

Questa terminologia nasce da come gli ingegneri disegnano le mappe di rete: internet si disegna in alto (Nord), i server in basso (Sud). I server tra loro vengono affiancati sulla stessa linea (Est-Ovest).

flowchart TD
    INET["Internet (Nord)"]

    subgraph DCSENZA ["Senza VLAN - Rete Piatta"]
        direction TB
        FW1["Firewall Perimetrale"]
        SW1["Switch - unico broadcast domain"]
        WEB1["Web Server COMPROMESSO"]
        DB1["Database - I tuoi dati"]

        FW1 --> SW1
        SW1 --> WEB1
        SW1 --> DB1
        WEB1 -.->|Lateral Movement Est-Ovest - Nessun ostacolo| DB1
    end

    subgraph DCVLAN ["Con VLAN - Segmentazione"]
        direction TB
        FW2["Firewall Perimetrale"]
        RTR["Router / Firewall Interno - ACL"]

        subgraph V10 ["VLAN 10 - Frontend"]
            WEB2["Web Server COMPROMESSO"]
        end

        subgraph V20 ["VLAN 20 - Backend"]
            DB2["Database - Al Sicuro"]
        end

        FW2 --> RTR
        RTR --> V10
        RTR --> V20
        WEB2 -.->|Tenta Lateral Movement| RTR
        RTR -.-x|BLOCCATO - ACL nega SSH dal WebServer al DB| DB2
    end

    INET --> DCSENZA
    INET --> DCVLAN

    style WEB1 fill:rgb(127, 29, 29, 0.2),stroke:#f87171
    style WEB2 fill:rgb(127, 29, 29, 0.2),stroke:#f87171
    style DB2 fill:rgb(6, 78, 59, 0.2),stroke:#34d399
    style DB1 fill:rgb(180, 83, 9, 0.2),stroke:#fbbf24
    style RTR fill:rgb(30, 58, 138, 0.2),stroke:#60a5fa

Lettura diagramma: Confronto tra rete piatta (a sinistra) e rete con VLAN (a destra). Senza VLAN, un Web Server compromesso raggiunge il Database direttamente via switch L2 senza alcun ostacolo. Con le VLAN, il traffico Est-Ovest deve passare per il router/firewall interno dove le ACL bloccano la connessione SSH non autorizzata.

FlussoChe cos'e'EsempioControllo
Nord-SudAttraversa il confine della reteUtente esterno accede al web serverFirewall perimetrale
Est-OvestLaterale tra server interniWeb server -> Database internoFirewall interno + ACL inter-VLAN

Il problema storico: le aziende proteggevano solo il traffico Nord-Sud (portone blindato perimetrale). Se un attaccante bucava il web server esposto, il traffico Est-Ovest verso il database era invisibile al firewall perimetrale.


VLAN Hopping
#

VLAN hopping e' una famiglia di attacchi che permette di "saltare" da una VLAN all'altra senza passare dal router e senza essere autorizzati. Ci sono due tecniche principali.

flowchart TD
    ATK["Attaccante in VLAN 10 - Guest"]

    subgraph SPOOFING ["Tecnica 1 - Switch Spoofing"]
        direction TB
        ATK1["Attaccante invia DTP frames"]
        SW_A["Switch: negozia trunk automaticamente"]
        RESULT1["Attaccante riceve traffico di TUTTE le VLAN"]

        ATK1 -->|DTP negotiate| SW_A
        SW_A -->|trunk stabilito| RESULT1
    end

    subgraph DOUBLETAG ["Tecnica 2 - Double Tagging"]
        direction TB
        ATK2["Attaccante crea frame con 2 tag 802.1Q"]
        T1["Tag esterno: VLAN 1 - VLAN nativa dello switch"]
        T2["Tag interno nascosto: VLAN 20 - target"]
        SW_B["Switch di accesso rimuove tag esterno"]
        SW_C["Switch successivo legge tag interno"]
        RESULT2["Frame arriva in VLAN 20 - target"]

        ATK2 --> T1
        T1 -.->|Pacchetto| SW_B
        T2 -.->|nascosto nel payload| SW_B
        SW_B -->|rimuove tag VLAN 1| SW_C
        SW_C -->|legge tag VLAN 20| RESULT2
    end

    ATK --> SPOOFING
    ATK --> DOUBLETAG

    style ATK fill:rgb(127, 29, 29, 0.2),stroke:#f87171
    style RESULT1 fill:rgb(180, 83, 9, 0.2),stroke:#fbbf24
    style RESULT2 fill:rgb(180, 83, 9, 0.2),stroke:#fbbf24

Lettura diagramma: Due percorsi di attacco dal nodo "Attaccante in VLAN 10". Switch Spoofing (sinistra): l'attaccante invia DTP frames che convincono lo switch a negoziare un trunk, ottenendo accesso a tutte le VLAN. Double Tagging (destra): il frame ha due tag 802.1Q sovrapposti - il primo (VLAN nativa) viene rimosso dal primo switch, il secondo (VLAN target) porta il traffico a destinazione.

Switch Spoofing (DTP)

Lo switch Cisco per default prova a negoziare automaticamente se una porta deve diventare trunk (DTP - Dynamic Trunking Protocol). Un attaccante che invia DTP frames puo' far credere allo switch di essere un altro switch legittimo, facendosi aprire un trunk e ricevendo traffico di tutte le VLAN.

Double Tagging

L'attaccante costruisce un frame con due tag 802.1Q sovrapposti. Il tag esterno usa la VLAN nativa (di default VLAN 1 - untagged). Quando il frame arriva allo switch di accesso, questo rimuove il primo tag (VLAN nativa) e manda il frame verso il trunk. Il secondo switch vede il secondo tag (VLAN target) e consegna il frame nella VLAN protetta. L'attacco e' unidirezionale: non riceve risposte dalla VLAN target.

Difese contro VLAN Hopping:

# 1. Disabilitare DTP su tutte le porte access (Cisco IOS)
interface fastethernet 0/1
 switchport mode access          # forza modalita' access
 switchport nonegotiate          # disabilita DTP completamente
 switchport access vlan 10

# 2. Cambiare la VLAN nativa del trunk in una VLAN non usata
interface fastethernet 0/24
 switchport mode trunk
 switchport trunk native vlan 999   # 999 = VLAN non assegnata a nessuno

# 3. Non usare mai VLAN 1 per traffico reale
# 4. Disabilitare porte switch non usate e metterle in VLAN isolata
interface range fastethernet 0/15-24
 switchport mode access
 switchport access vlan 999
 shutdown

Scenario Reale Blue Team
#

VLAN come difesa contro ARP poisoning. Un attaccante nella VLAN Guest non puo' fare ARP poisoning verso la VLAN Server, perche' i due segmenti operano in broadcast domain separati: il traffico ARP di VLAN 30 (Guest) non raggiunge mai VLAN 20 (Server).

# Verifica segmentazione VLAN su switch Cisco
show vlan brief                    # lista tutte le VLAN e le porte assegnate
show interfaces trunk              # porte in modalita' trunk attive
show interfaces fastethernet 0/1 switchport  # dettaglio porta singola

# Verifica che DTP sia disabilitato
show dtp interface fastethernet 0/1

# Verifica VLAN nativa sui trunk
show interfaces trunk | grep native

# Da Linux: verifica broadcast domain con arping
# (se arping raggiunge host in altra VLAN → segmentazione fallita)
arping -I eth0 192.168.20.1

cisco-swext-vlan.webp

Correlazione con ARP poisoning lab:

In un laboratorio con arpspoof, l'attaccante in VLAN 30 (Guest) manda arpspoof -i eth0 -t 192.168.20.5 192.168.20.1 ma i pacchetti ARP non raggiungono VLAN 20. Il broadcast ARP rimane confinato nel proprio broadcast domain. Questo e' il motivo per cui la VLAN Guest del Wi-Fi di casa e' su subnet separata: anche se qualcuno e' sulla tua rete Wi-Fi ospiti, non puo' fare ARP poisoning verso i tuoi PC nella LAN principale.


Dev Parallel

In un ambiente cloud AWS, le VLAN corrispondono alle subnet VPC: public subnet (DMZ - web server), private subnet (app servers), database subnet (RDS). Il Security Group e il Network ACL fanno il lavoro del trunk port e delle regole inter-VLAN. La microsegmentazione Zero Trust e' VLAN portata all'estremo: ogni workload ha le sue policy, indipendentemente dalla subnet.

In Docker Compose, le networks sono VLAN software: ogni network isola i container che vi appartengono, e i container in reti diverse non si parlano per default. docker network ls mostra i broadcast domain virtuali. Un container frontend in network web non raggiunge il container db in network backend senza un link esplicito nella configurazione, esattamente come due VLAN che non si parlano senza inter-VLAN routing.


Collegato a
#

  • arp - ARP poisoning bloccato dalla segmentazione VLAN (broadcast domain separati)
  • aaa-radius - 802.1X + Dynamic VLAN Assignment: RADIUS assegna la VLAN corretta post-autenticazione
  • zero-trust - Microsegmentazione come evoluzione delle VLAN verso policy per singolo workload
  • docker-network - Docker networks come VLAN software in ambiente container

Related