Network Namespace
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Uno spazio dei nomi di rete è una funzionalità del kernel Linux che fornisce isolamento dello stack di rete, consentendo a ciascuno spazio dei nomi di rete di avere la propria configurazione di rete indipendente, interfacce, indirizzi IP, tabelle di routing e regole del firewall. Questo isolamento è utile in vari scenari, come la containerizzazione, dove ciascun container dovrebbe avere la propria configurazione di rete, indipendente dagli altri container e dal sistema host.
Quando viene creato un nuovo spazio dei nomi di rete, inizia con uno stack di rete completamente isolato, con nessuna interfaccia di rete tranne l'interfaccia di loopback (lo). Ciò significa che i processi in esecuzione nel nuovo spazio dei nomi di rete non possono comunicare con i processi in altri spazi dei nomi o con il sistema host per impostazione predefinita.
Interfacce di rete virtuali, come le coppie veth, possono essere create e spostate tra gli spazi dei nomi di rete. Questo consente di stabilire connettività di rete tra gli spazi dei nomi o tra uno spazio dei nomi e il sistema host. Ad esempio, un'estremità di una coppia veth può essere posizionata nello spazio dei nomi di rete di un container, e l'altra estremità può essere collegata a un bridge o a un'altra interfaccia di rete nello spazio dei nomi host, fornendo connettività di rete al container.
Le interfacce di rete all'interno di uno spazio dei nomi possono avere i propri indirizzi IP, tabelle di routing e regole del firewall, indipendenti dagli altri spazi dei nomi. Questo consente ai processi in diversi spazi dei nomi di rete di avere configurazioni di rete diverse e operare come se stessero funzionando su sistemi di rete separati.
I processi possono spostarsi tra gli spazi dei nomi utilizzando la chiamata di sistema setns()
, o creare nuovi spazi dei nomi utilizzando le chiamate di sistema unshare()
o clone()
con il flag CLONE_NEWNET
. Quando un processo si sposta in un nuovo spazio dei nomi o ne crea uno, inizierà a utilizzare la configurazione di rete e le interfacce associate a quello spazio dei nomi.
Montando una nuova istanza del filesystem /proc
se utilizzi il parametro --mount-proc
, garantisci che il nuovo namespace di mount abbia una visione accurata e isolata delle informazioni sui processi specifiche per quel namespace.
Puoi entrare in un altro namespace di processo solo se sei root. E non puoi entrare in un altro namespace senza un descrittore che punti ad esso (come /proc/self/ns/net
).
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)