- From: Giorgio Raineri <
>
- To:
- Subject: Esercizio Port Knocking
- Date: Tue, 24 Apr 2018 16:52:47 +0200
Salve professore,
Ho provato a scrivere il set di regole di iptables necessarie per realizzare il Port Knocking sulla rete del Laboratorio Lab5-nf-bis, importabili tramite iptables-restore su un router qualsiasi:
le regole sono impostate tutte nella custom chain KNOCK, alla quale vengono inviati tutti i pacchetti che il router deve forwardare, senza limitazioni specifiche (andando a fungere da firewall per connessioni originate da qualsiasi a qualsiasi altra sottorete), per modificarne il funzionamento basta modificare le regole in forward (e/o in input se si vuole "proteggere" anche il router stesso) affinché inoltrino i pacchetti di interesse verso la chain KNOCK.Â
La chain KNOCK utilizza altre due chain, KNOCK-1 e KNOCK-2, per gestire la transizione "in avanti" degli stati intermedi, e svariati match di tipo filter con tre tabelle (STEP-0, STEP-1 e STEP-2) per regolare il comportamento nei vari stati.
Le regole presenti nel file di configurazione bloccano tutto il tipo di traffico derivato da connessioni nuove, tranne quello ICMP, e una volta effettuata la sequenza corretta di port-knocking, permettono nuove connessioni di qualsiasi protocollo verso qualsiasi destinazione per un tempo di 60 secondi (permettendo quelle in stato ESTABLISHED e RELATED anche oltre tale limite).
La sequenza di porte a cui inviare un pacchetto TCP per ottenere l'accesso è 2302 -> 26000 -> 666, ad ogni altro pacchetto ricevuto in qualsiasi stato intermedio, il sistema rileva l'errore e torna allo stato precedente (senza utilizzare timeout, basandosi sul fatto che un port scanner non è limitato dal tempo ma dal numero di tentativi che deve effettuare).
Ho allegato anche uno script shell chiamato knock.sh che utilizza nmap per generare 3 pacchetti TCP nella giusta sequenza senza retries, basta lanciarlo passando come argomenti l'indirizzo di destinazione e poi le tre porte da utilizzare, tutto separato da spazi (ad esempio "knock.sh 8.0.0.2 2302 26000 666").
Ho effettuato dei test sul laboratorio 5 aggiungendo le regole di iptables a "router" e tentando di collegarmi da r2 ai server web della DMZ e viceversa, sembrerebbe funzionare tutto correttamente.
Allego script di configurazione di iptables e script shell per il port-knocking per sapere se la realizzazione sia corretta o meno.
Giorgio Raineri
#!/bin/bash
host=$1
shift
for port in "$@"
do
nmap -PN -p $port --max-retries 0 -n $host
done
Attachment:
knock-knock.conf
Description: Binary data
- Esercizio Port Knocking, Giorgio Raineri
Archivio con motore MhonArc 2.6.16.