💻 Scenario di partenza
- Hai una rete di PC collegati a uno switch.
- Lo switch serve solo a far comunicare i dispositivi tra loro a livello 2 (Ethernet), cioè instrada i pacchetti in base agli indirizzi MAC. Non controlla o blocca nulla: fa solo passare i dati.
🔌 Cosa sono le porte (aperte, chiuse, filtrate)
Ogni computer in rete può offrire dei servizi di rete (come un server web, un server di stampa, SSH, ecc.). Ogni servizio “ascolta” su una porta TCP o UDP, che è come una “porta fisica virtuale” sul computer.- Porta aperta → c’è un servizio attivo in ascolto. Esempio: il PC ha un server web sulla porta 80 → la porta 80 è aperta.
- Porta chiusa → nessun servizio in ascolto su quella porta, ma il sistema risponde dicendo “non c’è nulla qui”.
- Porta filtrata → i pacchetti verso quella porta non ricevono risposta. Questo accade quando un firewall o un filtro di rete blocca la comunicazione (non fa passare o rispondere ai pacchetti).
🔥 Il ruolo del firewall
Il firewall è il componente che decide quali pacchetti di rete possono entrare o uscire dal PC o dalla rete.Il firewall controlla:
- Quali porte sono accessibili dall’esterno.
- Quali IP o protocolli sono consentiti o bloccati.
- Se blocchi la porta 22 (SSH) nel firewall → quella porta risulterà filtrata da fuori, anche se il servizio è attivo.
- Se disattivi il firewall → la porta apparirà aperta se il servizio è in ascolto, chiusa se non c’è nessun servizio.
📡 Scansione della Rete
Per scansionare la rete utilizzare il comando:
sudo nmap -sS -O -T4 <LA_TUA_SOTTORETE>
in Kali Linux per scoprire gli host nella LAN e capire se le porte sono aperte, chiuse o filtrate.
Nmap è uno scanner di rete molto usato per la scoperta degli host e l'analisi delle porte/servizi. Alcune opzioni richiedono privilegi di root e altre influenzano la velocità o la "visibilità" della scansione.
-
sudo: rende il comando eseguibile con privilegi di amministratore. Necessario per tecniche di scansione "a basso livello" come-sSo per il rilevamento del sistema operativo (-O). nmap: il programma vero e proprio che effettua la scansione di rete.-sS(SYN scan): nota anche come "half-open scan". Invia pacchetti TCP SYN e osserva le risposte per stabilire lo stato della porta senza completare l'handshake TCP. È veloce e spesso meno rumorosa di una scansione TCP completa, ma comunque rilevabile da sistemi di difesa.-O(OS detection): tenta di determinare il sistema operativo dell'host analizzando le risposte TCP/IP. Richiede privilegi di root e dipende dalla quantità e qualità delle risposte del target: se un firewall filtra i pacchetti il risultato può essere inesatto o assente.-T4(timing template): imposta la velocità della scansione su un livello piuttosto aggressivo (veloce). Su LAN è spesso accettabile, ma aumenta il rischio di falsi positivi/negativi e può generare allarmi su IDS/IPS.<LA_TUA_SOTTORETE>(es. 192.168.1.0/24): indica l'intervallo di indirizzi da scansionare. Un formato comune per una LAN è192.168.1.0/24che indicizza tutti gli host da192.168.1.1a192.168.1.254.⚙️ Consigli Pratici per l'Uso in Kali
- Inizia con scansioni leggere:
nmap -snonmap --open. - Usa
-T4su LAN quando vuoi velocità, ma evita-T4/-T5in reti sensibili. - Per un inventario regolare, salva i risultati con
-oA nomefileper avere output in formati multipli. - Se vuoi evitare falsi negativi causati da firewall, combina tecniche: ARP scan per scoprire host e poi nmap per l'analisi delle porte.
Stato porta Significato Causa possibile Aperta Il servizio risponde sulla porta Server attivo e firewall consente accesso Chiusa Nessun servizio, ma il sistema risponde "chiusa" Nessun demone in ascolto Filtrata Nessuna risposta Firewall o filtro blocca la porta
⚠️ Avvertenze Legali e Pratiche
Scansionare reti altrui senza permesso può essere illegale. Esegui scansioni solo su reti di tua proprietà o con autorizzazione esplicita. In ambienti aziendali, scansioni aggressive possono generare alert su IDS/IPS e causare problemi operativi.
LABORATORIO
Porte Aperte, Chiuse o Filtrate? Analisi
In questo laboratorio imparerai a eseguire la mappatura di una rete locale (LAN) e a dedurre lo stato dei firewall sui sistemi di destinazione. Utilizzerai lo strumento Nmap per distinguere tra porte
closed(chiuse) efiltered(filtrate), identificando così quali PC stanno attivamente bloccando il traffico non richiesto.Strumenti:- PC Tester con Linux: Utilizzeremo una distribuzione come Kali Linux (Nmap è preinstallato).
- Nmap (Network Mapper): Strumento di scansione di rete.
- Rete LAN: I 16 PC del laboratorio.
1 Identificazione della Rete Target
Per scansionare la LAN, devi prima identificare l'indirizzo IP del tuo PC e la sottorete del laboratorio. Questo ci darà l'intervallo esatto da scansionare (es. 192.168.1.0/24).
Apri il terminale e digita:
ip aCerca l'interfaccia di rete attiva e annota l'indirizzo nella forma CIDR (ad esempio, se vedi
192.168.1.50/24, la tua sottorete è192.168.1.0/24).2 Esecuzione della Scansione Stealth (SYN Scan)
Eseguiamo una scansione completa utilizzando la tecnica SYN Scan (`-sS`). Questa è la tecnica più efficace per distinguere tra porte chiuse e filtrate, ed è per questo che richiede i privilegi di amministratore (
sudo).Sostituisci
<LA_TUA_SOTTORETE>con l'indirizzo annotato nel Passaggio 1. Esempio:192.168.1.0/24.sudo nmap -sS -O -T4 <LA_TUA_SOTTORETE>- -sS: abilita la scansione SYN stealth. Fondamentale per l'esercizio.
- -O: rileva il Sistema Operativo (utile per Windows vs. Linux).
- -T4: imposta la velocità su "Aggressive" per completare la scansione rapidamente.
3 Analisi dello Stato del Firewall
Per ogni Host attivo (`Host is up`) nel risultato, osserva lo stato della maggior parte delle porte non aperte (quelle che non hanno servizi in ascolto come 80 o 22). Il risultato è la chiave per capire la configurazione di sicurezza del PC.
Esempi di output:
# Esempio 1: Firewall Disattivo o Permissivo PORT STATE SERVICE 80/tcp open http 139/tcp closed netbios-ssn 445/tcp closed microsoft-ds # Esempio 2: Firewall Attivo e Restrittivo PORT STATE SERVICE 80/tcp open http 139/tcp filtered netbios-ssn 445/tcp filtered microsoft-ds4 Mappatura Finale e Deduzione
- Se la maggior parte delle porte è
closed: deduzione → Firewall Disattivo o Permissivo. Il PC risponde "No" (RST), confermando di essere raggiungibile ma senza servizi. - Se la maggior parte delle porte è
filtered: deduzione → Firewall Attivo e Restrittivo. Il PC (o un filtro esterno) scarta i pacchetti di Nmap, apparendo irraggiungibile - Registra i 16 IP e per ciascuno annota l'OS rilevato e se il firewall è dedotto come Attivo o Disattivo in base all'analisi delle porte.
🛑 Come Attivare e Disattivare il Firewall (Per ottenere lo stato filtered)
Per dimostrare in modo chiaro la differenza tra closed e filtered, devi attivare e disattivare il firewall software sul PC di destinazione. Su molte distribuzioni Linux (come Debian/Ubuntu/Kali) si usa ufw (Uncomplicated Firewall).
1. Verificare lo Stato del Firewall
sudo ufw status2. Disattivare il Firewall (Per ottenere closed)
sudo ufw disable3. Attivare il Firewall (Per ottenere filtered)
sudo ufw enable🛠️ Come "Aprire" una Porta per la Scansione
Per aprire una porta, devi avviare un servizio che usi quella porta. Ecco due metodi semplici e comuni in un ambiente Linux/Kali:Metodo 1: Avviare un Web Server Semplice (Porta 80 o 8080)
Se vuoi che un PC mostri la porta 80 aperta, puoi avviare un server web temporaneo:- Scegli un PC nel laboratorio (diverso da quello che lancia Nmap).
- Crea una cartella e vai al suo interno:
mkdir test_web && cd test_web - Avviare il server web integrato di Python (richiede Python installato, comune su Linux):
(Potrebbe essere necessario sudo se la porta 80 è riservata.)python3 -m http.server 80
porta 80/tcprisulterà open e Nmap rileverà il servizio come http o SimpleHTTP/Python.Metodo 2: Avviare un Servizio SSH (Porta 22)
Se il PC è Linux (come una macchina virtuale con Kali o Ubuntu), SSH è spesso già installato.- Scegli un PC e verifica lo stato del servizio SSH:
sudo systemctl status ssh - Se non è attivo, avvialo:
Risultato atteso su Nmap: la porta 22/tcp risulterà open e Nmap rileverà il servizio come ssh e la sua versione (OpenSSH...).sudo systemctl start ssh
- Inizia con scansioni leggere: