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)
Ένα network namespace είναι μια δυνατότητα του πυρήνα Linux που παρέχει απομόνωση της στοίβας δικτύου, επιτρέποντας σε κάθε network namespace να έχει τη δική του ανεξάρτητη ρύθμιση δικτύου, διεπαφές, διευθύνσεις IP, πίνακες δρομολόγησης και κανόνες τείχους προστασίας. Αυτή η απομόνωση είναι χρήσιμη σε διάφορα σενάρια, όπως η κοντενέρωση, όπου κάθε κοντέινερ θα πρέπει να έχει τη δική του ρύθμιση δικτύου, ανεξάρτητη από άλλα κοντέινερ και το σύστημα φιλοξενίας.
Όταν δημιουργείται ένα νέο network namespace, ξεκινά με μια εντελώς απομονωμένη στοίβα δικτύου, με κανένα δίκτυο διεπαφών εκτός από τη διεπαφή loopback (lo). Αυτό σημαίνει ότι οι διαδικασίες που εκτελούνται στο νέο network namespace δεν μπορούν να επικοινωνήσουν με διαδικασίες σε άλλα namespaces ή το σύστημα φιλοξενίας από προεπιλογή.
Εικονικές διεπαφές δικτύου, όπως τα veth ζεύγη, μπορούν να δημιουργηθούν και να μετακινηθούν μεταξύ των network namespaces. Αυτό επιτρέπει τη δημιουργία δικτυακής συνδεσιμότητας μεταξύ namespaces ή μεταξύ ενός namespace και του συστήματος φιλοξενίας. Για παράδειγμα, το ένα άκρο ενός veth ζεύγους μπορεί να τοποθετηθεί στο network namespace ενός κοντέινερ, και το άλλο άκρο μπορεί να συνδεθεί σε μια γέφυρα ή άλλη διεπαφή δικτύου στο namespace του φιλοξενούμενου, παρέχοντας δικτυακή συνδεσιμότητα στο κοντέινερ.
Οι διεπαφές δικτύου εντός ενός namespace μπορούν να έχουν τις δικές τους διευθύνσεις IP, πίνακες δρομολόγησης και κανόνες τείχους προστασίας, ανεξάρτητες από άλλα namespaces. Αυτό επιτρέπει στις διαδικασίες σε διαφορετικά network namespaces να έχουν διαφορετικές ρυθμίσεις δικτύου και να λειτουργούν σαν να εκτελούνται σε ξεχωριστά δικτυωμένα συστήματα.
Οι διαδικασίες μπορούν να μετακινηθούν μεταξύ namespaces χρησιμοποιώντας την κλήση συστήματος setns()
, ή να δημιουργήσουν νέα namespaces χρησιμοποιώντας τις κλήσεις συστήματος unshare()
ή clone()
με την σημαία CLONE_NEWNET
. Όταν μια διαδικασία μετακινείται σε ένα νέο namespace ή δημιουργεί ένα, θα αρχίσει να χρησιμοποιεί τη ρύθμιση δικτύου και τις διεπαφές που σχετίζονται με αυτό το namespace.
Με την τοποθέτηση μιας νέας παρουσίας του συστήματος αρχείων /proc
αν χρησιμοποιήσετε την παράμετρο --mount-proc
, διασφαλίζετε ότι το νέο mount namespace έχει μια ακριβή και απομονωμένη άποψη των πληροφοριών διαδικασίας που είναι συγκεκριμένες για αυτό το namespace.
Επίσης, μπορείτε να μπείτε σε άλλο namespace διαδικασίας μόνο αν είστε root. Και δεν μπορείτε να μπείτε σε άλλο namespace χωρίς έναν περιγραφέα που να δείχνει σε αυτό (όπως το /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)