Passa al contenuto principale
Di recente mi sono imbattuto in un sito con diversi moduli, ognuno dei quali era in grado di inoltrare pacchetti. Il caso peggiore è stato al ritmo di 1 ogni 2 secondi circa. Non molto veloce si dice, ma, ci sono 86.400 secondi in un giorno, quindi in 1 giorno quel modulo potrebbe inoltrare 63 megabyte (86.400 / 2 * 1472)1 di dati fuori dalla vostra rete da un server "sicuro" o trasferire 63 megabyte di strumenti di hacking nella vostra rete sicura.

 

Tuttavia, nella maggior parte dei casi l'inoltro dei pacchetti è un'indicazione di un problema di configurazione, non una violazione della sicurezza. Per esempio, supponiamo che un modulo abbia 2 interfacce IP
enet1 10.1.1.1.1 255.255.0.0
enet2 192.168.1.1 255.255.255.255.255.0
supponiamo anche che il router predefinito sia 192.168.1.254

 

Tutti gli host della prima rete dovrebbero avere un indirizzo IP della forma 10.1.X.Y con una subnet mask di 255.255.0.0 ma cosa succede se il server_17 con indirizzo IP 10.1.1.17 è configurato per utilizzare una subnet mask con più bit, ad esempio 255.255.255.255.0? Può comunque comunicare con qualsiasi host con un indirizzo IP del modulo 10.1.1.X in modo che non si noti un problema. MA quando invia un pacchetto IP broadcast indirizza il pacchetto IP a 10.1.1.1.255 invece che a 10.1.255.255. Il frame Ethernet che incapsula quel pacchetto ha come destinazione l'indirizzo broadcast Ethernet, quindi il driver Ethernet del modulo legge il frame e passa il pacchetto al driver IP. Il driver IP guarda l'indirizzo IP e determina che esso non è indirizzato a enet1 o enet2 e non è 10.1.255.255, l'indirizzo broadcast. Se l'inoltro è attivato, il driver IP cercherà di inoltrare il pacchetto all'host con l'indirizzo IP 10.1.1.255. Se il modulo non ha una voce per 10.1.1.255 nella sua cache ARP trasmetterà una richiesta ARP. Se riceve una risposta (o ha già una voce) inoltrerà il pacchetto a 10.1.1.255. Se non riceve una risposta lascerà cadere il frame. Il modulo può anche inviare un messaggio di reindirizzamento del routing ICMP che indica che il "router" è l'indirizzo IP dell'host.

 

Cosa succede se il server_17 utilizza una maschera di sottorete con meno bit, ad esempio 255.0.0.0.0? In questo caso l'indirizzo IP che utilizza è 10.255.255.255.255. Il driver IP decide che questo non è un indirizzo su una rete a cui è collegato e inoltra il pacchetto al router predefinito 192.168.1.254. Non solo le risorse del modulo sono sprecate, ma anche quelle del router. Lo stesso scenario si verifica se si hanno due sottoreti nello stesso dominio di trasmissione.

 

Infine, rivediamo la questione della sicurezza. Supponiamo che il server_S sicuro, abbia un indirizzo IP di 10.1.1.100 e la maschera di sottorete corretta di 255.255.0.0. Non ci sono router sulla rete 10.1.0.0. Come può la spia industriale Eve inviare dati dal server_S al suo datore di lavoro su Internet al 5.6.7.8? Semplice, si limita a configurare un percorso host su server_S in modo che tutti i pacchetti indirizzati a 5.6.7.8 siano inviati a 10.1.1.1. Questo è tutto ciò che serve. Il modulo inoltrerà i pacchetti al router di default e, supponendo che il filtraggio degli indirizzi IP non venga fatto dal router di default, inoltrerà i pacchetti al router successivo, ecc. fino a quando non raggiungeranno il 5.6.7.8. Non c'è modo per 5.6.7.8 di rispondere a 10.1.1.100, ma questo va bene per Eve, lei ha altri modi per confermare che i dati stanno raggiungendo il suo datore di lavoro.

 

Come si fa a capire se il modulo inoltra i pacchetti, o almeno è configurato per l'inoltro dei pacchetti? L'uscita da "netstat -statistics"vi mostrerà tutto ciò di cui avete bisogno.

 

netstat -statistics
. . .
ip:
. . .
1   ipforwarding (ON)
. . .
3117   ipForwDatagrams
. . .

 

Se il modulo è configurato per inoltrare i pacchetti il ipforwarding La variabile sarà 1 e l'etichetta sarà suffissa con (ON). Se il modulo sta effettivamente inoltrando i pacchetti, la variabile ipForwDatagrams Il contatore sarà incrementale. Si noti che il contatore viene incrementato anche se il pacchetto non viene effettivamente trasmesso perché non c'è una voce della cache ARP.

 

Per disattivare l'inoltro IP eseguire il comando ">system>stcp>command_library>IP_forwarding off", sì, l'IP è in maiuscolo.
A questo punto la netstat -statistica mostrerà la ipforwarding variabile per avere un valore di 2 e l'etichetta sarà suffisso con (OFF). Si noti che la variabile ipForwDatagrams non viene azzerata; mostrerà comunque un valore positivo. Purtroppo non c'è modo di cancellare il valore.

 

netstat -statistics
. . .
ip:
. . .
2   ipforwarding (OFF)
. . .
3117   ipForwDatagrams
. . .

 

Un'ultima parola di cautela: se l'inoltro è attivo e lo si spegne e qualcuno (a parte Eve) sta effettivamente usando il modulo come router si rompe qualsiasi cosa stia facendo. A mio parere non è una cosa negativa, STCP non è stato progettato per essere un router, ma bisogna essere preparati ad alcune lamentele.

 

————-
Note
1 1472 è il numero massimo di byte che si possono immettere in un pacchetto eco ICMP trasmesso via Ethernet

© 2024 Stratus Technologies.